mirror of
https://github.com/macvim-dev/macvim.git
synced 2026-06-07 15:37:14 +02:00
Compare commits
104 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 2cefa1e3ce | |||
| 72f2e94815 | |||
| 14363db5ce | |||
| 9a32768aa6 | |||
| 67435d9983 | |||
| fafcf0dd59 | |||
| ff930cad8a | |||
| 87ffb5c1a3 | |||
| 3c0ba7cc6a | |||
| 9373f08fbe | |||
| 6c35158d3c | |||
| dbb801fbab | |||
| 88023813a4 | |||
| 9c391d1df6 | |||
| 50e45d2e95 | |||
| 12e1a00e4b | |||
| f113a44867 | |||
| 5c8c040a4f | |||
| 78e3217645 | |||
| 6daeef1933 | |||
| 059db5c29f | |||
| 44cc4cf72f | |||
| 67418d97b4 | |||
| 8bfe07b708 | |||
| 00ce63dc23 | |||
| 81b07b527e | |||
| a20f83df1d | |||
| 9377df3ecd | |||
| 65e4c4f686 | |||
| b2c8750c4e | |||
| ac8069bb63 | |||
| 6199d43f4b | |||
| 2c33d7bb69 | |||
| 6047e2c722 | |||
| 1d68d9b2bd | |||
| 8065cf2bfb | |||
| 4a6fcf8047 | |||
| 9202162c5c | |||
| 9b69f22e66 | |||
| 18cfa940e2 | |||
| 0ab35b279f | |||
| 4635e11c6b | |||
| 75f69e5a18 | |||
| 631820536e | |||
| 73f4439ca6 | |||
| 54e5dbf58e | |||
| d78f03f860 | |||
| 06f8b8e667 | |||
| 4116a647ac | |||
| c902609f69 | |||
| a0a6f2776e | |||
| c8aa5fbeb7 | |||
| 19a3d68b2c | |||
| 2a6a6c3014 | |||
| 712549e04e | |||
| f33606112a | |||
| 5ece3e359c | |||
| 0aa398f55a | |||
| c233aed6c3 | |||
| 3a497e1a41 | |||
| c958b31638 | |||
| 9c2f5e7b8d | |||
| f52c383156 | |||
| 65ed136844 | |||
| c79977a437 | |||
| 660b85e39a | |||
| a5e6621aad | |||
| 816968defc | |||
| 7bfaf0665e | |||
| d371bbe0ab | |||
| db51007108 | |||
| 24a98a0eb7 | |||
| 9cf39cc57f | |||
| 1ec96c9269 | |||
| 0410900dea | |||
| d1bc96ce24 | |||
| 1b38344e00 | |||
| 97fbc404fc | |||
| 2a02745709 | |||
| 09ca932f8e | |||
| 6edeaf387c | |||
| a8fc0d3817 | |||
| 22ab547dc2 | |||
| 7c456a4511 | |||
| 783f28115f | |||
| 452030e530 | |||
| 0c6a32963d | |||
| 0b05e491b4 | |||
| aeddf7cbe5 | |||
| e0de17d84e | |||
| 378daf87d3 | |||
| 96e7a6ee45 | |||
| bb3e6416f1 | |||
| a21a6a9ade | |||
| eb163d73b1 | |||
| e745d75c3e | |||
| 0263146b5d | |||
| 53f8174eae | |||
| 76301956f0 | |||
| f3d769a585 | |||
| 8b21de33bb | |||
| c9262f4ff3 | |||
| fc7649f8b8 | |||
| b00fdf6eed |
@@ -38,6 +38,7 @@ src/pathdef.c
|
||||
src/Obj*/pathdef.c
|
||||
gvimext.dll
|
||||
gvimext.lib
|
||||
gvim.lib
|
||||
runtime/doc/uganda.nsis.txt
|
||||
|
||||
# Borland C++
|
||||
|
||||
+2
-2
@@ -4,7 +4,7 @@ dist: trusty
|
||||
os:
|
||||
- osx
|
||||
|
||||
osx_image: xcode8
|
||||
osx_image: xcode9.1
|
||||
|
||||
compiler:
|
||||
- clang
|
||||
@@ -20,7 +20,7 @@ env:
|
||||
vi_cv_dll_name_python=/System/Library/Frameworks/Python.framework/Versions/2.7/Python
|
||||
vi_cv_dll_name_python3=/usr/local/Frameworks/Python.framework/Versions/3.6/Python
|
||||
VIMCMD=src/MacVim/build/Release/MacVim.app/Contents/MacOS/Vim
|
||||
"CONFOPT='--with-features=huge --enable-multibyte --enable-terminal --enable-netbeans --with-tlib=ncurses --enable-cscope --enable-perlinterp=dynamic --enable-pythoninterp=dynamic --enable-python3interp=dynamic --enable-rubyinterp=dynamic --enable-luainterp=dynamic --with-lua-prefix=/usr/local --enable-gui=macvim'"
|
||||
"CONFOPT='--with-features=huge --enable-multibyte --enable-terminal --enable-netbeans --with-tlib=ncurses --enable-cscope --enable-perlinterp=dynamic --enable-pythoninterp=dynamic --enable-python3interp=dynamic --enable-rubyinterp=dynamic --with-ruby-command=/usr/bin/ruby --enable-luainterp=dynamic --with-lua-prefix=/usr/local --enable-gui=macvim'"
|
||||
|
||||
sudo: false
|
||||
|
||||
|
||||
@@ -136,6 +136,7 @@ SRC_ALL = \
|
||||
src/testdir/bench*.vim \
|
||||
src/testdir/samples/*.txt \
|
||||
src/testdir/if_ver*.vim \
|
||||
src/testdir/xterm_ramp.vim \
|
||||
src/proto.h \
|
||||
src/proto/arabic.pro \
|
||||
src/proto/blowfish.pro \
|
||||
@@ -405,6 +406,7 @@ SRC_DOS = \
|
||||
src/msvcsetup.bat \
|
||||
src/msvc2008.bat \
|
||||
src/msvc2010.bat \
|
||||
src/msvc2015.bat \
|
||||
src/dimm.idl \
|
||||
src/dlldata.c \
|
||||
src/dosinst.c \
|
||||
|
||||
@@ -120,28 +120,28 @@ MINOR = 0
|
||||
#
|
||||
# MS-Windows:
|
||||
# - Run make on Unix to update the ".mo" files.
|
||||
# - Get libintl-8.dll, libiconv-2.dll and libgcc_s_sjlj-1.dll. E.g. from
|
||||
# - Get 32 bit libintl-8.dll, libiconv-2.dll and libgcc_s_sjlj-1.dll. E.g. from
|
||||
# https://mlocati.github.io/gettext-iconv-windows/ .
|
||||
# Use the "shared-32.zip file and extract the archive to get the files.
|
||||
# Put them in the top directory, "make dosrt" uses them.
|
||||
# Put them in the gettext32 directory, "make dosrt" uses them.
|
||||
# - Get 64 bit libintl-8.dll and libiconv-2.dll. E.g. from
|
||||
# https://mlocati.github.io/gettext-iconv-windows/ .
|
||||
# Use the "shared-64.zip file and extract the archive to get the files.
|
||||
# Put them in the gettext64 directory, "make dosrt" uses them.
|
||||
# - > make dossrc
|
||||
# > make dosrt
|
||||
# Unpack dist/vim##rt.zip and dist/vim##src.zip on an MS-Windows PC.
|
||||
# This creates the directory vim/vim80 and puts all files in there.
|
||||
# Win32 console version build:
|
||||
# - Set environment for Visual C++ 2008, e.g.:
|
||||
# > src/msvc2008.bat
|
||||
# Or:
|
||||
# > C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\vcvars32.bat
|
||||
# Or, when using the Visual C++ Toolkit 2003: "msvcsetup.bat" (adjust the
|
||||
# paths when necessary).
|
||||
# For Windows 98/ME the 2003 version is required, but then the executable
|
||||
# won't work on Windows 7 and 64 bit systems.
|
||||
# - > cd src
|
||||
# - See src/INSTALLpc.txt for installing the compiler and SDK.
|
||||
# - Set environment for Visual C++ 2015:
|
||||
# > cd src
|
||||
# > msvc2015.bat
|
||||
# - Build the console binary:
|
||||
# > nmake -f Make_mvc.mak
|
||||
# - Run the tests:
|
||||
# - Run the tests and check the ouput:
|
||||
# > nmake -f Make_mvc.mak testclean
|
||||
# > nmake -f Make_mvc.mak test
|
||||
# - check the output.
|
||||
# - Rename (using ../tools/rename.bat):
|
||||
# vim.exe to vimw32.exe
|
||||
# tee/tee.exe to teew32.exe
|
||||
@@ -152,19 +152,18 @@ MINOR = 0
|
||||
# Win32 GUI version build:
|
||||
# - > cd src
|
||||
# > nmake -f Make_mvc.mak GUI=yes
|
||||
# - Run the tests:
|
||||
# - Run the tests and check the output:
|
||||
# > nmake -f Make_mvc.mak testclean
|
||||
# > nmake -f Make_mvc.mak testgvim
|
||||
# - check the output.
|
||||
# - move "gvim.exe" to here (otherwise the OLE version will overwrite it).
|
||||
# - Move gvim.pdb to here.
|
||||
# - Copy "GvimExt/gvimext.dll" to here.
|
||||
# - Delete vimrun.exe, install.exe and uninstal.exe.
|
||||
# Win32 GUI version with OLE, PERL, Ruby, TCL, PYTHON and dynamic IME:
|
||||
# - Install the interfaces you want, see src/INSTALLpc.txt
|
||||
# Adjust bigvim.bat to match the version of each interface you want.
|
||||
# - Build:
|
||||
# > cd src
|
||||
# Adjust bigvim.bat to match the version of each interface you want.
|
||||
# > bigvim.bat
|
||||
# - Run the tests:
|
||||
# > nmake -f Make_mvc.mak testclean
|
||||
@@ -188,10 +187,11 @@ MINOR = 0
|
||||
# gvimext64.dll in src/GvimExt
|
||||
# VisVim.dll in src/VisVim
|
||||
# Note: VisVim needs to be build with MSVC 5, newer versions don't work.
|
||||
# gvimext64.dll can be obtained from http://code.google.com/p/vim-win3264/
|
||||
# It is part of vim72.zip as vim72/gvimext.dll.
|
||||
# gvimext64.dll can be obtained from:
|
||||
# https://github.com/vim/vim-win32-installer/releases
|
||||
# It is part of gvim_8.0.*_x64.zip as vim/vim80/GvimExt/gvimext64.dll.
|
||||
# - Make sure there is a diff.exe two levels up (get it from a previous Vim
|
||||
# version).
|
||||
# version). Also put winpty32.dll and winpty-agent.exe there.
|
||||
# - go to ../nsis and do:
|
||||
# > makensis gvim.nsi (takes a few minutes).
|
||||
# ignore warning for libwinpthread-1.dll
|
||||
@@ -467,9 +467,13 @@ dosrt_files: dist prepare no_title.vim
|
||||
cp $$i dist/vim/$(VIMRTDIR)/lang/$$n/LC_MESSAGES/vim.mo; \
|
||||
fi \
|
||||
done
|
||||
cp libintl-8.dll dist/vim/$(VIMRTDIR)/
|
||||
cp libiconv-2.dll dist/vim/$(VIMRTDIR)/
|
||||
cp libgcc_s_sjlj-1.dll dist/vim/$(VIMRTDIR)/
|
||||
mkdir dist/vim/$(VIMRTDIR)/gettext32
|
||||
cp gettext32/libintl-8.dll dist/vim/$(VIMRTDIR)/gettext32/
|
||||
cp gettext32/libiconv-2.dll dist/vim/$(VIMRTDIR)/gettext32/
|
||||
cp gettext32/libgcc_s_sjlj-1.dll dist/vim/$(VIMRTDIR)/gettext32/
|
||||
mkdir dist/vim/$(VIMRTDIR)/gettext64
|
||||
cp gettext64/libintl-8.dll dist/vim/$(VIMRTDIR)/gettext64/
|
||||
cp gettext64/libiconv-2.dll dist/vim/$(VIMRTDIR)/gettext64/
|
||||
|
||||
|
||||
# Used before uploading. Don't delete the AAPDIR/sign files!
|
||||
@@ -496,7 +500,10 @@ dosbin_gvim: dist no_title.vim dist/$(COMMENT_GVIM)
|
||||
cp vimrun.exe dist/vim/$(VIMRTDIR)/vimrun.exe
|
||||
cp installw32.exe dist/vim/$(VIMRTDIR)/install.exe
|
||||
cp uninstalw32.exe dist/vim/$(VIMRTDIR)/uninstal.exe
|
||||
cp gvimext.dll dist/vim/$(VIMRTDIR)/gvimext.dll
|
||||
mkdir dist/vim/$(VIMRTDIR)/GvimExt32
|
||||
cp gvimext.dll dist/vim/$(VIMRTDIR)/GvimExt32/gvimext.dll
|
||||
mkdir dist/vim/$(VIMRTDIR)/GvimExt64
|
||||
cp gvimext64.dll dist/vim/$(VIMRTDIR)/GvimExt64/gvimext.dll
|
||||
cd dist && zip -9 -rD -z gvim$(VERSION).zip vim <$(COMMENT_GVIM)
|
||||
cp gvim.pdb dist/gvim$(VERSION).pdb
|
||||
|
||||
|
||||
+31
-3
@@ -1,5 +1,5 @@
|
||||
This builds a one-click install for Vim for Win32 using the Nullsoft
|
||||
Installation System (NSIS), available at http://www.nullsoft.com/free/nsis/
|
||||
Installation System (NSIS), available at http://nsis.sourceforge.net/
|
||||
|
||||
To build the installable .exe:
|
||||
|
||||
@@ -17,8 +17,14 @@ To build the installable .exe:
|
||||
uninstal.exe,
|
||||
xxd/xxd.exe,
|
||||
|
||||
Then execute tools/rename.bat to rename the executables. (mv command is
|
||||
required.)
|
||||
|
||||
3. Go to the GvimExt directory and build gvimext.dll (or get it from a binary
|
||||
archive).
|
||||
archive). Both 64- and 32-bit versions are needed and should be placed
|
||||
as follows:
|
||||
64-bit: src/GvimExt/gvimext64.dll
|
||||
32-bit: src/GvimExt/gvimext.dll
|
||||
|
||||
4. Go to the VisVim directory and build VisVim.dll (or get it from a binary
|
||||
archive).
|
||||
@@ -27,13 +33,35 @@ To build the installable .exe:
|
||||
get them from a binary archive).
|
||||
|
||||
6. Get a "diff.exe" program and put it in the "../.." directory (above the
|
||||
"vim61" directory, it's the same for all Vim versions).
|
||||
"vim80" directory, it's the same for all Vim versions).
|
||||
You can find one in previous Vim versions or in this archive:
|
||||
http://www.mossbayeng.com/~ron/vim/diffutils.tar.gz
|
||||
Also put winpty32.dll and winpty-agent.exe there.
|
||||
|
||||
7. Do "make uganda.nsis.txt" in runtime/doc. This requires sed, you may have
|
||||
to do this on Unix. Make sure the file is in DOS file format!
|
||||
|
||||
8. Get gettext and iconv DLLs from the following site:
|
||||
https://github.com/mlocati/gettext-iconv-windows/releases
|
||||
Both 64- and 32-bit versions are needed.
|
||||
Download the files gettextX.X.X.X-iconvX.XX-shared-{32,64}.zip, extract
|
||||
DLLs and place them as follows:
|
||||
|
||||
<GETTEXT directory>
|
||||
|
|
||||
+ gettext32/
|
||||
| libintl-8.dll
|
||||
| libiconv-2.dll
|
||||
| libgcc_s_sjlj-1.dll
|
||||
|
|
||||
` gettext64/
|
||||
libintl-8.dll
|
||||
libiconv-2.dll
|
||||
|
||||
The default <GETTEXT directory> is "..", however, you can change it by
|
||||
passing /DGETTEXT=... option to the makensis command.
|
||||
|
||||
|
||||
Install NSIS if you didn't do that already.
|
||||
Also install UPX, if you want a compressed file.
|
||||
|
||||
|
||||
+71
-16
@@ -20,8 +20,15 @@
|
||||
!define VIMTOOLS ..\..
|
||||
!endif
|
||||
|
||||
# Location of gettext.
|
||||
# It must contain two directories: gettext32 and gettext64.
|
||||
# See README.txt for detail.
|
||||
!ifndef GETTEXT
|
||||
!define GETTEXT ${VIMRT}
|
||||
!endif
|
||||
|
||||
# Comment the next line if you don't have UPX.
|
||||
# Get it at http://upx.sourceforge.net
|
||||
# Get it at https://upx.github.io/
|
||||
!define HAVE_UPX
|
||||
|
||||
# comment the next line if you do not want to add Native Language Support
|
||||
@@ -328,24 +335,67 @@ Section "Add an Edit-with-Vim context menu entry"
|
||||
SetOutPath $0
|
||||
ClearErrors
|
||||
SetOverwrite try
|
||||
|
||||
${If} ${RunningX64}
|
||||
# Install 64-bit gvimext.dll into the GvimExt64 directory.
|
||||
SetOutPath $0\GvimExt64
|
||||
ClearErrors
|
||||
File /oname=gvimext.dll ${VIMSRC}\GvimExt\gvimext64.dll
|
||||
${Else}
|
||||
File /oname=gvimext.dll ${VIMSRC}\GvimExt\gvimext.dll
|
||||
!ifdef HAVE_NLS
|
||||
File ${GETTEXT}\gettext64\libintl-8.dll
|
||||
File ${GETTEXT}\gettext64\libiconv-2.dll
|
||||
!endif
|
||||
|
||||
IfErrors 0 GvimExt64Done
|
||||
|
||||
# Can't copy gvimext.dll, create it under another name and rename it
|
||||
# on next reboot.
|
||||
GetTempFileName $3 $0\GvimExt64
|
||||
File /oname=$3 ${VIMSRC}\GvimExt\gvimext64.dll
|
||||
Rename /REBOOTOK $3 $0\GvimExt64\gvimext.dll
|
||||
!ifdef HAVE_NLS
|
||||
GetTempFileName $3 $0\GvimExt64
|
||||
File /oname=$3 ${GETTEXT}\gettext64\libintl-8.dll
|
||||
Rename /REBOOTOK $3 $0\GvimExt64\libintl-8.dll
|
||||
GetTempFileName $3 $0\GvimExt64
|
||||
File /oname=$3 ${GETTEXT}\gettext64\libiconv-2.dll
|
||||
Rename /REBOOTOK $3 $0\GvimExt64\libiconv-2.dll
|
||||
!endif
|
||||
${EndIf}
|
||||
IfErrors 0 GvimExtDone
|
||||
|
||||
GvimExt64Done:
|
||||
|
||||
# Install 32-bit gvimext.dll into the GvimExt32 directory.
|
||||
SetOutPath $0\GvimExt32
|
||||
ClearErrors
|
||||
|
||||
File /oname=gvimext.dll ${VIMSRC}\GvimExt\gvimext.dll
|
||||
!ifdef HAVE_NLS
|
||||
File ${GETTEXT}\gettext32\libintl-8.dll
|
||||
File ${GETTEXT}\gettext32\libiconv-2.dll
|
||||
File ${GETTEXT}\gettext32\libgcc_s_sjlj-1.dll
|
||||
!endif
|
||||
|
||||
IfErrors 0 GvimExt32Done
|
||||
|
||||
# Can't copy gvimext.dll, create it under another name and rename it on
|
||||
# next reboot.
|
||||
GetTempFileName $3 $0
|
||||
${If} ${RunningX64}
|
||||
File /oname=$3 ${VIMSRC}\GvimExt\gvimext64.dll
|
||||
${Else}
|
||||
File /oname=$3 ${VIMSRC}\GvimExt\gvimext.dll
|
||||
${EndIf}
|
||||
Rename /REBOOTOK $3 $0\gvimext.dll
|
||||
GetTempFileName $3 $0\GvimExt32
|
||||
File /oname=$3 ${VIMSRC}\GvimExt\gvimext.dll
|
||||
Rename /REBOOTOK $3 $0\GvimExt32\gvimext.dll
|
||||
!ifdef HAVE_NLS
|
||||
GetTempFileName $3 $0\GvimExt32
|
||||
File /oname=$3 ${GETTEXT}\gettext32\libintl-8.dll
|
||||
Rename /REBOOTOK $3 $0\GvimExt32\libintl-8.dll
|
||||
GetTempFileName $3 $0\GvimExt32
|
||||
File /oname=$3 ${GETTEXT}\gettext32\libiconv-2.dll
|
||||
Rename /REBOOTOK $3 $0\GvimExt32\libiconv-2.dll
|
||||
GetTempFileName $3 $0\GvimExt32
|
||||
File /oname=$3 ${GETTEXT}\gettext32\libgcc_s_sjlj-1.dll
|
||||
Rename /REBOOTOK $3 $0\GvimExt32\libgcc_s_sjlj-1.dll
|
||||
!endif
|
||||
|
||||
GvimExtDone:
|
||||
GvimExt32Done:
|
||||
SetOverwrite lastused
|
||||
|
||||
# We don't have a separate entry for the "Open With..." menu, assume
|
||||
@@ -394,10 +444,10 @@ SectionEnd
|
||||
File ${VIMRT}\keymap\README.txt
|
||||
File ${VIMRT}\keymap\*.vim
|
||||
SetOutPath $0
|
||||
File ${VIMRT}\libintl-8.dll
|
||||
File ${VIMRT}\libiconv-2.dll
|
||||
File /nonfatal ${VIMRT}\libwinpthread-1.dll
|
||||
File /nonfatal ${VIMRT}\libgcc_s_sjlj-1.dll
|
||||
File ${GETTEXT}\gettext32\libintl-8.dll
|
||||
File ${GETTEXT}\gettext32\libiconv-2.dll
|
||||
#File /nonfatal ${VIMRT}\libwinpthread-1.dll
|
||||
File /nonfatal ${GETTEXT}\gettext32\libgcc_s_sjlj-1.dll
|
||||
SectionEnd
|
||||
!endif
|
||||
|
||||
@@ -437,6 +487,11 @@ Section Uninstall
|
||||
$\nIt contains the Vim executables and runtime files." IDNO NoRemoveExes
|
||||
|
||||
Delete /REBOOTOK $0\*.dll
|
||||
Delete /REBOOTOK $0\GvimExt32\*.dll
|
||||
${If} ${RunningX64}
|
||||
Delete /REBOOTOK $0\GvimExt64\*.dll
|
||||
${EndIf}
|
||||
|
||||
ClearErrors
|
||||
# Remove everything but *.dll files. Avoids that
|
||||
# a lot remains when gvimext.dll cannot be deleted.
|
||||
|
||||
@@ -492,6 +492,18 @@ CmdUndefined When a user command is used but it isn't
|
||||
command is defined. An alternative is to
|
||||
always define the user command and have it
|
||||
invoke an autoloaded function. See |autoload|.
|
||||
*CmdlineEnter*
|
||||
CmdlineEnter After moving the cursor to the command line,
|
||||
where the user can type a command or search
|
||||
string.
|
||||
<afile> is set to a single character,
|
||||
indicating the type of command-line.
|
||||
|cmdwin-char|
|
||||
*CmdlineLeave*
|
||||
CmdlineLeave Before leaving the command line.
|
||||
<afile> is set to a single character,
|
||||
indicating the type of command-line.
|
||||
|cmdwin-char|
|
||||
*CmdwinEnter*
|
||||
CmdwinEnter After entering the command-line window.
|
||||
Useful for setting options specifically for
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*diff.txt* For Vim version 8.0. Last change: 2017 Sep 02
|
||||
*diff.txt* For Vim version 8.0. Last change: 2017 Sep 26
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -10,7 +10,7 @@ eight versions of the same file.
|
||||
|
||||
The basics are explained in section |08.7| of the user manual.
|
||||
|
||||
1. Starting diff mode |vimdiff|
|
||||
1. Starting diff mode |start-vimdiff|
|
||||
2. Viewing diffs |view-diffs|
|
||||
3. Jumping to diffs |jumpto-diffs|
|
||||
4. Copying diffs |copy-diffs|
|
||||
@@ -19,7 +19,7 @@ The basics are explained in section |08.7| of the user manual.
|
||||
{not in Vi}
|
||||
|
||||
==============================================================================
|
||||
1. Starting diff mode
|
||||
1. Starting diff mode *start-vimdiff*
|
||||
|
||||
The easiest way to start editing in diff mode is with the "vimdiff" command.
|
||||
This starts Vim as usual, and additionally sets up for viewing the differences
|
||||
|
||||
@@ -1912,11 +1912,16 @@ v:termstyleresp The escape sequence returned by the terminal for the |t_RS|
|
||||
termcap entry. This is used to find out what the shape of the
|
||||
cursor is. This is used by |term_getcursor()|.
|
||||
|
||||
*v:termrgbresp*
|
||||
v:termrgbresp The escape sequence returned by the terminal for the |t_RB|
|
||||
*v:termrbgresp*
|
||||
v:termrbgresp The escape sequence returned by the terminal for the |t_RB|
|
||||
termcap entry. This is used to find out what the terminal
|
||||
background color is, see 'background'.
|
||||
|
||||
*v:termrfgresp*
|
||||
v:termrfgresp The escape sequence returned by the terminal for the |t_RF|
|
||||
termcap entry. This is used to find out what the terminal
|
||||
foreground color is.
|
||||
|
||||
*v:termu7resp*
|
||||
v:termu7resp The escape sequence returned by the terminal for the |t_u7|
|
||||
termcap entry. This is used to find out what the terminal
|
||||
|
||||
+11
-5
@@ -1,4 +1,4 @@
|
||||
*gui.txt* For Vim version 8.0. Last change: 2017 Sep 19
|
||||
*gui.txt* For Vim version 8.0. Last change: 2017 Sep 23
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -796,11 +796,17 @@ make the items look like icons.
|
||||
If the items do not fit then the last ones cannot be used. The toolbar does
|
||||
not wrap.
|
||||
|
||||
Note that Vim may be in any mode when executing these commands. The menu
|
||||
should be defined for Normal mode and will be executed without changing the
|
||||
current mode. Thus if the current window is in Visual mode and the menu
|
||||
command does not intentionally change the mode, Vim will remain in Visual
|
||||
mode. Best is to use `:nnoremenu` to avoid side effects.
|
||||
|
||||
Example for debugger tools: >
|
||||
amenu 1.10 WinBar.Step :Step<CR>
|
||||
amenu 1.20 WinBar.Next :Next<CR>
|
||||
amenu 1.30 WinBar.Finish :Finish<CR>
|
||||
amenu 1.40 WinBar.Cont :Continue<CR>
|
||||
nnoremenu 1.10 WinBar.Step :Step<CR>
|
||||
nnoremenu 1.20 WinBar.Next :Next<CR>
|
||||
nnoremenu 1.30 WinBar.Finish :Finish<CR>
|
||||
nnoremenu 1.40 WinBar.Cont :Continue<CR>
|
||||
<
|
||||
The window toolbar uses the ToolbarLine and ToolbarButton highlight groups.
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*if_mzsch.txt* For Vim version 8.0. Last change: 2016 Jan 24
|
||||
*if_mzsch.txt* For Vim version 8.0. Last change: 2017 Oct 08
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Sergey Khorev
|
||||
@@ -278,12 +278,15 @@ When you don't use the MzScheme interface you don't need them, thus you can
|
||||
use Vim without these DLL files.
|
||||
NOTE: Newer version of MzScheme (Racket) require earlier (trampolined)
|
||||
initialisation via scheme_main_setup. So Vim always loads the MzScheme DLL at
|
||||
startup if possible.
|
||||
startup if possible. This may make Vim startup slower.
|
||||
|
||||
To use the MzScheme interface the MzScheme DLLs must be in your search path.
|
||||
In a console window type "path" to see what directories are used.
|
||||
|
||||
The names of the DLLs must match the MzScheme version Vim was compiled with.
|
||||
On MS-Windows the options 'mzschemedll' and 'mzschemegcdll' are used for the
|
||||
name of the library to load. The initial value is specified at build time.
|
||||
|
||||
The version of the DLL must match the MzScheme version Vim was compiled with.
|
||||
For MzScheme version 209 they will be "libmzsch209_000.dll" and
|
||||
"libmzgc209_000.dll". To know for sure look at the output of the ":version"
|
||||
command, look for -DDYNAMIC_MZSCH_DLL="something" and
|
||||
|
||||
+2
-2
@@ -1,4 +1,4 @@
|
||||
*map.txt* For Vim version 8.0. Last change: 2017 Sep 17
|
||||
*map.txt* For Vim version 8.0. Last change: 2017 Sep 23
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -29,7 +29,7 @@ manual.
|
||||
1. Key mapping *key-mapping* *mapping* *macro*
|
||||
|
||||
Key mapping is used to change the meaning of typed keys. The most common use
|
||||
is to define a sequence commands for a function key. Example: >
|
||||
is to define a sequence of commands for a function key. Example: >
|
||||
|
||||
:map <F2> a<C-R>=strftime("%c")<CR><Esc>
|
||||
|
||||
|
||||
@@ -463,12 +463,6 @@ changed. To avoid the message reset the 'warn' option.
|
||||
Something inside Vim went wrong and resulted in a NULL pointer. If you know
|
||||
how to reproduce this problem, please report it. |bugs|
|
||||
|
||||
*E172* >
|
||||
Only one file name allowed
|
||||
|
||||
The ":edit" command only accepts one file name. When you want to specify
|
||||
several files for editing use ":next" |:next|.
|
||||
|
||||
*E41* *E82* *E83* *E342* >
|
||||
Out of memory!
|
||||
Out of memory! (allocating {number} bytes)
|
||||
|
||||
@@ -1317,7 +1317,10 @@ the current line is included. You can then use "%" to go to the matching line.
|
||||
H To line [count] from top (Home) of window (default:
|
||||
first line on the window) on the first non-blank
|
||||
character |linewise|. See also 'startofline' option.
|
||||
Cursor is adjusted for 'scrolloff' option.
|
||||
Cursor is adjusted for 'scrolloff' option, unless an
|
||||
operator is pending, in which case the text may
|
||||
scroll. E.g. "yH" yanks from the first visible line
|
||||
until the cursor line (inclusive).
|
||||
|
||||
*M*
|
||||
M To Middle line of window, on the first non-blank
|
||||
@@ -1327,7 +1330,10 @@ M To Middle line of window, on the first non-blank
|
||||
L To line [count] from bottom of window (default: Last
|
||||
line on the window) on the first non-blank character
|
||||
|linewise|. See also 'startofline' option.
|
||||
Cursor is adjusted for 'scrolloff' option.
|
||||
Cursor is adjusted for 'scrolloff' option, unless an
|
||||
operator is pending, in which case the text may
|
||||
scroll. E.g. "yL" yanks from the cursor to the last
|
||||
visible line.
|
||||
|
||||
<LeftMouse> Moves to the position on the screen where the mouse
|
||||
click is |exclusive|. See also |<LeftMouse>|. If the
|
||||
|
||||
+29
-4
@@ -1,4 +1,4 @@
|
||||
*options.txt* For Vim version 8.0. Last change: 2017 Sep 16
|
||||
*options.txt* For Vim version 8.0. Last change: 2017 Sep 24
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -4504,8 +4504,8 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
1 over-the-spot style
|
||||
See: |xim-input-style|
|
||||
|
||||
For a long time on-the-spot sytle had been used in GTK version of vim,
|
||||
however, it is known that it causes troubles when using mappings,
|
||||
For a long time on-the-spot style had been used in the GTK version of
|
||||
vim, however, it is known that it causes troubles when using mappings,
|
||||
|single-repeat|, etc. Therefore over-the-spot style becomes the
|
||||
default now. This should work fine for most people, however if you
|
||||
have any problem with it, try using on-the-spot style.
|
||||
@@ -5630,6 +5630,31 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
time in msec between two mouse clicks for the second click to be
|
||||
recognized as a multi click.
|
||||
|
||||
*'mzschemedll'*
|
||||
'mzschemedll' string (default depends on the build)
|
||||
global
|
||||
{not in Vi}
|
||||
{only available when compiled with the |+mzscheme/dyn|
|
||||
feature}
|
||||
Specifies the name of the MzScheme shared library. The default is
|
||||
DYNAMIC_MZSCH_DLL which was specified at compile time.
|
||||
Environment variables are expanded |:set_env|.
|
||||
This option cannot be set from a |modeline| or in the |sandbox|, for
|
||||
security reasons.
|
||||
|
||||
*'mzschemegcdll'*
|
||||
'mzschemegcdll' string (default depends on the build)
|
||||
global
|
||||
{not in Vi}
|
||||
{only available when compiled with the |+mzscheme/dyn|
|
||||
feature}
|
||||
Specifies the name of the MzScheme GC shared library. The default is
|
||||
DYNAMIC_MZGC_DLL which was specified at compile time.
|
||||
The value can be equal to 'mzschemedll' if it includes the GC code.
|
||||
Environment variables are expanded |:set_env|.
|
||||
This option cannot be set from a |modeline| or in the |sandbox|, for
|
||||
security reasons.
|
||||
|
||||
*'mzquantum'* *'mzq'*
|
||||
'mzquantum' 'mzq' number (default 100)
|
||||
global
|
||||
@@ -8466,7 +8491,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
Save the whole buffer for undo when reloading it. This applies to the
|
||||
":e!" command and reloading for when the buffer changed outside of
|
||||
Vim. |FileChangedShell|
|
||||
The save only happens when this options is negative or when the number
|
||||
The save only happens when this option is negative or when the number
|
||||
of lines is smaller than the value of this option.
|
||||
Set this option to zero to disable undo for a reload.
|
||||
|
||||
|
||||
@@ -8565,6 +8565,7 @@ star pattern.txt /*star*
|
||||
starstar editing.txt /*starstar*
|
||||
starstar-wildcard editing.txt /*starstar-wildcard*
|
||||
start-of-file pattern.txt /*start-of-file*
|
||||
start-vimdiff diff.txt /*start-vimdiff*
|
||||
starting starting.txt /*starting*
|
||||
starting-amiga starting.txt /*starting-amiga*
|
||||
starting.txt starting.txt /*starting.txt*
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*terminal.txt* For Vim version 8.0. Last change: 2017 Sep 17
|
||||
*terminal.txt* For Vim version 8.0. Last change: 2017 Sep 26
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -81,7 +81,14 @@ themselves (like Vim does).
|
||||
|
||||
To change the keys you type use terminal mode mappings, see |:tmap|.
|
||||
These are defined like any mapping, but apply only when typing keys that are
|
||||
sent to the job running in the terminal.
|
||||
sent to the job running in the terminal. For example, to make Escape switch
|
||||
to Terminal-Normal mode: >
|
||||
tnoremap <Esc> <C-W>N
|
||||
|
||||
After opening the terminal window and setting 'buftype' to "terminal" the
|
||||
BufWinEnter autocommand event is triggered. This makes it possible to set
|
||||
options specifically for the window and buffer. Example: >
|
||||
au BufWinEnter * if &buftype == 'terminal' | setlocal bufhidden=hide | endif
|
||||
|
||||
|
||||
Size and color ~
|
||||
@@ -328,7 +335,7 @@ Load the plugin with this command: >
|
||||
packadd termdebug
|
||||
< *:Termdebug*
|
||||
To start debugging use `:TermDebug` folowed by the command name, for example: >
|
||||
:TermDebug vim
|
||||
:Termdebug vim
|
||||
|
||||
This opens two windows:
|
||||
gdb window A terminal window in which "gdb vim" is executed. Here you
|
||||
@@ -352,6 +359,62 @@ When the debugger ends, typically by typing "quit" in the gdb window, the two
|
||||
opened windows are closed.
|
||||
|
||||
|
||||
Example session ~
|
||||
|
||||
Start in the Vim "src" directory and build Vim: >
|
||||
% make
|
||||
Start Vim: >
|
||||
% ./vim
|
||||
Load the termdebug plugin and start debugging Vim: >
|
||||
:packadd termdebug
|
||||
:Termdebug vim
|
||||
You should now have three windows:
|
||||
source - where you started, has a window toolbar with buttons
|
||||
gdb - you can type gdb commands here
|
||||
program - the executed program will use this window
|
||||
You can use CTRL-W CTRL-W or the mouse to move focus between windows.
|
||||
Put focus on the gdb window and type: >
|
||||
break ex_help
|
||||
run
|
||||
Vim will start running in the program window. Put focus there and type: >
|
||||
:help gui
|
||||
Gdb will run into the ex_help breakpoint. The source window now shows the
|
||||
ex_cmds.c file. A ">>" marker will appear where the breakpoint was set. The
|
||||
line where the debugger stopped is highlighted. You can now step through the
|
||||
program. Let's use the mouse: click on the "Next" button in the window
|
||||
toolbar. You will see the highlighting move as the debugger executes a line
|
||||
of source code.
|
||||
|
||||
Click "Next" a few times until the for loop is highlighted. Put the cursor on
|
||||
the end of "eap->arg", then click "Eval" in the toolbar. You will see this
|
||||
displayed:
|
||||
"eap->arg": 0x555555e68855 "gui" ~
|
||||
This way you can inspect the value of local variables. You can also focus the
|
||||
gdb window and use a "print" command, e.g.: >
|
||||
print *eap
|
||||
|
||||
Now go back to the source window and put the cursor on the first line after
|
||||
the for loop, then type: >
|
||||
:Break
|
||||
You will see a ">>" marker appear, this indicates the new breakpoint. Now
|
||||
click "Cont" in the toolbar and the code until the breakpoint will be
|
||||
executed.
|
||||
|
||||
You can type more advanced commands in the gdb window. For example, type: >
|
||||
watch curbuf
|
||||
Now click "Cont" in the toolbar (or type "cont" in the gdb window). Execution
|
||||
will now continue until the value of "curbuf" changes, which is in do_ecmd().
|
||||
To remove this watchpoint again type in the gdb window: >
|
||||
delete 3
|
||||
|
||||
You can see the stack by typing in the gdb window: >
|
||||
where
|
||||
Move through the stack frames, e.g. with: >
|
||||
frame 3
|
||||
The source window will show the code, at the point where the call was made to
|
||||
a deeper level.
|
||||
|
||||
|
||||
Stepping through code ~
|
||||
|
||||
Put focus on the gdb window to type commands there. Some common ones are:
|
||||
@@ -410,7 +473,7 @@ To change the name of the gdb command, set the "termdebugger" variable before
|
||||
invoking `:Termdebug`: >
|
||||
let termdebugger = "mygdb"
|
||||
Only debuggers fully compatible with gdb will work. Vim uses the GDB/MI
|
||||
interface.
|
||||
interface. This probably requires gdb version 7.12.
|
||||
|
||||
The color of the signs can be adjusted with these highlight groups:
|
||||
- debugPC the current position
|
||||
@@ -429,6 +492,10 @@ vertical split: >
|
||||
let g:termdebug_wide = 163
|
||||
This will set &columns to 163 when :Termdebug is used. The value is restored
|
||||
when quitting the debugger.
|
||||
If g:termdebug_wide is set and &Columns is already larger than
|
||||
g:termdebug_wide then a vertical split will be used without changing &columns.
|
||||
Set it to 1 to get a vertical split without every changing &columns (useful
|
||||
for when the terminal can't be resized by Vim).
|
||||
|
||||
|
||||
|
||||
|
||||
+22
-26
@@ -1,4 +1,4 @@
|
||||
*todo.txt* For Vim version 8.0. Last change: 2017 Sep 19
|
||||
*todo.txt* For Vim version 8.0. Last change: 2017 Sep 27
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -35,17 +35,16 @@ entered there will not be repeated below, unless there is extra information.
|
||||
*known-bugs*
|
||||
-------------------- Known bugs and current work -----------------------
|
||||
|
||||
MS-Windows build and installer improvements:
|
||||
- Switch to VC2015 for building. (Ken Takata, 2017 Sep 21)
|
||||
Check resulting binary on XP.
|
||||
- Patch to install 32 and 64 bit Gvimext and related dll files. (Ken Takata,
|
||||
2017 Sep 23, #2144)
|
||||
|
||||
:term hangs in Athena and Motif. (Kazunobu Kuriyama, 2017 Sep 17)
|
||||
|
||||
Always use FEAT_WINDOWS:
|
||||
May get rid of:
|
||||
#define W_WINCOL(wp) (wp->w_wincol)
|
||||
#define W_WIDTH(wp) (wp->w_width)
|
||||
#define W_ENDCOL(wp) (wp->w_wincol + wp->w_width)
|
||||
#define W_VSEP_WIDTH(wp) (wp->w_vsep_width)
|
||||
#define W_STATUS_HEIGHT(wp) (wp->w_status_height)
|
||||
#define W_WINROW(wp) (wp->w_winrow)
|
||||
# define ALIST(win) (win)->w_alist
|
||||
Universal solution to detect if t_RS is working, using cursor position.
|
||||
Koichi Iwamoto, #2126
|
||||
|
||||
No maintainer for Vietnamese translations.
|
||||
No maintainer for Simplified Chinese translations.
|
||||
@@ -70,6 +69,8 @@ Terminal emulator window:
|
||||
with the expected screenshot. Set t_Co to 256.
|
||||
|
||||
+channel:
|
||||
- Add a separate timeout for opening a socket. Currently it's fixed at 50
|
||||
msec, which is too small for a remote connection. (tverniquet, #2130)
|
||||
- Try out background make plugin:
|
||||
https://github.com/AndrewVos/vim-make-background
|
||||
- Problem with stderr on Windows? (Vincent Rischmann, 2016 Aug 31, #1026)
|
||||
@@ -94,6 +95,8 @@ Terminal emulator window:
|
||||
Although user could use "xterm -e 'cmd arg'".
|
||||
|
||||
Regexp problems:
|
||||
- [:space:] only matches ASCII spaces. Add [:white:] for all space-like
|
||||
characters, esp. including 0xa0. Use character class zero.
|
||||
- Since 7.4.704 the old regex engine fails to match [[:print:]] in 0xf6.
|
||||
(Manuel Ortega, 2016 Apr 24)
|
||||
Test fails on Mac. Avoid using isalpha(), isalnum(), etc? Depends on
|
||||
@@ -149,14 +152,11 @@ Use names that indicate their appearnce (Christian Brabandt, 2017 Aug 3)
|
||||
Suggested by Hiroki Kokubun:
|
||||
- [Iceberg](https://github.com/cocopon/iceberg.vim) (my one)
|
||||
- [hybrid](https://github.com/w0ng/vim-hybrid)
|
||||
|
||||
Patch to update Brazilian translations. (Eduardo Dobay, 2017 Sep 10, #2077)
|
||||
Include solarized color scheme?
|
||||
|
||||
When starting with --clean packages under "start" are not loaded. Make this
|
||||
work: :packadd START {name} similar to :runtime START name
|
||||
|
||||
Patch to refactor qf_jump(). (Yegappan, 2017 Sep 17)
|
||||
|
||||
When using :packadd files under "later" are not used, which is inconsistent
|
||||
with packages under "start". (xtal8, #1994)
|
||||
|
||||
@@ -175,14 +175,19 @@ Patch for not profiling the first line of a script. (Lemonboy, 2017 Sep 17,
|
||||
Mac Terminal.app: ctermbg=15 gives light grey instead of white.
|
||||
ctermbg=256 breaks clearing till end of the line. Both work fine in xterm.
|
||||
|
||||
Patch to avoid `rb_load_protect` as a workaround not to crash (#2147)
|
||||
|
||||
Patch for drag&drop reordering of GUI tab pages reordering.
|
||||
(Ken Takata, 2013 Nov 22, second one, also by Masamichi Abe)
|
||||
Now on Git: https://gist.github.com/nocd5/165286495c782b815b94
|
||||
Update 2016 Aug 10.
|
||||
|
||||
Using ":hi" causes a redraw, but a redraw may update the status line, which
|
||||
may trigger a ":hi" command.
|
||||
|
||||
Last line not in profile if it is a continuation line. (LemonBoy, 2017 Sep 17,
|
||||
#2112)
|
||||
|
||||
"vim -c startinsert!" doesn't append. (#2117)
|
||||
|
||||
With foldmethod=syntax and nofoldenable comment highlighting isn't removed.
|
||||
(Marcin Szewczyk, 2017 Apr 26)
|
||||
|
||||
@@ -203,6 +208,7 @@ Patch to make ":set scroll&" work properly. (Ozaki Kiichi, 2017 Sep 17, #2104)
|
||||
|
||||
mswin.vim should not map CTRL-F in the console (#2093)
|
||||
Patch from Christian, 2017 Sep 15.
|
||||
Installer patch from Ken Takata, link on #2093.
|
||||
|
||||
Default install on MS-Windows should source defaults.vim.
|
||||
Ask whether to use Windows or Vim key behavior?
|
||||
@@ -324,8 +330,6 @@ Use gvimext.dll from the nightly build? (Issue #249)
|
||||
Problem with using :cd when remotely editing a file. (Gerd Wachsmuth, 2017 May
|
||||
8, #1690)
|
||||
|
||||
Include solarized color scheme?
|
||||
|
||||
Running test_gui and test_gui_init with Motif sometimes kills the window
|
||||
manager. Problem with Motif?
|
||||
|
||||
@@ -660,11 +664,6 @@ Patch to improve map documentation. Issue #799.
|
||||
|
||||
Patch for syntax folding optimization. (Shougo, 2016 Sep 6, #1045)
|
||||
|
||||
Patch for drag&drop reordering of GUI tab pages reordering.
|
||||
(Ken Takata, 2013 Nov 22, second one, also by Masamichi Abe)
|
||||
Now on Git: https://gist.github.com/nocd5/165286495c782b815b94
|
||||
Update 2016 Aug 10.
|
||||
|
||||
We can use '. to go to the last change in the current buffer, but how about
|
||||
the last change in any buffer? Can we use ', (, is next to .)?
|
||||
|
||||
@@ -2236,9 +2235,6 @@ with "gvim -nb:localhost:55555:foo". From nc do: '1:editFile!0 "foo"'. Then
|
||||
go to Insert mode and add a few lines. Then backspacing every other time
|
||||
moves the cursor instead of deleting. (Chris Kaiser, 2007 Sep 25)
|
||||
|
||||
Windows installer should install 32-bit version of right-click handler also on
|
||||
64-bit systems. (Brian Cunningham, 2011 Dec 28)
|
||||
|
||||
Windows installer could add a "open in new tab of existing Vim" menu entry.
|
||||
Gvimext: patch to add "Edit with single Vim &tabbed" menu entry.
|
||||
Just have two choices, always using one Vim and selecting between using an
|
||||
|
||||
+1
-1
@@ -325,7 +325,7 @@ You can still edit the buffer, but will be prevented from accidentally
|
||||
overwriting a file.
|
||||
If you do want to overwrite a file, add an exclamation mark to the Ex command,
|
||||
as in ":w!".
|
||||
The \-R option also implies the \-n option (see below).
|
||||
The \-R option also implies the \-n option (see above).
|
||||
The 'readonly' option can be reset with ":set noro".
|
||||
See ":help 'readonly'".
|
||||
.TP
|
||||
|
||||
+1
-1
@@ -225,7 +225,7 @@ OPTIONS
|
||||
dentally overwriting a file. If you do want to overwrite a
|
||||
file, add an exclamation mark to the Ex command, as in
|
||||
":w!". The -R option also implies the -n option (see
|
||||
below). The 'readonly' option can be reset with ":set
|
||||
above). The 'readonly' option can be reset with ":set
|
||||
noro". See ":help 'readonly'".
|
||||
|
||||
-r List swap files, with information about using them for
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*windows.txt* For Vim version 8.0. Last change: 2017 Sep 08
|
||||
*windows.txt* For Vim version 8.0. Last change: 2017 Sep 25
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -619,7 +619,8 @@ The minimal height and width of a window is set with 'winminheight' and
|
||||
41. :buffers list of buffers
|
||||
|
||||
The meaning of [N] depends on the command:
|
||||
[N] is number of buffers to go forward/backward on ?2, ?3, and ?4
|
||||
[N] is the number of buffers to go forward/backward on 2/12/22/32,
|
||||
3/13/23/33, and 4/14/24/34
|
||||
[N] is an argument number, defaulting to current argument, for 1 and 21
|
||||
[N] is a buffer number, defaulting to current buffer, for 11 and 31
|
||||
[N] is a count for 19 and 39
|
||||
|
||||
+4
-2
@@ -1,6 +1,6 @@
|
||||
" Vim script for Evim key bindings
|
||||
" Maintainer: Bram Moolenaar <Bram@vim.org>
|
||||
" Last Change: 2016 Jul 24
|
||||
" Last Change: 2017 Sep 20
|
||||
|
||||
" Don't use Vi-compatible mode.
|
||||
set nocompatible
|
||||
@@ -67,8 +67,10 @@ endif " has("autocmd")
|
||||
"
|
||||
" The matchit plugin makes the % command work better, but it is not backwards
|
||||
" compatible.
|
||||
" The ! means the package won't be loaded right away but when plugins are
|
||||
" loaded during initialization.
|
||||
if has('syntax') && has('eval')
|
||||
packadd matchit
|
||||
packadd! matchit
|
||||
endif
|
||||
|
||||
" vim: set sw=2 :
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
" Author: Andy Cedilnik <andy.cedilnik@kitware.com>
|
||||
" Maintainer: Dimitri Merejkowsky <d.merej@gmail.com>
|
||||
" Former Maintainer: Karthik Krishnan <karthik.krishnan@kitware.com>
|
||||
" Last Change: 2017 Aug 30
|
||||
" Last Change: 2017 Sep 24
|
||||
"
|
||||
" Licence: The CMake license applies to this file. See
|
||||
" https://cmake.org/licensing
|
||||
@@ -14,7 +14,6 @@ if exists("b:did_indent")
|
||||
endif
|
||||
let b:did_indent = 1
|
||||
|
||||
setlocal et
|
||||
setlocal indentexpr=CMakeGetIndent(v:lnum)
|
||||
setlocal indentkeys+==ENDIF(,ENDFOREACH(,ENDMACRO(,ELSE(,ELSEIF(,ENDWHILE(
|
||||
|
||||
@@ -67,19 +66,19 @@ fun! CMakeGetIndent(lnum)
|
||||
let ind = ind
|
||||
else
|
||||
if previous_line =~? cmake_indent_begin_regex
|
||||
let ind = ind + &sw
|
||||
let ind = ind + shiftwidth()
|
||||
endif
|
||||
if previous_line =~? cmake_indent_open_regex
|
||||
let ind = ind + &sw
|
||||
let ind = ind + shiftwidth()
|
||||
endif
|
||||
endif
|
||||
|
||||
" Subtract
|
||||
if this_line =~? cmake_indent_end_regex
|
||||
let ind = ind - &sw
|
||||
let ind = ind - shiftwidth()
|
||||
endif
|
||||
if previous_line =~? cmake_indent_close_regex
|
||||
let ind = ind - &sw
|
||||
let ind = ind - shiftwidth()
|
||||
endif
|
||||
|
||||
return ind
|
||||
|
||||
+11
-9
@@ -43,12 +43,14 @@ func s:StartDebug(cmd)
|
||||
let s:startwin = win_getid(winnr())
|
||||
let s:startsigncolumn = &signcolumn
|
||||
|
||||
if exists('g:termdebug_wide') && &columns < g:termdebug_wide
|
||||
let s:save_columns = &columns
|
||||
let &columns = g:termdebug_wide
|
||||
let s:save_columns = 0
|
||||
if exists('g:termdebug_wide')
|
||||
if &columns < g:termdebug_wide
|
||||
let s:save_columns = &columns
|
||||
let &columns = g:termdebug_wide
|
||||
endif
|
||||
let vertical = 1
|
||||
else
|
||||
let s:save_columns = 0
|
||||
let vertical = 0
|
||||
endif
|
||||
|
||||
@@ -175,11 +177,11 @@ func s:InstallCommands()
|
||||
nnoremap K :Evaluate<CR>
|
||||
|
||||
if has('menu')
|
||||
amenu WinBar.Step :Step<CR>
|
||||
amenu WinBar.Next :Over<CR>
|
||||
amenu WinBar.Finish :Finish<CR>
|
||||
amenu WinBar.Cont :Continue<CR>
|
||||
amenu WinBar.Eval :Evaluate<CR>
|
||||
nnoremenu WinBar.Step :Step<CR>
|
||||
nnoremenu WinBar.Next :Over<CR>
|
||||
nnoremenu WinBar.Finish :Finish<CR>
|
||||
nnoremenu WinBar.Cont :Continue<CR>
|
||||
nnoremenu WinBar.Eval :Evaluate<CR>
|
||||
endif
|
||||
endfunc
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,7 +1,7 @@
|
||||
" An example for a vimrc file.
|
||||
"
|
||||
" Maintainer: Bram Moolenaar <Bram@vim.org>
|
||||
" Last change: 2016 Jul 28
|
||||
" Last change: 2017 Sep 20
|
||||
"
|
||||
" To use it, copy it to
|
||||
" for Unix and OS/2: ~/.vimrc
|
||||
@@ -53,6 +53,8 @@ endif " has("autocmd")
|
||||
"
|
||||
" The matchit plugin makes the % command work better, but it is not backwards
|
||||
" compatible.
|
||||
" The ! means the package won't be loaded right away but when plugins are
|
||||
" loaded during initialization.
|
||||
if has('syntax') && has('eval')
|
||||
packadd matchit
|
||||
packadd! matchit
|
||||
endif
|
||||
|
||||
@@ -51,14 +51,17 @@ olelibsdll = ole32.lib uuid.lib oleaut32.lib user32.lib gdi32.lib advapi32.lib
|
||||
# include CPUARG
|
||||
cflags = $(cflags) $(CPUARG)
|
||||
|
||||
SUBSYSTEM = console
|
||||
!if "$(SUBSYSTEM_VER)" != ""
|
||||
SUBSYSTEM = $(SUBSYSTEM),$(SUBSYSTEM_VER)
|
||||
!endif
|
||||
|
||||
all: gvimext.dll
|
||||
|
||||
gvimext.dll: gvimext.obj \
|
||||
gvimext.res
|
||||
# $(implib) /NOLOGO -machine:$(CPU) -def:gvimext.def $** -out:gvimext.lib
|
||||
# $(link) $(dlllflags) -base:0x1C000000 -out:$*.dll $** $(olelibsdll) shell32.lib gvimext.lib comctl32.lib gvimext.exp
|
||||
$(link) $(lflags) -dll -def:gvimext.def -base:0x1C000000 -out:$*.dll $** $(olelibsdll) shell32.lib comctl32.lib
|
||||
if exist $*.dll.manifest mt -nologo -manifest $*.dll.manifest -outputresource:$*.dll;2
|
||||
$(link) $(lflags) -dll -def:gvimext.def -base:0x1C000000 -out:$*.dll $** $(olelibsdll) shell32.lib comctl32.lib -subsystem:$(SUBSYSTEM)
|
||||
if exist $*.dll.manifest mt -nologo -manifest $*.dll.manifest -outputresource:$*.dll;2
|
||||
|
||||
gvimext.obj: gvimext.h
|
||||
|
||||
|
||||
+15
-52
@@ -38,7 +38,7 @@ STGMEDIUM medium;
|
||||
HRESULT hres = 0;
|
||||
UINT cbFiles = 0;
|
||||
|
||||
/* The buffers size used to be MAX_PATH (256 bytes), but that's not always
|
||||
/* The buffers size used to be MAX_PATH (260 bytes), but that's not always
|
||||
* enough */
|
||||
#define BUFSIZE 1100
|
||||
|
||||
@@ -203,7 +203,7 @@ dyn_libintl_init(char *dir)
|
||||
if (hLibintlDLL)
|
||||
return 1;
|
||||
|
||||
// Load gettext library from the Vim runtime directory.
|
||||
// Load gettext library from $VIMRUNTIME\GvimExt{64,32} directory.
|
||||
// Add the directory to $PATH temporarily.
|
||||
len = GetEnvironmentVariableW(L"PATH", NULL, 0);
|
||||
len2 = MAX_PATH + 1 + len;
|
||||
@@ -212,7 +212,11 @@ dyn_libintl_init(char *dir)
|
||||
if (buf != NULL && buf2 != NULL)
|
||||
{
|
||||
GetEnvironmentVariableW(L"PATH", buf, len);
|
||||
_snwprintf(buf2, len2, L"%S;%s", dir, buf);
|
||||
#ifdef _WIN64
|
||||
_snwprintf(buf2, len2, L"%S\\GvimExt64;%s", dir, buf);
|
||||
#else
|
||||
_snwprintf(buf2, len2, L"%S\\GvimExt32;%s", dir, buf);
|
||||
#endif
|
||||
SetEnvironmentVariableW(L"PATH", buf2);
|
||||
hLibintlDLL = LoadLibrary(GETTEXT_DLL);
|
||||
#ifdef GETTEXT_DLL_ALT
|
||||
@@ -883,37 +887,7 @@ BOOL CShellExt::LoadMenuIcon()
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
#ifdef WIN32
|
||||
// This symbol is not defined in older versions of the SDK or Visual C++.
|
||||
|
||||
#ifndef VER_PLATFORM_WIN32_WINDOWS
|
||||
# define VER_PLATFORM_WIN32_WINDOWS 1
|
||||
#endif
|
||||
|
||||
static DWORD g_PlatformId;
|
||||
|
||||
//
|
||||
// Set g_PlatformId to VER_PLATFORM_WIN32_NT (NT) or
|
||||
// VER_PLATFORM_WIN32_WINDOWS (Win95).
|
||||
//
|
||||
static void
|
||||
PlatformId(void)
|
||||
{
|
||||
static int done = FALSE;
|
||||
|
||||
if (!done)
|
||||
{
|
||||
OSVERSIONINFO ovi;
|
||||
|
||||
ovi.dwOSVersionInfoSize = sizeof(ovi);
|
||||
GetVersionEx(&ovi);
|
||||
|
||||
g_PlatformId = ovi.dwPlatformId;
|
||||
done = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
# ifndef __BORLANDC__
|
||||
#ifndef __BORLANDC__
|
||||
static char *
|
||||
searchpath(char *name)
|
||||
{
|
||||
@@ -922,28 +896,17 @@ searchpath(char *name)
|
||||
|
||||
// There appears to be a bug in FindExecutableA() on Windows NT.
|
||||
// Use FindExecutableW() instead...
|
||||
PlatformId();
|
||||
if (g_PlatformId == VER_PLATFORM_WIN32_NT)
|
||||
MultiByteToWideChar(CP_ACP, 0, (LPCSTR)name, -1,
|
||||
(LPWSTR)widename, BUFSIZE);
|
||||
if (FindExecutableW((LPCWSTR)widename, (LPCWSTR)"",
|
||||
(LPWSTR)location) > (HINSTANCE)32)
|
||||
{
|
||||
MultiByteToWideChar(CP_ACP, 0, (LPCTSTR)name, -1,
|
||||
(LPWSTR)widename, BUFSIZE);
|
||||
if (FindExecutableW((LPCWSTR)widename, (LPCWSTR)"",
|
||||
(LPWSTR)location) > (HINSTANCE)32)
|
||||
{
|
||||
WideCharToMultiByte(CP_ACP, 0, (LPWSTR)location, -1,
|
||||
(LPSTR)widename, 2 * BUFSIZE, NULL, NULL);
|
||||
return widename;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (FindExecutableA((LPCTSTR)name, (LPCTSTR)"",
|
||||
(LPTSTR)location) > (HINSTANCE)32)
|
||||
return location;
|
||||
WideCharToMultiByte(CP_ACP, 0, (LPWSTR)location, -1,
|
||||
(LPSTR)widename, 2 * BUFSIZE, NULL, NULL);
|
||||
return widename;
|
||||
}
|
||||
return (char *)"";
|
||||
}
|
||||
# endif
|
||||
#endif
|
||||
|
||||
STDMETHODIMP CShellExt::InvokeGvim(HWND hParent,
|
||||
|
||||
+118
-72
@@ -3,9 +3,9 @@ INSTALLpc.txt - Installation of Vim on PC
|
||||
This file contains instructions for compiling Vim. If you already have an
|
||||
executable version of Vim, you don't need this.
|
||||
|
||||
More information can be found here: (Very stale now.)
|
||||
|
||||
http://mywebpage.netscape.com/sharppeople/vim/howto/
|
||||
You can find the lastest here: https://github.com/vim/vim-win32-installer
|
||||
This page also has links to install support for interfaces such as Perl,
|
||||
Python, Lua, etc.
|
||||
|
||||
The file "feature.h" can be edited to match your preferences. You can skip
|
||||
this, then you will get the default behavior as is documented, which should
|
||||
@@ -15,6 +15,10 @@ This document assumes that you are building Vim for Win32 or later (Windows
|
||||
XP/2003/Vista/7/8/10). There are also instructions for pre-XP systems, but
|
||||
they might no longer work.
|
||||
|
||||
The recommended way is to build a 32 bit Vim, also on 64 bit systems. You can
|
||||
build a 64 bit Vim if you like, the executable will be bigger and Vim wan't be
|
||||
any faster, but you can edit files larger than 2 Gbyte.
|
||||
|
||||
|
||||
Contents:
|
||||
1. Microsoft Visual C++
|
||||
@@ -24,7 +28,7 @@ Contents:
|
||||
5. Cross compiling for Win32 from a Linux machine
|
||||
6. Building with Python support
|
||||
7. Building with Python3 support
|
||||
8. Building with MzScheme/Racket support
|
||||
8. Building with Racket or MzScheme support
|
||||
9. Building with Lua support
|
||||
10. Building with Perl support
|
||||
11. Building with Ruby support
|
||||
@@ -36,13 +40,20 @@ Contents:
|
||||
16. Installing after building from sources
|
||||
|
||||
|
||||
The currently preferred method is using the free Visual C++ Toolkit 2008
|
||||
|msvc-2008-express|, the produced binary runs on most MS-Windows systems.
|
||||
The currently recommended way (that means it has been verified to work) is
|
||||
using the "Visual Studio Community 2015" installation. This includes the SDK
|
||||
needed to target Windows XP. But not older Windows versions (95, 97), see
|
||||
|msvc-2008-express| below for that
|
||||
|
||||
|
||||
1. Microsoft Visual C++
|
||||
=======================
|
||||
|
||||
We do not provide download links, since Microsoft keeps changing them. You
|
||||
can search for "Visual Studio Community 2015", for example. You will need to
|
||||
create a Microsoft account (it's free).
|
||||
|
||||
|
||||
Visual Studio
|
||||
-------------
|
||||
|
||||
@@ -50,9 +61,8 @@ Building with Visual Studio (VS 98, VS .NET, VS .NET 2003, VS 2005, VS 2008,
|
||||
VS2010, VS2012, VS2013 and VS2015) is straightforward. (These instructions
|
||||
should also work for VS 4 and VS 5.)
|
||||
|
||||
Using VS C++ 2008 Express is recommended, the binaries built with that run on
|
||||
nearly all platforms. Binaries from later versions may not run on Windows 95
|
||||
or XP.
|
||||
Using VS C++ 2008 Express is recommended if you need the binary to run on
|
||||
Windows 95 or 97, see |msvc-2008-express| below.
|
||||
|
||||
To build Vim from the command line with MSVC, use Make_mvc.mak.
|
||||
Visual Studio installed a batch file called vcvars32.bat, which you must
|
||||
@@ -117,8 +127,8 @@ To set the environment execute the msvc2010.bat script. You can then build
|
||||
Vim with Make_mvc.mak.
|
||||
|
||||
|
||||
Targeting Windows XP with new MSVC *new-msvc-windows-xp*
|
||||
----------------------------------
|
||||
Targeting Windows XP with MSVC 2012 and later *new-msvc-windows-xp*
|
||||
---------------------------------------------
|
||||
|
||||
Beginning with Visual C++ 2012, Microsoft changed the behavior of LINK.EXE
|
||||
so that it targets Windows 6.0 (Vista) by default. In order to override
|
||||
@@ -127,16 +137,28 @@ follows:
|
||||
LINK ... /subsystem:console,5.01
|
||||
|
||||
Make_mvc.mak now supports a macro SUBSYSTEM_VER to pass the Windows version.
|
||||
Use lines like follows to target Windows XP (assuming using Visual C++ 2012
|
||||
under 64-bit Windows):
|
||||
Use lines like follows to target Windows XP x86 (assuming using Visual C++
|
||||
2012 under 64-bit Windows):
|
||||
set WinSdk71=%ProgramFiles(x86)%\Microsoft SDKs\Windows\v7.1A
|
||||
set SDK_INCLUDE_DIR=%WinSdk71%\Include
|
||||
set INCLUDE=%WinSdk71%\Include;%INCLUDE%
|
||||
set LIB=%WinSdk71%\Lib;%LIB%
|
||||
set PATH=%WinSdk71%\Bin;%PATH%
|
||||
set CL=/D_USING_V110_SDK71_
|
||||
nmake -f Make_mvc.mak ... WINVER=0x0501 SUBSYSTEM_VER=5.01
|
||||
|
||||
To target Windows XP x64 instead of x86, you need to change the settings of
|
||||
LIB and SUBSYSTEM_VER:
|
||||
...
|
||||
set LIB=%WinSdk71%\Lib\x64;%LIB%
|
||||
...
|
||||
nmake -f Make_mvc.mak ... WINVER=0x0501 SUBSYSTEM_VER=5.02
|
||||
|
||||
If you use Visual C++ 2015 (either Express or Community Edition), executing
|
||||
msvc2015.bat will set them automatically. For x86 builds run this without
|
||||
options:
|
||||
msvc2015
|
||||
For x64 builds run this with the "x86_amd64" option:
|
||||
msvc2015 x86_amd64
|
||||
|
||||
The following Visual C++ team blog can serve as a reference page:
|
||||
http://blogs.msdn.com/b/vcblog/archive/2012/10/08/windows-xp-targeting-with-c-in-visual-studio-2012.aspx
|
||||
|
||||
@@ -188,10 +210,10 @@ Now you can build Vim with Make_mvc.mak.
|
||||
|
||||
Getting the Windows Platform SDK *ms-platform-sdk*
|
||||
|
||||
You will also need a copy of the Windows Platform SDK from
|
||||
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
|
||||
Specifically, you need the Windows Core SDK subset of the Platform SDK,
|
||||
which contains the Windows headers and libraries.
|
||||
You will also need a copy of the Windows Platform SDK. Specifically, you need
|
||||
the Windows Core SDK subset of the Platform SDK, which contains the Windows
|
||||
headers and libraries. You need to search for it, Microsoft keeps changing
|
||||
the URL.
|
||||
|
||||
|
||||
Getting the .NET Framework 1.1 Runtime *dotnet-1.1-redist*
|
||||
@@ -432,10 +454,61 @@ E.g. When using MSVC (as one line):
|
||||
PYTHON3=C:\Python34 DYNAMIC_PYTHON3=yes PYTHON3_VER=34
|
||||
|
||||
|
||||
8. Building with MzScheme/Racket support
|
||||
8. Building with Racket or MzScheme support
|
||||
========================================
|
||||
|
||||
1) Building with MzScheme support
|
||||
1) Building with Racket support (newest)
|
||||
|
||||
MzScheme and PLT Scheme names have been rebranded as Racket. Vim with Racket
|
||||
support can be built with either MSVC or MinGW (or Cygwin).
|
||||
Get it from https://download.racket-lang.org/
|
||||
|
||||
Copy lib/libracket{version}.dll to your Windows system directory. The system
|
||||
directory depends on your Windows bitness and Vim bitness:
|
||||
32-bit Vim on 32-bit Windows: C:\Windows\System32
|
||||
32-bit Vim on 64-bit Windows: C:\Windows\SysWOW64
|
||||
64-bit Vim on 64-bit Windows: C:\Windows\System32
|
||||
|
||||
For building you need to set the following variables:
|
||||
|
||||
MZSCHEME: Where Racket is installed.
|
||||
E.g. C:\Program Files (x86)\Racket
|
||||
DYNAMIC_MZSCHEME: Whether dynamic linking is used. Usually, set to yes.
|
||||
MZSCHEME_VER: Racket DLL version which is used for the file name.
|
||||
See below for a list of MZSCHEME_VER.
|
||||
The DLL can be found under the lib directory. E.g.
|
||||
C:\Program Files (x86)\Racket\lib\libracket3m_XXXXXX.dll
|
||||
MZSCHEME_COLLECTS: (Optional) Path of the collects directory used at
|
||||
runtime. Default: $(MZSCHEME)\collects
|
||||
User can override this with the PLTCOLLECTS environment
|
||||
variable.
|
||||
|
||||
List of MZSCHEME_VER (incomplete):
|
||||
|
||||
Racket ver. | MZSCHEME_VER
|
||||
==========================
|
||||
6.3 | 3m_9z0ds0
|
||||
6.6 | 3m_a0solc
|
||||
6.8 | 3m_a1zjsw
|
||||
6.10 | 3m_a36fs8
|
||||
|
||||
|
||||
E.g. When using MSVC (as one line):
|
||||
|
||||
nmake -f Make_mvc.mak
|
||||
MZSCHEME="C:\Program Files (x86)\Racket" DYNAMIC_MZSCHEME=yes
|
||||
MZSCHEME_VER=3m_9z0ds0
|
||||
|
||||
Or when using MinGW (as one line):
|
||||
|
||||
mingw32-make -f Make_ming.mak
|
||||
MZSCHEME='C:/Program\ Files\ (x86)/Racket' DYNAMIC_MZSCHEME=yes
|
||||
MZSCHEME_VER=3m_9z0ds0
|
||||
|
||||
Spaces should be escaped with '\'.
|
||||
|
||||
|
||||
2) Building with MzScheme support (older)
|
||||
|
||||
(written by Sergey Khorev <sergey.khorev@gmail.com>)
|
||||
|
||||
@@ -470,40 +543,6 @@ After a successful build, these dlls can be freely removed, leaving them in
|
||||
%WINDOWS%\System32 only.
|
||||
|
||||
|
||||
2) Building with Racket support
|
||||
|
||||
MzScheme and PLT Scheme names have been rebranded as Racket. Vim with Racket
|
||||
(https://racket-lang.org/) support can be built with either MSVC or MinGW (or
|
||||
Cygwin).
|
||||
|
||||
You need to set the following variables:
|
||||
|
||||
MZSCHEME: Where Racket is installed.
|
||||
E.g. C:\Program Files (x86)\Racket
|
||||
DYNAMIC_MZSCHEME: Whether dynamic linking is used. Usually, set to yes.
|
||||
MZSCHEME_VER: Racket DLL version which is used for the file name.
|
||||
E.g. 3m_9z0ds0 for Racket 6.3.
|
||||
The DLL can be found under the lib directory. E.g.
|
||||
C:\Program Files (x86)\Racket\lib\libracket3m_XXXXXX.dll
|
||||
MZSCHEME_COLLECTS: (Optional) Path of the collects directory used at
|
||||
runtime. Default: $(MZSCHEME)\collects
|
||||
User can override this with the PLTCOLLECTS environment
|
||||
variable.
|
||||
|
||||
E.g. When using MSVC (as one line):
|
||||
|
||||
nmake -f Make_mvc.mak
|
||||
MZSCHEME="C:\Program Files (x86)\Racket" DYNAMIC_MZSCHEME=yes
|
||||
MZSCHEME_VER=3m_9z0ds0
|
||||
|
||||
Or when using MinGW (as one line):
|
||||
|
||||
mingw32-make -f Make_ming.mak
|
||||
MZSCHEME='C:/Program\ Files\ (x86)/Racket' DYNAMIC_MZSCHEME=yes
|
||||
MZSCHEME_VER=3m_9z0ds0
|
||||
|
||||
Spaces should be escaped with '\'.
|
||||
|
||||
|
||||
9. Building with Lua support
|
||||
============================
|
||||
@@ -550,7 +589,7 @@ E.g. When using MSVC (as one line):
|
||||
|
||||
Or when using MinGW (as one line):
|
||||
|
||||
mingw32-make -f Make_mingw.mak
|
||||
mingw32-make -f Make_ming.mak
|
||||
LUA=C:\projects\lua53 DYNAMIC_LUA=yes LUA_VER=53
|
||||
|
||||
|
||||
@@ -582,7 +621,7 @@ E.g. When using MSVC (as one line):
|
||||
|
||||
Or when using MinGW (as one line):
|
||||
|
||||
mingw32-make -f Make_mingw.mak
|
||||
mingw32-make -f Make_ming.mak
|
||||
PERL=C:\Perl DYNAMIC_PERL=yes PERL_VER=522
|
||||
|
||||
|
||||
@@ -591,7 +630,7 @@ Or when using MinGW (as one line):
|
||||
|
||||
Vim with Ruby support can be built with either MSVC or MinGW (or Cygwin).
|
||||
Ruby doesn't provide the official Windows binaries. The most widely used
|
||||
Windows binaries might be RubyInstaller.
|
||||
Windows binaries might be RubyInstaller. Currently Ruby 2.4 is recommended.
|
||||
|
||||
http://rubyinstaller.org/
|
||||
|
||||
@@ -602,11 +641,11 @@ you need some tricks described below.
|
||||
|
||||
When building, you need to set the following variables at least:
|
||||
|
||||
RUBY: Where ruby is installed. E.g. C:\Ruby22
|
||||
RUBY: Where ruby is installed. E.g. C:\Ruby24
|
||||
DYNAMIC_RUBY: Whether dynamic linking is used. Usually, set to yes.
|
||||
RUBY_VER: Ruby version. E.g. 22 for Ruby 2.2.X.
|
||||
RUBY_VER: Ruby version. E.g. 24 for Ruby 2.4.X.
|
||||
RUBY_API_VER_LONG: Ruby API version in a long format.
|
||||
E.g. 2.2.0 for Ruby 2.2.X.
|
||||
E.g. 2.4.0 for Ruby 2.4.X.
|
||||
|
||||
Ruby version vs. Ruby API version:
|
||||
|
||||
@@ -631,33 +670,34 @@ config.h and Ruby's DLL name. Here are the steps for working around them:
|
||||
1) Download and Install RubyInstaller.
|
||||
You can install RubyInstaller with the default options and directory.
|
||||
E.g.:
|
||||
C:\Ruby22 (32-bit) or C:\Ruby22-x64 (64-bit)
|
||||
C:\Ruby24 (32-bit) or C:\Ruby24-x64 (64-bit)
|
||||
|
||||
Ruby 2.2.X is used in this example.
|
||||
Ruby 2.4.X is used in this example.
|
||||
|
||||
2) Download Ruby 2.2.X's source code and generate config.h:
|
||||
2) Download Ruby 2.4.X's source code and generate config.h:
|
||||
|
||||
cd C:\projects
|
||||
git clone https://github.com/ruby/ruby.git -b ruby_2_2
|
||||
git clone https://github.com/ruby/ruby.git -b ruby_2_4
|
||||
cd ruby
|
||||
win32\configure.bat
|
||||
nmake .config.h.time
|
||||
|
||||
Note that ruby_2_2 is the branch name for Ruby 2.2.X's source code.
|
||||
Note that ruby_2_4 is the branch name for Ruby 2.4.X's source code.
|
||||
There is no need to build whole Ruby, just config.h is needed.
|
||||
If you use 32-bit MSVC10, the config.h is generated in the
|
||||
.ext\include\i386-mswin32_100 directory.
|
||||
.ext\include\i386-mswin32_140 directory.
|
||||
|
||||
3) Install the generated config.h.
|
||||
|
||||
xcopy /s .ext\include C:\Ruby22\include\ruby-2.2.0
|
||||
xcopy /s .ext\include E:\Ruby24\include\ruby-2.4.0
|
||||
|
||||
Note that 2.2.0 is Ruby API version of Ruby 2.2.X.
|
||||
Note that 2.4.0 is Ruby API version of Ruby 2.4.X.
|
||||
You may need to close the console and reopen it to pick up the new $PATH.
|
||||
|
||||
4) Build Vim. Note that you need to adjust some variables (as one line):
|
||||
|
||||
nmake -f Make_mvc.mak
|
||||
RUBY=C:\Ruby22 DYNAMIC_RUBY=yes RUBY_VER=22 RUBY_API_VER_LONG=2.2.0
|
||||
RUBY=C:\Ruby24 DYNAMIC_RUBY=yes RUBY_VER=24 RUBY_API_VER_LONG=2.4.0
|
||||
RUBY_MSVCRT_NAME=msvcrt
|
||||
WINVER=0x501
|
||||
|
||||
@@ -688,6 +728,7 @@ You can use binaries from ActiveState (ActiveTcl).
|
||||
|
||||
http://www.activestate.com/activetcl
|
||||
|
||||
For MSVC 2015 use version 8.6.6 or later.
|
||||
When building, you need to set the following variables:
|
||||
|
||||
TCL: Where tcl is installed. E.g. C:\Tcl86
|
||||
@@ -695,6 +736,11 @@ When building, you need to set the following variables:
|
||||
TCL_VER: Tcl version in a short format. E.g. 86 for Tcl 8.6.X.
|
||||
TCL_VER_LONG: Tcl version in a long format. E.g. 8.6 for Tcl 8.6.X.
|
||||
|
||||
Sometimes the Tcl dll name changes. E.g. ActiveTcl 8.6.4 comes with tcl86.dll,
|
||||
but ActiveTcl 8.6.6 comes with tcl86t.dll. You can set the dll name by setting
|
||||
the TCL_DLL variable:
|
||||
TCL_DLL=tcl86t.dll
|
||||
|
||||
E.g. When using MSVC (as one line):
|
||||
|
||||
nmake -f Make_mvc.mak
|
||||
@@ -702,7 +748,7 @@ E.g. When using MSVC (as one line):
|
||||
|
||||
Or when using MinGW (as one line):
|
||||
|
||||
mingw32-make -f Make_mingw.mak
|
||||
mingw32-make -f Make_ming.mak
|
||||
TCL=C:\Tcl86 DYNAMIC_TCL=yes TCL_VER=86 TCL_VER_LONG=8.6
|
||||
|
||||
|
||||
@@ -719,7 +765,7 @@ E.g. When using MSVC:
|
||||
|
||||
Or when using MinGW (as one line):
|
||||
|
||||
mingw32-make -f Make_mingw.mak TERMINAL=yes
|
||||
mingw32-make -f Make_ming.mak TERMINAL=yes
|
||||
|
||||
|
||||
14. Windows 3.1x
|
||||
|
||||
@@ -1255,7 +1255,7 @@
|
||||
</dict>
|
||||
</array>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>137</string>
|
||||
<string>140</string>
|
||||
<key>NSAppTransportSecurity</key>
|
||||
<dict>
|
||||
<key>NSAllowsArbitraryLoads</key>
|
||||
|
||||
@@ -991,7 +991,7 @@ static NSString *MMWideCharacterAttributeName = @"MMWideChar";
|
||||
attributes:dict];
|
||||
|
||||
[backingStore release];
|
||||
backingStore = [[NSMutableAttributedString alloc] init];
|
||||
backingStore = [[NSTextStorage alloc] init];
|
||||
for (i=0; i<maxRows; ++i) {
|
||||
#if MM_USE_ROW_CACHE
|
||||
rowCache[i].length = actualColumns + 1;
|
||||
|
||||
@@ -333,7 +333,7 @@ gui_mch_update(void)
|
||||
static CFAbsoluteTime lastTime = 0;
|
||||
|
||||
CFAbsoluteTime nowTime = CFAbsoluteTimeGetCurrent();
|
||||
if (nowTime - lastTime > 0.2) {
|
||||
if (nowTime - lastTime > 1.0 / 30) {
|
||||
[[MMBackend sharedInstance] update];
|
||||
lastTime = nowTime;
|
||||
}
|
||||
@@ -2301,7 +2301,7 @@ gui_macvim_add_channel(channel_T *channel, ch_part_T part)
|
||||
0,
|
||||
dispatch_get_main_queue());
|
||||
dispatch_source_set_event_handler(s, ^{
|
||||
channel_read(channel, part, "gui_macvim_add_channel");
|
||||
channel_may_read(channel, part, "gui_macvim_add_channel");
|
||||
});
|
||||
dispatch_resume(s);
|
||||
return s;
|
||||
|
||||
+3
-3
@@ -28,10 +28,10 @@ endif
|
||||
" MacVim uses Homebrew python3 if installed, next try to use python.org binary
|
||||
if exists("&pythonthreedll") && exists("&pythonthreehome") &&
|
||||
\ !filereadable(&pythonthreedll)
|
||||
if filereadable("/Library/Frameworks/Python.framework/Versions/3.5/Python")
|
||||
if filereadable("/Library/Frameworks/Python.framework/Versions/3.6/Python")
|
||||
" https://www.python.org/downloads/mac-osx/
|
||||
set pythonthreedll=/Library/Frameworks/Python.framework/Versions/3.5/Python
|
||||
set pythonthreehome=/Library/Frameworks/Python.framework/Versions/3.5
|
||||
set pythonthreedll=/Library/Frameworks/Python.framework/Versions/3.6/Python
|
||||
set pythonthreehome=/Library/Frameworks/Python.framework/Versions/3.6
|
||||
endif
|
||||
endif
|
||||
|
||||
|
||||
@@ -50,3 +50,5 @@ CROSS_COMPILE = i686-pc-mingw32-
|
||||
# Do not change this.
|
||||
UNDER_CYGWIN = yes
|
||||
include Make_cyg_ming.mak
|
||||
|
||||
# vim: set noet sw=8 ts=8 sts=0 wm=0 tw=0:
|
||||
|
||||
+30
-22
@@ -47,6 +47,7 @@ FEATURES=HUGE
|
||||
# Set to yes to cross-compile from unix; no=native Windows (and Cygwin).
|
||||
CROSS=no
|
||||
# Set to path to iconv.h and libiconv.a to enable using 'iconv.dll'.
|
||||
# Use "yes" when the path does not need to be define.
|
||||
#ICONV="."
|
||||
ICONV=yes
|
||||
GETTEXT=yes
|
||||
@@ -74,7 +75,11 @@ else
|
||||
CHANNEL=$(GUI)
|
||||
endif
|
||||
# Set to yes to enable terminal support.
|
||||
ifeq (HUGE, $(FEATURES))
|
||||
TERMINAL=yes
|
||||
else
|
||||
TERMINAL=no
|
||||
endif
|
||||
|
||||
ifndef CTAGS
|
||||
# this assumes ctags is Exuberant ctags
|
||||
@@ -913,60 +918,58 @@ endif
|
||||
$(MAKE) -C xxd -f Make_ming.mak clean
|
||||
|
||||
###########################################################################
|
||||
INCL = vim.h feature.h os_win32.h os_dos.h ascii.h keymap.h term.h macros.h \
|
||||
structs.h regexp.h option.h ex_cmds.h proto.h globals.h farsi.h \
|
||||
gui.h
|
||||
INCL = vim.h alloc.h arabic.h ascii.h ex_cmds.h farsi.h feature.h globals.h \
|
||||
keymap.h macros.h option.h os_dos.h os_win32.h proto.h regexp.h \
|
||||
spell.h structs.h term.h $(NBDEBUG_INCL)
|
||||
GUI_INCL = gui.h gui_beval.h
|
||||
CUI_INCL = iscygpty.h
|
||||
|
||||
$(OUTDIR)/if_python.o : if_python.c if_py_both.h $(INCL)
|
||||
$(OUTDIR)/if_python.o: if_python.c if_py_both.h $(INCL)
|
||||
$(CC) -c $(CFLAGS) $(PYTHONINC) $(PYTHON_HOME_DEF) $< -o $@
|
||||
|
||||
$(OUTDIR)/if_python3.o : if_python3.c if_py_both.h $(INCL)
|
||||
$(OUTDIR)/if_python3.o: if_python3.c if_py_both.h $(INCL)
|
||||
$(CC) -c $(CFLAGS) $(PYTHON3INC) $(PYTHON3_HOME_DEF) $< -o $@
|
||||
|
||||
$(OUTDIR)/%.o : %.c $(INCL)
|
||||
$(CC) -c $(CFLAGS) $< -o $@
|
||||
|
||||
$(OUTDIR)/vimrc.o: vim.rc version.h gui_w32_rc.h
|
||||
$(OUTDIR)/vimrc.o: vim.rc version.h gui_w32_rc.h
|
||||
$(WINDRES) $(WINDRES_FLAGS) $(DEFINES) \
|
||||
--input-format=rc --output-format=coff -i vim.rc -o $@
|
||||
|
||||
$(OUTDIR):
|
||||
$(MKDIR) $(OUTDIR)
|
||||
|
||||
$(OUTDIR)/channel.o: channel.c $(INCL)
|
||||
$(CC) -c $(CFLAGS) channel.c -o $(OUTDIR)/channel.o
|
||||
|
||||
$(OUTDIR)/ex_docmd.o: ex_docmd.c $(INCL) ex_cmds.h
|
||||
$(CC) -c $(CFLAGS) ex_docmd.c -o $(OUTDIR)/ex_docmd.o
|
||||
|
||||
$(OUTDIR)/ex_eval.o: ex_eval.c $(INCL) ex_cmds.h
|
||||
$(CC) -c $(CFLAGS) ex_eval.c -o $(OUTDIR)/ex_eval.o
|
||||
|
||||
$(OUTDIR)/gui_dwrite.o: gui_dwrite.cpp $(INCL) gui_dwrite.h
|
||||
$(CC) -c $(CFLAGS) $(CXXFLAGS) gui_dwrite.cpp -o $(OUTDIR)/gui_dwrite.o
|
||||
|
||||
$(OUTDIR)/gui_w32.o: gui_w32.c $(INCL)
|
||||
$(OUTDIR)/gui.o: gui.c $(INCL) $(GUI_INCL)
|
||||
$(CC) -c $(CFLAGS) gui.c -o $(OUTDIR)/gui.o
|
||||
|
||||
$(OUTDIR)/gui_beval.o: gui_beval.c $(INCL) $(GUI_INCL)
|
||||
$(CC) -c $(CFLAGS) gui_beval.c -o $(OUTDIR)/gui_beval.o
|
||||
|
||||
$(OUTDIR)/gui_w32.o: gui_w32.c $(INCL) $(GUI_INCL)
|
||||
$(CC) -c $(CFLAGS) gui_w32.c -o $(OUTDIR)/gui_w32.o
|
||||
|
||||
$(OUTDIR)/if_cscope.o: if_cscope.c $(INCL) if_cscope.h
|
||||
$(CC) -c $(CFLAGS) if_cscope.c -o $(OUTDIR)/if_cscope.o
|
||||
|
||||
$(OUTDIR)/if_mzsch.o: if_mzsch.c $(INCL) if_mzsch.h $(MZ_EXTRA_DEP)
|
||||
$(OUTDIR)/if_mzsch.o: if_mzsch.c $(INCL) $(MZSCHEME_INCL) $(MZ_EXTRA_DEP)
|
||||
$(CC) -c $(CFLAGS) if_mzsch.c -o $(OUTDIR)/if_mzsch.o
|
||||
|
||||
mzscheme_base.c:
|
||||
$(MZSCHEME)/mzc --c-mods mzscheme_base.c ++lib scheme/base
|
||||
|
||||
# Remove -D__IID_DEFINED__ for newer versions of the w32api
|
||||
$(OUTDIR)/if_ole.o: if_ole.cpp $(INCL)
|
||||
$(OUTDIR)/if_ole.o: if_ole.cpp $(INCL) if_ole.h
|
||||
$(CC) $(CFLAGS) $(CXXFLAGS) -c -o $(OUTDIR)/if_ole.o if_ole.cpp
|
||||
|
||||
if_perl.c: if_perl.xs typemap
|
||||
if_perl.c: if_perl.xs typemap
|
||||
$(XSUBPP) -prototypes -typemap \
|
||||
$(PERLTYPEMAP) if_perl.xs -output $@
|
||||
|
||||
$(OUTDIR)/if_ruby.o: if_ruby.c $(INCL)
|
||||
$(OUTDIR)/if_ruby.o: if_ruby.c $(INCL)
|
||||
ifeq (16, $(RUBY))
|
||||
$(CC) $(CFLAGS) -U_WIN32 -c -o $(OUTDIR)/if_ruby.o if_ruby.c
|
||||
endif
|
||||
@@ -974,13 +977,16 @@ endif
|
||||
$(OUTDIR)/iscygpty.o: iscygpty.c $(CUI_INCL)
|
||||
$(CC) -c $(CFLAGS) iscygpty.c -o $(OUTDIR)/iscygpty.o -U_WIN32_WINNT -D_WIN32_WINNT=0x0600 -DUSE_DYNFILEID -DENABLE_STUB_IMPL
|
||||
|
||||
$(OUTDIR)/main.o: main.c $(INCL) $(CUI_INCL)
|
||||
$(OUTDIR)/main.o: main.c $(INCL) $(CUI_INCL)
|
||||
$(CC) -c $(CFLAGS) main.c -o $(OUTDIR)/main.o
|
||||
|
||||
$(OUTDIR)/netbeans.o: netbeans.c $(INCL) $(NBDEBUG_INCL) $(NBDEBUG_SRC)
|
||||
$(CC) -c $(CFLAGS) netbeans.c -o $(OUTDIR)/netbeans.o
|
||||
|
||||
$(OUTDIR)/regexp.o: regexp.c regexp_nfa.c $(INCL)
|
||||
$(OUTDIR)/os_win32.o: os_win32.c $(INCL) $(MZSCHEME_INCL)
|
||||
$(CC) -c $(CFLAGS) os_win32.c -o $(OUTDIR)/os_win32.o
|
||||
|
||||
$(OUTDIR)/regexp.o: regexp.c regexp_nfa.c $(INCL)
|
||||
$(CC) -c $(CFLAGS) regexp.c -o $(OUTDIR)/regexp.o
|
||||
|
||||
$(OUTDIR)/terminal.o: terminal.c $(INCL) $(TERM_DEPS)
|
||||
@@ -1042,3 +1048,5 @@ else
|
||||
@echo char_u *compiled_user = (char_u *)"$(USERNAME)"; >> pathdef.c
|
||||
@echo char_u *compiled_sys = (char_u *)"$(USERDOMAIN)"; >> pathdef.c
|
||||
endif
|
||||
|
||||
# vim: set noet sw=8 ts=8 sts=0 wm=0 tw=0:
|
||||
|
||||
@@ -47,3 +47,5 @@
|
||||
# Do not change this.
|
||||
UNDER_CYGWIN = no
|
||||
include Make_cyg_ming.mak
|
||||
|
||||
# vim: set noet sw=8 ts=8 sts=0 wm=0 tw=0:
|
||||
|
||||
+32
-27
@@ -37,7 +37,7 @@
|
||||
# is yes)
|
||||
# Global IME support: GIME=yes (requires GUI=yes)
|
||||
#
|
||||
# Terminal support: TERMINAL=yes (default is no)
|
||||
# Terminal support: TERMINAL=yes (default is yes)
|
||||
#
|
||||
# Lua interface:
|
||||
# LUA=[Path to Lua directory]
|
||||
@@ -361,6 +361,14 @@ CSCOPE_OBJ = $(OBJDIR)/if_cscope.obj
|
||||
CSCOPE_DEFS = -DFEAT_CSCOPE
|
||||
!endif
|
||||
|
||||
!ifndef TERMINAL
|
||||
!if "$(FEATURES)"=="HUGE"
|
||||
TERMINAL = yes
|
||||
!else
|
||||
TERMINAL = no
|
||||
!endif
|
||||
!endif
|
||||
|
||||
!if "$(TERMINAL)" == "yes"
|
||||
TERM_OBJ = \
|
||||
$(OBJDIR)/terminal.obj \
|
||||
@@ -587,7 +595,7 @@ CPUARG = /arch:AVX2
|
||||
! endif
|
||||
!endif
|
||||
|
||||
# Pass CPUARG to GVimExt, to avoid using version-dependent defaults
|
||||
# Pass CPUARG to GvimExt, to avoid using version-dependent defaults
|
||||
MAKEFLAGS_GVIMEXT = $(MAKEFLAGS_GVIMEXT) CPUARG="$(CPUARG)"
|
||||
|
||||
|
||||
@@ -673,9 +681,9 @@ CFLAGS = $(CFLAGS) /Zl /MTd
|
||||
! endif
|
||||
!endif # DEBUG
|
||||
|
||||
INCL = vim.h os_win32.h ascii.h feature.h globals.h keymap.h macros.h \
|
||||
proto.h option.h structs.h term.h $(CSCOPE_INCL) \
|
||||
$(NBDEBUG_INCL)
|
||||
INCL = vim.h alloc.h arabic.h ascii.h ex_cmds.h farsi.h feature.h globals.h \
|
||||
keymap.h macros.h option.h os_dos.h os_win32.h proto.h regexp.h \
|
||||
spell.h structs.h term.h $(NBDEBUG_INCL)
|
||||
|
||||
OBJ = \
|
||||
$(OUTDIR)\arabic.obj \
|
||||
@@ -774,18 +782,7 @@ RCFLAGS = $(RCFLAGS) -DFEAT_GUI_W32
|
||||
VIM = g$(VIM)
|
||||
GUI_INCL = \
|
||||
gui.h \
|
||||
regexp.h \
|
||||
ascii.h \
|
||||
ex_cmds.h \
|
||||
farsi.h \
|
||||
feature.h \
|
||||
globals.h \
|
||||
gui_beval.h \
|
||||
keymap.h \
|
||||
macros.h \
|
||||
option.h \
|
||||
os_dos.h \
|
||||
os_win32.h
|
||||
gui_beval.h
|
||||
GUI_OBJ = \
|
||||
$(OUTDIR)\gui.obj \
|
||||
$(OUTDIR)\gui_beval.obj \
|
||||
@@ -800,9 +797,14 @@ SUBSYSTEM = console
|
||||
CUI_INCL = iscygpty.h
|
||||
CUI_OBJ = $(OUTDIR)\iscygpty.obj
|
||||
!endif
|
||||
SUBSYSTEM_TOOLS = console
|
||||
|
||||
!if "$(SUBSYSTEM_VER)" != ""
|
||||
SUBSYSTEM = $(SUBSYSTEM),$(SUBSYSTEM_VER)
|
||||
SUBSYSTEM_TOOLS = $(SUBSYSTEM_TOOLS),$(SUBSYSTEM_VER)
|
||||
# Pass SUBSYSTEM_VER to GvimExt and other tools
|
||||
MAKEFLAGS_GVIMEXT = $(MAKEFLAGS_GVIMEXT) SUBSYSTEM_VER=$(SUBSYSTEM_VER)
|
||||
MAKEFLAGS_TOOLS = $(MAKEFLAGS_TOOLS) SUBSYSTEM_VER=$(SUBSYSTEM_VER)
|
||||
!endif
|
||||
|
||||
!if "$(GUI)" == "yes" && "$(DIRECTX)" == "yes"
|
||||
@@ -979,6 +981,7 @@ MZSCHEME_LIB = "$(MZSCHEME)\lib\msvc\libmzgc$(MZSCHEME_VER).lib" \
|
||||
MZSCHEME_OBJ = $(OUTDIR)\if_mzsch.obj
|
||||
# increase stack size
|
||||
MZSCHEME_LIB = $(MZSCHEME_LIB) /STACK:8388608
|
||||
MZSCHEME_INCL = if_mzsch.h
|
||||
!endif
|
||||
|
||||
# Perl interface
|
||||
@@ -1196,24 +1199,26 @@ $(OUTDIR):
|
||||
|
||||
install.exe: dosinst.c
|
||||
$(CC) /nologo -DNDEBUG -DWIN32 dosinst.c kernel32.lib shell32.lib \
|
||||
user32.lib ole32.lib advapi32.lib uuid.lib
|
||||
user32.lib ole32.lib advapi32.lib uuid.lib \
|
||||
-link -subsystem:$(SUBSYSTEM_TOOLS)
|
||||
- if exist install.exe del install.exe
|
||||
ren dosinst.exe install.exe
|
||||
|
||||
uninstal.exe: uninstal.c
|
||||
$(CC) /nologo -DNDEBUG -DWIN32 uninstal.c shell32.lib advapi32.lib
|
||||
$(CC) /nologo -DNDEBUG -DWIN32 uninstal.c shell32.lib advapi32.lib \
|
||||
-link -subsystem:$(SUBSYSTEM_TOOLS)
|
||||
|
||||
vimrun.exe: vimrun.c
|
||||
$(CC) /nologo -DNDEBUG vimrun.c
|
||||
$(CC) /nologo -DNDEBUG vimrun.c -link -subsystem:$(SUBSYSTEM_TOOLS)
|
||||
|
||||
xxd/xxd.exe: xxd/xxd.c
|
||||
cd xxd
|
||||
$(MAKE) /NOLOGO -f Make_mvc.mak
|
||||
$(MAKE) /NOLOGO -f Make_mvc.mak $(MAKEFLAGS_TOOLS)
|
||||
cd ..
|
||||
|
||||
tee/tee.exe: tee/tee.c
|
||||
cd tee
|
||||
$(MAKE) /NOLOGO -f Make_mvc.mak
|
||||
$(MAKE) /NOLOGO -f Make_mvc.mak $(MAKEFLAGS_TOOLS)
|
||||
cd ..
|
||||
|
||||
GvimExt/gvimext.dll: GvimExt/gvimext.cpp GvimExt/gvimext.rc GvimExt/gvimext.h
|
||||
@@ -1318,9 +1323,9 @@ $(OUTDIR)/ex_cmds.obj: $(OUTDIR) ex_cmds.c $(INCL)
|
||||
|
||||
$(OUTDIR)/ex_cmds2.obj: $(OUTDIR) ex_cmds2.c $(INCL)
|
||||
|
||||
$(OUTDIR)/ex_docmd.obj: $(OUTDIR) ex_docmd.c $(INCL) ex_cmds.h
|
||||
$(OUTDIR)/ex_docmd.obj: $(OUTDIR) ex_docmd.c $(INCL)
|
||||
|
||||
$(OUTDIR)/ex_eval.obj: $(OUTDIR) ex_eval.c $(INCL) ex_cmds.h
|
||||
$(OUTDIR)/ex_eval.obj: $(OUTDIR) ex_eval.c $(INCL)
|
||||
|
||||
$(OUTDIR)/ex_getln.obj: $(OUTDIR) ex_getln.c $(INCL)
|
||||
|
||||
@@ -1344,7 +1349,7 @@ $(OUTDIR)/gui_w32.obj: $(OUTDIR) gui_w32.c $(INCL) $(GUI_INCL)
|
||||
|
||||
$(OUTDIR)/gui_dwrite.obj: $(OUTDIR) gui_dwrite.cpp $(INCL) $(GUI_INCL)
|
||||
|
||||
$(OUTDIR)/if_cscope.obj: $(OUTDIR) if_cscope.c $(INCL)
|
||||
$(OUTDIR)/if_cscope.obj: $(OUTDIR) if_cscope.c $(INCL) if_cscope.h
|
||||
|
||||
$(OUTDIR)/if_lua.obj: $(OUTDIR) if_lua.c $(INCL)
|
||||
$(CC) $(CFLAGS_OUTDIR) $(LUA_INC) if_lua.c
|
||||
@@ -1359,7 +1364,7 @@ $(OUTDIR)/if_perl.obj: $(OUTDIR) if_perl.c $(INCL)
|
||||
$(OUTDIR)/if_perlsfio.obj: $(OUTDIR) if_perlsfio.c $(INCL)
|
||||
$(CC) $(CFLAGS_OUTDIR) $(PERL_INC) if_perlsfio.c
|
||||
|
||||
$(OUTDIR)/if_mzsch.obj: $(OUTDIR) if_mzsch.c if_mzsch.h $(INCL) $(MZSCHEME_EXTRA_DEP)
|
||||
$(OUTDIR)/if_mzsch.obj: $(OUTDIR) if_mzsch.c $(MZSCHEME_INCL) $(INCL) $(MZSCHEME_EXTRA_DEP)
|
||||
$(CC) $(CFLAGS_OUTDIR) if_mzsch.c \
|
||||
-DMZSCHEME_COLLECTS="\"$(MZSCHEME_COLLECTS:\=\\)\""
|
||||
|
||||
@@ -1423,7 +1428,7 @@ $(OUTDIR)/terminal.obj: $(OUTDIR) terminal.c $(INCL) $(TERM_DEPS)
|
||||
|
||||
$(OUTDIR)/winclip.obj: $(OUTDIR) winclip.c $(INCL)
|
||||
|
||||
$(OUTDIR)/os_win32.obj: $(OUTDIR) os_win32.c $(INCL) os_win32.h
|
||||
$(OUTDIR)/os_win32.obj: $(OUTDIR) os_win32.c $(INCL) $(MZSCHEME_INCL)
|
||||
|
||||
$(OUTDIR)/os_w32exe.obj: $(OUTDIR) os_w32exe.c $(INCL)
|
||||
|
||||
|
||||
+8
-6
@@ -2117,14 +2117,14 @@ test1 \
|
||||
test_listchars \
|
||||
test_search_mbyte \
|
||||
test_wordcount \
|
||||
test3 test4 test5 test7 test8 \
|
||||
test3 test8 \
|
||||
test11 test12 test14 test15 test17 test19 \
|
||||
test20 test25 test28 test29 \
|
||||
test30 test31 test32 test33 test34 test36 test37 test38 test39 \
|
||||
test40 test41 test42 test43 test44 test45 test48 test49 \
|
||||
test50 test52 test53 test54 test55 test56 test57 test59 \
|
||||
test60 test64 test66 test68 test69 \
|
||||
test70 test72 test73 test77 test78 test79 \
|
||||
test30 test32 test34 test36 test37 test38 test39 \
|
||||
test40 test42 test44 test45 test48 test49 \
|
||||
test50 test52 test54 test55 test59 \
|
||||
test64 test66 test68 test69 \
|
||||
test70 test72 test73 test77 test79 \
|
||||
test83 test85 test86 test87 test88 \
|
||||
test94 test95 test99 \
|
||||
test108:
|
||||
@@ -2166,6 +2166,7 @@ test_arglist \
|
||||
test_ex_z \
|
||||
test_exec_while_if \
|
||||
test_execute_func \
|
||||
test_exists \
|
||||
test_exists_autocmd \
|
||||
test_expand \
|
||||
test_expand_dllpath \
|
||||
@@ -2296,6 +2297,7 @@ test_arglist \
|
||||
test_virtualedit \
|
||||
test_visual \
|
||||
test_winbar \
|
||||
test_winbuf_close \
|
||||
test_window_cmd \
|
||||
test_window_id \
|
||||
test_windows_home \
|
||||
|
||||
Vendored
+7
-5
@@ -5755,10 +5755,12 @@ $as_echo "OK" >&6; }
|
||||
done
|
||||
|
||||
|
||||
perlcppflags=`$vi_cv_path_perl -Mlib=$srcdir -MExtUtils::Embed \
|
||||
perlcppflags=`$vi_cv_path_perl -Mlib=$srcdir -MExtUtils::Embed \
|
||||
-e 'ccflags;perl_inc;print"\n"' | sed -e 's/-fno[^ ]*//' \
|
||||
-e 's/-fdebug-prefix-map[^ ]*//g' \
|
||||
-e 's/\(-Wp,\)\?-D_FORTIFY_SOURCE=.//g'`
|
||||
-e 's/-pipe //' \
|
||||
-e 's/-W[^ ]*//g' \
|
||||
-e 's/-D_FORTIFY_SOURCE=.//g'`
|
||||
perllibs=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed -e 'ldopts' | \
|
||||
sed -e '/Warning/d' -e '/Note (probably harmless)/d' \
|
||||
-e 's/-bE:perl.exp//' -e 's/-lc //'`
|
||||
@@ -5804,7 +5806,7 @@ rm -f core conftest.err conftest.$ac_objext \
|
||||
LDFLAGS=$ldflags_save
|
||||
if test $perl_ok = yes; then
|
||||
if test "X$perlcppflags" != "X"; then
|
||||
PERL_CFLAGS=`echo "$perlcppflags" | sed -e 's/-pipe //' -e 's/-W[^ ]*//'`
|
||||
PERL_CFLAGS=$perlcppflags
|
||||
fi
|
||||
if test "X$perlldflags" != "X"; then
|
||||
if test "X`echo \"$LDFLAGS\" | $FGREP -e \"$perlldflags\"`" = "X"; then
|
||||
@@ -7282,10 +7284,10 @@ $as_echo "$rubyhdrdir" >&6; }
|
||||
$as_echo "#define FEAT_RUBY 1" >>confdefs.h
|
||||
|
||||
if test "$enable_rubyinterp" = "dynamic"; then
|
||||
libruby=`$vi_cv_path_ruby -r rbconfig -e "puts $ruby_rbconfig::CONFIG['LIBRUBY_SO']"`
|
||||
libruby_soname=`$vi_cv_path_ruby -r rbconfig -e "puts $ruby_rbconfig::CONFIG['LIBRUBY_ALIASES'].split[0]"`
|
||||
$as_echo "#define DYNAMIC_RUBY 1" >>confdefs.h
|
||||
|
||||
RUBY_CFLAGS="-DDYNAMIC_RUBY_DLL=\\\"$libruby\\\" -DDYNAMIC_RUBY_VER=$rubyversion $RUBY_CFLAGS"
|
||||
RUBY_CFLAGS="-DDYNAMIC_RUBY_DLL=\\\"$libruby_soname\\\" -DDYNAMIC_RUBY_VER=$rubyversion $RUBY_CFLAGS"
|
||||
RUBY_LIBS=
|
||||
fi
|
||||
else
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
:: command to build big Vim with OLE, Perl, Python, Ruby and Tcl
|
||||
:: command to build big Vim with OLE, Lua, Perl, Python, Racket, Ruby and Tcl
|
||||
SET VCDIR="C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\"
|
||||
SET TOOLDIR=E:\
|
||||
%VCDIR%nmake -f Make_mvc.mak GUI=yes OLE=yes PERL=%TOOLDIR%perl524 DYNAMIC_PERL=yes PERL_VER=524 PYTHON=%TOOLDIR%python27 DYNAMIC_PYTHON=yes PYTHON_VER=27 PYTHON3=%TOOLDIR%python35 DYNAMIC_PYTHON3=yes PYTHON3_VER=35 RUBY=%TOOLDIR%ruby22 DYNAMIC_RUBY=yes RUBY_VER=22 RUBY_API_VER_LONG=2.2.0 RUBY_MSVCRT_NAME=msvcrt TCL=%TOOLDIR%tcl TCL_VER=86 TCL_VER_LONG=8.6 DYNAMIC_TCL=yes %1 IME=yes CSCOPE=yes DIRECTX=yes
|
||||
%VCDIR%nmake -f Make_mvc.mak GUI=yes OLE=yes LUA=%TOOLDIR%lua53 DYNAMIC_LUA=yes LUA_VER=53 PERL=%TOOLDIR%perl524 DYNAMIC_PERL=yes PERL_VER=524 PYTHON=%TOOLDIR%python27 DYNAMIC_PYTHON=yes PYTHON_VER=27 PYTHON3=%TOOLDIR%python35 DYNAMIC_PYTHON3=yes PYTHON3_VER=35 MZSCHEME=%TOOLDIR%Racket DYNAMIC_MZSCHEME=yes MZSCHEME_VER=3m_a36fs8 RUBY=%TOOLDIR%ruby24 DYNAMIC_RUBY=yes RUBY_VER=24 RUBY_API_VER_LONG=2.4.0 RUBY_MSVCRT_NAME=msvcrt TCL=%TOOLDIR%ActiveTcl TCL_VER=86 TCL_VER_LONG=8.6 DYNAMIC_TCL=yes TCL_DLL=tcl86t.dll %1 IME=yes CSCOPE=yes DIRECTX=yes
|
||||
|
||||
|
||||
+9
-7
@@ -841,6 +841,8 @@ free_buffer(buf_T *buf)
|
||||
++buf_free_count;
|
||||
free_buffer_stuff(buf, TRUE);
|
||||
#ifdef FEAT_EVAL
|
||||
/* b:changedtick uses an item in buf_T, remove it now */
|
||||
dictitem_remove(buf->b_vars, (dictitem_T *)&buf->b_ct_di);
|
||||
unref_var_dict(buf->b_vars);
|
||||
#endif
|
||||
#ifdef FEAT_LUA
|
||||
@@ -3920,7 +3922,6 @@ build_stl_str_hl(
|
||||
struct stl_hlrec *sp;
|
||||
int save_must_redraw = must_redraw;
|
||||
int save_redr_type = curwin->w_redr_type;
|
||||
int save_highlight_shcnaged = need_highlight_changed;
|
||||
|
||||
#ifdef FEAT_EVAL
|
||||
/*
|
||||
@@ -4693,12 +4694,13 @@ build_stl_str_hl(
|
||||
sp->userhl = 0;
|
||||
}
|
||||
|
||||
/* We do not want redrawing a stausline, ruler, title, etc. to trigger
|
||||
* another redraw, it may cause an endless loop. This happens when a
|
||||
* statusline changes a highlight group. */
|
||||
must_redraw = save_must_redraw;
|
||||
curwin->w_redr_type = save_redr_type;
|
||||
need_highlight_changed = save_highlight_shcnaged;
|
||||
/* When inside update_screen we do not want redrawing a stausline, ruler,
|
||||
* title, etc. to trigger another redraw, it may cause an endless loop. */
|
||||
if (updating_screen)
|
||||
{
|
||||
must_redraw = save_must_redraw;
|
||||
curwin->w_redr_type = save_redr_type;
|
||||
}
|
||||
|
||||
return width;
|
||||
}
|
||||
|
||||
+71
-15
@@ -54,9 +54,7 @@
|
||||
# define fd_close(sd) close(sd)
|
||||
#endif
|
||||
|
||||
#ifndef FEAT_GUI_MACVIM
|
||||
static void channel_read(channel_T *channel, ch_part_T part, char *func);
|
||||
#endif
|
||||
|
||||
/* Whether a redraw is needed for appending a line to a buffer. */
|
||||
static int channel_need_redraw = FALSE;
|
||||
@@ -3271,11 +3269,7 @@ channel_close_now(channel_T *channel)
|
||||
* "part" is PART_SOCK, PART_OUT or PART_ERR.
|
||||
* The data is put in the read queue. No callbacks are invoked here.
|
||||
*/
|
||||
#ifndef FEAT_GUI_MACVIM
|
||||
static void
|
||||
#else
|
||||
void
|
||||
#endif
|
||||
channel_read(channel_T *channel, ch_part_T part, char *func)
|
||||
{
|
||||
static char_u *buf = NULL;
|
||||
@@ -3561,6 +3555,22 @@ theend:
|
||||
free_job_options(&opt);
|
||||
}
|
||||
|
||||
# ifdef FEAT_GUI_MACVIM
|
||||
/*
|
||||
* Read from channel "channel" in dispatch event handler.
|
||||
* Channel may be already read out elsewhere before the handler invoked
|
||||
* after an event arrived, so should be checked again.
|
||||
*/
|
||||
void
|
||||
channel_may_read(channel_T *channel, ch_part_T part, char *func)
|
||||
{
|
||||
sock_T fd = channel->ch_part[part].ch_fd;
|
||||
|
||||
if (fd != INVALID_FD && channel_wait(channel, fd, 0) == CW_READY)
|
||||
channel_read(channel, part, func);
|
||||
}
|
||||
# endif
|
||||
|
||||
# if defined(WIN32) || defined(FEAT_GUI_X11) || defined(FEAT_GUI_GTK) \
|
||||
|| defined(PROTO)
|
||||
/*
|
||||
@@ -3985,6 +3995,8 @@ ch_raw_common(typval_T *argvars, typval_T *rettv, int eval)
|
||||
free_job_options(&opt);
|
||||
}
|
||||
|
||||
# define KEEP_OPEN_TIME 20 /* msec */
|
||||
|
||||
# if (defined(UNIX) && !defined(HAVE_SELECT)) || defined(PROTO)
|
||||
/*
|
||||
* Add open channels to the poll struct.
|
||||
@@ -3992,7 +4004,7 @@ ch_raw_common(typval_T *argvars, typval_T *rettv, int eval)
|
||||
* The type of "fds" is hidden to avoid problems with the function proto.
|
||||
*/
|
||||
int
|
||||
channel_poll_setup(int nfd_in, void *fds_in)
|
||||
channel_poll_setup(int nfd_in, void *fds_in, int *towait)
|
||||
{
|
||||
int nfd = nfd_in;
|
||||
channel_T *channel;
|
||||
@@ -4007,10 +4019,21 @@ channel_poll_setup(int nfd_in, void *fds_in)
|
||||
|
||||
if (ch_part->ch_fd != INVALID_FD)
|
||||
{
|
||||
ch_part->ch_poll_idx = nfd;
|
||||
fds[nfd].fd = ch_part->ch_fd;
|
||||
fds[nfd].events = POLLIN;
|
||||
nfd++;
|
||||
if (channel->ch_keep_open)
|
||||
{
|
||||
/* For unknown reason poll() returns immediately for a
|
||||
* keep-open channel. Instead of adding it to the fds add
|
||||
* a short timeout and check, like polling. */
|
||||
if (*towait < 0 || *towait > KEEP_OPEN_TIME)
|
||||
*towait = KEEP_OPEN_TIME;
|
||||
}
|
||||
else
|
||||
{
|
||||
ch_part->ch_poll_idx = nfd;
|
||||
fds[nfd].fd = ch_part->ch_fd;
|
||||
fds[nfd].events = POLLIN;
|
||||
nfd++;
|
||||
}
|
||||
}
|
||||
else
|
||||
channel->ch_part[part].ch_poll_idx = -1;
|
||||
@@ -4046,6 +4069,12 @@ channel_poll_check(int ret_in, void *fds_in)
|
||||
channel_read(channel, part, "channel_poll_check");
|
||||
--ret;
|
||||
}
|
||||
else if (channel->ch_part[part].ch_fd != INVALID_FD
|
||||
&& channel->ch_keep_open)
|
||||
{
|
||||
/* polling a keep-open channel */
|
||||
channel_read(channel, part, "channel_poll_check_keep_open");
|
||||
}
|
||||
}
|
||||
|
||||
in_part = &channel->ch_part[PART_IN];
|
||||
@@ -4062,11 +4091,17 @@ channel_poll_check(int ret_in, void *fds_in)
|
||||
# endif /* UNIX && !HAVE_SELECT */
|
||||
|
||||
# if (!defined(WIN32) && defined(HAVE_SELECT)) || defined(PROTO)
|
||||
|
||||
/*
|
||||
* The "fd_set" type is hidden to avoid problems with the function proto.
|
||||
*/
|
||||
int
|
||||
channel_select_setup(int maxfd_in, void *rfds_in, void *wfds_in)
|
||||
channel_select_setup(
|
||||
int maxfd_in,
|
||||
void *rfds_in,
|
||||
void *wfds_in,
|
||||
struct timeval *tv,
|
||||
struct timeval **tvp)
|
||||
{
|
||||
int maxfd = maxfd_in;
|
||||
channel_T *channel;
|
||||
@@ -4082,9 +4117,25 @@ channel_select_setup(int maxfd_in, void *rfds_in, void *wfds_in)
|
||||
|
||||
if (fd != INVALID_FD)
|
||||
{
|
||||
FD_SET((int)fd, rfds);
|
||||
if (maxfd < (int)fd)
|
||||
maxfd = (int)fd;
|
||||
if (channel->ch_keep_open)
|
||||
{
|
||||
/* For unknown reason select() returns immediately for a
|
||||
* keep-open channel. Instead of adding it to the rfds add
|
||||
* a short timeout and check, like polling. */
|
||||
if (*tvp == NULL || tv->tv_sec > 0
|
||||
|| tv->tv_usec > KEEP_OPEN_TIME * 1000)
|
||||
{
|
||||
*tvp = tv;
|
||||
tv->tv_sec = 0;
|
||||
tv->tv_usec = KEEP_OPEN_TIME * 1000;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
FD_SET((int)fd, rfds);
|
||||
if (maxfd < (int)fd)
|
||||
maxfd = (int)fd;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -4119,6 +4170,11 @@ channel_select_check(int ret_in, void *rfds_in, void *wfds_in)
|
||||
FD_CLR(fd, rfds);
|
||||
--ret;
|
||||
}
|
||||
else if (fd != INVALID_FD && channel->ch_keep_open)
|
||||
{
|
||||
/* polling a keep-open channel */
|
||||
channel_read(channel, part, "channel_select_check_keep_open");
|
||||
}
|
||||
}
|
||||
|
||||
in_part = &channel->ch_part[PART_IN];
|
||||
|
||||
+10
-10
@@ -1100,7 +1100,7 @@ win_lbr_chartabsize(
|
||||
*/
|
||||
numberextra = win_col_off(wp);
|
||||
col2 = col;
|
||||
colmax = (colnr_T)(W_WIDTH(wp) - numberextra - col_adj);
|
||||
colmax = (colnr_T)(wp->w_width - numberextra - col_adj);
|
||||
if (col >= colmax)
|
||||
{
|
||||
colmax += col_adj;
|
||||
@@ -1151,10 +1151,10 @@ win_lbr_chartabsize(
|
||||
|
||||
numberextra = numberwidth;
|
||||
col += numberextra + mb_added;
|
||||
if (col >= (colnr_T)W_WIDTH(wp))
|
||||
if (col >= (colnr_T)wp->w_width)
|
||||
{
|
||||
col -= W_WIDTH(wp);
|
||||
numberextra = W_WIDTH(wp) - (numberextra - win_col_off2(wp));
|
||||
col -= wp->w_width;
|
||||
numberextra = wp->w_width - (numberextra - win_col_off2(wp));
|
||||
if (col >= numberextra && numberextra > 0)
|
||||
col %= numberextra;
|
||||
if (*p_sbr != NUL)
|
||||
@@ -1170,18 +1170,18 @@ win_lbr_chartabsize(
|
||||
|
||||
numberwidth -= win_col_off2(wp);
|
||||
}
|
||||
if (col == 0 || col + size + sbrlen > (colnr_T)W_WIDTH(wp))
|
||||
if (col == 0 || col + size + sbrlen > (colnr_T)wp->w_width)
|
||||
{
|
||||
added = 0;
|
||||
if (*p_sbr != NUL)
|
||||
{
|
||||
if (size + sbrlen + numberwidth > (colnr_T)W_WIDTH(wp))
|
||||
if (size + sbrlen + numberwidth > (colnr_T)wp->w_width)
|
||||
{
|
||||
/* calculate effective window width */
|
||||
int width = (colnr_T)W_WIDTH(wp) - sbrlen - numberwidth;
|
||||
int prev_width = col ? ((colnr_T)W_WIDTH(wp) - (sbrlen + col)) : 0;
|
||||
int width = (colnr_T)wp->w_width - sbrlen - numberwidth;
|
||||
int prev_width = col ? ((colnr_T)wp->w_width - (sbrlen + col)) : 0;
|
||||
if (width == 0)
|
||||
width = (colnr_T)W_WIDTH(wp);
|
||||
width = (colnr_T)wp->w_width;
|
||||
added += ((size - prev_width) / width) * vim_strsize(p_sbr);
|
||||
if ((size - prev_width) % width)
|
||||
/* wrapped, add another length of 'sbr' */
|
||||
@@ -1248,7 +1248,7 @@ in_win_border(win_T *wp, colnr_T vcol)
|
||||
|
||||
if (wp->w_width == 0) /* there is no border */
|
||||
return FALSE;
|
||||
width1 = W_WIDTH(wp) - win_col_off(wp);
|
||||
width1 = wp->w_width - win_col_off(wp);
|
||||
if ((int)vcol < width1 - 1)
|
||||
return FALSE;
|
||||
if ((int)vcol == width1 - 1)
|
||||
|
||||
+7
-5
@@ -1027,10 +1027,13 @@ if test "$enable_perlinterp" = "yes" -o "$enable_perlinterp" = "dynamic"; then
|
||||
dnl Remove "-fno-something", it breaks using cproto.
|
||||
dnl Remove "-fdebug-prefix-map", it isn't supported by clang.
|
||||
dnl Remove "FORTIFY_SOURCE", it will be defined twice.
|
||||
dnl remove -pipe and -Wxxx, it confuses cproto
|
||||
perlcppflags=`$vi_cv_path_perl -Mlib=$srcdir -MExtUtils::Embed \
|
||||
-e 'ccflags;perl_inc;print"\n"' | sed -e 's/-fno[[^ ]]*//' \
|
||||
-e 's/-fdebug-prefix-map[[^ ]]*//g' \
|
||||
-e 's/\(-Wp,\)\?-D_FORTIFY_SOURCE=.//g'`
|
||||
-e 's/-pipe //' \
|
||||
-e 's/-W[[^ ]]*//g' \
|
||||
-e 's/-D_FORTIFY_SOURCE=.//g'`
|
||||
dnl Remove "-lc", it breaks on FreeBSD when using "-pthread".
|
||||
perllibs=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed -e 'ldopts' | \
|
||||
sed -e '/Warning/d' -e '/Note (probably harmless)/d' \
|
||||
@@ -1066,8 +1069,7 @@ if test "$enable_perlinterp" = "yes" -o "$enable_perlinterp" = "dynamic"; then
|
||||
LDFLAGS=$ldflags_save
|
||||
if test $perl_ok = yes; then
|
||||
if test "X$perlcppflags" != "X"; then
|
||||
dnl remove -pipe and -Wxxx, it confuses cproto
|
||||
PERL_CFLAGS=`echo "$perlcppflags" | sed -e 's/-pipe //' -e 's/-W[[^ ]]*//'`
|
||||
PERL_CFLAGS=$perlcppflags
|
||||
fi
|
||||
if test "X$perlldflags" != "X"; then
|
||||
if test "X`echo \"$LDFLAGS\" | $FGREP -e \"$perlldflags\"`" = "X"; then
|
||||
@@ -1964,9 +1966,9 @@ if test "$enable_rubyinterp" = "yes" -o "$enable_rubyinterp" = "dynamic"; then
|
||||
|
||||
AC_DEFINE(FEAT_RUBY)
|
||||
if test "$enable_rubyinterp" = "dynamic"; then
|
||||
libruby=`$vi_cv_path_ruby -r rbconfig -e "puts $ruby_rbconfig::CONFIG[['LIBRUBY_SO']]"`
|
||||
libruby_soname=`$vi_cv_path_ruby -r rbconfig -e "puts $ruby_rbconfig::CONFIG[['LIBRUBY_ALIASES']].split[[0]]"`
|
||||
AC_DEFINE(DYNAMIC_RUBY)
|
||||
RUBY_CFLAGS="-DDYNAMIC_RUBY_DLL=\\\"$libruby\\\" -DDYNAMIC_RUBY_VER=$rubyversion $RUBY_CFLAGS"
|
||||
RUBY_CFLAGS="-DDYNAMIC_RUBY_DLL=\\\"$libruby_soname\\\" -DDYNAMIC_RUBY_VER=$rubyversion $RUBY_CFLAGS"
|
||||
RUBY_LIBS=
|
||||
fi
|
||||
else
|
||||
|
||||
+71
-86
@@ -19,6 +19,9 @@
|
||||
#define DOSINST
|
||||
#include "dosinst.h"
|
||||
|
||||
#define GVIMEXT64_PATH "GvimExt64\\gvimext.dll"
|
||||
#define GVIMEXT32_PATH "GvimExt32\\gvimext.dll"
|
||||
|
||||
/* Macro to do an error check I was typing over and over */
|
||||
#define CHECK_REG_ERROR(code) if (code != ERROR_SUCCESS) { printf("%ld error number: %ld\n", (long)__LINE__, (long)code); return 1; }
|
||||
|
||||
@@ -75,7 +78,7 @@ char *(remap_choices[]) =
|
||||
{
|
||||
"\nChoose:",
|
||||
"Do not remap keys for Windows behavior",
|
||||
"Remap a few keys for Windows behavior (<C-V>, <C-C>, etc)",
|
||||
"Remap a few keys for Windows behavior (CTRL-V, CTRL-C, CTRL-F, etc)",
|
||||
};
|
||||
int remap_choice = (int)remap_win;
|
||||
char *remap_text = "- %s";
|
||||
@@ -359,7 +362,6 @@ find_bat_exe(int check_bat_only)
|
||||
mch_chdir(installdir);
|
||||
}
|
||||
|
||||
#ifdef WIN3264
|
||||
/*
|
||||
* Get the value of $VIMRUNTIME or $VIM and write it in $TEMP/vimini.ini, so
|
||||
* that NSIS can read it.
|
||||
@@ -612,7 +614,6 @@ uninstall_check(int skip_question)
|
||||
|
||||
return foundone;
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Find out information about the system.
|
||||
@@ -1324,12 +1325,12 @@ init_vimrc_choices(void)
|
||||
++choice_count;
|
||||
}
|
||||
|
||||
#if defined(WIN3264)
|
||||
static LONG
|
||||
reg_create_key(
|
||||
HKEY root,
|
||||
const char *subkey,
|
||||
PHKEY phKey)
|
||||
PHKEY phKey,
|
||||
DWORD flag)
|
||||
{
|
||||
DWORD disp;
|
||||
|
||||
@@ -1337,7 +1338,7 @@ reg_create_key(
|
||||
return RegCreateKeyEx(
|
||||
root, subkey,
|
||||
0, NULL, REG_OPTION_NON_VOLATILE,
|
||||
KEY_WOW64_64KEY | KEY_WRITE,
|
||||
flag | KEY_WRITE,
|
||||
NULL, phKey, &disp);
|
||||
}
|
||||
|
||||
@@ -1356,10 +1357,11 @@ reg_create_key_and_value(
|
||||
HKEY hRootKey,
|
||||
const char *subkey,
|
||||
const char *value_name,
|
||||
const char *data)
|
||||
const char *data,
|
||||
DWORD flag)
|
||||
{
|
||||
HKEY hKey;
|
||||
LONG lRet = reg_create_key(hRootKey, subkey, &hKey);
|
||||
LONG lRet = reg_create_key(hRootKey, subkey, &hKey, flag);
|
||||
|
||||
if (ERROR_SUCCESS == lRet)
|
||||
{
|
||||
@@ -1375,21 +1377,22 @@ register_inproc_server(
|
||||
const char *clsid,
|
||||
const char *extname,
|
||||
const char *module,
|
||||
const char *threading_model)
|
||||
const char *threading_model,
|
||||
DWORD flag)
|
||||
{
|
||||
CHAR subkey[BUFSIZE];
|
||||
LONG lRet;
|
||||
|
||||
sprintf(subkey, "CLSID\\%s", clsid);
|
||||
lRet = reg_create_key_and_value(hRootKey, subkey, NULL, extname);
|
||||
lRet = reg_create_key_and_value(hRootKey, subkey, NULL, extname, flag);
|
||||
if (ERROR_SUCCESS == lRet)
|
||||
{
|
||||
sprintf(subkey, "CLSID\\%s\\InProcServer32", clsid);
|
||||
lRet = reg_create_key_and_value(hRootKey, subkey, NULL, module);
|
||||
lRet = reg_create_key_and_value(hRootKey, subkey, NULL, module, flag);
|
||||
if (ERROR_SUCCESS == lRet)
|
||||
{
|
||||
lRet = reg_create_key_and_value(hRootKey, subkey,
|
||||
"ThreadingModel", threading_model);
|
||||
"ThreadingModel", threading_model, flag);
|
||||
}
|
||||
}
|
||||
return lRet;
|
||||
@@ -1400,13 +1403,15 @@ register_shellex(
|
||||
HKEY hRootKey,
|
||||
const char *clsid,
|
||||
const char *name,
|
||||
const char *exe_path)
|
||||
const char *exe_path,
|
||||
DWORD flag)
|
||||
{
|
||||
LONG lRet = reg_create_key_and_value(
|
||||
hRootKey,
|
||||
"*\\shellex\\ContextMenuHandlers\\gvim",
|
||||
NULL,
|
||||
clsid);
|
||||
clsid,
|
||||
flag);
|
||||
|
||||
if (ERROR_SUCCESS == lRet)
|
||||
{
|
||||
@@ -1414,7 +1419,8 @@ register_shellex(
|
||||
HKEY_LOCAL_MACHINE,
|
||||
"Software\\Microsoft\\Windows\\CurrentVersion\\Shell Extensions\\Approved",
|
||||
clsid,
|
||||
name);
|
||||
name,
|
||||
flag);
|
||||
|
||||
if (ERROR_SUCCESS == lRet)
|
||||
{
|
||||
@@ -1422,7 +1428,8 @@ register_shellex(
|
||||
HKEY_LOCAL_MACHINE,
|
||||
"Software\\Vim\\Gvim",
|
||||
"path",
|
||||
exe_path);
|
||||
exe_path,
|
||||
flag);
|
||||
}
|
||||
}
|
||||
return lRet;
|
||||
@@ -1431,7 +1438,8 @@ register_shellex(
|
||||
static LONG
|
||||
register_openwith(
|
||||
HKEY hRootKey,
|
||||
const char *exe_path)
|
||||
const char *exe_path,
|
||||
DWORD flag)
|
||||
{
|
||||
char exe_cmd[BUFSIZE];
|
||||
LONG lRet;
|
||||
@@ -1441,7 +1449,8 @@ register_openwith(
|
||||
hRootKey,
|
||||
"Applications\\gvim.exe\\shell\\edit\\command",
|
||||
NULL,
|
||||
exe_cmd);
|
||||
exe_cmd,
|
||||
flag);
|
||||
|
||||
if (ERROR_SUCCESS == lRet)
|
||||
{
|
||||
@@ -1455,7 +1464,7 @@ register_openwith(
|
||||
for (i = 0; ERROR_SUCCESS == lRet
|
||||
&& i < sizeof(openwith) / sizeof(openwith[0]); i++)
|
||||
{
|
||||
lRet = reg_create_key_and_value(hRootKey, openwith[i], NULL, "");
|
||||
lRet = reg_create_key_and_value(hRootKey, openwith[i], NULL, "", flag);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1470,14 +1479,13 @@ register_uninstall(
|
||||
const char *uninstall_string)
|
||||
{
|
||||
LONG lRet = reg_create_key_and_value(hRootKey, appname,
|
||||
"DisplayName", display_name);
|
||||
"DisplayName", display_name, KEY_WOW64_64KEY);
|
||||
|
||||
if (ERROR_SUCCESS == lRet)
|
||||
lRet = reg_create_key_and_value(hRootKey, appname,
|
||||
"UninstallString", uninstall_string);
|
||||
"UninstallString", uninstall_string, KEY_WOW64_64KEY);
|
||||
return lRet;
|
||||
}
|
||||
#endif /* WIN3264 */
|
||||
|
||||
/*
|
||||
* Add some entries to the registry:
|
||||
@@ -1489,7 +1497,6 @@ register_uninstall(
|
||||
static int
|
||||
install_registry(void)
|
||||
{
|
||||
#ifdef WIN3264
|
||||
LONG lRet = ERROR_SUCCESS;
|
||||
const char *vim_ext_ThreadingModel = "Apartment";
|
||||
const char *vim_ext_name = "Vim Shell Extension";
|
||||
@@ -1497,40 +1504,59 @@ install_registry(void)
|
||||
char vim_exe_path[BUFSIZE];
|
||||
char display_name[BUFSIZE];
|
||||
char uninstall_string[BUFSIZE];
|
||||
int i;
|
||||
int loop_count = is_64bit_os() ? 2 : 1;
|
||||
DWORD flag;
|
||||
|
||||
sprintf(vim_exe_path, "%s\\gvim.exe", installdir);
|
||||
|
||||
if (install_popup)
|
||||
{
|
||||
char bufg[BUFSIZE];
|
||||
struct stat st;
|
||||
|
||||
if (stat("gvimext.dll", &st) >= 0)
|
||||
sprintf(bufg, "%s\\gvimext.dll", installdir);
|
||||
else
|
||||
/* gvimext.dll is in gvimext subdir */
|
||||
sprintf(bufg, "%s\\gvimext\\gvimext.dll", installdir);
|
||||
|
||||
printf("Creating \"Edit with Vim\" popup menu entry\n");
|
||||
|
||||
lRet = register_inproc_server(
|
||||
HKEY_CLASSES_ROOT, vim_ext_clsid, vim_ext_name,
|
||||
bufg, vim_ext_ThreadingModel);
|
||||
if (ERROR_SUCCESS != lRet)
|
||||
return FAIL;
|
||||
lRet = register_shellex(
|
||||
HKEY_CLASSES_ROOT, vim_ext_clsid, vim_ext_name, vim_exe_path);
|
||||
if (ERROR_SUCCESS != lRet)
|
||||
return FAIL;
|
||||
for (i = 0; i < loop_count; i++)
|
||||
{
|
||||
if (i == 0)
|
||||
{
|
||||
sprintf(bufg, "%s\\" GVIMEXT32_PATH, installdir);
|
||||
flag = KEY_WOW64_32KEY;
|
||||
}
|
||||
else
|
||||
{
|
||||
sprintf(bufg, "%s\\" GVIMEXT64_PATH, installdir);
|
||||
flag = KEY_WOW64_64KEY;
|
||||
}
|
||||
|
||||
lRet = register_inproc_server(
|
||||
HKEY_CLASSES_ROOT, vim_ext_clsid, vim_ext_name,
|
||||
bufg, vim_ext_ThreadingModel, flag);
|
||||
if (ERROR_SUCCESS != lRet)
|
||||
return FAIL;
|
||||
lRet = register_shellex(
|
||||
HKEY_CLASSES_ROOT, vim_ext_clsid, vim_ext_name,
|
||||
vim_exe_path, flag);
|
||||
if (ERROR_SUCCESS != lRet)
|
||||
return FAIL;
|
||||
}
|
||||
}
|
||||
|
||||
if (install_openwith)
|
||||
{
|
||||
printf("Creating \"Open with ...\" list entry\n");
|
||||
|
||||
lRet = register_openwith(HKEY_CLASSES_ROOT, vim_exe_path);
|
||||
if (ERROR_SUCCESS != lRet)
|
||||
return FAIL;
|
||||
for (i = 0; i < loop_count; i++)
|
||||
{
|
||||
if (i == 0)
|
||||
flag = KEY_WOW64_32KEY;
|
||||
else
|
||||
flag = KEY_WOW64_64KEY;
|
||||
|
||||
lRet = register_openwith(HKEY_CLASSES_ROOT, vim_exe_path, flag);
|
||||
if (ERROR_SUCCESS != lRet)
|
||||
return FAIL;
|
||||
}
|
||||
}
|
||||
|
||||
printf("Creating an uninstall entry\n");
|
||||
@@ -1554,7 +1580,6 @@ install_registry(void)
|
||||
uninstall_string);
|
||||
if (ERROR_SUCCESS != lRet)
|
||||
return FAIL;
|
||||
#endif /* WIN3264 */
|
||||
|
||||
return OK;
|
||||
}
|
||||
@@ -1584,12 +1609,8 @@ init_popup_choice(void)
|
||||
struct stat st;
|
||||
|
||||
if (has_gvim
|
||||
&& (stat("gvimext.dll", &st) >= 0
|
||||
|| stat("gvimext/gvimext.dll", &st) >= 0)
|
||||
#ifndef WIN3264
|
||||
&& searchpath("regedit.exe") != NULL
|
||||
#endif
|
||||
)
|
||||
&& (stat(GVIMEXT32_PATH, &st) >= 0
|
||||
|| stat(GVIMEXT64_PATH, &st) >= 0))
|
||||
{
|
||||
choices[choice_count].changefunc = change_popup_choice;
|
||||
choices[choice_count].installfunc = NULL;
|
||||
@@ -1623,11 +1644,7 @@ change_openwith_choice(int idx)
|
||||
static void
|
||||
init_openwith_choice(void)
|
||||
{
|
||||
if (has_gvim
|
||||
#ifndef WIN3264
|
||||
&& searchpath("regedit.exe") != NULL
|
||||
#endif
|
||||
)
|
||||
if (has_gvim)
|
||||
{
|
||||
choices[choice_count].changefunc = change_openwith_choice;
|
||||
choices[choice_count].installfunc = NULL;
|
||||
@@ -1639,7 +1656,6 @@ init_openwith_choice(void)
|
||||
add_dummy_choice();
|
||||
}
|
||||
|
||||
#ifdef WIN3264
|
||||
/* create_shortcut
|
||||
*
|
||||
* Create a shell link.
|
||||
@@ -1935,21 +1951,16 @@ toggle_shortcut_choice(int idx)
|
||||
alloc_text(idx, "Create a desktop icon for %s", arg);
|
||||
}
|
||||
}
|
||||
#endif /* WIN3264 */
|
||||
|
||||
static void
|
||||
init_startmenu_choice(void)
|
||||
{
|
||||
#ifdef WIN3264
|
||||
/* Start menu */
|
||||
choices[choice_count].changefunc = toggle_startmenu_choice;
|
||||
choices[choice_count].installfunc = NULL;
|
||||
choices[choice_count].active = 1;
|
||||
toggle_startmenu_choice(choice_count); /* set the text */
|
||||
++choice_count;
|
||||
#else
|
||||
add_dummy_choice();
|
||||
#endif
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -1958,7 +1969,6 @@ init_startmenu_choice(void)
|
||||
static void
|
||||
init_shortcut_choices(void)
|
||||
{
|
||||
#ifdef WIN3264
|
||||
/* Shortcut to gvim */
|
||||
choices[choice_count].text = NULL;
|
||||
choices[choice_count].arg = 0;
|
||||
@@ -1985,14 +1995,8 @@ init_shortcut_choices(void)
|
||||
choices[choice_count].installfunc = install_shortcut_gview;
|
||||
toggle_shortcut_choice(choice_count);
|
||||
++choice_count;
|
||||
#else
|
||||
add_dummy_choice();
|
||||
add_dummy_choice();
|
||||
add_dummy_choice();
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef WIN3264
|
||||
/*
|
||||
* Attempt to register OLE for Vim.
|
||||
*/
|
||||
@@ -2004,16 +2008,9 @@ install_OLE_register(void)
|
||||
printf("\n--- Attempting to register Vim with OLE ---\n");
|
||||
printf("(There is no message whether this works or not.)\n");
|
||||
|
||||
#ifndef __CYGWIN__
|
||||
sprintf(register_command_string, "\"%s\\gvim.exe\" -silent -register", installdir);
|
||||
#else
|
||||
/* handle this differently for Cygwin which sometimes has trouble with
|
||||
* Windows-style pathnames here. */
|
||||
sprintf(register_command_string, "./gvim.exe -silent -register");
|
||||
#endif
|
||||
system(register_command_string);
|
||||
}
|
||||
#endif /* WIN3264 */
|
||||
|
||||
/*
|
||||
* Remove the last part of directory "path[]" to get its parent, and put the
|
||||
@@ -2212,19 +2209,15 @@ print_cmd_line_help(void)
|
||||
printf(" Install the Edit-with-Vim context menu entry\n");
|
||||
printf("-install-openwith\n");
|
||||
printf(" Add Vim to the \"Open With...\" context menu list\n");
|
||||
#ifdef WIN3264
|
||||
printf("-add-start-menu");
|
||||
printf(" Add Vim to the start menu\n");
|
||||
printf("-install-icons");
|
||||
printf(" Create icons for gVim executables on the desktop\n");
|
||||
#endif
|
||||
printf("-create-directories [vim|home]\n");
|
||||
printf(" Create runtime directories to drop plugins into; in the $VIM\n");
|
||||
printf(" or $HOME directory\n");
|
||||
#ifdef WIN3264
|
||||
printf("-register-OLE");
|
||||
printf(" Ignored\n");
|
||||
#endif
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
@@ -2308,12 +2301,10 @@ command_line_setup_choices(int argc, char **argv)
|
||||
else /* No choice specified, default to vim directory */
|
||||
vimfiles_dir_choice = (int)vimfiles_dir_vim;
|
||||
}
|
||||
#ifdef WIN3264
|
||||
else if (strcmp(argv[i], "-register-OLE") == 0)
|
||||
{
|
||||
/* This is always done when gvim is found */
|
||||
}
|
||||
#endif
|
||||
else /* Unknown switch */
|
||||
{
|
||||
printf("Got unknown argument argv[%d] = %s\n", i, argv[i]);
|
||||
@@ -2471,11 +2462,9 @@ install(void)
|
||||
|| !interactive)
|
||||
install_registry();
|
||||
|
||||
#ifdef WIN3264
|
||||
/* Register gvim with OLE. */
|
||||
if (has_gvim)
|
||||
install_OLE_register();
|
||||
#endif
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -2511,7 +2500,6 @@ main(int argc, char **argv)
|
||||
/* Initialize this program. */
|
||||
do_inits(argv);
|
||||
|
||||
#ifdef WIN3264
|
||||
if (argc > 1 && strcmp(argv[1], "-uninstall-check") == 0)
|
||||
{
|
||||
/* Only check for already installed Vims. Used by NSIS installer. */
|
||||
@@ -2527,7 +2515,6 @@ main(int argc, char **argv)
|
||||
sleep(3);
|
||||
exit(0);
|
||||
}
|
||||
#endif
|
||||
|
||||
printf("This program sets up the installation of Vim "
|
||||
VIM_VERSION_MEDIUM "\n\n");
|
||||
@@ -2535,11 +2522,9 @@ main(int argc, char **argv)
|
||||
/* Check if the user unpacked the archives properly. */
|
||||
check_unpack();
|
||||
|
||||
#ifdef WIN3264
|
||||
/* Check for already installed Vims. */
|
||||
if (interactive)
|
||||
uninstall_check(0);
|
||||
#endif
|
||||
|
||||
/* Find out information about the system. */
|
||||
inspect_system();
|
||||
|
||||
+35
-160
@@ -26,19 +26,10 @@
|
||||
# include "vimio.h"
|
||||
# include <ctype.h>
|
||||
|
||||
# ifndef __CYGWIN__
|
||||
# include <direct.h>
|
||||
# endif
|
||||
# include <direct.h>
|
||||
|
||||
# if defined(_WIN64) || defined(WIN32)
|
||||
# define WIN3264
|
||||
# include <windows.h>
|
||||
# include <shlobj.h>
|
||||
# else
|
||||
# include <dir.h>
|
||||
# include <bios.h>
|
||||
# include <dos.h>
|
||||
# endif
|
||||
# include <windows.h>
|
||||
# include <shlobj.h>
|
||||
#endif
|
||||
|
||||
#ifdef UNIX_LINT
|
||||
@@ -56,7 +47,7 @@ char *searchpath(char *name);
|
||||
#if defined(UNIX_LINT)
|
||||
# define vim_mkdir(x, y) mkdir((char *)(x), y)
|
||||
#else
|
||||
# if defined(WIN3264) && !defined(__BORLANDC__)
|
||||
# ifndef __BORLANDC__
|
||||
# define vim_mkdir(x, y) _mkdir((char *)(x))
|
||||
# else
|
||||
# define vim_mkdir(x, y) mkdir((char *)(x))
|
||||
@@ -88,6 +79,9 @@ char *searchpath(char *name);
|
||||
# ifndef KEY_WOW64_64KEY
|
||||
# define KEY_WOW64_64KEY 0x0100
|
||||
# endif
|
||||
# ifndef KEY_WOW64_32KEY
|
||||
# define KEY_WOW64_32KEY 0x0200
|
||||
# endif
|
||||
|
||||
#define VIM_STARTMENU "Programs\\Vim " VIM_VERSION_SHORT
|
||||
|
||||
@@ -134,40 +128,32 @@ myexit(int n)
|
||||
exit(n);
|
||||
}
|
||||
|
||||
#ifdef WIN3264
|
||||
/* This symbol is not defined in older versions of the SDK or Visual C++ */
|
||||
|
||||
#ifndef VER_PLATFORM_WIN32_WINDOWS
|
||||
# define VER_PLATFORM_WIN32_WINDOWS 1
|
||||
#endif
|
||||
|
||||
static DWORD g_PlatformId;
|
||||
|
||||
typedef BOOL (WINAPI *LPFN_ISWOW64PROCESS)(HANDLE, PBOOL);
|
||||
/*
|
||||
* Set g_PlatformId to VER_PLATFORM_WIN32_NT (NT) or
|
||||
* VER_PLATFORM_WIN32_WINDOWS (Win95).
|
||||
* Check if this is a 64-bit OS.
|
||||
*/
|
||||
static void
|
||||
PlatformId(void)
|
||||
static BOOL
|
||||
is_64bit_os(void)
|
||||
{
|
||||
static int done = FALSE;
|
||||
#ifdef _WIN64
|
||||
return TRUE;
|
||||
#else
|
||||
BOOL bIsWow64 = FALSE;
|
||||
LPFN_ISWOW64PROCESS pIsWow64Process;
|
||||
|
||||
if (!done)
|
||||
{
|
||||
OSVERSIONINFO ovi;
|
||||
|
||||
ovi.dwOSVersionInfoSize = sizeof(ovi);
|
||||
GetVersionEx(&ovi);
|
||||
|
||||
g_PlatformId = ovi.dwPlatformId;
|
||||
done = TRUE;
|
||||
}
|
||||
pIsWow64Process = (LPFN_ISWOW64PROCESS)GetProcAddress(
|
||||
GetModuleHandle("kernel32"), "IsWow64Process");
|
||||
if (pIsWow64Process != NULL)
|
||||
pIsWow64Process(GetCurrentProcess(), &bIsWow64);
|
||||
return bIsWow64;
|
||||
#endif
|
||||
}
|
||||
|
||||
# ifdef __BORLANDC__
|
||||
#ifdef __BORLANDC__
|
||||
/* Borland defines its own searchpath() in dir.h */
|
||||
# include <dir.h>
|
||||
# else
|
||||
# include <dir.h>
|
||||
#else
|
||||
static char *
|
||||
searchpath(char *name)
|
||||
{
|
||||
@@ -176,28 +162,17 @@ searchpath(char *name)
|
||||
|
||||
/* There appears to be a bug in FindExecutableA() on Windows NT.
|
||||
* Use FindExecutableW() instead... */
|
||||
PlatformId();
|
||||
if (g_PlatformId == VER_PLATFORM_WIN32_NT)
|
||||
MultiByteToWideChar(CP_ACP, 0, (LPCTSTR)name, -1,
|
||||
(LPWSTR)widename, BUFSIZE);
|
||||
if (FindExecutableW((LPCWSTR)widename, (LPCWSTR)"",
|
||||
(LPWSTR)location) > (HINSTANCE)32)
|
||||
{
|
||||
MultiByteToWideChar(CP_ACP, 0, (LPCTSTR)name, -1,
|
||||
(LPWSTR)widename, BUFSIZE);
|
||||
if (FindExecutableW((LPCWSTR)widename, (LPCWSTR)"",
|
||||
(LPWSTR)location) > (HINSTANCE)32)
|
||||
{
|
||||
WideCharToMultiByte(CP_ACP, 0, (LPWSTR)location, -1,
|
||||
(LPSTR)widename, 2 * BUFSIZE, NULL, NULL);
|
||||
return widename;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (FindExecutableA((LPCTSTR)name, (LPCTSTR)"",
|
||||
(LPTSTR)location) > (HINSTANCE)32)
|
||||
return location;
|
||||
WideCharToMultiByte(CP_ACP, 0, (LPWSTR)location, -1,
|
||||
(LPSTR)widename, 2 * BUFSIZE, NULL, NULL);
|
||||
return widename;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/*
|
||||
@@ -217,7 +192,6 @@ searchpath_save(char *name)
|
||||
return s;
|
||||
}
|
||||
|
||||
#ifdef WIN3264
|
||||
|
||||
#ifndef CSIDL_COMMON_PROGRAMS
|
||||
# define CSIDL_COMMON_PROGRAMS 0x0017
|
||||
@@ -355,7 +329,6 @@ retry:
|
||||
|
||||
return OK;
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
* List of targets. The first one (index zero) is used for the default path
|
||||
@@ -406,10 +379,8 @@ char *(icon_link_names[ICON_COUNT]) =
|
||||
"gVim Easy " VIM_VERSION_SHORT ".lnk",
|
||||
"gVim Read only " VIM_VERSION_SHORT ".lnk"};
|
||||
|
||||
/* This is only used for dosinst.c when WIN3264 is defined and for uninstal.c
|
||||
* when not being able to directly access registry entries. */
|
||||
#if (defined(DOSINST) && defined(WIN3264)) \
|
||||
|| (!defined(DOSINST) && !defined(WIN3264))
|
||||
/* This is only used for dosinst.c. */
|
||||
#if defined(DOSINST)
|
||||
/*
|
||||
* Run an external command and wait for it to finish.
|
||||
*/
|
||||
@@ -464,24 +435,9 @@ add_pathsep(char *name)
|
||||
int
|
||||
change_drive(int drive)
|
||||
{
|
||||
#ifdef WIN3264
|
||||
char temp[3] = "-:";
|
||||
temp[0] = (char)(drive + 'A' - 1);
|
||||
return !SetCurrentDirectory(temp);
|
||||
#else
|
||||
# ifndef UNIX_LINT
|
||||
union REGS regs;
|
||||
|
||||
regs.h.ah = 0x0e;
|
||||
regs.h.dl = drive - 1;
|
||||
intdos(®s, ®s); /* set default drive */
|
||||
regs.h.ah = 0x19;
|
||||
intdos(®s, ®s); /* get default drive */
|
||||
if (regs.h.al == drive - 1)
|
||||
return 0;
|
||||
# endif
|
||||
return -1;
|
||||
#endif
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -507,7 +463,7 @@ mch_chdir(char *path)
|
||||
/*
|
||||
* Expand the executable name into a full path name.
|
||||
*/
|
||||
#if defined(__BORLANDC__) && !defined(WIN3264)
|
||||
#if defined(__BORLANDC__)
|
||||
|
||||
/* Only Borland C++ has this. */
|
||||
# define my_fullpath(b, n, l) _fullpath(b, n, l)
|
||||
@@ -516,92 +472,11 @@ mch_chdir(char *path)
|
||||
static char *
|
||||
my_fullpath(char *buf, char *fname, int len)
|
||||
{
|
||||
# ifdef WIN3264
|
||||
/* Only GetModuleFileName() will get the long file name path.
|
||||
* GetFullPathName() may still use the short (FAT) name. */
|
||||
DWORD len_read = GetModuleFileName(NULL, buf, (size_t)len);
|
||||
|
||||
return (len_read > 0 && len_read < (DWORD)len) ? buf : NULL;
|
||||
# else
|
||||
char olddir[BUFSIZE];
|
||||
char *p, *q;
|
||||
int c;
|
||||
char *retval = buf;
|
||||
|
||||
if (strchr(fname, ':') != NULL) /* already expanded */
|
||||
{
|
||||
strncpy(buf, fname, len);
|
||||
}
|
||||
else
|
||||
{
|
||||
*buf = NUL;
|
||||
/*
|
||||
* change to the directory for a moment,
|
||||
* and then do the getwd() (and get back to where we were).
|
||||
* This will get the correct path name with "../" things.
|
||||
*/
|
||||
p = strrchr(fname, '/');
|
||||
q = strrchr(fname, '\\');
|
||||
if (q != NULL && (p == NULL || q > p))
|
||||
p = q;
|
||||
q = strrchr(fname, ':');
|
||||
if (q != NULL && (p == NULL || q > p))
|
||||
p = q;
|
||||
if (p != NULL)
|
||||
{
|
||||
if (getcwd(olddir, BUFSIZE) == NULL)
|
||||
{
|
||||
p = NULL; /* can't get current dir: don't chdir */
|
||||
retval = NULL;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (p == fname) /* /fname */
|
||||
q = p + 1; /* -> / */
|
||||
else if (q + 1 == p) /* ... c:\foo */
|
||||
q = p + 1; /* -> c:\ */
|
||||
else /* but c:\foo\bar */
|
||||
q = p; /* -> c:\foo */
|
||||
|
||||
c = *q; /* truncate at start of fname */
|
||||
*q = NUL;
|
||||
if (mch_chdir(fname)) /* change to the directory */
|
||||
retval = NULL;
|
||||
else
|
||||
{
|
||||
fname = q;
|
||||
if (c == '\\') /* if we cut the name at a */
|
||||
fname++; /* '\', don't add it again */
|
||||
}
|
||||
*q = c;
|
||||
}
|
||||
}
|
||||
if (getcwd(buf, len) == NULL)
|
||||
{
|
||||
retval = NULL;
|
||||
*buf = NUL;
|
||||
}
|
||||
/*
|
||||
* Concatenate the file name to the path.
|
||||
*/
|
||||
if (strlen(buf) + strlen(fname) >= len - 1)
|
||||
{
|
||||
printf("ERROR: File name too long!\n");
|
||||
myexit(1);
|
||||
}
|
||||
add_pathsep(buf);
|
||||
strcat(buf, fname);
|
||||
if (p)
|
||||
mch_chdir(olddir);
|
||||
}
|
||||
|
||||
/* Replace forward slashes with backslashes, required for the path to a
|
||||
* command. */
|
||||
while ((p = strchr(buf, '/')) != NULL)
|
||||
*p = '\\';
|
||||
|
||||
return retval;
|
||||
# endif
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
+8
-8
@@ -1785,14 +1785,14 @@ edit_putchar(int c, int highlight)
|
||||
else
|
||||
attr = 0;
|
||||
pc_row = W_WINROW(curwin) + curwin->w_wrow;
|
||||
pc_col = W_WINCOL(curwin);
|
||||
pc_col = curwin->w_wincol;
|
||||
#if defined(FEAT_RIGHTLEFT) || defined(FEAT_MBYTE)
|
||||
pc_status = PC_STATUS_UNSET;
|
||||
#endif
|
||||
#ifdef FEAT_RIGHTLEFT
|
||||
if (curwin->w_p_rl)
|
||||
{
|
||||
pc_col += W_WIDTH(curwin) - 1 - curwin->w_wcol;
|
||||
pc_col += curwin->w_width - 1 - curwin->w_wcol;
|
||||
# ifdef FEAT_MBYTE
|
||||
if (has_mbyte)
|
||||
{
|
||||
@@ -1874,7 +1874,7 @@ display_dollar(colnr_T col)
|
||||
}
|
||||
#endif
|
||||
curs_columns(FALSE); /* recompute w_wrow and w_wcol */
|
||||
if (curwin->w_wcol < W_WIDTH(curwin))
|
||||
if (curwin->w_wcol < curwin->w_width)
|
||||
{
|
||||
edit_putchar('$', FALSE);
|
||||
dollar_vcol = curwin->w_virtcol;
|
||||
@@ -6834,7 +6834,7 @@ check_auto_format(
|
||||
/*
|
||||
* Find out textwidth to be used for formatting:
|
||||
* if 'textwidth' option is set, use it
|
||||
* else if 'wrapmargin' option is set, use W_WIDTH(curwin) - 'wrapmargin'
|
||||
* else if 'wrapmargin' option is set, use curwin->w_width - 'wrapmargin'
|
||||
* if invalid value, use 0.
|
||||
* Set default to window width (maximum 79) for "gq" operator.
|
||||
*/
|
||||
@@ -6849,7 +6849,7 @@ comp_textwidth(
|
||||
{
|
||||
/* The width is the window width minus 'wrapmargin' minus all the
|
||||
* things that add to the margin. */
|
||||
textwidth = W_WIDTH(curwin) - curbuf->b_p_wm;
|
||||
textwidth = curwin->w_width - curbuf->b_p_wm;
|
||||
#ifdef FEAT_CMDWIN
|
||||
if (cmdwin_type != 0)
|
||||
textwidth -= 1;
|
||||
@@ -6868,7 +6868,7 @@ comp_textwidth(
|
||||
textwidth = 0;
|
||||
if (ff && textwidth == 0)
|
||||
{
|
||||
textwidth = W_WIDTH(curwin) - 1;
|
||||
textwidth = curwin->w_width - 1;
|
||||
if (textwidth > 79)
|
||||
textwidth = 79;
|
||||
}
|
||||
@@ -8216,7 +8216,7 @@ in_cinkeys(
|
||||
{
|
||||
/* "0=word": Check if there are only blanks before the
|
||||
* word. */
|
||||
if (getwhitecols(line) !=
|
||||
if (getwhitecols_curline() !=
|
||||
(int)(curwin->w_cursor.col - (p - look)))
|
||||
match = FALSE;
|
||||
}
|
||||
@@ -9480,7 +9480,7 @@ ins_mousescroll(int dir)
|
||||
step = scroll_wheel_force;
|
||||
# endif
|
||||
if (mod_mask & (MOD_MASK_SHIFT | MOD_MASK_CTRL))
|
||||
step = W_WIDTH(curwin);
|
||||
step = curwin->w_width;
|
||||
val = curwin->w_leftcol + (dir == MSCR_RIGHT ? -step : step);
|
||||
if (val < 0)
|
||||
val = 0;
|
||||
|
||||
+5
-1
@@ -187,7 +187,8 @@ static struct vimvar
|
||||
{VV_NAME("t_none", VAR_NUMBER), VV_RO},
|
||||
{VV_NAME("t_job", VAR_NUMBER), VV_RO},
|
||||
{VV_NAME("t_channel", VAR_NUMBER), VV_RO},
|
||||
{VV_NAME("termrgbresp", VAR_STRING), VV_RO},
|
||||
{VV_NAME("termrfgresp", VAR_STRING), VV_RO},
|
||||
{VV_NAME("termrbgresp", VAR_STRING), VV_RO},
|
||||
{VV_NAME("termu7resp", VAR_STRING), VV_RO},
|
||||
{VV_NAME("termstyleresp", VAR_STRING), VV_RO},
|
||||
{VV_NAME("termblinkresp", VAR_STRING), VV_RO},
|
||||
@@ -1704,7 +1705,10 @@ ex_let_one(
|
||||
&stringval, opt_flags);
|
||||
if ((opt_type == 1 && *op == '.')
|
||||
|| (opt_type == 0 && *op != '.'))
|
||||
{
|
||||
EMSG2(_(e_letwrong), op);
|
||||
s = NULL; /* don't set the value */
|
||||
}
|
||||
else
|
||||
{
|
||||
if (opt_type == 1) /* number */
|
||||
|
||||
+3
-3
@@ -5190,8 +5190,8 @@ f_gettabvar(typval_T *argvars, typval_T *rettv)
|
||||
/* Set tp to be our tabpage, temporarily. Also set the window to the
|
||||
* first window in the tabpage, otherwise the window is not valid. */
|
||||
if (switch_win(&oldcurwin, &oldtabpage,
|
||||
tp->tp_firstwin == NULL ? firstwin : tp->tp_firstwin, tp, TRUE)
|
||||
== OK)
|
||||
tp == curtab || tp->tp_firstwin == NULL ? firstwin
|
||||
: tp->tp_firstwin, tp, TRUE) == OK)
|
||||
{
|
||||
/* look up the variable */
|
||||
/* Let gettabvar({nr}, "") return the "t:" dictionary. */
|
||||
@@ -13266,7 +13266,7 @@ f_winrestview(typval_T *argvars, typval_T *rettv UNUSED)
|
||||
|
||||
check_cursor();
|
||||
win_new_height(curwin, curwin->w_height);
|
||||
win_new_width(curwin, W_WIDTH(curwin));
|
||||
win_new_width(curwin, curwin->w_width);
|
||||
changed_window_setting();
|
||||
|
||||
if (curwin->w_topline <= 0)
|
||||
|
||||
+2
-2
@@ -177,7 +177,7 @@ ex_align(exarg_T *eap)
|
||||
if (width <= 0)
|
||||
width = curbuf->b_p_tw;
|
||||
if (width == 0 && curbuf->b_p_wm > 0)
|
||||
width = W_WIDTH(curwin) - curbuf->b_p_wm;
|
||||
width = curwin->w_width - curbuf->b_p_wm;
|
||||
if (width <= 0)
|
||||
width = 80;
|
||||
}
|
||||
@@ -3400,7 +3400,7 @@ do_wqall(exarg_T *eap)
|
||||
|
||||
FOR_ALL_BUFFERS(buf)
|
||||
{
|
||||
if (bufIsChanged(buf))
|
||||
if (bufIsChanged(buf) && !bt_dontwrite(buf))
|
||||
{
|
||||
/*
|
||||
* Check if there is a reason the buffer cannot be written:
|
||||
|
||||
+30
-27
@@ -1714,7 +1714,7 @@ script_do_profile(scriptitem_T *si)
|
||||
}
|
||||
|
||||
/*
|
||||
* save time when starting to invoke another script or function.
|
||||
* Save time when starting to invoke another script or function.
|
||||
*/
|
||||
void
|
||||
script_prof_save(
|
||||
@@ -1805,12 +1805,14 @@ script_dump_profile(FILE *fd)
|
||||
fprintf(fd, "Cannot open file!\n");
|
||||
else
|
||||
{
|
||||
for (i = 0; i < si->sn_prl_ga.ga_len; ++i)
|
||||
/* Keep going till the end of file, so that trailing
|
||||
* continuation lines are listed. */
|
||||
for (i = 0; ; ++i)
|
||||
{
|
||||
if (vim_fgets(IObuff, IOSIZE, sfd))
|
||||
break;
|
||||
pp = &PRL_ITEM(si, i);
|
||||
if (pp->snp_count > 0)
|
||||
if (i < si->sn_prl_ga.ga_len
|
||||
&& (pp = &PRL_ITEM(si, i))->snp_count > 0)
|
||||
{
|
||||
fprintf(fd, "%5d ", pp->snp_count);
|
||||
if (profile_equal(&pp->sn_prl_total, &pp->sn_prl_self))
|
||||
@@ -4307,27 +4309,6 @@ do_source(
|
||||
save_sourcing_lnum = sourcing_lnum;
|
||||
sourcing_lnum = 0;
|
||||
|
||||
#ifdef FEAT_MBYTE
|
||||
cookie.conv.vc_type = CONV_NONE; /* no conversion */
|
||||
|
||||
/* Read the first line so we can check for a UTF-8 BOM. */
|
||||
firstline = getsourceline(0, (void *)&cookie, 0);
|
||||
if (firstline != NULL && STRLEN(firstline) >= 3 && firstline[0] == 0xef
|
||||
&& firstline[1] == 0xbb && firstline[2] == 0xbf)
|
||||
{
|
||||
/* Found BOM; setup conversion, skip over BOM and recode the line. */
|
||||
convert_setup(&cookie.conv, (char_u *)"utf-8", p_enc);
|
||||
p = string_convert(&cookie.conv, firstline + 3, NULL);
|
||||
if (p == NULL)
|
||||
p = vim_strsave(firstline + 3);
|
||||
if (p != NULL)
|
||||
{
|
||||
vim_free(firstline);
|
||||
firstline = p;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef STARTUPTIME
|
||||
if (time_fd != NULL)
|
||||
time_push(&tv_rel, &tv_start);
|
||||
@@ -4420,6 +4401,27 @@ do_source(
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifdef FEAT_MBYTE
|
||||
cookie.conv.vc_type = CONV_NONE; /* no conversion */
|
||||
|
||||
/* Read the first line so we can check for a UTF-8 BOM. */
|
||||
firstline = getsourceline(0, (void *)&cookie, 0);
|
||||
if (firstline != NULL && STRLEN(firstline) >= 3 && firstline[0] == 0xef
|
||||
&& firstline[1] == 0xbb && firstline[2] == 0xbf)
|
||||
{
|
||||
/* Found BOM; setup conversion, skip over BOM and recode the line. */
|
||||
convert_setup(&cookie.conv, (char_u *)"utf-8", p_enc);
|
||||
p = string_convert(&cookie.conv, firstline + 3, NULL);
|
||||
if (p == NULL)
|
||||
p = vim_strsave(firstline + 3);
|
||||
if (p != NULL)
|
||||
{
|
||||
vim_free(firstline);
|
||||
firstline = p;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Call do_cmdline, which will call getsourceline() to get the lines.
|
||||
*/
|
||||
@@ -4902,7 +4904,8 @@ script_line_start(void)
|
||||
{
|
||||
/* Grow the array before starting the timer, so that the time spent
|
||||
* here isn't counted. */
|
||||
(void)ga_grow(&si->sn_prl_ga, (int)(sourcing_lnum - si->sn_prl_ga.ga_len));
|
||||
(void)ga_grow(&si->sn_prl_ga,
|
||||
(int)(sourcing_lnum - si->sn_prl_ga.ga_len));
|
||||
si->sn_prl_idx = sourcing_lnum - 1;
|
||||
while (si->sn_prl_ga.ga_len <= si->sn_prl_idx
|
||||
&& si->sn_prl_ga.ga_len < si->sn_prl_ga.ga_maxlen)
|
||||
@@ -4937,7 +4940,7 @@ script_line_exec(void)
|
||||
}
|
||||
|
||||
/*
|
||||
* Called when done with a function line.
|
||||
* Called when done with a script line.
|
||||
*/
|
||||
void
|
||||
script_line_end(void)
|
||||
|
||||
+70
-64
@@ -5102,29 +5102,6 @@ expand_filename(
|
||||
{
|
||||
if (n == 2)
|
||||
{
|
||||
#ifdef UNIX
|
||||
/*
|
||||
* Only for Unix we check for more than one file name.
|
||||
* For other systems spaces are considered to be part
|
||||
* of the file name.
|
||||
* Only check here if there is no wildcard, otherwise
|
||||
* ExpandOne() will check for errors. This allows
|
||||
* ":e `ls ve*.c`" on Unix.
|
||||
*/
|
||||
if (!has_wildcards)
|
||||
for (p = eap->arg; *p; ++p)
|
||||
{
|
||||
/* skip escaped characters */
|
||||
if (p[1] && (*p == '\\' || *p == Ctrl_V))
|
||||
++p;
|
||||
else if (VIM_ISWHITE(*p))
|
||||
{
|
||||
*errormsgp = (char_u *)_("E172: Only one file name allowed");
|
||||
return FAIL;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Halve the number of backslashes (this is Vi compatible).
|
||||
* For Unix and OS/2, when wildcards are expanded, this is
|
||||
@@ -7264,10 +7241,14 @@ ex_quit(exarg_T *eap)
|
||||
wp = curwin;
|
||||
|
||||
#ifdef FEAT_AUTOCMD
|
||||
apply_autocmds(EVENT_QUITPRE, NULL, NULL, FALSE, curbuf);
|
||||
/* Refuse to quit when locked or when the buffer in the last window is
|
||||
* being closed (can only happen in autocommands). */
|
||||
if (curbuf_locked() || !win_valid(wp)
|
||||
/* Refuse to quit when locked. */
|
||||
if (curbuf_locked())
|
||||
return;
|
||||
apply_autocmds(EVENT_QUITPRE, NULL, NULL, FALSE, wp->w_buffer);
|
||||
/* Bail out when autocommands closed the window.
|
||||
* Refuse to quit when the buffer in the last window is being closed (can
|
||||
* only happen in autocommands). */
|
||||
if (!win_valid(wp)
|
||||
|| (wp->w_buffer->b_nwindows == 1 && wp->w_buffer->b_locked > 0))
|
||||
return;
|
||||
#endif
|
||||
@@ -7281,8 +7262,8 @@ ex_quit(exarg_T *eap)
|
||||
*/
|
||||
if (check_more(FALSE, eap->forceit) == OK && only_one_window())
|
||||
exiting = TRUE;
|
||||
if ((!buf_hide(curbuf)
|
||||
&& check_changed(curbuf, (p_awa ? CCGD_AW : 0)
|
||||
if ((!buf_hide(wp->w_buffer)
|
||||
&& check_changed(wp->w_buffer, (p_awa ? CCGD_AW : 0)
|
||||
| (eap->forceit ? CCGD_FORCEIT : 0)
|
||||
| CCGD_EXCMD))
|
||||
|| check_more(TRUE, eap->forceit) == FAIL
|
||||
@@ -7301,6 +7282,7 @@ ex_quit(exarg_T *eap)
|
||||
*/
|
||||
if (only_one_window() && (ONE_WINDOW || eap->addr_count == 0))
|
||||
getout(0);
|
||||
not_exiting();
|
||||
#ifdef FEAT_GUI
|
||||
need_mouse_correct = TRUE;
|
||||
#endif
|
||||
@@ -7839,6 +7821,7 @@ ex_exit(exarg_T *eap)
|
||||
{
|
||||
if (only_one_window()) /* quit last window, exit Vim */
|
||||
getout(0);
|
||||
not_exiting();
|
||||
# ifdef FEAT_GUI
|
||||
need_mouse_correct = TRUE;
|
||||
# endif
|
||||
@@ -8504,7 +8487,7 @@ ex_resize(exarg_T *eap)
|
||||
if (cmdmod.split & WSP_VERT)
|
||||
{
|
||||
if (*eap->arg == '-' || *eap->arg == '+')
|
||||
n += W_WIDTH(curwin);
|
||||
n += curwin->w_width;
|
||||
else if (n == 0 && eap->arg[0] == NUL) /* default is very wide */
|
||||
n = 9999;
|
||||
win_setwidth_win((int)n, wp);
|
||||
@@ -9130,7 +9113,7 @@ ex_sleep(exarg_T *eap)
|
||||
{
|
||||
n = W_WINROW(curwin) + curwin->w_wrow - msg_scrolled;
|
||||
if (n >= 0)
|
||||
windgoto((int)n, W_WINCOL(curwin) + curwin->w_wcol);
|
||||
windgoto((int)n, curwin->w_wincol + curwin->w_wcol);
|
||||
}
|
||||
|
||||
len = eap->line2;
|
||||
@@ -10133,20 +10116,62 @@ update_topline_cursor(void)
|
||||
update_curswant();
|
||||
}
|
||||
|
||||
/*
|
||||
* Save the current State and go to Normal mode.
|
||||
* Return TRUE if the typeahead could be saved.
|
||||
*/
|
||||
int
|
||||
save_current_state(save_state_T *sst)
|
||||
{
|
||||
sst->save_msg_scroll = msg_scroll;
|
||||
sst->save_restart_edit = restart_edit;
|
||||
sst->save_msg_didout = msg_didout;
|
||||
sst->save_State = State;
|
||||
sst->save_insertmode = p_im;
|
||||
sst->save_finish_op = finish_op;
|
||||
sst->save_opcount = opcount;
|
||||
|
||||
msg_scroll = FALSE; /* no msg scrolling in Normal mode */
|
||||
restart_edit = 0; /* don't go to Insert mode */
|
||||
p_im = FALSE; /* don't use 'insertmode' */
|
||||
|
||||
/*
|
||||
* Save the current typeahead. This is required to allow using ":normal"
|
||||
* from an event handler and makes sure we don't hang when the argument
|
||||
* ends with half a command.
|
||||
*/
|
||||
save_typeahead(&sst->tabuf);
|
||||
return sst->tabuf.typebuf_valid;
|
||||
}
|
||||
|
||||
void
|
||||
restore_current_state(save_state_T *sst)
|
||||
{
|
||||
/* Restore the previous typeahead. */
|
||||
restore_typeahead(&sst->tabuf);
|
||||
|
||||
msg_scroll = sst->save_msg_scroll;
|
||||
restart_edit = sst->save_restart_edit;
|
||||
p_im = sst->save_insertmode;
|
||||
finish_op = sst->save_finish_op;
|
||||
opcount = sst->save_opcount;
|
||||
msg_didout |= sst->save_msg_didout; /* don't reset msg_didout now */
|
||||
|
||||
/* Restore the state (needed when called from a function executed for
|
||||
* 'indentexpr'). Update the mouse and cursor, they may have changed. */
|
||||
State = sst->save_State;
|
||||
#ifdef CURSOR_SHAPE
|
||||
ui_cursor_shape(); /* may show different cursor shape */
|
||||
#endif
|
||||
}
|
||||
|
||||
/*
|
||||
* ":normal[!] {commands}": Execute normal mode commands.
|
||||
*/
|
||||
void
|
||||
ex_normal(exarg_T *eap)
|
||||
{
|
||||
int save_msg_scroll = msg_scroll;
|
||||
int save_restart_edit = restart_edit;
|
||||
int save_msg_didout = msg_didout;
|
||||
int save_State = State;
|
||||
tasave_T tabuf;
|
||||
int save_insertmode = p_im;
|
||||
int save_finish_op = finish_op;
|
||||
int save_opcount = opcount;
|
||||
save_state_T save_state;
|
||||
#ifdef FEAT_MBYTE
|
||||
char_u *arg = NULL;
|
||||
int l;
|
||||
@@ -10163,11 +10188,6 @@ ex_normal(exarg_T *eap)
|
||||
EMSG(_("E192: Recursive use of :normal too deep"));
|
||||
return;
|
||||
}
|
||||
++ex_normal_busy;
|
||||
|
||||
msg_scroll = FALSE; /* no msg scrolling in Normal mode */
|
||||
restart_edit = 0; /* don't go to Insert mode */
|
||||
p_im = FALSE; /* don't use 'insertmode' */
|
||||
|
||||
#ifdef FEAT_MBYTE
|
||||
/*
|
||||
@@ -10233,13 +10253,8 @@ ex_normal(exarg_T *eap)
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Save the current typeahead. This is required to allow using ":normal"
|
||||
* from an event handler and makes sure we don't hang when the argument
|
||||
* ends with half a command.
|
||||
*/
|
||||
save_typeahead(&tabuf);
|
||||
if (tabuf.typebuf_valid)
|
||||
++ex_normal_busy;
|
||||
if (save_current_state(&save_state))
|
||||
{
|
||||
/*
|
||||
* Repeat the :normal command for each line in the range. When no
|
||||
@@ -10267,20 +10282,8 @@ ex_normal(exarg_T *eap)
|
||||
/* Might not return to the main loop when in an event handler. */
|
||||
update_topline_cursor();
|
||||
|
||||
/* Restore the previous typeahead. */
|
||||
restore_typeahead(&tabuf);
|
||||
|
||||
restore_current_state(&save_state);
|
||||
--ex_normal_busy;
|
||||
msg_scroll = save_msg_scroll;
|
||||
restart_edit = save_restart_edit;
|
||||
p_im = save_insertmode;
|
||||
finish_op = save_finish_op;
|
||||
opcount = save_opcount;
|
||||
msg_didout |= save_msg_didout; /* don't reset msg_didout now */
|
||||
|
||||
/* Restore the state (needed when called from a function executed for
|
||||
* 'indentexpr'). Update the mouse and cursor, they may have changed. */
|
||||
State = save_State;
|
||||
#ifdef FEAT_MOUSE
|
||||
setmouse();
|
||||
#endif
|
||||
@@ -10301,6 +10304,9 @@ ex_startinsert(exarg_T *eap)
|
||||
{
|
||||
if (eap->forceit)
|
||||
{
|
||||
/* cursor line can be zero on startup */
|
||||
if (!curwin->w_cursor.lnum)
|
||||
curwin->w_cursor.lnum = 1;
|
||||
coladvance((colnr_T)MAXCOL);
|
||||
curwin->w_curswant = MAXCOL;
|
||||
curwin->w_set_curswant = FALSE;
|
||||
|
||||
+30
-8
@@ -145,6 +145,19 @@ sort_func_compare(const void *s1, const void *s2);
|
||||
static void set_search_match(pos_T *t);
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef FEAT_AUTOCMD
|
||||
static void
|
||||
trigger_cmd_autocmd(int typechar, int evt)
|
||||
{
|
||||
char_u typestr[2];
|
||||
|
||||
typestr[0] = typechar;
|
||||
typestr[1] = NUL;
|
||||
apply_autocmds(evt, typestr, typestr, FALSE, curbuf);
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
* getcmdline() - accept a command line starting with firstc.
|
||||
*
|
||||
@@ -222,6 +235,9 @@ getcmdline(
|
||||
* custom status line may invoke ":normal". */
|
||||
struct cmdline_info save_ccline;
|
||||
#endif
|
||||
#ifdef FEAT_AUTOCMD
|
||||
int cmdline_type;
|
||||
#endif
|
||||
|
||||
#ifdef FEAT_EVAL
|
||||
if (firstc == -1)
|
||||
@@ -349,6 +365,12 @@ getcmdline(
|
||||
* terminal mode set to cooked. Need to set raw mode here then. */
|
||||
settmode(TMODE_RAW);
|
||||
|
||||
#ifdef FEAT_AUTOCMD
|
||||
/* Trigger CmdlineEnter autocommands. */
|
||||
cmdline_type = firstc == NUL ? '-' : firstc;
|
||||
trigger_cmd_autocmd(cmdline_type, EVENT_CMDLINEENTER);
|
||||
#endif
|
||||
|
||||
#ifdef FEAT_CMDHIST
|
||||
init_history();
|
||||
hiscnt = hislen; /* set hiscnt to impossible history value */
|
||||
@@ -2093,6 +2115,11 @@ returncmd:
|
||||
if (some_key_typed)
|
||||
need_wait_return = FALSE;
|
||||
|
||||
#ifdef FEAT_AUTOCMD
|
||||
/* Trigger CmdlineLeave autocommands. */
|
||||
trigger_cmd_autocmd(cmdline_type, EVENT_CMDLINELEAVE);
|
||||
#endif
|
||||
|
||||
State = save_State;
|
||||
#ifdef USE_IM_CONTROL
|
||||
if (b_im_ptr != NULL && *b_im_ptr != B_IMODE_LMAP)
|
||||
@@ -3449,7 +3476,7 @@ compute_cmdrow(void)
|
||||
cmdline_row = Rows - 1;
|
||||
else
|
||||
cmdline_row = W_WINROW(lastwin) + lastwin->w_height
|
||||
+ W_STATUS_HEIGHT(lastwin);
|
||||
+ lastwin->w_status_height;
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -6848,9 +6875,6 @@ open_cmdwin(void)
|
||||
linenr_T lnum;
|
||||
int histtype;
|
||||
garray_T winsizes;
|
||||
#ifdef FEAT_AUTOCMD
|
||||
char_u typestr[2];
|
||||
#endif
|
||||
int save_restart_edit = restart_edit;
|
||||
int save_State = State;
|
||||
int save_exmode = exmode_active;
|
||||
@@ -6979,9 +7003,7 @@ open_cmdwin(void)
|
||||
|
||||
# ifdef FEAT_AUTOCMD
|
||||
/* Trigger CmdwinEnter autocommands. */
|
||||
typestr[0] = cmdwin_type;
|
||||
typestr[1] = NUL;
|
||||
apply_autocmds(EVENT_CMDWINENTER, typestr, typestr, FALSE, curbuf);
|
||||
trigger_cmd_autocmd(cmdwin_type, EVENT_CMDWINENTER);
|
||||
if (restart_edit != 0) /* autocmd with ":startinsert" */
|
||||
stuffcharReadbuff(K_NOP);
|
||||
# endif
|
||||
@@ -7004,7 +7026,7 @@ open_cmdwin(void)
|
||||
# endif
|
||||
|
||||
/* Trigger CmdwinLeave autocommands. */
|
||||
apply_autocmds(EVENT_CMDWINLEAVE, typestr, typestr, FALSE, curbuf);
|
||||
trigger_cmd_autocmd(cmdwin_type, EVENT_CMDWINLEAVE);
|
||||
|
||||
# ifdef FEAT_FOLDING
|
||||
/* Restore KeyTyped in case it is modified by autocommands */
|
||||
|
||||
@@ -7769,6 +7769,8 @@ static struct event_name
|
||||
{"BufWritePost", EVENT_BUFWRITEPOST},
|
||||
{"BufWritePre", EVENT_BUFWRITEPRE},
|
||||
{"BufWriteCmd", EVENT_BUFWRITECMD},
|
||||
{"CmdlineEnter", EVENT_CMDLINEENTER},
|
||||
{"CmdlineLeave", EVENT_CMDLINELEAVE},
|
||||
{"CmdwinEnter", EVENT_CMDWINENTER},
|
||||
{"CmdwinLeave", EVENT_CMDWINLEAVE},
|
||||
{"CmdUndefined", EVENT_CMDUNDEFINED},
|
||||
|
||||
+3
-3
@@ -2666,8 +2666,8 @@ vgetorpeek(int advance)
|
||||
++col;
|
||||
}
|
||||
curwin->w_wrow = curwin->w_cline_row
|
||||
+ curwin->w_wcol / W_WIDTH(curwin);
|
||||
curwin->w_wcol %= W_WIDTH(curwin);
|
||||
+ curwin->w_wcol / curwin->w_width;
|
||||
curwin->w_wcol %= curwin->w_width;
|
||||
curwin->w_wcol += curwin_col_off();
|
||||
#ifdef FEAT_MBYTE
|
||||
col = 0; /* no correction needed */
|
||||
@@ -2684,7 +2684,7 @@ vgetorpeek(int advance)
|
||||
else if (curwin->w_p_wrap && curwin->w_wrow)
|
||||
{
|
||||
--curwin->w_wrow;
|
||||
curwin->w_wcol = W_WIDTH(curwin) - 1;
|
||||
curwin->w_wcol = curwin->w_width - 1;
|
||||
#ifdef FEAT_MBYTE
|
||||
col = curwin->w_cursor.col - 1;
|
||||
#endif
|
||||
|
||||
@@ -380,6 +380,9 @@ EXTERN int cterm_normal_bg_color INIT(= 0);
|
||||
EXTERN guicolor_T cterm_normal_fg_gui_color INIT(= INVALCOLOR);
|
||||
EXTERN guicolor_T cterm_normal_bg_gui_color INIT(= INVALCOLOR);
|
||||
#endif
|
||||
#ifdef FEAT_TERMRESPONSE
|
||||
EXTERN int is_mac_terminal INIT(= FALSE); /* recognized Terminal.app */
|
||||
#endif
|
||||
|
||||
#ifdef FEAT_AUTOCMD
|
||||
EXTERN int autocmd_busy INIT(= FALSE); /* Is apply_autocmds() busy? */
|
||||
|
||||
@@ -4613,14 +4613,14 @@ gui_update_horiz_scrollbar(int force)
|
||||
return;
|
||||
}
|
||||
|
||||
size = W_WIDTH(curwin);
|
||||
size = curwin->w_width;
|
||||
if (curwin->w_p_wrap)
|
||||
{
|
||||
value = 0;
|
||||
#ifdef SCROLL_PAST_END
|
||||
max = 0;
|
||||
#else
|
||||
max = W_WIDTH(curwin) - 1;
|
||||
max = curwin->w_width - 1;
|
||||
#endif
|
||||
}
|
||||
else
|
||||
@@ -4640,7 +4640,7 @@ gui_update_horiz_scrollbar(int force)
|
||||
#endif
|
||||
|
||||
#ifndef SCROLL_PAST_END
|
||||
max += W_WIDTH(curwin) - 1;
|
||||
max += curwin->w_width - 1;
|
||||
#endif
|
||||
/* The line number isn't scrolled, thus there is less space when
|
||||
* 'number' or 'relativenumber' is set (also for 'foldcolumn'). */
|
||||
@@ -4968,10 +4968,10 @@ xy2win(int x UNUSED, int y UNUSED)
|
||||
}
|
||||
else if (row > wp->w_height) /* below status line */
|
||||
update_mouseshape(SHAPE_IDX_CLINE);
|
||||
else if (!(State & CMDLINE) && W_VSEP_WIDTH(wp) > 0 && col == wp->w_width
|
||||
else if (!(State & CMDLINE) && wp->w_vsep_width > 0 && col == wp->w_width
|
||||
&& (row != wp->w_height || !stl_connected(wp)) && msg_scrolled == 0)
|
||||
update_mouseshape(SHAPE_IDX_VSEP);
|
||||
else if (!(State & CMDLINE) && W_STATUS_HEIGHT(wp) > 0
|
||||
else if (!(State & CMDLINE) && wp->w_status_height > 0
|
||||
&& row == wp->w_height && msg_scrolled == 0)
|
||||
update_mouseshape(SHAPE_IDX_STATUS);
|
||||
else
|
||||
|
||||
+1
-1
@@ -338,7 +338,7 @@ get_beval_info(
|
||||
row = Y_2_ROW(beval->y);
|
||||
col = X_2_COL(beval->x);
|
||||
wp = mouse_find_win(&row, &col);
|
||||
if (wp != NULL && row < wp->w_height && col < W_WIDTH(wp))
|
||||
if (wp != NULL && row < wp->w_height && col < wp->w_width)
|
||||
{
|
||||
/* Found a window and the cursor is in the text. Now find the line
|
||||
* number. */
|
||||
|
||||
+1
-1
@@ -1954,7 +1954,7 @@ popup_menu_position_func(GtkMenu *menu UNUSED,
|
||||
# endif
|
||||
{
|
||||
/* Find the cursor position in the current window */
|
||||
*x += FILL_X(W_WINCOL(curwin) + curwin->w_wcol + 1) + 1;
|
||||
*x += FILL_X(curwin->w_wincol + curwin->w_wcol + 1) + 1;
|
||||
*y += FILL_Y(W_WINROW(curwin) + curwin->w_wrow + 1) + 1;
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -1612,7 +1612,7 @@ gui_mac_scroll_action(ControlHandle theControl, short partCode)
|
||||
else /* Bottom scrollbar */
|
||||
{
|
||||
sb_info = sb;
|
||||
page = W_WIDTH(curwin) - 5;
|
||||
page = curwin->w_width - 5;
|
||||
}
|
||||
|
||||
switch (partCode)
|
||||
|
||||
+16
-15
@@ -4384,7 +4384,7 @@ add_dialog_element(
|
||||
WORD clss,
|
||||
const char *caption);
|
||||
static LPWORD lpwAlign(LPWORD);
|
||||
static int nCopyAnsiToWideChar(LPWORD, LPSTR);
|
||||
static int nCopyAnsiToWideChar(LPWORD, LPSTR, BOOL);
|
||||
#if defined(FEAT_MENU) && defined(FEAT_TEAROFF)
|
||||
static void gui_mch_tearoff(char_u *title, vimmenu_T *menu, int initX, int initY);
|
||||
#endif
|
||||
@@ -6608,7 +6608,7 @@ gui_make_popup(char_u *path_name, int mouse_pos)
|
||||
}
|
||||
else if (curwin != NULL)
|
||||
{
|
||||
p.x += TEXT_X(W_WINCOL(curwin) + curwin->w_wcol + 1);
|
||||
p.x += TEXT_X(curwin->w_wincol + curwin->w_wcol + 1);
|
||||
p.y += TEXT_Y(W_WINROW(curwin) + curwin->w_wrow + 1);
|
||||
}
|
||||
msg_scroll = FALSE;
|
||||
@@ -7284,9 +7284,8 @@ gui_mch_dialog(
|
||||
add_word(0); // Class
|
||||
|
||||
/* copy the title of the dialog */
|
||||
nchar = nCopyAnsiToWideChar(p, (title ?
|
||||
(LPSTR)title :
|
||||
(LPSTR)("Vim "VIM_VERSION_MEDIUM)));
|
||||
nchar = nCopyAnsiToWideChar(p, (title ? (LPSTR)title
|
||||
: (LPSTR)("Vim "VIM_VERSION_MEDIUM)), TRUE);
|
||||
p += nchar;
|
||||
|
||||
if (s_usenewlook)
|
||||
@@ -7298,13 +7297,13 @@ gui_mch_dialog(
|
||||
/* point size */
|
||||
*p++ = -MulDiv(lfSysmenu.lfHeight, 72,
|
||||
GetDeviceCaps(hdc, LOGPIXELSY));
|
||||
nchar = nCopyAnsiToWideChar(p, TEXT(lfSysmenu.lfFaceName));
|
||||
nchar = nCopyAnsiToWideChar(p, lfSysmenu.lfFaceName, FALSE);
|
||||
}
|
||||
else
|
||||
#endif
|
||||
{
|
||||
*p++ = DLG_FONT_POINT_SIZE; // point size
|
||||
nchar = nCopyAnsiToWideChar(p, TEXT(DLG_FONT_NAME));
|
||||
nchar = nCopyAnsiToWideChar(p, DLG_FONT_NAME, FALSE);
|
||||
}
|
||||
p += nchar;
|
||||
}
|
||||
@@ -7485,7 +7484,7 @@ add_dialog_element(
|
||||
*p++ = (WORD)0xffff;
|
||||
*p++ = clss; //2 more here
|
||||
|
||||
nchar = nCopyAnsiToWideChar(p, (LPSTR)caption); //strlen(caption)+1
|
||||
nchar = nCopyAnsiToWideChar(p, (LPSTR)caption, TRUE); //strlen(caption)+1
|
||||
p += nchar;
|
||||
|
||||
*p++ = 0; // advance pointer over nExtraStuff WORD - 2 more
|
||||
@@ -7517,11 +7516,13 @@ lpwAlign(
|
||||
* parameter as wide character (16-bits / char) string, and returns integer
|
||||
* number of wide characters (words) in string (including the trailing wide
|
||||
* char NULL). Partly taken from the Win32SDK samples.
|
||||
*/
|
||||
* If "use_enc" is TRUE, 'encoding' is used for "lpAnsiIn". If FALSE, current
|
||||
* ACP is used for "lpAnsiIn". */
|
||||
static int
|
||||
nCopyAnsiToWideChar(
|
||||
LPWORD lpWCStr,
|
||||
LPSTR lpAnsiIn)
|
||||
LPSTR lpAnsiIn,
|
||||
BOOL use_enc)
|
||||
{
|
||||
int nChar = 0;
|
||||
#ifdef FEAT_MBYTE
|
||||
@@ -7529,7 +7530,7 @@ nCopyAnsiToWideChar(
|
||||
int i;
|
||||
WCHAR *wn;
|
||||
|
||||
if (enc_codepage == 0 && (int)GetACP() != enc_codepage)
|
||||
if (use_enc && enc_codepage >= 0 && (int)GetACP() != enc_codepage)
|
||||
{
|
||||
/* Not a codepage, use our own conversion function. */
|
||||
wn = enc_to_utf16((char_u *)lpAnsiIn, NULL);
|
||||
@@ -7852,8 +7853,8 @@ gui_mch_tearoff(
|
||||
|
||||
/* copy the title of the dialog */
|
||||
nchar = nCopyAnsiToWideChar(p, ((*title)
|
||||
? (LPSTR)title
|
||||
: (LPSTR)("Vim "VIM_VERSION_MEDIUM)));
|
||||
? (LPSTR)title
|
||||
: (LPSTR)("Vim "VIM_VERSION_MEDIUM)), TRUE);
|
||||
p += nchar;
|
||||
|
||||
if (s_usenewlook)
|
||||
@@ -7865,13 +7866,13 @@ gui_mch_tearoff(
|
||||
/* point size */
|
||||
*p++ = -MulDiv(lfSysmenu.lfHeight, 72,
|
||||
GetDeviceCaps(hdc, LOGPIXELSY));
|
||||
nchar = nCopyAnsiToWideChar(p, TEXT(lfSysmenu.lfFaceName));
|
||||
nchar = nCopyAnsiToWideChar(p, lfSysmenu.lfFaceName, FALSE);
|
||||
}
|
||||
else
|
||||
#endif
|
||||
{
|
||||
*p++ = DLG_FONT_POINT_SIZE; // point size
|
||||
nchar = nCopyAnsiToWideChar (p, TEXT(DLG_FONT_NAME));
|
||||
nchar = nCopyAnsiToWideChar(p, DLG_FONT_NAME, FALSE);
|
||||
}
|
||||
p += nchar;
|
||||
}
|
||||
|
||||
+1
-1
@@ -1179,7 +1179,7 @@ luaV_window_index(lua_State *L)
|
||||
else if (strncmp(s, "col", 3) == 0)
|
||||
lua_pushinteger(L, w->w_cursor.col + 1);
|
||||
else if (strncmp(s, "width", 5) == 0)
|
||||
lua_pushinteger(L, W_WIDTH(w));
|
||||
lua_pushinteger(L, w->w_width);
|
||||
else if (strncmp(s, "height", 6) == 0)
|
||||
lua_pushinteger(L, w->w_height);
|
||||
/* methods */
|
||||
|
||||
+2
-2
@@ -757,7 +757,7 @@ mzscheme_runtime_link_init(char *sch_dll, char *gc_dll, int verbose)
|
||||
mzscheme_enabled(int verbose)
|
||||
{
|
||||
return mzscheme_runtime_link_init(
|
||||
DYNAMIC_MZSCH_DLL, DYNAMIC_MZGC_DLL, verbose) == OK;
|
||||
(char *)p_mzschemedll, (char *)p_mzschemegcdll, verbose) == OK;
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -2063,7 +2063,7 @@ get_window_width(void *data, int argc, Scheme_Object **argv)
|
||||
Vim_Prim *prim = (Vim_Prim *)data;
|
||||
vim_mz_window *win = get_window_arg(prim->name, 0, argc, argv);
|
||||
|
||||
return scheme_make_integer(W_WIDTH(win->win));
|
||||
return scheme_make_integer(win->win->w_width);
|
||||
}
|
||||
|
||||
/* (set-win-width {width} [window]) */
|
||||
|
||||
@@ -1472,7 +1472,6 @@ Msg(text, hl=NULL)
|
||||
|
||||
PREINIT:
|
||||
int attr;
|
||||
int id;
|
||||
|
||||
PPCODE:
|
||||
if (text != NULL)
|
||||
|
||||
+2
-2
@@ -3875,9 +3875,9 @@ WindowAttr(WindowObject *self, char *name)
|
||||
else if (strcmp(name, "row") == 0)
|
||||
return PyLong_FromLong((long)(self->win->w_winrow));
|
||||
else if (strcmp(name, "width") == 0)
|
||||
return PyLong_FromLong((long)(W_WIDTH(self->win)));
|
||||
return PyLong_FromLong((long)(self->win->w_width));
|
||||
else if (strcmp(name, "col") == 0)
|
||||
return PyLong_FromLong((long)(W_WINCOL(self->win)));
|
||||
return PyLong_FromLong((long)(self->win->w_wincol));
|
||||
else if (strcmp(name, "vars") == 0)
|
||||
return NEW_DICTIONARY(self->win->w_vars);
|
||||
else if (strcmp(name, "options") == 0)
|
||||
|
||||
+2
-2
@@ -891,7 +891,7 @@ static int ensure_ruby_initialized(void)
|
||||
#ifdef RUBY19_OR_LATER
|
||||
{
|
||||
int dummy_argc = 2;
|
||||
char *dummy_argv[] = {"vim-ruby", "-e0"};
|
||||
char *dummy_argv[] = {"vim-ruby", "-e_=0"};
|
||||
ruby_options(dummy_argc, dummy_argv);
|
||||
}
|
||||
ruby_script("vim-ruby");
|
||||
@@ -1479,7 +1479,7 @@ static VALUE window_set_height(VALUE self, VALUE height)
|
||||
|
||||
static VALUE window_width(VALUE self UNUSED)
|
||||
{
|
||||
return INT2NUM(W_WIDTH(get_win(self)));
|
||||
return INT2NUM(get_win(self)->w_width);
|
||||
}
|
||||
|
||||
static VALUE window_set_width(VALUE self UNUSED, VALUE width)
|
||||
|
||||
@@ -25,12 +25,13 @@ static const VTermColor ansi_colors[] = {
|
||||
};
|
||||
|
||||
static int ramp6[] = {
|
||||
0x00, 0x33, 0x66, 0x99, 0xCC, 0xFF,
|
||||
0x00, 0x5F, 0x87, 0xAF, 0xD7, 0xFF,
|
||||
};
|
||||
|
||||
/* Use 0x81 instead of 0x80 to be able to distinguish from ansi black */
|
||||
static int ramp24[] = {
|
||||
0x00, 0x0B, 0x16, 0x21, 0x2C, 0x37, 0x42, 0x4D, 0x58, 0x63, 0x6E, 0x79,
|
||||
0x85, 0x90, 0x9B, 0xA6, 0xB1, 0xBC, 0xC7, 0xD2, 0xDD, 0xE8, 0xF3, 0xFF,
|
||||
0x08, 0x12, 0x1C, 0x26, 0x30, 0x3A, 0x44, 0x4E, 0x58, 0x62, 0x6C, 0x76,
|
||||
0x81, 0x8A, 0x94, 0x9E, 0xA8, 0xB2, 0xBC, 0xC6, 0xD0, 0xDA, 0xE4, 0xEE,
|
||||
};
|
||||
|
||||
static int lookup_colour_ansi(const VTermState *state, long index, VTermColor *col)
|
||||
|
||||
@@ -130,7 +130,8 @@ static int outbuffer_is_full(VTerm *vt)
|
||||
return vt->outbuffer_cur >= vt->outbuffer_len - 1;
|
||||
}
|
||||
|
||||
#if _XOPEN_SOURCE >= 500 || _ISOC99_SOURCE || _BSD_SOURCE
|
||||
#if (defined(_XOPEN_SOURCE) && _XOPEN_SOURCE >= 500) \
|
||||
|| defined(_ISOC99_SOURCE) || defined(_BSD_SOURCE)
|
||||
# undef VSNPRINTF
|
||||
# define VSNPRINTF vsnprintf
|
||||
#else
|
||||
|
||||
+15
@@ -2648,6 +2648,21 @@ check_tty(mparm_T *parmp)
|
||||
#if defined(WIN3264) && !defined(FEAT_GUI_W32)
|
||||
if (is_cygpty_used())
|
||||
{
|
||||
# if defined(FEAT_MBYTE) && defined(HAVE_BIND_TEXTDOMAIN_CODESET) \
|
||||
&& defined(FEAT_GETTEXT)
|
||||
char *s, *tofree = NULL;
|
||||
|
||||
/* Set the encoding of the error message based on $LC_ALL or
|
||||
* other environment variables instead of 'encoding'.
|
||||
* Note that the message is shown on a Cygwin terminal (e.g.
|
||||
* mintty) which encoding is based on $LC_ALL or etc., not the
|
||||
* current codepage used by normal Win32 console programs. */
|
||||
tofree = s = (char *)enc_locale_env(NULL);
|
||||
if (s == NULL)
|
||||
s = "utf-8"; /* Use "utf-8" by default. */
|
||||
(void)bind_textdomain_codeset(VIMPACKAGE, s);
|
||||
vim_free(tofree);
|
||||
# endif
|
||||
mch_errmsg(_("Vim: Error: This version of Vim does not run in a Cygwin terminal\n"));
|
||||
exit(1);
|
||||
}
|
||||
|
||||
+53
-31
@@ -1402,6 +1402,8 @@ static struct interval ambiguous[] =
|
||||
int
|
||||
utf_uint2cells(UINT32_T c)
|
||||
{
|
||||
if (c >= 0x100 && utf_iscomposing((int)c))
|
||||
return 0;
|
||||
return utf_char2cells((int)c);
|
||||
}
|
||||
#endif
|
||||
@@ -4385,45 +4387,31 @@ enc_alias_search(char_u *name)
|
||||
|
||||
#if defined(FEAT_MBYTE) || defined(PROTO)
|
||||
|
||||
#ifdef HAVE_LANGINFO_H
|
||||
# include <langinfo.h>
|
||||
#endif
|
||||
# ifdef HAVE_LANGINFO_H
|
||||
# include <langinfo.h>
|
||||
# endif
|
||||
|
||||
# ifndef FEAT_GUI_W32
|
||||
/*
|
||||
* Get the canonicalized encoding of the current locale.
|
||||
* Get the canonicalized encoding from the specified locale string "locale"
|
||||
* or from the environment variables LC_ALL, LC_CTYPE and LANG.
|
||||
* Returns an allocated string when successful, NULL when not.
|
||||
*/
|
||||
char_u *
|
||||
enc_locale(void)
|
||||
enc_locale_env(char *locale)
|
||||
{
|
||||
#ifndef WIN3264
|
||||
char *s;
|
||||
char *s = locale;
|
||||
char *p;
|
||||
int i;
|
||||
#endif
|
||||
char buf[50];
|
||||
#ifdef WIN3264
|
||||
long acp = GetACP();
|
||||
|
||||
if (acp == 1200)
|
||||
STRCPY(buf, "ucs-2le");
|
||||
else if (acp == 1252) /* cp1252 is used as latin1 */
|
||||
STRCPY(buf, "latin1");
|
||||
else
|
||||
sprintf(buf, "cp%ld", acp);
|
||||
#else
|
||||
# ifdef HAVE_NL_LANGINFO_CODESET
|
||||
if ((s = nl_langinfo(CODESET)) == NULL || *s == NUL)
|
||||
# endif
|
||||
# if defined(HAVE_LOCALE_H) || defined(X_LOCALE)
|
||||
if ((s = setlocale(LC_CTYPE, NULL)) == NULL || *s == NUL)
|
||||
# endif
|
||||
if ((s = getenv("LC_ALL")) == NULL || *s == NUL)
|
||||
if ((s = getenv("LC_CTYPE")) == NULL || *s == NUL)
|
||||
s = getenv("LANG");
|
||||
|
||||
if (s == NULL || *s == NUL)
|
||||
return FAIL;
|
||||
if ((s = getenv("LC_ALL")) == NULL || *s == NUL)
|
||||
if ((s = getenv("LC_CTYPE")) == NULL || *s == NUL)
|
||||
s = getenv("LANG");
|
||||
|
||||
if (s == NULL || *s == NUL)
|
||||
return NULL;
|
||||
|
||||
/* The most generic locale format is:
|
||||
* language[_territory][.codeset][@modifier][+special][,[sponsor][_revision]]
|
||||
@@ -4458,12 +4446,46 @@ enc_locale(void)
|
||||
break;
|
||||
}
|
||||
buf[i] = NUL;
|
||||
#endif
|
||||
|
||||
return enc_canonize((char_u *)buf);
|
||||
}
|
||||
# endif
|
||||
|
||||
#if defined(WIN3264) || defined(PROTO) || defined(FEAT_CYGWIN_WIN32_CLIPBOARD)
|
||||
/*
|
||||
* Get the canonicalized encoding of the current locale.
|
||||
* Returns an allocated string when successful, NULL when not.
|
||||
*/
|
||||
char_u *
|
||||
enc_locale(void)
|
||||
{
|
||||
# ifdef WIN3264
|
||||
char buf[50];
|
||||
long acp = GetACP();
|
||||
|
||||
if (acp == 1200)
|
||||
STRCPY(buf, "ucs-2le");
|
||||
else if (acp == 1252) /* cp1252 is used as latin1 */
|
||||
STRCPY(buf, "latin1");
|
||||
else
|
||||
sprintf(buf, "cp%ld", acp);
|
||||
|
||||
return enc_canonize((char_u *)buf);
|
||||
# else
|
||||
char *s;
|
||||
|
||||
# ifdef HAVE_NL_LANGINFO_CODESET
|
||||
if ((s = nl_langinfo(CODESET)) == NULL || *s == NUL)
|
||||
# endif
|
||||
# if defined(HAVE_LOCALE_H) || defined(X_LOCALE)
|
||||
if ((s = setlocale(LC_CTYPE, NULL)) == NULL || *s == NUL)
|
||||
# endif
|
||||
s = NULL;
|
||||
|
||||
return enc_locale_env(s);
|
||||
# endif
|
||||
}
|
||||
|
||||
# if defined(WIN3264) || defined(PROTO) || defined(FEAT_CYGWIN_WIN32_CLIPBOARD)
|
||||
/*
|
||||
* Convert an encoding name to an MS-Windows codepage.
|
||||
* Returns zero if no codepage can be figured out.
|
||||
@@ -4490,7 +4512,7 @@ encname2codepage(char_u *name)
|
||||
return cp;
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
# endif
|
||||
|
||||
# if defined(USE_ICONV) || defined(PROTO)
|
||||
|
||||
|
||||
+27
-5
@@ -88,7 +88,7 @@ static const char *toolbar_names[] =
|
||||
static int
|
||||
menu_is_winbar(char_u *name)
|
||||
{
|
||||
return (STRNCMP(name, "WinBar", 5) == 0);
|
||||
return (STRNCMP(name, "WinBar", 6) == 0);
|
||||
}
|
||||
|
||||
int
|
||||
@@ -1808,6 +1808,7 @@ menu_is_menubar(char_u *name)
|
||||
{
|
||||
return (!menu_is_popup(name)
|
||||
&& !menu_is_toolbar(name)
|
||||
&& !menu_is_winbar(name)
|
||||
&& *name != MNU_HIDDEN_CHAR);
|
||||
}
|
||||
|
||||
@@ -2248,7 +2249,7 @@ gui_destroy_tearoffs_recurse(vimmenu_T *menu)
|
||||
execute_menu(exarg_T *eap, vimmenu_T *menu)
|
||||
{
|
||||
char_u *mode;
|
||||
int idx;
|
||||
int idx = -1;
|
||||
#ifdef FEAT_GUI_MACVIM
|
||||
char_u *old_arg;
|
||||
#endif
|
||||
@@ -2315,7 +2316,9 @@ execute_menu(exarg_T *eap, vimmenu_T *menu)
|
||||
if (*p_sel == 'e' && gchar_cursor() != NUL)
|
||||
++curwin->w_cursor.col;
|
||||
}
|
||||
else
|
||||
|
||||
/* For the WinBar menu always use the Normal mode menu. */
|
||||
if (idx == -1 || eap == NULL)
|
||||
{
|
||||
mode = (char_u *)"Normal";
|
||||
idx = MENU_INDEX_NORMAL;
|
||||
@@ -2333,8 +2336,16 @@ execute_menu(exarg_T *eap, vimmenu_T *menu)
|
||||
|| current_SID != 0
|
||||
#endif
|
||||
)
|
||||
exec_normal_cmd(menu->strings[idx], menu->noremap[idx],
|
||||
{
|
||||
save_state_T save_state;
|
||||
|
||||
++ex_normal_busy;
|
||||
if (save_current_state(&save_state))
|
||||
exec_normal_cmd(menu->strings[idx], menu->noremap[idx],
|
||||
menu->silent[idx]);
|
||||
restore_current_state(&save_state);
|
||||
--ex_normal_busy;
|
||||
}
|
||||
else
|
||||
ins_typebuf(menu->strings[idx], menu->noremap[idx], 0,
|
||||
TRUE, menu->silent[idx]);
|
||||
@@ -2433,12 +2444,18 @@ winbar_click(win_T *wp, int col)
|
||||
if (col >= item->wb_startcol && col <= item->wb_endcol)
|
||||
{
|
||||
win_T *save_curwin = NULL;
|
||||
pos_T save_visual = VIsual;
|
||||
int save_visual_active = VIsual_active;
|
||||
int save_visual_select = VIsual_select;
|
||||
int save_visual_reselect = VIsual_reselect;
|
||||
int save_visual_mode = VIsual_mode;
|
||||
|
||||
if (wp != curwin)
|
||||
{
|
||||
/* Clicking in the window toolbar of a not-current window.
|
||||
* Make that window the current one and go to Normal mode. */
|
||||
* Make that window the current one and save Visual mode. */
|
||||
save_curwin = curwin;
|
||||
VIsual_active = FALSE;
|
||||
curwin = wp;
|
||||
curbuf = curwin->w_buffer;
|
||||
check_cursor();
|
||||
@@ -2450,6 +2467,11 @@ winbar_click(win_T *wp, int col)
|
||||
{
|
||||
curwin = save_curwin;
|
||||
curbuf = curwin->w_buffer;
|
||||
VIsual = save_visual;
|
||||
VIsual_active = save_visual_active;
|
||||
VIsual_select = save_visual_select;
|
||||
VIsual_reselect = save_visual_reselect;
|
||||
VIsual_mode = save_visual_mode;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+3
-3
@@ -495,7 +495,7 @@ get_breakindent_win(
|
||||
static varnumber_T prev_tick = 0; /* changedtick of cached value */
|
||||
int bri = 0;
|
||||
/* window width minus window margin space, i.e. what rests for text */
|
||||
const int eff_wwidth = W_WIDTH(wp)
|
||||
const int eff_wwidth = wp->w_width
|
||||
- ((wp->w_p_nu || wp->w_p_rnu)
|
||||
&& (vim_strchr(p_cpo, CPO_NUMCOL) == NULL)
|
||||
? number_width(wp) + 1 : 0);
|
||||
@@ -2026,7 +2026,7 @@ plines_win_nofold(win_T *wp, linenr_T lnum)
|
||||
/*
|
||||
* Add column offset for 'number', 'relativenumber' and 'foldcolumn'.
|
||||
*/
|
||||
width = W_WIDTH(wp) - win_col_off(wp);
|
||||
width = wp->w_width - win_col_off(wp);
|
||||
if (width <= 0)
|
||||
return 32000;
|
||||
if (col <= width)
|
||||
@@ -2083,7 +2083,7 @@ plines_win_col(win_T *wp, linenr_T lnum, long column)
|
||||
/*
|
||||
* Add column offset for 'number', 'relativenumber', 'foldcolumn', etc.
|
||||
*/
|
||||
width = W_WIDTH(wp) - win_col_off(wp);
|
||||
width = wp->w_width - win_col_off(wp);
|
||||
if (width <= 0)
|
||||
return 9999;
|
||||
|
||||
|
||||
+3
-3
@@ -165,7 +165,7 @@ coladvance2(
|
||||
else
|
||||
{
|
||||
#ifdef FEAT_VIRTUALEDIT
|
||||
int width = W_WIDTH(curwin) - win_col_off(curwin);
|
||||
int width = curwin->w_width - win_col_off(curwin);
|
||||
|
||||
if (finetune
|
||||
&& curwin->w_p_wrap
|
||||
@@ -310,7 +310,7 @@ coladvance2(
|
||||
int b = (int)wcol - (int)col;
|
||||
|
||||
/* The difference between wcol and col is used to set coladd. */
|
||||
if (b > 0 && b < (MAXCOL - 2 * W_WIDTH(curwin)))
|
||||
if (b > 0 && b < (MAXCOL - 2 * curwin->w_width))
|
||||
pos->coladd = b;
|
||||
|
||||
col += b;
|
||||
@@ -662,7 +662,7 @@ leftcol_changed(void)
|
||||
int retval = FALSE;
|
||||
|
||||
changed_cline_bef_curs();
|
||||
lastcol = curwin->w_leftcol + W_WIDTH(curwin) - curwin_col_off() - 1;
|
||||
lastcol = curwin->w_leftcol + curwin->w_width - curwin_col_off() - 1;
|
||||
validate_virtcol();
|
||||
|
||||
/*
|
||||
|
||||
+11
-11
@@ -884,14 +884,14 @@ validate_cursor_col(void)
|
||||
col = curwin->w_virtcol;
|
||||
off = curwin_col_off();
|
||||
col += off;
|
||||
width = W_WIDTH(curwin) - off + curwin_col_off2();
|
||||
width = curwin->w_width - off + curwin_col_off2();
|
||||
|
||||
/* long line wrapping, adjust curwin->w_wrow */
|
||||
if (curwin->w_p_wrap
|
||||
&& col >= (colnr_T)W_WIDTH(curwin)
|
||||
&& col >= (colnr_T)curwin->w_width
|
||||
&& width > 0)
|
||||
/* use same formula as what is used in curs_columns() */
|
||||
col -= ((col - W_WIDTH(curwin)) / width + 1) * width;
|
||||
col -= ((col - curwin->w_width) / width + 1) * width;
|
||||
if (col > (int)curwin->w_leftcol)
|
||||
col -= curwin->w_leftcol;
|
||||
else
|
||||
@@ -1004,11 +1004,11 @@ curs_columns(
|
||||
*/
|
||||
curwin->w_wrow = curwin->w_cline_row;
|
||||
|
||||
textwidth = W_WIDTH(curwin) - extra;
|
||||
textwidth = curwin->w_width - extra;
|
||||
if (textwidth <= 0)
|
||||
{
|
||||
/* No room for text, put cursor in last char of window. */
|
||||
curwin->w_wcol = W_WIDTH(curwin) - 1;
|
||||
curwin->w_wcol = curwin->w_width - 1;
|
||||
curwin->w_wrow = curwin->w_height - 1;
|
||||
}
|
||||
else if (curwin->w_p_wrap && curwin->w_width != 0)
|
||||
@@ -1016,10 +1016,10 @@ curs_columns(
|
||||
width = textwidth + curwin_col_off2();
|
||||
|
||||
/* long line wrapping, adjust curwin->w_wrow */
|
||||
if (curwin->w_wcol >= W_WIDTH(curwin))
|
||||
if (curwin->w_wcol >= curwin->w_width)
|
||||
{
|
||||
/* this same formula is used in validate_cursor_col() */
|
||||
n = (curwin->w_wcol - W_WIDTH(curwin)) / width + 1;
|
||||
n = (curwin->w_wcol - curwin->w_width) / width + 1;
|
||||
curwin->w_wcol -= n * width;
|
||||
curwin->w_wrow += n;
|
||||
|
||||
@@ -1050,7 +1050,7 @@ curs_columns(
|
||||
* extra
|
||||
*/
|
||||
off_left = (int)startcol - (int)curwin->w_leftcol - p_siso;
|
||||
off_right = (int)endcol - (int)(curwin->w_leftcol + W_WIDTH(curwin)
|
||||
off_right = (int)endcol - (int)(curwin->w_leftcol + curwin->w_width
|
||||
- p_siso) + 1;
|
||||
if (off_left < 0 || off_right > 0)
|
||||
{
|
||||
@@ -1278,7 +1278,7 @@ scrolldown(
|
||||
validate_virtcol();
|
||||
validate_cheight();
|
||||
wrow += curwin->w_cline_height - 1 -
|
||||
curwin->w_virtcol / W_WIDTH(curwin);
|
||||
curwin->w_virtcol / curwin->w_width;
|
||||
}
|
||||
while (wrow >= curwin->w_height && curwin->w_cursor.lnum > 1)
|
||||
{
|
||||
@@ -1483,7 +1483,7 @@ scrolldown_clamp(void)
|
||||
validate_cheight();
|
||||
validate_virtcol();
|
||||
end_row += curwin->w_cline_height - 1 -
|
||||
curwin->w_virtcol / W_WIDTH(curwin);
|
||||
curwin->w_virtcol / curwin->w_width;
|
||||
}
|
||||
if (end_row < curwin->w_height - p_so)
|
||||
{
|
||||
@@ -1541,7 +1541,7 @@ scrollup_clamp(void)
|
||||
if (curwin->w_p_wrap && curwin->w_width != 0)
|
||||
{
|
||||
validate_virtcol();
|
||||
start_row -= curwin->w_virtcol / W_WIDTH(curwin);
|
||||
start_row -= curwin->w_virtcol / curwin->w_width;
|
||||
}
|
||||
if (start_row >= p_so)
|
||||
{
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
@echo off
|
||||
rem To be used on MS-Windows for Visual C++ 2015 (either Express or Community)
|
||||
rem See INSTALLpc.txt for information.
|
||||
rem
|
||||
rem Usage:
|
||||
rem For x86 builds run this without options:
|
||||
rem msvc2015
|
||||
rem For x64 builds run this with "x86_amd64" option:
|
||||
rem msvc2015 x86_amd64
|
||||
@echo on
|
||||
|
||||
call "%VS140COMNTOOLS%..\..\VC\vcvarsall.bat" %*
|
||||
|
||||
rem Use Windows SDK 7.1A for targeting Windows XP.
|
||||
if "%ProgramFiles(x86)%"=="" (
|
||||
set "WinSdk71=%ProgramFiles%\Microsoft SDKs\Windows\v7.1A"
|
||||
) else (
|
||||
set "WinSdk71=%ProgramFiles(x86)%\Microsoft SDKs\Windows\v7.1A"
|
||||
)
|
||||
if not exist "%WinSdk71%" (
|
||||
echo Windows SDK 7.1A is not found. Targeting Windows Vista and later.
|
||||
goto :eof
|
||||
)
|
||||
|
||||
set INCLUDE=%WinSdk71%\Include;%INCLUDE%
|
||||
if "%Platform%"=="x64" (
|
||||
set "LIB=%WinSdk71%\Lib\x64;%LIB%"
|
||||
set SUBSYSTEM_VER=5.02
|
||||
) else (
|
||||
set "LIB=%WinSdk71%\Lib;%LIB%"
|
||||
set SUBSYSTEM_VER=5.01
|
||||
)
|
||||
set CL=/D_USING_V110_SDK71_
|
||||
+1
-1
@@ -2872,7 +2872,7 @@ netbeans_button_release(int button)
|
||||
|
||||
if (bufno >= 0 && curwin != NULL && curwin->w_buffer == curbuf)
|
||||
{
|
||||
int col = mouse_col - W_WINCOL(curwin)
|
||||
int col = mouse_col - curwin->w_wincol
|
||||
- ((curwin->w_p_nu || curwin->w_p_rnu) ? 9 : 1);
|
||||
long off = pos2off(curbuf, &curwin->w_cursor);
|
||||
|
||||
|
||||
+20
-12
@@ -2796,6 +2796,12 @@ do_mouse(
|
||||
*/
|
||||
jump_flags = jump_to_mouse(jump_flags,
|
||||
oap == NULL ? NULL : &(oap->inclusive), which_button);
|
||||
|
||||
#ifdef FEAT_MENU
|
||||
/* A click in the window toolbar has no side effects. */
|
||||
if (jump_flags & MOUSE_WINBAR)
|
||||
return FALSE;
|
||||
#endif
|
||||
moved = (jump_flags & CURSOR_MOVED);
|
||||
in_status_line = (jump_flags & IN_STATUS_LINE);
|
||||
in_sep_line = (jump_flags & IN_SEP_LINE);
|
||||
@@ -4453,8 +4459,8 @@ nv_screengo(oparg_T *oap, int dir, long dist)
|
||||
|
||||
col_off1 = curwin_col_off();
|
||||
col_off2 = col_off1 - curwin_col_off2();
|
||||
width1 = W_WIDTH(curwin) - col_off1;
|
||||
width2 = W_WIDTH(curwin) - col_off2;
|
||||
width1 = curwin->w_width - col_off1;
|
||||
width2 = curwin->w_width - col_off2;
|
||||
if (width2 == 0)
|
||||
width2 = 1; /* avoid divide by zero */
|
||||
|
||||
@@ -4659,7 +4665,7 @@ nv_mousescroll(cmdarg_T *cap)
|
||||
step = scroll_wheel_force;
|
||||
# endif
|
||||
if (mod_mask & (MOD_MASK_SHIFT | MOD_MASK_CTRL))
|
||||
step = W_WIDTH(curwin);
|
||||
step = curwin->w_width;
|
||||
val = curwin->w_leftcol + (cap->arg == MSCR_RIGHT ? -step : +step);
|
||||
if (val < 0)
|
||||
val = 0;
|
||||
@@ -4911,7 +4917,7 @@ dozet:
|
||||
|
||||
/* "zH" - scroll screen right half-page */
|
||||
case 'H':
|
||||
cap->count1 *= W_WIDTH(curwin) / 2;
|
||||
cap->count1 *= curwin->w_width / 2;
|
||||
/* FALLTHROUGH */
|
||||
|
||||
/* "zh" - scroll screen to the right */
|
||||
@@ -4928,7 +4934,7 @@ dozet:
|
||||
break;
|
||||
|
||||
/* "zL" - scroll screen left half-page */
|
||||
case 'L': cap->count1 *= W_WIDTH(curwin) / 2;
|
||||
case 'L': cap->count1 *= curwin->w_width / 2;
|
||||
/* FALLTHROUGH */
|
||||
|
||||
/* "zl" - scroll screen to the left */
|
||||
@@ -4972,7 +4978,7 @@ dozet:
|
||||
else
|
||||
#endif
|
||||
getvcol(curwin, &curwin->w_cursor, NULL, NULL, &col);
|
||||
n = W_WIDTH(curwin) - curwin_col_off();
|
||||
n = curwin->w_width - curwin_col_off();
|
||||
if ((long)col + p_siso < n)
|
||||
col = 0;
|
||||
else
|
||||
@@ -5982,7 +5988,9 @@ nv_scroll(cmdarg_T *cap)
|
||||
curwin->w_cursor.lnum = curbuf->b_ml.ml_line_count;
|
||||
}
|
||||
|
||||
cursor_correct(); /* correct for 'so' */
|
||||
/* Correct for 'so', except when an operator is pending. */
|
||||
if (cap->oap->op_type == OP_NOP)
|
||||
cursor_correct();
|
||||
beginline(BL_SOL | BL_FIX);
|
||||
}
|
||||
|
||||
@@ -8107,7 +8115,7 @@ nv_g_cmd(cmdarg_T *cap)
|
||||
oap->inclusive = FALSE;
|
||||
if (curwin->w_p_wrap && curwin->w_width != 0)
|
||||
{
|
||||
int width1 = W_WIDTH(curwin) - curwin_col_off();
|
||||
int width1 = curwin->w_width - curwin_col_off();
|
||||
int width2 = width1 + curwin_col_off2();
|
||||
|
||||
validate_virtcol();
|
||||
@@ -8121,7 +8129,7 @@ nv_g_cmd(cmdarg_T *cap)
|
||||
* 'relativenumber' is on and lines are wrapping the middle can be more
|
||||
* to the left. */
|
||||
if (cap->nchar == 'm')
|
||||
i += (W_WIDTH(curwin) - curwin_col_off()
|
||||
i += (curwin->w_width - curwin_col_off()
|
||||
+ ((curwin->w_p_wrap && i > 0)
|
||||
? curwin_col_off2() : 0)) / 2;
|
||||
coladvance((colnr_T)i);
|
||||
@@ -8173,7 +8181,7 @@ nv_g_cmd(cmdarg_T *cap)
|
||||
curwin->w_curswant = MAXCOL; /* so we stay at the end */
|
||||
if (cap->count1 == 1)
|
||||
{
|
||||
int width1 = W_WIDTH(curwin) - col_off;
|
||||
int width1 = curwin->w_width - col_off;
|
||||
int width2 = width1 + curwin_col_off2();
|
||||
|
||||
validate_virtcol();
|
||||
@@ -8205,7 +8213,7 @@ nv_g_cmd(cmdarg_T *cap)
|
||||
}
|
||||
else
|
||||
{
|
||||
i = curwin->w_leftcol + W_WIDTH(curwin) - col_off - 1;
|
||||
i = curwin->w_leftcol + curwin->w_width - col_off - 1;
|
||||
coladvance((colnr_T)i);
|
||||
|
||||
/* Make sure we stick in this column. */
|
||||
@@ -9599,7 +9607,7 @@ get_op_vcol(
|
||||
colnr_T start, end;
|
||||
|
||||
if (VIsual_mode != Ctrl_V
|
||||
|| (!initial && oap->end.col < W_WIDTH(curwin)))
|
||||
|| (!initial && oap->end.col < curwin->w_width))
|
||||
return;
|
||||
|
||||
oap->block_mode = TRUE;
|
||||
|
||||
@@ -3259,8 +3259,8 @@ op_yank(oparg_T *oap, int deleting, int mess)
|
||||
|
||||
clip_own_selection(&clip_plus);
|
||||
clip_gen_set_selection(&clip_plus);
|
||||
if (!clip_isautosel_star() && !did_star
|
||||
&& curr == &(y_regs[PLUS_REGISTER]))
|
||||
if (!clip_isautosel_star() && !clip_isautosel_plus()
|
||||
&& !did_star && curr == &(y_regs[PLUS_REGISTER]))
|
||||
{
|
||||
copy_yank_reg(&(y_regs[STAR_REGISTER]));
|
||||
clip_own_selection(&clip_star);
|
||||
|
||||
@@ -2084,6 +2084,24 @@ static struct vimoption options[] =
|
||||
{"mousetime", "mouset", P_NUM|P_VI_DEF,
|
||||
(char_u *)&p_mouset, PV_NONE,
|
||||
{(char_u *)500L, (char_u *)0L} SCRIPTID_INIT},
|
||||
{"mzschemedll", NULL, P_STRING|P_EXPAND|P_VI_DEF|P_SECURE,
|
||||
#if defined(DYNAMIC_MZSCHEME)
|
||||
(char_u *)&p_mzschemedll, PV_NONE,
|
||||
{(char_u *)DYNAMIC_MZSCH_DLL, (char_u *)0L}
|
||||
#else
|
||||
(char_u *)NULL, PV_NONE,
|
||||
{(char_u *)"", (char_u *)0L}
|
||||
#endif
|
||||
SCRIPTID_INIT},
|
||||
{"mzschemegcdll", NULL, P_STRING|P_EXPAND|P_VI_DEF|P_SECURE,
|
||||
#if defined(DYNAMIC_MZSCHEME)
|
||||
(char_u *)&p_mzschemegcdll, PV_NONE,
|
||||
{(char_u *)DYNAMIC_MZGC_DLL, (char_u *)0L}
|
||||
#else
|
||||
(char_u *)NULL, PV_NONE,
|
||||
{(char_u *)"", (char_u *)0L}
|
||||
#endif
|
||||
SCRIPTID_INIT},
|
||||
{"mzquantum", "mzq", P_NUM,
|
||||
#ifdef FEAT_MZSCHEME
|
||||
(char_u *)&p_mzq, PV_NONE,
|
||||
@@ -3224,6 +3242,7 @@ static struct vimoption options[] =
|
||||
p_term("t_ms", T_MS)
|
||||
p_term("t_nd", T_ND)
|
||||
p_term("t_op", T_OP)
|
||||
p_term("t_RF", T_RFG)
|
||||
p_term("t_RB", T_RBG)
|
||||
p_term("t_RC", T_CRC)
|
||||
p_term("t_RI", T_CRI)
|
||||
|
||||
@@ -681,6 +681,10 @@ EXTERN long p_mouset; /* 'mousetime' */
|
||||
EXTERN int p_more; /* 'more' */
|
||||
#ifdef FEAT_MZSCHEME
|
||||
EXTERN long p_mzq; /* 'mzquantum */
|
||||
# if defined(DYNAMIC_MZSCHEME)
|
||||
EXTERN char_u *p_mzschemedll; /* 'mzschemedll' */
|
||||
EXTERN char_u *p_mzschemegcdll; /* 'mzschemegcdll' */
|
||||
# endif
|
||||
#endif
|
||||
#if defined(MSWIN)
|
||||
EXTERN int p_odev; /* 'opendevice' */
|
||||
|
||||
+29
-13
@@ -4080,7 +4080,7 @@ wait4pid(pid_t child, waitstatus *status)
|
||||
mch_parse_cmd(char_u *cmd, int use_shcf, char ***argv, int *argc)
|
||||
{
|
||||
int i;
|
||||
char_u *p;
|
||||
char_u *p, *d;
|
||||
int inquote;
|
||||
|
||||
/*
|
||||
@@ -4098,26 +4098,34 @@ mch_parse_cmd(char_u *cmd, int use_shcf, char ***argv, int *argc)
|
||||
if (i == 1)
|
||||
(*argv)[*argc] = (char *)p;
|
||||
++*argc;
|
||||
d = p;
|
||||
while (*p != NUL && (inquote || (*p != ' ' && *p != TAB)))
|
||||
{
|
||||
if (p[0] == '"')
|
||||
/* quotes surrounding an argument and are dropped */
|
||||
inquote = !inquote;
|
||||
else if (p[0] == '\\' && p[1] != NUL)
|
||||
else
|
||||
{
|
||||
/* First pass: skip over "\ " and "\"".
|
||||
* Second pass: Remove the backslash. */
|
||||
if (i == 1)
|
||||
mch_memmove(p, p + 1, STRLEN(p));
|
||||
else
|
||||
if (p[0] == '\\' && p[1] != NUL)
|
||||
{
|
||||
/* First pass: skip over "\ " and "\"".
|
||||
* Second pass: Remove the backslash. */
|
||||
++p;
|
||||
}
|
||||
if (i == 1)
|
||||
*d++ = *p;
|
||||
}
|
||||
++p;
|
||||
}
|
||||
if (*p == NUL)
|
||||
{
|
||||
if (i == 1)
|
||||
*d++ = NUL;
|
||||
break;
|
||||
}
|
||||
if (i == 1)
|
||||
*p++ = NUL;
|
||||
p = skipwhite(p);
|
||||
*d++ = NUL;
|
||||
p = skipwhite(p + 1);
|
||||
}
|
||||
if (*argv == NULL)
|
||||
{
|
||||
@@ -5352,6 +5360,9 @@ mch_job_start(char **argv, job_T *job, jobopt_T *options)
|
||||
channel = add_channel();
|
||||
if (channel == NULL)
|
||||
goto failed;
|
||||
if (job->jv_tty_out != NULL)
|
||||
ch_log(channel, "using pty %s on fd %d",
|
||||
job->jv_tty_out, pty_master_fd);
|
||||
}
|
||||
|
||||
BLOCK_SIGNALS(&curset);
|
||||
@@ -5724,6 +5735,9 @@ mch_create_pty_channel(job_T *job, jobopt_T *options)
|
||||
close(pty_master_fd);
|
||||
return FAIL;
|
||||
}
|
||||
if (job->jv_tty_out != NULL)
|
||||
ch_log(channel, "using pty %s on fd %d",
|
||||
job->jv_tty_out, pty_master_fd);
|
||||
job->jv_channel = channel; /* ch_refcount was set by add_channel() */
|
||||
channel->ch_keep_open = TRUE;
|
||||
|
||||
@@ -5991,7 +6005,7 @@ RealWaitForChar(int fd, long msec, int *check_for_gpm UNUSED, int *interrupted)
|
||||
}
|
||||
# endif
|
||||
#ifdef FEAT_JOB_CHANNEL
|
||||
nfd = channel_poll_setup(nfd, &fds);
|
||||
nfd = channel_poll_setup(nfd, &fds, &towait);
|
||||
#endif
|
||||
if (interrupted != NULL)
|
||||
*interrupted = FALSE;
|
||||
@@ -6043,7 +6057,8 @@ RealWaitForChar(int fd, long msec, int *check_for_gpm UNUSED, int *interrupted)
|
||||
}
|
||||
# endif
|
||||
#ifdef FEAT_JOB_CHANNEL
|
||||
if (ret > 0)
|
||||
/* also call when ret == 0, we may be polling a keep-open channel */
|
||||
if (ret >= 0)
|
||||
ret = channel_poll_check(ret, &fds);
|
||||
#endif
|
||||
|
||||
@@ -6119,7 +6134,7 @@ select_eintr:
|
||||
}
|
||||
# endif
|
||||
# ifdef FEAT_JOB_CHANNEL
|
||||
maxfd = channel_select_setup(maxfd, &rfds, &wfds);
|
||||
maxfd = channel_select_setup(maxfd, &rfds, &wfds, &tv, &tvp);
|
||||
# endif
|
||||
if (interrupted != NULL)
|
||||
*interrupted = FALSE;
|
||||
@@ -6205,7 +6220,8 @@ select_eintr:
|
||||
}
|
||||
# endif
|
||||
#ifdef FEAT_JOB_CHANNEL
|
||||
if (ret > 0)
|
||||
/* also call when ret == 0, we may be polling a keep-open channel */
|
||||
if (ret >= 0)
|
||||
ret = channel_select_check(ret, &rfds, &wfds);
|
||||
#endif
|
||||
|
||||
|
||||
@@ -22,6 +22,7 @@ LANGUAGES = \
|
||||
ja \
|
||||
ko \
|
||||
ko.UTF-8 \
|
||||
lv \
|
||||
nb \
|
||||
nl \
|
||||
no \
|
||||
@@ -63,6 +64,7 @@ MOFILES = \
|
||||
ja.mo \
|
||||
ko.mo \
|
||||
ko.UTF-8.mo \
|
||||
lv.mo \
|
||||
nb.mo \
|
||||
nl.mo \
|
||||
no.mo \
|
||||
|
||||
+102
-132
@@ -13,8 +13,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: vim 8.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2017-05-28 10:54+0200\n"
|
||||
"PO-Revision-Date: 2017-05-28 23:45+0200\n"
|
||||
"POT-Creation-Date: 2017-09-24 16:26+0200\n"
|
||||
"PO-Revision-Date: 2017-09-24 18:40+0200\n"
|
||||
"Last-Translator: Antonio Colombo <azc100@gmail.com>\n"
|
||||
"Language-Team: Antonio Colombo <azc100@gmail.com>\n"
|
||||
"Language: Italian\n"
|
||||
@@ -96,7 +96,6 @@ msgstr "E90: Non riesco a scaricare l'ultimo buffer"
|
||||
msgid "E84: No modified buffer found"
|
||||
msgstr "E84: Nessun buffer risulta modificato"
|
||||
|
||||
#. back where we started, didn't find anything.
|
||||
msgid "E85: There is no listed buffer"
|
||||
msgstr "E85: Non c'è alcun buffer elencato"
|
||||
|
||||
@@ -111,6 +110,18 @@ msgid "E89: No write since last change for buffer %ld (add ! to override)"
|
||||
msgstr ""
|
||||
"E89: Buffer %ld non salvato dopo modifica (aggiungi ! per eseguire comunque)"
|
||||
|
||||
msgid "E948: Job still running (add ! to end the job)"
|
||||
msgstr "E948: Lavoro ancora in esecuzione (aggiungi! per terminarlo)"
|
||||
|
||||
msgid "E37: No write since last change (add ! to override)"
|
||||
msgstr "E37: Non salvato dopo modifica (aggiungi ! per eseguire comunque)"
|
||||
|
||||
msgid "E948: Job still running"
|
||||
msgstr "E948: Lavoro ancora attivo"
|
||||
|
||||
msgid "E37: No write since last change"
|
||||
msgstr "E37: Non salvato dopo l'ultima modifica"
|
||||
|
||||
msgid "W14: Warning: List of file names overflow"
|
||||
msgstr "W14: Avviso: Superato limite della lista dei nomi di file"
|
||||
|
||||
@@ -166,7 +177,6 @@ msgstr "riga %ld di %ld --%d%%-- col "
|
||||
msgid "[No Name]"
|
||||
msgstr "[Senza nome]"
|
||||
|
||||
#. must be a help buffer
|
||||
msgid "help"
|
||||
msgstr "aiuto"
|
||||
|
||||
@@ -192,6 +202,9 @@ msgstr ""
|
||||
"\n"
|
||||
"# Lista Buffer:\n"
|
||||
|
||||
msgid "E382: Cannot write, 'buftype' option is set"
|
||||
msgstr "E382: Non posso scrivere, l'opzione 'buftype' è impostata"
|
||||
|
||||
msgid "[Scratch]"
|
||||
msgstr "[Volatile]"
|
||||
|
||||
@@ -228,6 +241,7 @@ msgstr "E904: l'ultimo argomento per espressione/chiamata dev'essere numerico"
|
||||
msgid "E904: third argument for call must be a list"
|
||||
msgstr "E904: il terzo argomento della chiamata dev'essere una Lista"
|
||||
|
||||
#, c-format
|
||||
msgid "E905: received unknown command: %s"
|
||||
msgstr "E905: recevuto comando non conosciuto: %s"
|
||||
|
||||
@@ -235,6 +249,7 @@ msgstr "E905: recevuto comando non conosciuto: %s"
|
||||
msgid "E630: %s(): write while not connected"
|
||||
msgstr "E630: %s(): scrittura in mancanza di connessione"
|
||||
|
||||
#, c-format
|
||||
msgid "E631: %s(): write failed"
|
||||
msgstr "E631: %s(): scrittura non riuscita"
|
||||
|
||||
@@ -299,6 +314,7 @@ msgstr "argomento di extend()"
|
||||
msgid "E737: Key already exists: %s"
|
||||
msgstr "E737: Chiave già esistente: %s"
|
||||
|
||||
#, c-format
|
||||
msgid "E96: Cannot diff more than %ld buffers"
|
||||
msgstr "E96: Non supporto differenze fra più di %ld buffer"
|
||||
|
||||
@@ -355,7 +371,6 @@ msgstr "E791: Nessuna keymap per questo tasto"
|
||||
msgid " Keyword completion (^N^P)"
|
||||
msgstr " Completamento Keyword (^N^P)"
|
||||
|
||||
#. ctrl_x_mode == 0, ^P/^N compl.
|
||||
msgid " ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)"
|
||||
msgstr " modalità ^X (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)"
|
||||
|
||||
@@ -433,10 +448,6 @@ msgstr "corrispondenza nel file"
|
||||
msgid " Adding"
|
||||
msgstr " Aggiungo"
|
||||
|
||||
#. showmode might reset the internal line pointers, so it must
|
||||
#. * be called before line = ml_get(), or when this address is no
|
||||
#. * longer needed. -- Acevedo.
|
||||
#.
|
||||
msgid "-- Searching..."
|
||||
msgstr "-- Ricerca..."
|
||||
|
||||
@@ -457,7 +468,6 @@ msgstr "corrispondenza %d di %d"
|
||||
msgid "match %d"
|
||||
msgstr "corrispondenza %d"
|
||||
|
||||
#. maximum nesting of lists and dicts
|
||||
msgid "E18: Unexpected characters in :let"
|
||||
msgstr "E18: Caratteri non previsti in :let"
|
||||
|
||||
@@ -518,8 +528,7 @@ msgstr "E690: Manca \"in\" dopo :for"
|
||||
msgid "E108: No such variable: \"%s\""
|
||||
msgstr "E108: Variabile inesistente: \"%s\""
|
||||
|
||||
#. For historic reasons this error is not given for a list or dict.
|
||||
#. * E.g., the b: dict could be locked/unlocked.
|
||||
#, c-format
|
||||
msgid "E940: Cannot lock or unlock variable %s"
|
||||
msgstr "E940: Non riesco a bloccare o sbloccare la variabile %s"
|
||||
|
||||
@@ -693,11 +702,6 @@ msgstr "argomento di add()"
|
||||
msgid "E785: complete() can only be used in Insert mode"
|
||||
msgstr "E785: complete() può essere usata solo in modalità inserimento"
|
||||
|
||||
#.
|
||||
#. * Yes this is ugly, I don't particularly like it either. But doing it
|
||||
#. * this way has the compelling advantage that translations need not to
|
||||
#. * be touched at all. See below what 'ok' and 'ync' are used for.
|
||||
#.
|
||||
msgid "&Ok"
|
||||
msgstr "&OK"
|
||||
|
||||
@@ -794,6 +798,7 @@ msgstr "E882: Funzione confronto in uniq non riuscita"
|
||||
msgid "(Invalid)"
|
||||
msgstr "(Non valido)"
|
||||
|
||||
#, c-format
|
||||
msgid "E935: invalid submatch number: %d"
|
||||
msgstr "E935: nomeri di sotto-corrispondenza non valido: %d"
|
||||
|
||||
@@ -858,7 +863,6 @@ msgstr " file elaborati in precedenza"
|
||||
msgid " FAILED"
|
||||
msgstr " FALLITO"
|
||||
|
||||
#. avoid a wait_return for this message, it's annoying
|
||||
#, c-format
|
||||
msgid "E137: Viminfo file is not writable: %s"
|
||||
msgstr "E137: File viminfo \"%s\" inaccessibile in scrittura"
|
||||
@@ -879,7 +883,6 @@ msgstr "Scrivo file viminfo \"%s\""
|
||||
msgid "E886: Can't rename viminfo file to %s!"
|
||||
msgstr "E886: Non riesco a rinominare il file viminfo a %s!"
|
||||
|
||||
#. Write the info:
|
||||
#, c-format
|
||||
msgid "# This viminfo file was generated by Vim %s.\n"
|
||||
msgstr "# Questo file viminfo è stato generato da Vim %s.\n"
|
||||
@@ -999,8 +1002,8 @@ msgstr " in 1 riga"
|
||||
msgid " on %ld lines"
|
||||
msgstr " in %ld righe"
|
||||
|
||||
msgid "E147: Cannot do :global recursive"
|
||||
msgstr "E147: :global non può essere usato ricorsivamente"
|
||||
msgid "E147: Cannot do :global recursive with a range"
|
||||
msgstr "E147: :global non può essere usato ricorsivamente con un intervallo"
|
||||
|
||||
msgid "E148: Regular expression missing from global"
|
||||
msgstr "E148: Manca espressione regolare nel comando 'global'"
|
||||
@@ -1037,6 +1040,7 @@ msgstr "E149: Spiacente, nessun aiuto per %s"
|
||||
msgid "Sorry, help file \"%s\" not found"
|
||||
msgstr "Spiacente, non trovo file di aiuto \"%s\""
|
||||
|
||||
#, c-format
|
||||
msgid "E151: No match: %s"
|
||||
msgstr "E151: Nessuna corrispondenza: %s"
|
||||
|
||||
@@ -1148,8 +1152,8 @@ msgstr "E750: Usare prima \":profile start {fname}\""
|
||||
msgid "Save changes to \"%s\"?"
|
||||
msgstr "Salvare modifiche a \"%s\"?"
|
||||
|
||||
msgid "Untitled"
|
||||
msgstr "Senza Nome"
|
||||
msgid "E947: Job still running in buffer \"%s\""
|
||||
msgstr "E947: Lavoro ancora in esecuzione nel buffer \"%s\""
|
||||
|
||||
#, c-format
|
||||
msgid "E162: No write since last change for buffer \"%s\""
|
||||
@@ -1186,11 +1190,13 @@ msgstr "non trovato in '%s': \"%s\""
|
||||
|
||||
#, c-format
|
||||
msgid "W20: Required python version 2.x not supported, ignoring file: %s"
|
||||
msgstr "W20: Versione richiesta di python 2.x non supportata, ignoro il file: %s"
|
||||
msgstr ""
|
||||
"W20: Versione richiesta di python 2.x non supportata, ignoro il file: %s"
|
||||
|
||||
#, c-format
|
||||
msgid "W21: Required python version 3.x not supported, ignoring file: %s"
|
||||
msgstr "W21: Versione richiesta di python 3.x non supportata, ignoro il file: %s"
|
||||
msgstr ""
|
||||
"W21: Versione richiesta di python 3.x non supportata, ignoro il file: %s"
|
||||
|
||||
msgid "Source Vim script"
|
||||
msgstr "Esegui script Vim"
|
||||
@@ -1459,7 +1465,6 @@ msgstr "E189: \"%s\" esiste (aggiungi ! per eseguire comunque)"
|
||||
msgid "E190: Cannot open \"%s\" for writing"
|
||||
msgstr "E190: Non riesco ad aprire \"%s\" in scrittura"
|
||||
|
||||
#. set mark
|
||||
msgid "E191: Argument must be a letter or forward/backward quote"
|
||||
msgstr ""
|
||||
"E191: L'argomento deve essere una lettera, oppure un apice/apice retroverso"
|
||||
@@ -1501,13 +1506,15 @@ msgstr "E500: Il valore
|
||||
msgid "E195: Cannot open viminfo file for reading"
|
||||
msgstr "E195: Non posso aprire il file viminfo in lettura"
|
||||
|
||||
msgid "Untitled"
|
||||
msgstr "Senza Nome"
|
||||
|
||||
msgid "E196: No digraphs in this version"
|
||||
msgstr "E196: Digrammi non supportati in questa versione"
|
||||
|
||||
msgid "E608: Cannot :throw exceptions with 'Vim' prefix"
|
||||
msgstr "E608: Impossibile lanciare eccezioni con prefisso 'Vim'"
|
||||
|
||||
#. always scroll up, don't overwrite
|
||||
#, c-format
|
||||
msgid "Exception thrown: %s"
|
||||
msgstr "Eccezione lanciata: %s"
|
||||
@@ -1524,7 +1531,6 @@ msgstr "Eccezione scartata: %s"
|
||||
msgid "%s, line %ld"
|
||||
msgstr "%s, riga %ld"
|
||||
|
||||
#. always scroll up, don't overwrite
|
||||
#, c-format
|
||||
msgid "Exception caught: %s"
|
||||
msgstr "Eccezione intercettata: %s"
|
||||
@@ -1550,7 +1556,6 @@ msgstr "Errore ed interruzione"
|
||||
msgid "Error"
|
||||
msgstr "Errore"
|
||||
|
||||
#. if (pending & CSTP_INTERRUPT)
|
||||
msgid "Interrupt"
|
||||
msgstr "Interruzione"
|
||||
|
||||
@@ -1593,15 +1598,12 @@ msgstr "E601: nidificazione di :try troppo estesa"
|
||||
msgid "E603: :catch without :try"
|
||||
msgstr "E603: :catch senza :try"
|
||||
|
||||
#. Give up for a ":catch" after ":finally" and ignore it.
|
||||
#. * Just parse.
|
||||
msgid "E604: :catch after :finally"
|
||||
msgstr "E604: :catch dopo :finally"
|
||||
|
||||
msgid "E606: :finally without :try"
|
||||
msgstr "E606: :finally senza :try"
|
||||
|
||||
#. Give up for a multiple ":finally" and ignore it.
|
||||
msgid "E607: multiple :finally"
|
||||
msgstr "E607: :finally multipli"
|
||||
|
||||
@@ -1694,7 +1696,6 @@ msgstr "Vim: Leggo da 'stdin'...\n"
|
||||
msgid "Reading from stdin..."
|
||||
msgstr "Leggo da 'stdin'..."
|
||||
|
||||
#. Re-opening the original file failed!
|
||||
msgid "E202: Conversion made file unreadable!"
|
||||
msgstr "E202: La conversione ha reso il file illeggibile!"
|
||||
|
||||
@@ -1911,9 +1912,6 @@ msgstr "[noeol]"
|
||||
msgid "[Incomplete last line]"
|
||||
msgstr "[Manca carattere di fine riga]"
|
||||
|
||||
#. don't overwrite messages here
|
||||
#. must give this prompt
|
||||
#. don't use emsg() here, don't want to flush the buffers
|
||||
msgid "WARNING: The file has been changed since reading it!!!"
|
||||
msgstr "AVVISO: File modificato dopo essere stato letto!!!"
|
||||
|
||||
@@ -1992,7 +1990,6 @@ msgstr "--Cancellato--"
|
||||
msgid "auto-removing autocommand: %s <buffer=%d>"
|
||||
msgstr "auto-rimozione dell'autocomando: %s <buffer=%d>"
|
||||
|
||||
#. the group doesn't exist
|
||||
#, c-format
|
||||
msgid "E367: No such group: \"%s\""
|
||||
msgstr "E367: Gruppo inesistente: \"%s\""
|
||||
@@ -2015,7 +2012,6 @@ msgstr "E216: Evento inesistente: %s"
|
||||
msgid "E216: No such group or event: %s"
|
||||
msgstr "E216: Evento o gruppo inesistente: %s"
|
||||
|
||||
#. Highlight title
|
||||
msgid ""
|
||||
"\n"
|
||||
"--- Auto-Commands ---"
|
||||
@@ -2196,18 +2192,15 @@ msgstr "Trova cosa:"
|
||||
msgid "Replace with:"
|
||||
msgstr "Sostituisci con:"
|
||||
|
||||
#. whole word only button
|
||||
msgid "Match whole word only"
|
||||
msgstr "Cerca solo la parola intera"
|
||||
|
||||
#. match case button
|
||||
msgid "Match case"
|
||||
msgstr "Maiuscole/minuscole"
|
||||
|
||||
msgid "Direction"
|
||||
msgstr "Direzione"
|
||||
|
||||
#. 'Up' and 'Down' buttons
|
||||
msgid "Up"
|
||||
msgstr "Su"
|
||||
|
||||
@@ -2286,8 +2279,6 @@ msgstr "Stringa di ricerca (usa '\\\\' per cercare un '\\')"
|
||||
msgid "Find & Replace (use '\\\\' to find a '\\')"
|
||||
msgstr "Sostituisci (usa '\\\\' per cercare un '\\')"
|
||||
|
||||
#. We fake this: Use a filter that doesn't select anything and a default
|
||||
#. * file name that won't be used.
|
||||
msgid "Not Used"
|
||||
msgstr "Non Utilizzato"
|
||||
|
||||
@@ -2361,7 +2352,6 @@ msgstr "Vim - Selettore Font"
|
||||
msgid "Name:"
|
||||
msgstr "Nome:"
|
||||
|
||||
#. create toggle button
|
||||
msgid "Show size in Points"
|
||||
msgstr "Mostra dimensione in Punti"
|
||||
|
||||
@@ -2606,7 +2596,6 @@ msgstr "E261: connessione cscope %s non trovata"
|
||||
msgid "cscope connection %s closed"
|
||||
msgstr "connessione cscope %s chiusa"
|
||||
|
||||
#. should not reach here
|
||||
msgid "E570: fatal error in cs_manage_matches"
|
||||
msgstr "E570: errore irreparabile in cs_manage_matches"
|
||||
|
||||
@@ -2768,7 +2757,6 @@ msgstr "numero buffer non valido"
|
||||
msgid "not implemented yet"
|
||||
msgstr "non ancora implementato"
|
||||
|
||||
#. ???
|
||||
msgid "cannot set line(s)"
|
||||
msgstr "non posso impostare riga(he)"
|
||||
|
||||
@@ -2809,7 +2797,6 @@ msgid ""
|
||||
msgstr ""
|
||||
"non posso registrare comando callback: buffer/finestra già in cancellazione"
|
||||
|
||||
#. This should never happen. Famous last word?
|
||||
msgid ""
|
||||
"E280: TCL FATAL ERROR: reflist corrupt!? Please report this to vim-dev@vim."
|
||||
"org"
|
||||
@@ -2848,8 +2835,9 @@ msgstr "E573: Identificativo di server non valido: %s"
|
||||
msgid "E251: VIM instance registry property is badly formed. Deleted!"
|
||||
msgstr "E251: Proprietà registry relative a VIM non adeguate. Cancellate!"
|
||||
|
||||
#, c-format
|
||||
msgid "E938: Duplicate key in JSON: \"%s\""
|
||||
msgstr "E938: Chiave duplicata in JSON: \"%s\""
|
||||
msgstr "E938: Chiave duplicata in JSON: \"%s\""
|
||||
|
||||
#, c-format
|
||||
msgid "E696: Missing comma in List: %s"
|
||||
@@ -2912,7 +2900,6 @@ msgstr "Vim: Avviso: Output non diretto a un terminale\n"
|
||||
msgid "Vim: Warning: Input is not from a terminal\n"
|
||||
msgstr "Vim: Avviso: Input non proveniente da un terminale\n"
|
||||
|
||||
#. just in case..
|
||||
msgid "pre-vimrc command line"
|
||||
msgstr "riga comandi prima di vimrc"
|
||||
|
||||
@@ -3171,6 +3158,9 @@ msgstr ""
|
||||
msgid "-i <viminfo>\t\tUse <viminfo> instead of .viminfo"
|
||||
msgstr "-i <viminfo>\t\tUsa <viminfo> invece di .viminfo"
|
||||
|
||||
msgid "--clean\t\t'nocompatible', Vim defaults, no plugins, no viminfo"
|
||||
msgstr "--clean\t\t'nocompatible', default di Vim, no plugin, no viminfo"
|
||||
|
||||
msgid "-h or --help\tPrint Help (this message) and exit"
|
||||
msgstr "-h opp. --help\tStampa Aiuto (questo messaggio) ed esci"
|
||||
|
||||
@@ -3271,11 +3261,9 @@ msgstr "--windowid <HWND>\tApri Vim dentro un altro widget win32"
|
||||
msgid "No display"
|
||||
msgstr "Manca display"
|
||||
|
||||
#. Failed to send, abort.
|
||||
msgid ": Send failed.\n"
|
||||
msgstr ": Invio fallito.\n"
|
||||
|
||||
#. Let vim start normally.
|
||||
msgid ": Send failed. Trying to execute locally\n"
|
||||
msgstr ": Invio fallito. Tento di eseguire localmente\n"
|
||||
|
||||
@@ -3296,7 +3284,6 @@ msgstr "Nessun mark impostato"
|
||||
msgid "E283: No marks matching \"%s\""
|
||||
msgstr "E283: Nessun mark corrispondente a \"%s\""
|
||||
|
||||
#. Highlight title
|
||||
msgid ""
|
||||
"\n"
|
||||
"mark line col file/text"
|
||||
@@ -3304,7 +3291,6 @@ msgstr ""
|
||||
"\n"
|
||||
"mark riga col.file/testo"
|
||||
|
||||
#. Highlight title
|
||||
msgid ""
|
||||
"\n"
|
||||
" jump line col file/text"
|
||||
@@ -3312,7 +3298,6 @@ msgstr ""
|
||||
"\n"
|
||||
" salt.riga col.file/testo"
|
||||
|
||||
#. Highlight title
|
||||
msgid ""
|
||||
"\n"
|
||||
"change line col text"
|
||||
@@ -3327,7 +3312,6 @@ msgstr ""
|
||||
"\n"
|
||||
"# File mark:\n"
|
||||
|
||||
#. Write the jumplist with -'
|
||||
msgid ""
|
||||
"\n"
|
||||
"# Jumplist (newest first):\n"
|
||||
@@ -3396,7 +3380,6 @@ msgstr "E298: Non riesco a leggere blocco numero 2?"
|
||||
msgid "E843: Error while updating swap file crypt"
|
||||
msgstr "E843: Errore aggiornando cifratura dello swap file"
|
||||
|
||||
#. could not (re)open the swap file, what can we do????
|
||||
msgid "E301: Oops, lost the swap file!!!"
|
||||
msgstr "E301: Ahimè, lo swap file è perduto!!!"
|
||||
|
||||
@@ -3580,7 +3563,6 @@ msgstr ""
|
||||
msgid "Using crypt key from swap file for the text file.\n"
|
||||
msgstr "Uso la chiave di cifratura del file swap per il file di testo.\n"
|
||||
|
||||
#. use msg() to start the scrolling properly
|
||||
msgid "Swap files found:"
|
||||
msgstr "Swap file trovati:"
|
||||
|
||||
@@ -3750,8 +3732,6 @@ msgstr "Mentre aprivo file \""
|
||||
msgid " NEWER than swap file!\n"
|
||||
msgstr " più RECENTE dello swap file!\n"
|
||||
|
||||
#. Some of these messages are long to allow translation to
|
||||
#. * other languages.
|
||||
msgid ""
|
||||
"\n"
|
||||
"(1) Another program may be editing the same file. If this is the case,\n"
|
||||
@@ -3840,7 +3820,6 @@ msgstr "E328: I Menu esistono solo in un'altra modalit
|
||||
msgid "E329: No menu \"%s\""
|
||||
msgstr "E329: Nessun Menu \"%s\""
|
||||
|
||||
#. Only a mnemonic or accelerator is not valid.
|
||||
msgid "E792: Empty menu name"
|
||||
msgstr "E792: Nome menu non valido"
|
||||
|
||||
@@ -3854,8 +3833,6 @@ msgstr ""
|
||||
msgid "E332: Separator cannot be part of a menu path"
|
||||
msgstr "E332: Il separatore non può far parte di un percorso di Menu"
|
||||
|
||||
#. Now we have found the matching menu, and we list the mappings
|
||||
#. Highlight title
|
||||
msgid ""
|
||||
"\n"
|
||||
"--- Menus ---"
|
||||
@@ -3866,6 +3843,10 @@ msgstr ""
|
||||
msgid "Tear off this menu"
|
||||
msgstr "Togli questo Menu"
|
||||
|
||||
#, c-format
|
||||
msgid "E335: Menu not defined for %s mode"
|
||||
msgstr "E335: Menu non definito per la modalità %s"
|
||||
|
||||
msgid "E333: Menu path must lead to a menu item"
|
||||
msgstr "E333: Il percorso Menu deve condurre ad un elemento Menu"
|
||||
|
||||
@@ -3873,10 +3854,6 @@ msgstr "E333: Il percorso Menu deve condurre ad un elemento Menu"
|
||||
msgid "E334: Menu not found: %s"
|
||||
msgstr "E334: Menu non trovato: %s"
|
||||
|
||||
#, c-format
|
||||
msgid "E335: Menu not defined for %s mode"
|
||||
msgstr "E335: Menu non definito per la modalità %s"
|
||||
|
||||
msgid "E336: Menu path must lead to a sub-menu"
|
||||
msgstr "E336: Il percorso Menu deve condurre ad un sotto-Menu"
|
||||
|
||||
@@ -3946,7 +3923,6 @@ msgstr "Salva File dialogo"
|
||||
msgid "Open File dialog"
|
||||
msgstr "Apri File dialogo"
|
||||
|
||||
#. TODO: non-GUI file selector here
|
||||
msgid "E338: Sorry, no file browser in console mode"
|
||||
msgstr "E338: Spiacente, niente esplorazione file in modalità console"
|
||||
|
||||
@@ -4111,8 +4087,8 @@ msgstr "E662: All'inizio della lista modifiche"
|
||||
msgid "E663: At end of changelist"
|
||||
msgstr "E663: Alla fine della lista modifiche"
|
||||
|
||||
msgid "Type :quit<Enter> to exit Vim"
|
||||
msgstr "Batti :quit<Invio> per uscire da Vim"
|
||||
msgid "Type :qa! and press <Enter> to abandon all changes and exit Vim"
|
||||
msgstr "Batti :qa! e premi <Invio> per ignorare le modifiche e uscire da Vim"
|
||||
|
||||
#, c-format
|
||||
msgid "1 line %sed 1 time"
|
||||
@@ -4144,7 +4120,6 @@ msgstr "%ld righe rientrate "
|
||||
msgid "E748: No previously used register"
|
||||
msgstr "E748: Nessun registro usato in precedenza"
|
||||
|
||||
#. must display the prompt
|
||||
msgid "cannot yank; delete anyway"
|
||||
msgstr "non riesco a salvare in un registro; cancello comunque"
|
||||
|
||||
@@ -4159,25 +4134,27 @@ msgstr "%ld righe cambiate"
|
||||
msgid "freeing %ld lines"
|
||||
msgstr "libero %ld righe"
|
||||
|
||||
msgid "block of 1 line yanked"
|
||||
msgstr "blocco di 1 riga messo in registro"
|
||||
|
||||
msgid "1 line yanked"
|
||||
msgstr "1 riga messa in registro"
|
||||
|
||||
#, c-format
|
||||
msgid "block of %ld lines yanked"
|
||||
msgstr "blocco di %ld righe messo in registro"
|
||||
msgid " into \"%c"
|
||||
msgstr " in \"%c"
|
||||
|
||||
#, c-format
|
||||
msgid "%ld lines yanked"
|
||||
msgstr "%ld righe messe in registro"
|
||||
#
|
||||
msgid "block of 1 line yanked%s"
|
||||
msgstr "blocco di 1 riga messo in registro%s"
|
||||
|
||||
msgid "1 line yanked%s"
|
||||
msgstr "1 riga messa in registro%s"
|
||||
|
||||
msgid "block of %ld lines yanked%s"
|
||||
msgstr "blocco di %ld righe messo in registro%s"
|
||||
|
||||
msgid "%ld lines yanked%s"
|
||||
msgstr "%ld righe messe in registro%s"
|
||||
|
||||
#, c-format
|
||||
msgid "E353: Nothing in register %s"
|
||||
msgstr "E353: Niente nel registro %s"
|
||||
|
||||
#. Highlight title
|
||||
msgid ""
|
||||
"\n"
|
||||
"--- Registers ---"
|
||||
@@ -4240,9 +4217,6 @@ msgstr ""
|
||||
msgid "(+%ld for BOM)"
|
||||
msgstr "(+%ld per BOM)"
|
||||
|
||||
msgid "%<%f%h%m%=Page %N"
|
||||
msgstr "%<%f%h%m%=Pagina %N"
|
||||
|
||||
msgid "Thanks for flying Vim"
|
||||
msgstr "Grazie per aver volato con Vim"
|
||||
|
||||
@@ -4350,6 +4324,10 @@ msgstr "E541: troppi elementi"
|
||||
msgid "E542: unbalanced groups"
|
||||
msgstr "E542: gruppi sbilanciati"
|
||||
|
||||
msgid "E946: Cannot make a terminal with running job modifiable"
|
||||
msgstr "E946: Non posso aprire un terminale mentre ci sono lavori "
|
||||
"modificabili in esecuzione"
|
||||
|
||||
msgid "E590: A preview window already exists"
|
||||
msgstr "E590: Una finestra di pre-visualizzazione esiste già"
|
||||
|
||||
@@ -4368,9 +4346,6 @@ msgstr "E594: Servono almeno %d colonne"
|
||||
msgid "E355: Unknown option: %s"
|
||||
msgstr "E355: Opzione inesistente: %s"
|
||||
|
||||
#. There's another character after zeros or the string
|
||||
#. * is empty. In both cases, we are trying to set a
|
||||
#. * num option using a string.
|
||||
#, c-format
|
||||
msgid "E521: Number required: &%s = '%s'"
|
||||
msgstr "E521: Ci vuole un numero: &%s = '%s'"
|
||||
@@ -4443,7 +4418,6 @@ msgstr "non posso modificare modalit
|
||||
msgid "mch_get_shellsize: not a console??\n"
|
||||
msgstr "mch_get_shellsize: non una console??\n"
|
||||
|
||||
#. if Vim opened a window: Executing a shell may cause crashes
|
||||
msgid "E360: Cannot execute shell with -f option"
|
||||
msgstr "E360: Non posso eseguire lo shell con l'opzione -f"
|
||||
|
||||
@@ -4667,7 +4641,6 @@ msgstr "E376: %%%c non valido nel prefisso della stringa di 'format'"
|
||||
msgid "E377: Invalid %%%c in format string"
|
||||
msgstr "E377: %%%c non valido nella stringa di 'format'"
|
||||
|
||||
#. nothing found
|
||||
msgid "E378: 'errorformat' contains no pattern"
|
||||
msgstr "E378: 'errorformat' non contiene alcun modello"
|
||||
|
||||
@@ -4693,6 +4666,7 @@ msgstr "(%d di %d)%s%s: "
|
||||
msgid " (line deleted)"
|
||||
msgstr " (riga cancellata)"
|
||||
|
||||
#, c-format
|
||||
msgid "%serror list %d of %d; %d errors "
|
||||
msgstr "%slista errori %d di %d; %d errori"
|
||||
|
||||
@@ -4705,9 +4679,6 @@ msgstr "E381: In cima allo stack di quickfix"
|
||||
msgid "No entries"
|
||||
msgstr "Nessun elemento"
|
||||
|
||||
msgid "E382: Cannot write, 'buftype' option is set"
|
||||
msgstr "E382: Non posso scrivere, l'opzione 'buftype' è impostata"
|
||||
|
||||
msgid "Error file"
|
||||
msgstr "File errori"
|
||||
|
||||
@@ -4732,6 +4703,12 @@ msgstr "E369: elemento non valido in %s%%[]"
|
||||
msgid "E769: Missing ] after %s["
|
||||
msgstr "E769: Manca ] dopo %s["
|
||||
|
||||
msgid "E944: Reverse range in character class"
|
||||
msgstr "E944: Intervallo invertito nella classe di caratteri"
|
||||
|
||||
msgid "E945: Range too large in character class"
|
||||
msgstr "E945: Intervallo troppo ampio nella classe di caratteri"
|
||||
|
||||
#, c-format
|
||||
msgid "E53: Unmatched %s%%("
|
||||
msgstr "E53: Senza riscontro: %s%%("
|
||||
@@ -4758,6 +4735,9 @@ msgstr "E69: Manca ] dopo %s%%["
|
||||
msgid "E70: Empty %s%%[]"
|
||||
msgstr "E70: %s%%[] vuoto"
|
||||
|
||||
msgid "E65: Illegal back reference"
|
||||
msgstr "E65: Riferimento all'indietro non ammesso"
|
||||
|
||||
msgid "E339: Pattern too long"
|
||||
msgstr "E339: Espressione troppo lunga"
|
||||
|
||||
@@ -4794,9 +4774,6 @@ msgstr "E63: uso non valido di \\_"
|
||||
msgid "E64: %s%c follows nothing"
|
||||
msgstr "E64: %s%c senza nulla prima"
|
||||
|
||||
msgid "E65: Illegal back reference"
|
||||
msgstr "E65: Riferimento all'indietro non ammesso"
|
||||
|
||||
msgid "E68: Invalid character after \\z"
|
||||
msgstr "E68: Carattere non ammesso dopo \\z"
|
||||
|
||||
@@ -4848,7 +4825,6 @@ msgstr "E867: (NFA) Operatore sconosciuto '\\z%c'"
|
||||
msgid "E867: (NFA) Unknown operator '\\%%%c'"
|
||||
msgstr "E867: (NFA) Operatore sconosciuto '\\%%%c'"
|
||||
|
||||
#. should never happen
|
||||
msgid "E868: Error building NFA with equivalence class!"
|
||||
msgstr "E868: Errore nel build di NFA con classe di equivalenza!"
|
||||
|
||||
@@ -4859,11 +4835,9 @@ msgstr "E869: (NFA) Operatore sconosciuto '\\@%c'"
|
||||
msgid "E870: (NFA regexp) Error reading repetition limits"
|
||||
msgstr "E870: (NFA regexp) Errore nella lettura dei limiti di ripetizione"
|
||||
|
||||
#. Can't have a multi follow a multi.
|
||||
msgid "E871: (NFA regexp) Can't have a multi follow a multi !"
|
||||
msgstr "E871: (NFA regexp) Non si può avere multi dopo multi !"
|
||||
|
||||
#. Too many `('
|
||||
msgid "E872: (NFA regexp) Too many '('"
|
||||
msgstr "E872: (NFA regexp) Troppi '('"
|
||||
|
||||
@@ -4970,7 +4944,6 @@ msgstr "E386: '?' o '/' atteso dopo ';'"
|
||||
msgid " (includes previously listed match)"
|
||||
msgstr " (comprese corrispondenze elencate prima)"
|
||||
|
||||
#. cursor at status line
|
||||
msgid "--- Included files "
|
||||
msgstr "--- File inclusi "
|
||||
|
||||
@@ -5047,8 +5020,6 @@ msgstr "Spiacente, nessun suggerimento"
|
||||
msgid "Sorry, only %ld suggestions"
|
||||
msgstr "Spiacente, solo %ld suggerimenti"
|
||||
|
||||
#. for when 'cmdheight' > 1
|
||||
#. avoid more prompt
|
||||
#, c-format
|
||||
msgid "Change \"%.*s\" to:"
|
||||
msgstr "Cambiare \"%.*s\" in:"
|
||||
@@ -5330,10 +5301,6 @@ msgstr "%d di %d nodi compressi; ne restano %d (%d%%)"
|
||||
msgid "Reading back spell file..."
|
||||
msgstr "Rilettura file ortografico..."
|
||||
|
||||
#.
|
||||
#. * Go through the trie of good words, soundfold each word and add it to
|
||||
#. * the soundfold trie.
|
||||
#.
|
||||
msgid "Performing soundfolding..."
|
||||
msgstr "Eseguo soundfolding..."
|
||||
|
||||
@@ -5388,19 +5355,17 @@ msgstr "Parola '%.*s' aggiunta a %s"
|
||||
msgid "E763: Word characters differ between spell files"
|
||||
msgstr "E763: Caratteri di parola differenti nei file ortografici"
|
||||
|
||||
#. This should have been checked when generating the .spl
|
||||
#. * file.
|
||||
msgid "E783: duplicate char in MAP entry"
|
||||
msgstr "E783: carattere duplicato nell'elemento MAP"
|
||||
|
||||
msgid "No Syntax items defined for this buffer"
|
||||
msgstr "Nessun elemento sintattico definito per questo buffer"
|
||||
|
||||
msgid "syn conceal on"
|
||||
msgstr "syn conceal attivo"
|
||||
msgid "syntax conceal on"
|
||||
msgstr "syntax conceal attivo"
|
||||
|
||||
msgid "syn conceal off"
|
||||
msgstr "syn conceal inattivo"
|
||||
msgid "syntax conceal off"
|
||||
msgstr "syntax conceal inattivo"
|
||||
|
||||
#, c-format
|
||||
msgid "E390: Illegal argument: %s"
|
||||
@@ -5656,7 +5621,6 @@ msgstr "E428: Non posso andare oltre l'ultimo tag corrispondente"
|
||||
msgid "File \"%s\" does not exist"
|
||||
msgstr "Il file \"%s\" non esiste"
|
||||
|
||||
#. Give an indication of the number of matching tags
|
||||
#, c-format
|
||||
msgid "tag %d of %d%s"
|
||||
msgstr "tag %d di %d%s"
|
||||
@@ -5671,7 +5635,6 @@ msgstr " Uso tag ignorando maiuscole/minuscole!"
|
||||
msgid "E429: File \"%s\" does not exist"
|
||||
msgstr "E429: Il file \"%s\" non esiste"
|
||||
|
||||
#. Highlight title
|
||||
msgid ""
|
||||
"\n"
|
||||
" # TO tag FROM line in file/text"
|
||||
@@ -5702,7 +5665,6 @@ msgstr "Prima del byte %ld"
|
||||
msgid "E432: Tags file not sorted: %s"
|
||||
msgstr "E432: Tag file non ordinato alfabeticamente: %s"
|
||||
|
||||
#. never opened any tags file
|
||||
msgid "E433: No tags file"
|
||||
msgstr "E433: Nessun tag file"
|
||||
|
||||
@@ -5738,7 +5700,6 @@ msgstr "E436: Nessuna descrizione per \"%s\" in 'termcap'"
|
||||
msgid "E437: terminal capability \"cm\" required"
|
||||
msgstr "E437: capacità \"cm\" del terminale necessaria"
|
||||
|
||||
#. Highlight title
|
||||
msgid ""
|
||||
"\n"
|
||||
"--- Terminal keys ---"
|
||||
@@ -5749,6 +5710,21 @@ msgstr ""
|
||||
msgid "Cannot open $VIMRUNTIME/rgb.txt"
|
||||
msgstr "Non riesco ad aprire $VIMRUNTIME/rgb.txt"
|
||||
|
||||
msgid "Terminal"
|
||||
msgstr "Terminale"
|
||||
|
||||
msgid "Terminal-finished"
|
||||
msgstr "Terminale-terminato"
|
||||
|
||||
msgid "active"
|
||||
msgstr "attivo"
|
||||
|
||||
msgid "running"
|
||||
msgstr "in esecuzione"
|
||||
|
||||
msgid "finished"
|
||||
msgstr "terminato"
|
||||
|
||||
msgid "new shell started\n"
|
||||
msgstr "fatto eseguire nuovo shell\n"
|
||||
|
||||
@@ -5758,12 +5734,9 @@ msgstr "Vim: Errore leggendo l'input, esco...\n"
|
||||
msgid "Used CUT_BUFFER0 instead of empty selection"
|
||||
msgstr "Uso CUT_BUFFER0 invece che una scelta nulla"
|
||||
|
||||
#. This happens when the FileChangedRO autocommand changes the
|
||||
#. * file in a way it becomes shorter.
|
||||
msgid "E881: Line count changed unexpectedly"
|
||||
msgstr "E881: Contatore righe è inaspettatamente cambiato"
|
||||
|
||||
#. must display the prompt
|
||||
msgid "No undo possible; continue anyway"
|
||||
msgstr "'undo' non più possibile; continuo comunque"
|
||||
|
||||
@@ -5953,6 +5926,7 @@ msgstr "E699: Troppi argomenti"
|
||||
msgid "E117: Unknown function: %s"
|
||||
msgstr "E117: Funzione sconosciuta: %s"
|
||||
|
||||
#, c-format
|
||||
msgid "E933: Function was deleted: %s"
|
||||
msgstr "E933: Funzione eliminata: %s"
|
||||
|
||||
@@ -5992,11 +5966,15 @@ msgstr "E862: Non si pu
|
||||
|
||||
#, c-format
|
||||
msgid "E932: Closure function should not be at top level: %s"
|
||||
msgstr "E932: La funzione di chiusura non novrebbe essere al livello più alto: %s"
|
||||
msgstr ""
|
||||
"E932: La funzione di chiusura non novrebbe essere al livello più alto: %s"
|
||||
|
||||
msgid "E126: Missing :endfunction"
|
||||
msgstr "E126: Manca :endfunction"
|
||||
|
||||
msgid "W22: Text found after :endfunction: %s"
|
||||
msgstr "W22: Trovato testo dopo :endfunction: %s"
|
||||
|
||||
#, c-format
|
||||
msgid "E707: Function name conflicts with variable: %s"
|
||||
msgstr "E707: Nome funzione in conflitto con la variabile: %s"
|
||||
@@ -6336,6 +6314,7 @@ msgstr "E446: Nessun nome file sotto il cursore"
|
||||
msgid "E447: Can't find file \"%s\" in path"
|
||||
msgstr "E447: Non riesco a trovare il file \"%s\" nel percorso"
|
||||
|
||||
#, c-format
|
||||
msgid "E799: Invalid ID: %ld (must be greater than or equal to 1)"
|
||||
msgstr "E799: ID non valido: %ld (dev'essere maggiore o uguale a 1)"
|
||||
|
||||
@@ -6346,9 +6325,11 @@ msgstr "E801: ID gi
|
||||
msgid "List or number required"
|
||||
msgstr "È necessaria una Lista o un numero"
|
||||
|
||||
#, c-format
|
||||
msgid "E802: Invalid ID: %ld (must be greater than or equal to 1)"
|
||||
msgstr "E802: ID non valido: %ld (dev'essere maggiore o uguale a 1)"
|
||||
|
||||
#, c-format
|
||||
msgid "E803: ID not found: %ld"
|
||||
msgstr "E803: ID non trovato: %ld"
|
||||
|
||||
@@ -6377,7 +6358,6 @@ msgstr "Differenza con Vim"
|
||||
msgid "Edit with &Vim"
|
||||
msgstr "Apri con &Vim"
|
||||
|
||||
#. Now concatenate
|
||||
msgid "Edit with existing Vim - "
|
||||
msgstr "Apri con Vim esistente - "
|
||||
|
||||
@@ -6398,10 +6378,6 @@ msgstr "Percorso file troppo lungo!"
|
||||
msgid "--No lines in buffer--"
|
||||
msgstr "--File vuoto--"
|
||||
|
||||
#.
|
||||
#. * The error messages that can be shared are included here.
|
||||
#. * Excluded are errors that are only used once and debugging messages.
|
||||
#.
|
||||
msgid "E470: Command aborted"
|
||||
msgstr "E470: Comando finito male"
|
||||
|
||||
@@ -6586,12 +6562,6 @@ msgstr "E484: Non riesco ad aprire il file %s"
|
||||
msgid "E485: Can't read file %s"
|
||||
msgstr "E485: Non riesco a leggere il file %s"
|
||||
|
||||
msgid "E37: No write since last change (add ! to override)"
|
||||
msgstr "E37: Non salvato dopo modifica (aggiungi ! per eseguire comunque)"
|
||||
|
||||
msgid "E37: No write since last change"
|
||||
msgstr "E37: Non salvato dopo l'ultima modifica"
|
||||
|
||||
msgid "E38: Null argument"
|
||||
msgstr "E38: Argomento nullo"
|
||||
|
||||
@@ -6878,7 +6848,6 @@ msgstr "il costruttore di lista non accetta parole chiave come argomenti"
|
||||
msgid "list index out of range"
|
||||
msgstr "indice di lista non nell'intervallo"
|
||||
|
||||
#. No more suitable format specifications in python-2.3
|
||||
#, c-format
|
||||
msgid "internal error: failed to get vim list item %d"
|
||||
msgstr "errore interno: non ho potuto ottenere l'elemento di vim list %d"
|
||||
@@ -7045,3 +7014,4 @@ msgstr ""
|
||||
"Impostazione di percorso non riuscita: sys.path non è una Lista\n"
|
||||
"Dovresti aggiungere vim.VIM_SPECIAL_PATH a sys.path"
|
||||
|
||||
|
||||
|
||||
+282
@@ -0,0 +1,282 @@
|
||||
# Latvian Translation for Vim vim:set foldmethod=marker:
|
||||
#
|
||||
# Do ":help uganda" in Vim to read copying and usage conditions.
|
||||
# Do ":help credits" in Vim to see a list of people who contributed.
|
||||
#
|
||||
# FIRST AUTHOR Valdis Vitolins <valdis.vitolins@odo.lv>, 2017.
|
||||
#
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Vim (Latvian)\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2017-05-03 18:03+0100\n"
|
||||
"PO-Revision-Date: 2017-05-03 18:08+0300\n"
|
||||
"Last-Translator: Valdis Vītoliņš <valdis.vitolins@odo.lv>\n"
|
||||
"Language-Team: Bram Moolenaar <Bram@vim.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: lv\n"
|
||||
"X-Generator: Poedit 1.8.7.1\n"
|
||||
|
||||
#, c-format
|
||||
msgid "E96: Can not diff more than %ld buffers"
|
||||
msgstr "E96: Nevar salīdzināt vairāk kā %ld buferus"
|
||||
|
||||
msgid "E101: More than two buffers in diff mode, don't know which one to use"
|
||||
msgstr "E101: Vairāk par vienu buferi diff režīmā, nav skaidrs, kuru izmantot"
|
||||
|
||||
#, c-format
|
||||
msgid "E102: Can't find buffer \"%s\""
|
||||
msgstr "E102: Nevar atrast buferi \"%s\""
|
||||
|
||||
#, c-format
|
||||
msgid "E738: Can't list variables for %s"
|
||||
msgstr "E738: Nevar parādīt %s mainīgos"
|
||||
|
||||
#, c-format
|
||||
msgid "E138: Can't write viminfo file %s!"
|
||||
msgstr "E138: Nevar ierakstīt viminfo failu %s!"
|
||||
|
||||
msgid ""
|
||||
"# You may edit it if you're careful!\n"
|
||||
"\n"
|
||||
msgstr ""
|
||||
"# Ja rediģējat, esiet uzmanīgs!\n"
|
||||
"\n"
|
||||
|
||||
msgid "E146: Regular expressions can't be delimited by letters"
|
||||
msgstr "E146: Regulārās izteiksmes nedrīkst atdalīt ar burtiem"
|
||||
|
||||
msgid "E493: Backwards range given"
|
||||
msgstr "E493: Uzdots pretējs diapazons"
|
||||
|
||||
msgid "Backwards range given, OK to swap"
|
||||
msgstr "Diapazons pretējā secībā, OK lai apvērstu"
|
||||
|
||||
#, c-format
|
||||
msgid "E185: Cannot find color scheme %s"
|
||||
msgstr "E185: Nevar atrast krāsu shēmu %s"
|
||||
|
||||
msgid "Can't find temp file for conversion"
|
||||
msgstr "Nevar atrast konvertējamo īslaicīgo failu"
|
||||
|
||||
msgid "can't read output of 'charconvert'"
|
||||
msgstr "nevar nolasīt 'charconvert' izeju"
|
||||
|
||||
msgid "E506: Can't write to backup file (add ! to override)"
|
||||
msgstr "E506: Nevar ierakstīt rezerves failu (pievienojiet ! lai pārlabotu)"
|
||||
|
||||
msgid "E508: Can't read file for backup (add ! to override)"
|
||||
msgstr "E508: Nevar nolasīt rezerves failu (pievienojiet ! lai pārlabotu)"
|
||||
|
||||
msgid "E510: Can't make backup file (add ! to override)"
|
||||
msgstr "E510: Nevar izveidot rezerves failu (pievienojiet ! lai pārlabotu)"
|
||||
|
||||
msgid "E214: Can't find temp file for writing"
|
||||
msgstr "E214: Nevar atvērt īslaicīgo failu rakstīšanai"
|
||||
|
||||
msgid "E166: Can't open linked file for writing"
|
||||
msgstr "E166: Nevar atvērt rakstīšanai saistīto failu"
|
||||
|
||||
msgid "E212: Can't open file for writing"
|
||||
msgstr "E212: Nevar atvērt failu rakstīšanai"
|
||||
|
||||
msgid "E205: Patchmode: can't save original file"
|
||||
msgstr "E205: Patchmode: nevar saglabāt oriģinālo failu"
|
||||
|
||||
msgid "E206: patchmode: can't touch empty original file"
|
||||
msgstr "E206: patchmode: nevar izveidot jaunu oriģinālo failu"
|
||||
|
||||
msgid "E207: Can't delete backup file"
|
||||
msgstr "E207: nevar izdzēst kopijas failu"
|
||||
|
||||
msgid "don't quit the editor until the file is successfully written!"
|
||||
msgstr "neizejiet no redaktora pirms fails nav veiksmīgi saglabāts!"
|
||||
|
||||
msgid "E217: Can't execute autocommands for ALL events"
|
||||
msgstr "E217: Nevar izpildīt autokomandu VISIEM notikumiem"
|
||||
|
||||
#, c-format
|
||||
msgid "E482: Can't create file %s"
|
||||
msgstr "E482: Nevar izveidot failu %s"
|
||||
|
||||
msgid "E483: Can't get temp file name"
|
||||
msgstr "E483: Nevar iegūt īslaicīgā faila nosaukumu"
|
||||
|
||||
#, c-format
|
||||
msgid "E484: Can't open file %s"
|
||||
msgstr "E484: Nevar atvērt failu %s"
|
||||
|
||||
#, c-format
|
||||
msgid "E485: Can't read file %s"
|
||||
msgstr "E485: Nevar nolasīt failu %s"
|
||||
|
||||
#, c-format
|
||||
msgid "E40: Can't open errorfile %s"
|
||||
msgstr "E40: Nevar atvērt kļūdu failu %s"
|
||||
|
||||
msgid "E255: Couldn't read in sign data!"
|
||||
msgstr "E255: Nevar nolasīt zīmes datus!"
|
||||
|
||||
#, c-format
|
||||
msgid "E254: Cannot allocate color %s"
|
||||
msgstr "E254: Nevar izdalīt krāsu %s"
|
||||
|
||||
#, c-format
|
||||
msgid "E616: vim_SelFile: can't get font %s"
|
||||
msgstr "E616: vim_SelFile: nevar iegūt fontu %s"
|
||||
|
||||
msgid "E614: vim_SelFile: can't return to current directory"
|
||||
msgstr "E614: vim_SelFile: nevar atgriezties uz tekošo mapi"
|
||||
|
||||
msgid "E615: vim_SelFile: can't get current directory"
|
||||
msgstr "E615: vim_SelFile: nevar iegūt tekošo mapi"
|
||||
|
||||
msgid "Vim E458: Cannot allocate colormap entry, some colors may be incorrect"
|
||||
msgstr "Vim E458: Nevar izveidot krāsu karti, iespējams, ir kāda nepareiza krāsa"
|
||||
|
||||
#, c-format
|
||||
msgid "E624: Can't open file \"%s\""
|
||||
msgstr "E624: Nevar atvērt failu \"%s\""
|
||||
|
||||
#, c-format
|
||||
msgid "E457: Can't read PostScript resource file \"%s\""
|
||||
msgstr "E457: Nevar nolasīt PostScript resursu failu \"%s\""
|
||||
|
||||
msgid "E324: Can't open PostScript output file"
|
||||
msgstr "E324: Nevar atvērt PostScript izejas failu"
|
||||
|
||||
#, c-format
|
||||
msgid "E456: Can't open file \"%s\""
|
||||
msgstr "E456: Nevar atrast failu \"%s\""
|
||||
|
||||
msgid "E456: Can't find PostScript resource file \"prolog.ps\""
|
||||
msgstr "E456: Nevar atrast PostScript resursu failu \"prolog.ps\""
|
||||
|
||||
msgid "E456: Can't find PostScript resource file \"cidfont.ps\""
|
||||
msgstr "E456: Nevar atrast PostScript resursu failu \"cidfont.ps\""
|
||||
|
||||
#, c-format
|
||||
msgid "E456: Can't find PostScript resource file \"%s.ps\""
|
||||
msgstr "E456: Nevar atrast PostScript resursu failu \"%s.ps\""
|
||||
|
||||
msgid "couldn't open buffer"
|
||||
msgstr "nevar atvērt buferi"
|
||||
|
||||
msgid "can't delete OutputObject attributes"
|
||||
msgstr "nevar izdzēst OutputObject vērtības"
|
||||
|
||||
msgid "--literal\t\tDon't expand wildcards"
|
||||
msgstr "--literal\t\tNeizvērst aizstājējzīmes"
|
||||
|
||||
msgid "-f or --nofork\tForeground: Don't fork when starting GUI"
|
||||
msgstr "-f jeb --nofork\tPriekšplānā: startējot GUI, neveidot jaunu pavedienu"
|
||||
|
||||
msgid "-f\t\t\tDon't use newcli to open window"
|
||||
msgstr "-f\t\t\tAtverot logu, neveidot jaunu klientu"
|
||||
|
||||
msgid "--noplugin\t\tDon't load plugin scripts"
|
||||
msgstr "--noplugin\t\tNeielādēt spraudņu skriptus"
|
||||
|
||||
msgid "--remote-silent <files> Same, don't complain if there is no server"
|
||||
msgstr "--remote-silent <files> Līdzīgi, nebrīdināt, ja nav servera"
|
||||
|
||||
msgid "--remote-wait-silent <files> Same, don't complain if there is no server"
|
||||
msgstr "--remote-wait-silent <files> Līdzīgi, nebrīdināt, ja nav servera"
|
||||
|
||||
msgid "-background <color>\tUse <color> for the background (also: -bg)"
|
||||
msgstr "-background <krāsa>\tLietot <krāsa> kā fonu (arī: -bg)"
|
||||
|
||||
msgid "-foreground <color>\tUse <color> for normal text (also: -fg)"
|
||||
msgstr "-foreground <krāsa>\tLietot <krāsa> normālam tekstam (arī: -fg)"
|
||||
|
||||
msgid "+reverse\t\tDon't use reverse video (also: +rv)"
|
||||
msgstr "+reverse\t\tNelietot reversu video (arī: +rv)"
|
||||
|
||||
msgid "E288: input method doesn't support any style"
|
||||
msgstr "E288: ievades veids neatbalsta nevienu stilu"
|
||||
|
||||
msgid "E289: input method doesn't support my preedit type"
|
||||
msgstr "E289: ievades veids neatbalsta šādu preedit veidu"
|
||||
|
||||
msgid "E298: Didn't get block nr 0?"
|
||||
msgstr "E298: Neizdevās iegūt bloku nr 0?"
|
||||
|
||||
msgid "E298: Didn't get block nr 1?"
|
||||
msgstr "E298: Neizdevās iegūt blok nr 1?"
|
||||
|
||||
msgid "E298: Didn't get block nr 2?"
|
||||
msgstr "E298: Neizdevās iegūt bloku nr 2?"
|
||||
|
||||
msgid "E304: ml_upd_block0(): Didn't get block 0??"
|
||||
msgstr "E304: ml_upd_block0(): Neizdevās iegūt bloku 0??"
|
||||
|
||||
msgid "Messages maintainer: Bram Moolenaar <Bram@vim.org>"
|
||||
msgstr "Messages maintainer: Valdis Vitolins <valdis.vitolins@odo.lv>"
|
||||
|
||||
msgid "Keys don't match!"
|
||||
msgstr "Atslēgas neatbilst!"
|
||||
|
||||
#, c-format
|
||||
msgid "E344: Can't find directory \"%s\" in cdpath"
|
||||
msgstr "E344: cdpath nevar atrast mapi \"%s\""
|
||||
|
||||
#, c-format
|
||||
msgid "E345: Can't find file \"%s\" in path"
|
||||
msgstr "E345: ceļā nevar atrast failu \"%s\""
|
||||
|
||||
msgid "E597: can't select fontset"
|
||||
msgstr "E597: nevar izvēlēties fontu kopu"
|
||||
|
||||
msgid "E533: can't select wide font"
|
||||
msgstr "E533: nevar izvēlēties plato fontu"
|
||||
|
||||
msgid "VIM: Can't open window!\n"
|
||||
msgstr "VIM: Nevar atvērt logu!\n"
|
||||
|
||||
msgid "E388: Couldn't find definition"
|
||||
msgstr "E388: neatradu definīciju"
|
||||
|
||||
msgid "E389: Couldn't find pattern"
|
||||
msgstr "E389: neatradu šablonu"
|
||||
|
||||
#, c-format
|
||||
msgid "Unrecognized or duplicate item in %s line %d: %s"
|
||||
msgstr "Neatpazīts vai dublēts vienums %s rindā %d: %s"
|
||||
|
||||
#, c-format
|
||||
msgid "Unrecognized flags in %s line %d: %s"
|
||||
msgstr "Neatpazīti karodziņi %s rindā %d: %s"
|
||||
|
||||
#, c-format
|
||||
msgid "E781: .sug file doesn't match .spl file: %s"
|
||||
msgstr "E781: .sug fails neatbilst .spl failam: %s"
|
||||
|
||||
#, c-format
|
||||
msgid "E394: Didn't find region item for %s"
|
||||
msgstr "E394: Neatradu vienuma %s reģionu"
|
||||
|
||||
msgid "E419: FG color unknown"
|
||||
msgstr "E419: Nezināma priekšplāna krāsa"
|
||||
|
||||
msgid "E420: BG color unknown"
|
||||
msgstr "E420: Nezināma fona krāsa"
|
||||
|
||||
#, c-format
|
||||
msgid "E421: Color name or number not recognized: %s"
|
||||
msgstr "E421: Nezināms krāsas %s nosaukums vai numurs"
|
||||
|
||||
msgid "E434: Can't find tag pattern"
|
||||
msgstr "E434: Neatradu tagu paraugu"
|
||||
|
||||
msgid "E435: Couldn't find tag, just guessing!"
|
||||
msgstr "E435: Neatradu tagu, mēģinu uzminēt!"
|
||||
|
||||
msgid "E442: Can't split topleft and botright at the same time"
|
||||
msgstr "E442: Nevar sadalīt kreiso augšu un labo apakšu vienlaicīgi"
|
||||
|
||||
#, c-format
|
||||
msgid "E447: Can't find file \"%s\" in path"
|
||||
msgstr "E447: Failu \"%s\" ceļā nevar atrast"
|
||||
+2659
-1880
File diff suppressed because it is too large
Load Diff
+172
-171
@@ -64,206 +64,207 @@ pum_display(
|
||||
win_T *pvwin;
|
||||
#endif
|
||||
|
||||
redo:
|
||||
def_width = PUM_DEF_WIDTH;
|
||||
max_width = 0;
|
||||
kind_width = 0;
|
||||
extra_width = 0;
|
||||
above_row = 0;
|
||||
below_row = cmdline_row;
|
||||
do
|
||||
{
|
||||
def_width = PUM_DEF_WIDTH;
|
||||
max_width = 0;
|
||||
kind_width = 0;
|
||||
extra_width = 0;
|
||||
above_row = 0;
|
||||
below_row = cmdline_row;
|
||||
|
||||
/* Pretend the pum is already there to avoid that must_redraw is set when
|
||||
* 'cuc' is on. */
|
||||
pum_array = (pumitem_T *)1;
|
||||
validate_cursor_col();
|
||||
pum_array = NULL;
|
||||
/* Pretend the pum is already there to avoid that must_redraw is set
|
||||
* when 'cuc' is on. */
|
||||
pum_array = (pumitem_T *)1;
|
||||
validate_cursor_col();
|
||||
pum_array = NULL;
|
||||
|
||||
row = curwin->w_wrow + W_WINROW(curwin);
|
||||
row = curwin->w_wrow + W_WINROW(curwin);
|
||||
|
||||
#if defined(FEAT_QUICKFIX)
|
||||
FOR_ALL_WINDOWS(pvwin)
|
||||
if (pvwin->w_p_pvw)
|
||||
break;
|
||||
if (pvwin != NULL)
|
||||
{
|
||||
if (W_WINROW(pvwin) < W_WINROW(curwin))
|
||||
above_row = W_WINROW(pvwin) + pvwin->w_height;
|
||||
else if (W_WINROW(pvwin) > W_WINROW(curwin) + curwin->w_height)
|
||||
below_row = W_WINROW(pvwin);
|
||||
}
|
||||
FOR_ALL_WINDOWS(pvwin)
|
||||
if (pvwin->w_p_pvw)
|
||||
break;
|
||||
if (pvwin != NULL)
|
||||
{
|
||||
if (W_WINROW(pvwin) < W_WINROW(curwin))
|
||||
above_row = W_WINROW(pvwin) + pvwin->w_height;
|
||||
else if (W_WINROW(pvwin) > W_WINROW(curwin) + curwin->w_height)
|
||||
below_row = W_WINROW(pvwin);
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Figure out the size and position of the pum.
|
||||
*/
|
||||
if (size < PUM_DEF_HEIGHT)
|
||||
pum_height = size;
|
||||
else
|
||||
pum_height = PUM_DEF_HEIGHT;
|
||||
if (p_ph > 0 && pum_height > p_ph)
|
||||
pum_height = p_ph;
|
||||
|
||||
/* Put the pum below "row" if possible. If there are few lines decide on
|
||||
* where there is more room. */
|
||||
if (row + 2 >= below_row - pum_height
|
||||
&& row - above_row > (below_row - above_row) / 2)
|
||||
{
|
||||
/* pum above "row" */
|
||||
|
||||
/* Leave two lines of context if possible */
|
||||
if (curwin->w_wrow - curwin->w_cline_row >= 2)
|
||||
context_lines = 2;
|
||||
else
|
||||
context_lines = curwin->w_wrow - curwin->w_cline_row;
|
||||
|
||||
if (row >= size + context_lines)
|
||||
{
|
||||
pum_row = row - size - context_lines;
|
||||
/*
|
||||
* Figure out the size and position of the pum.
|
||||
*/
|
||||
if (size < PUM_DEF_HEIGHT)
|
||||
pum_height = size;
|
||||
}
|
||||
else
|
||||
{
|
||||
pum_row = 0;
|
||||
pum_height = row - context_lines;
|
||||
}
|
||||
if (p_ph > 0 && pum_height > p_ph)
|
||||
{
|
||||
pum_row += pum_height - p_ph;
|
||||
pum_height = p_ph;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/* pum below "row" */
|
||||
|
||||
/* Leave two lines of context if possible */
|
||||
if (curwin->w_cline_row + curwin->w_cline_height - curwin->w_wrow >= 3)
|
||||
context_lines = 3;
|
||||
else
|
||||
context_lines = curwin->w_cline_row
|
||||
+ curwin->w_cline_height - curwin->w_wrow;
|
||||
|
||||
pum_row = row + context_lines;
|
||||
if (size > below_row - pum_row)
|
||||
pum_height = below_row - pum_row;
|
||||
else
|
||||
pum_height = size;
|
||||
pum_height = PUM_DEF_HEIGHT;
|
||||
if (p_ph > 0 && pum_height > p_ph)
|
||||
pum_height = p_ph;
|
||||
}
|
||||
|
||||
/* don't display when we only have room for one line */
|
||||
if (pum_height < 1 || (pum_height == 1 && size > 1))
|
||||
return;
|
||||
/* Put the pum below "row" if possible. If there are few lines decide
|
||||
* on where there is more room. */
|
||||
if (row + 2 >= below_row - pum_height
|
||||
&& row - above_row > (below_row - above_row) / 2)
|
||||
{
|
||||
/* pum above "row" */
|
||||
|
||||
/* Leave two lines of context if possible */
|
||||
if (curwin->w_wrow - curwin->w_cline_row >= 2)
|
||||
context_lines = 2;
|
||||
else
|
||||
context_lines = curwin->w_wrow - curwin->w_cline_row;
|
||||
|
||||
if (row >= size + context_lines)
|
||||
{
|
||||
pum_row = row - size - context_lines;
|
||||
pum_height = size;
|
||||
}
|
||||
else
|
||||
{
|
||||
pum_row = 0;
|
||||
pum_height = row - context_lines;
|
||||
}
|
||||
if (p_ph > 0 && pum_height > p_ph)
|
||||
{
|
||||
pum_row += pum_height - p_ph;
|
||||
pum_height = p_ph;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/* pum below "row" */
|
||||
|
||||
/* Leave two lines of context if possible */
|
||||
if (curwin->w_cline_row
|
||||
+ curwin->w_cline_height - curwin->w_wrow >= 3)
|
||||
context_lines = 3;
|
||||
else
|
||||
context_lines = curwin->w_cline_row
|
||||
+ curwin->w_cline_height - curwin->w_wrow;
|
||||
|
||||
pum_row = row + context_lines;
|
||||
if (size > below_row - pum_row)
|
||||
pum_height = below_row - pum_row;
|
||||
else
|
||||
pum_height = size;
|
||||
if (p_ph > 0 && pum_height > p_ph)
|
||||
pum_height = p_ph;
|
||||
}
|
||||
|
||||
/* don't display when we only have room for one line */
|
||||
if (pum_height < 1 || (pum_height == 1 && size > 1))
|
||||
return;
|
||||
|
||||
#if defined(FEAT_QUICKFIX)
|
||||
/* If there is a preview window at the above avoid drawing over it. */
|
||||
if (pvwin != NULL && pum_row < above_row && pum_height > above_row)
|
||||
{
|
||||
pum_row += above_row;
|
||||
pum_height -= above_row;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Compute the width of the widest match and the widest extra. */
|
||||
for (i = 0; i < size; ++i)
|
||||
{
|
||||
w = vim_strsize(array[i].pum_text);
|
||||
if (max_width < w)
|
||||
max_width = w;
|
||||
if (array[i].pum_kind != NULL)
|
||||
/* If there is a preview window at the above avoid drawing over it. */
|
||||
if (pvwin != NULL && pum_row < above_row && pum_height > above_row)
|
||||
{
|
||||
w = vim_strsize(array[i].pum_kind) + 1;
|
||||
if (kind_width < w)
|
||||
kind_width = w;
|
||||
pum_row += above_row;
|
||||
pum_height -= above_row;
|
||||
}
|
||||
if (array[i].pum_extra != NULL)
|
||||
#endif
|
||||
|
||||
/* Compute the width of the widest match and the widest extra. */
|
||||
for (i = 0; i < size; ++i)
|
||||
{
|
||||
w = vim_strsize(array[i].pum_extra) + 1;
|
||||
if (extra_width < w)
|
||||
extra_width = w;
|
||||
w = vim_strsize(array[i].pum_text);
|
||||
if (max_width < w)
|
||||
max_width = w;
|
||||
if (array[i].pum_kind != NULL)
|
||||
{
|
||||
w = vim_strsize(array[i].pum_kind) + 1;
|
||||
if (kind_width < w)
|
||||
kind_width = w;
|
||||
}
|
||||
if (array[i].pum_extra != NULL)
|
||||
{
|
||||
w = vim_strsize(array[i].pum_extra) + 1;
|
||||
if (extra_width < w)
|
||||
extra_width = w;
|
||||
}
|
||||
}
|
||||
}
|
||||
pum_base_width = max_width;
|
||||
pum_kind_width = kind_width;
|
||||
|
||||
/* Calculate column */
|
||||
#ifdef FEAT_RIGHTLEFT
|
||||
if (curwin->w_p_rl)
|
||||
col = W_WINCOL(curwin) + W_WIDTH(curwin) - curwin->w_wcol - 1;
|
||||
else
|
||||
#endif
|
||||
col = W_WINCOL(curwin) + curwin->w_wcol;
|
||||
|
||||
/* if there are more items than room we need a scrollbar */
|
||||
if (pum_height < size)
|
||||
{
|
||||
pum_scrollbar = 1;
|
||||
++max_width;
|
||||
}
|
||||
else
|
||||
pum_scrollbar = 0;
|
||||
|
||||
if (def_width < max_width)
|
||||
def_width = max_width;
|
||||
|
||||
if (((col < Columns - PUM_DEF_WIDTH || col < Columns - max_width)
|
||||
#ifdef FEAT_RIGHTLEFT
|
||||
&& !curwin->w_p_rl)
|
||||
|| (curwin->w_p_rl && (col > PUM_DEF_WIDTH || col > max_width)
|
||||
#endif
|
||||
))
|
||||
{
|
||||
/* align pum column with "col" */
|
||||
pum_col = col;
|
||||
pum_base_width = max_width;
|
||||
pum_kind_width = kind_width;
|
||||
|
||||
/* Calculate column */
|
||||
#ifdef FEAT_RIGHTLEFT
|
||||
if (curwin->w_p_rl)
|
||||
pum_width = pum_col - pum_scrollbar + 1;
|
||||
col = curwin->w_wincol + curwin->w_width - curwin->w_wcol - 1;
|
||||
else
|
||||
#endif
|
||||
pum_width = Columns - pum_col - pum_scrollbar;
|
||||
col = curwin->w_wincol + curwin->w_wcol;
|
||||
|
||||
if (pum_width > max_width + kind_width + extra_width + 1
|
||||
&& pum_width > PUM_DEF_WIDTH)
|
||||
/* if there are more items than room we need a scrollbar */
|
||||
if (pum_height < size)
|
||||
{
|
||||
pum_width = max_width + kind_width + extra_width + 1;
|
||||
if (pum_width < PUM_DEF_WIDTH)
|
||||
pum_width = PUM_DEF_WIDTH;
|
||||
pum_scrollbar = 1;
|
||||
++max_width;
|
||||
}
|
||||
}
|
||||
else if (Columns < def_width)
|
||||
{
|
||||
/* not enough room, will use what we have */
|
||||
#ifdef FEAT_RIGHTLEFT
|
||||
if (curwin->w_p_rl)
|
||||
pum_col = Columns - 1;
|
||||
else
|
||||
#endif
|
||||
pum_col = 0;
|
||||
pum_width = Columns - 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (max_width > PUM_DEF_WIDTH)
|
||||
max_width = PUM_DEF_WIDTH; /* truncate */
|
||||
pum_scrollbar = 0;
|
||||
|
||||
if (def_width < max_width)
|
||||
def_width = max_width;
|
||||
|
||||
if (((col < Columns - PUM_DEF_WIDTH || col < Columns - max_width)
|
||||
#ifdef FEAT_RIGHTLEFT
|
||||
if (curwin->w_p_rl)
|
||||
pum_col = max_width - 1;
|
||||
else
|
||||
&& !curwin->w_p_rl)
|
||||
|| (curwin->w_p_rl && (col > PUM_DEF_WIDTH || col > max_width)
|
||||
#endif
|
||||
pum_col = Columns - max_width;
|
||||
pum_width = max_width - pum_scrollbar;
|
||||
}
|
||||
))
|
||||
{
|
||||
/* align pum column with "col" */
|
||||
pum_col = col;
|
||||
|
||||
pum_array = array;
|
||||
pum_size = size;
|
||||
#ifdef FEAT_RIGHTLEFT
|
||||
if (curwin->w_p_rl)
|
||||
pum_width = pum_col - pum_scrollbar + 1;
|
||||
else
|
||||
#endif
|
||||
pum_width = Columns - pum_col - pum_scrollbar;
|
||||
|
||||
/* Set selected item and redraw. If the window size changed need to redo
|
||||
* the positioning. Limit this to two times, when there is not much
|
||||
* room the window size will keep changing. */
|
||||
if (pum_set_selected(selected, redo_count) && ++redo_count <= 2)
|
||||
goto redo;
|
||||
if (pum_width > max_width + kind_width + extra_width + 1
|
||||
&& pum_width > PUM_DEF_WIDTH)
|
||||
{
|
||||
pum_width = max_width + kind_width + extra_width + 1;
|
||||
if (pum_width < PUM_DEF_WIDTH)
|
||||
pum_width = PUM_DEF_WIDTH;
|
||||
}
|
||||
}
|
||||
else if (Columns < def_width)
|
||||
{
|
||||
/* not enough room, will use what we have */
|
||||
#ifdef FEAT_RIGHTLEFT
|
||||
if (curwin->w_p_rl)
|
||||
pum_col = Columns - 1;
|
||||
else
|
||||
#endif
|
||||
pum_col = 0;
|
||||
pum_width = Columns - 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (max_width > PUM_DEF_WIDTH)
|
||||
max_width = PUM_DEF_WIDTH; /* truncate */
|
||||
#ifdef FEAT_RIGHTLEFT
|
||||
if (curwin->w_p_rl)
|
||||
pum_col = max_width - 1;
|
||||
else
|
||||
#endif
|
||||
pum_col = Columns - max_width;
|
||||
pum_width = max_width - pum_scrollbar;
|
||||
}
|
||||
|
||||
pum_array = array;
|
||||
pum_size = size;
|
||||
|
||||
/* Set selected item and redraw. If the window size changed need to
|
||||
* redo the positioning. Limit this to two times, when there is not
|
||||
* much room the window size will keep changing. */
|
||||
} while (pum_set_selected(selected, redo_count) && ++redo_count <= 2);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -312,7 +313,7 @@ pum_redraw(void)
|
||||
#ifdef FEAT_RIGHTLEFT
|
||||
if (curwin->w_p_rl)
|
||||
{
|
||||
if (pum_col < W_WINCOL(curwin) + W_WIDTH(curwin) - 1)
|
||||
if (pum_col < curwin->w_wincol + curwin->w_width - 1)
|
||||
screen_putchar(' ', row, pum_col + 1, attr);
|
||||
}
|
||||
else
|
||||
|
||||
@@ -33,6 +33,7 @@ void channel_clear(channel_T *channel);
|
||||
void channel_free_all(void);
|
||||
char_u *channel_read_block(channel_T *channel, ch_part_T part, int timeout);
|
||||
void common_channel_read(typval_T *argvars, typval_T *rettv, int raw);
|
||||
void channel_may_read(channel_T *channel, ch_part_T part, char *func);
|
||||
channel_T *channel_fd2channel(sock_T fd, ch_part_T *partp);
|
||||
void channel_handle_events(int only_keep_open);
|
||||
int channel_any_keep_open(void);
|
||||
@@ -40,9 +41,9 @@ void channel_set_nonblock(channel_T *channel, ch_part_T part);
|
||||
int channel_send(channel_T *channel, ch_part_T part, char_u *buf_arg, int len_arg, char *fun);
|
||||
void ch_expr_common(typval_T *argvars, typval_T *rettv, int eval);
|
||||
void ch_raw_common(typval_T *argvars, typval_T *rettv, int eval);
|
||||
int channel_poll_setup(int nfd_in, void *fds_in);
|
||||
int channel_poll_setup(int nfd_in, void *fds_in, int *towait);
|
||||
int channel_poll_check(int ret_in, void *fds_in);
|
||||
int channel_select_setup(int maxfd_in, void *rfds_in, void *wfds_in);
|
||||
int channel_select_setup(int maxfd_in, void *rfds_in, void *wfds_in, struct timeval *tv, struct timeval **tvp);
|
||||
int channel_select_check(int ret_in, void *rfds_in, void *wfds_in);
|
||||
int channel_parse_messages(void);
|
||||
int channel_any_readahead(void);
|
||||
@@ -71,7 +72,4 @@ job_T *job_start(typval_T *argvars, jobopt_T *opt_arg);
|
||||
char *job_status(job_T *job);
|
||||
void job_info(job_T *job, dict_T *dict);
|
||||
int job_stop(job_T *job, typval_T *argvars, char *type);
|
||||
#ifdef FEAT_GUI_MACVIM
|
||||
void channel_read(channel_T *channel, ch_part_T part, char *func);
|
||||
#endif
|
||||
/* vim: set ft=c : */
|
||||
|
||||
@@ -51,6 +51,8 @@ void ex_redraw(exarg_T *eap);
|
||||
int vim_mkdir_emsg(char_u *name, int prot);
|
||||
FILE *open_exfile(char_u *fname, int forceit, char *mode);
|
||||
void update_topline_cursor(void);
|
||||
int save_current_state(save_state_T *sst);
|
||||
void restore_current_state(save_state_T *sst);
|
||||
void ex_normal(exarg_T *eap);
|
||||
void exec_normal_cmd(char_u *cmd, int remap, int silent);
|
||||
void exec_normal(int was_typed);
|
||||
|
||||
@@ -71,6 +71,7 @@ int mb_lefthalve(int row, int col);
|
||||
int mb_fix_col(int col, int row);
|
||||
char_u *enc_skip(char_u *p);
|
||||
char_u *enc_canonize(char_u *enc);
|
||||
char_u *enc_locale_env(char *locale);
|
||||
char_u *enc_locale(void);
|
||||
int encname2codepage(char_u *name);
|
||||
void *my_iconv_open(char_u *to, char_u *from);
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
/* syntax.c */
|
||||
void syntax_start(win_T *wp, linenr_T lnum, proftime_T *syntax_tm);
|
||||
void syn_set_timeout(proftime_T *tm);
|
||||
void syntax_start(win_T *wp, linenr_T lnum);
|
||||
void syn_stack_free_all(synblock_T *block);
|
||||
void syn_stack_apply_changes(buf_T *buf);
|
||||
void syntax_end_parsing(linenr_T lnum);
|
||||
|
||||
@@ -64,6 +64,8 @@ char_u *get_termcode(int i);
|
||||
void del_termcode(char_u *name);
|
||||
void set_mouse_topline(win_T *wp);
|
||||
int check_termcode(int max_offset, char_u *buf, int bufsize, int *buflen);
|
||||
void term_get_fg_color(char_u *r, char_u *g, char_u *b);
|
||||
void term_get_bg_color(char_u *r, char_u *g, char_u *b);
|
||||
char_u *replace_termcodes(char_u *from, char_u **bufp, int from_part, int do_lt, int special);
|
||||
int find_term_bykeys(char_u *src);
|
||||
void show_termcodes(void);
|
||||
|
||||
@@ -267,10 +267,11 @@ OpenPTY(char **ttyn)
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(HAVE_SVR4_PTYS) && !defined(PTY_DONE) && !defined(hpux) && !defined(MACOS_X)
|
||||
#if defined(HAVE_SVR4_PTYS) && !defined(PTY_DONE) && !defined(hpux) \
|
||||
&& !(defined(MACOS_X) && !defined(MAC_OS_X_VERSION_10_6))
|
||||
|
||||
/* NOTE: Even though HPUX can have /dev/ptmx, the code below doesn't work!
|
||||
* Same for Mac OS X Leopard. */
|
||||
* Same for Mac OS X Leopard (10.5). */
|
||||
#define PTY_DONE
|
||||
int
|
||||
OpenPTY(char **ttyn)
|
||||
|
||||
+3
-3
@@ -443,8 +443,8 @@ parse_efm_option(char_u *efm)
|
||||
i = (FMT_PATTERNS * 3) + ((int)STRLEN(efm) << 2);
|
||||
for (round = FMT_PATTERNS; round > 0; )
|
||||
i += (int)STRLEN(fmt_pat[--round].pattern);
|
||||
#ifdef COLON_IN_FILENAME
|
||||
i += 12; /* "%f" can become twelve chars longer */
|
||||
#ifdef BACKSLASH_IN_FILENAME
|
||||
i += 12; /* "%f" can become twelve chars longer (see efm_to_regpat) */
|
||||
#else
|
||||
i += 2; /* "%f" can become two chars longer */
|
||||
#endif
|
||||
@@ -3148,7 +3148,7 @@ ex_copen(exarg_T *eap)
|
||||
{
|
||||
if (cmdmod.split & WSP_VERT)
|
||||
{
|
||||
if (height != W_WIDTH(win))
|
||||
if (height != win->w_width)
|
||||
win_setwidth(height);
|
||||
}
|
||||
else if (height != win->w_height)
|
||||
|
||||
+121
-111
@@ -131,7 +131,7 @@ static void fold_line(win_T *wp, long fold_count, foldinfo_T *foldinfo, linenr_T
|
||||
static void fill_foldcolumn(char_u *p, win_T *wp, int closed, linenr_T lnum);
|
||||
static void copy_text_attr(int off, char_u *buf, int len, int attr);
|
||||
#endif
|
||||
static int win_line(win_T *, linenr_T, int, int, int nochange, proftime_T *syntax_tm);
|
||||
static int win_line(win_T *, linenr_T, int, int, int nochange);
|
||||
static int char_needs_redraw(int off_from, int off_to, int cols);
|
||||
static void draw_vsep_win(win_T *wp, int row);
|
||||
#ifdef FEAT_STL_OPT
|
||||
@@ -622,8 +622,8 @@ update_screen(int type_arg)
|
||||
else
|
||||
{
|
||||
wp->w_redr_type = NOT_VALID;
|
||||
if (W_WINROW(wp) + wp->w_height + W_STATUS_HEIGHT(wp)
|
||||
<= msg_scrolled)
|
||||
if (W_WINROW(wp) + wp->w_height + wp->w_status_height
|
||||
<= msg_scrolled)
|
||||
wp->w_redr_status = TRUE;
|
||||
}
|
||||
}
|
||||
@@ -930,6 +930,7 @@ update_single_line(win_T *wp, linenr_T lnum)
|
||||
#ifdef SYN_TIME_LIMIT
|
||||
/* Set the time limit to 'redrawtime'. */
|
||||
profile_setlimit(p_rdt, &syntax_tm);
|
||||
syn_set_timeout(&syntax_tm);
|
||||
#endif
|
||||
update_prepare();
|
||||
|
||||
@@ -944,13 +945,7 @@ update_single_line(win_T *wp, linenr_T lnum)
|
||||
start_search_hl();
|
||||
prepare_search_hl(wp, lnum);
|
||||
# endif
|
||||
win_line(wp, lnum, row, row + wp->w_lines[j].wl_size, FALSE,
|
||||
#ifdef SYN_TIME_LIMIT
|
||||
&syntax_tm
|
||||
#else
|
||||
NULL
|
||||
#endif
|
||||
);
|
||||
win_line(wp, lnum, row, row + wp->w_lines[j].wl_size, FALSE);
|
||||
# if defined(FEAT_SEARCH_EXTRA)
|
||||
end_search_hl();
|
||||
# endif
|
||||
@@ -960,6 +955,10 @@ update_single_line(win_T *wp, linenr_T lnum)
|
||||
}
|
||||
|
||||
update_finish();
|
||||
|
||||
#ifdef SYN_TIME_LIMIT
|
||||
syn_set_timeout(NULL);
|
||||
#endif
|
||||
}
|
||||
need_cursor_line_redraw = FALSE;
|
||||
}
|
||||
@@ -1805,6 +1804,7 @@ win_update(win_T *wp)
|
||||
#ifdef SYN_TIME_LIMIT
|
||||
/* Set the time limit to 'redrawtime'. */
|
||||
profile_setlimit(p_rdt, &syntax_tm);
|
||||
syn_set_timeout(&syntax_tm);
|
||||
#endif
|
||||
#ifdef FEAT_FOLDING
|
||||
win_foldinfo.fi_level = 0;
|
||||
@@ -2109,13 +2109,7 @@ win_update(win_T *wp)
|
||||
/*
|
||||
* Display one line.
|
||||
*/
|
||||
row = win_line(wp, lnum, srow, wp->w_height, mod_top == 0,
|
||||
#ifdef SYN_TIME_LIMIT
|
||||
&syntax_tm
|
||||
#else
|
||||
NULL
|
||||
#endif
|
||||
);
|
||||
row = win_line(wp, lnum, srow, wp->w_height, mod_top == 0);
|
||||
|
||||
#ifdef FEAT_FOLDING
|
||||
wp->w_lines[idx].wl_folded = FALSE;
|
||||
@@ -2217,10 +2211,10 @@ win_update(win_T *wp)
|
||||
/*
|
||||
* Last line isn't finished: Display "@@@" in the last screen line.
|
||||
*/
|
||||
screen_puts_len((char_u *)"@@", 2, scr_row, W_WINCOL(wp),
|
||||
screen_puts_len((char_u *)"@@", 2, scr_row, wp->w_wincol,
|
||||
HL_ATTR(HLF_AT));
|
||||
screen_fill(scr_row, scr_row + 1,
|
||||
(int)W_WINCOL(wp) + 2, (int)W_ENDCOL(wp),
|
||||
(int)wp->w_wincol + 2, (int)W_ENDCOL(wp),
|
||||
'@', ' ', HL_ATTR(HLF_AT));
|
||||
set_empty_rows(wp, srow);
|
||||
wp->w_botline = lnum;
|
||||
@@ -2275,6 +2269,10 @@ win_update(win_T *wp)
|
||||
win_draw_end(wp, '~', ' ', row, wp->w_height, HLF_EOB);
|
||||
}
|
||||
|
||||
#ifdef SYN_TIME_LIMIT
|
||||
syn_set_timeout(NULL);
|
||||
#endif
|
||||
|
||||
/* Reset the type of redrawing required, the window has been updated. */
|
||||
wp->w_redr_type = 0;
|
||||
#ifdef FEAT_DIFF
|
||||
@@ -2355,8 +2353,8 @@ win_draw_end(
|
||||
if (n > 0)
|
||||
{
|
||||
/* draw the fold column at the right */
|
||||
if (n > W_WIDTH(wp))
|
||||
n = W_WIDTH(wp);
|
||||
if (n > wp->w_width)
|
||||
n = wp->w_width;
|
||||
screen_fill(W_WINROW(wp) + row, W_WINROW(wp) + endrow,
|
||||
W_ENDCOL(wp) - n, (int)W_ENDCOL(wp),
|
||||
' ', ' ', HL_ATTR(HLF_FC));
|
||||
@@ -2368,8 +2366,8 @@ win_draw_end(
|
||||
int nn = n + 2;
|
||||
|
||||
/* draw the sign column left of the fold column */
|
||||
if (nn > W_WIDTH(wp))
|
||||
nn = W_WIDTH(wp);
|
||||
if (nn > wp->w_width)
|
||||
nn = wp->w_width;
|
||||
screen_fill(W_WINROW(wp) + row, W_WINROW(wp) + endrow,
|
||||
W_ENDCOL(wp) - nn, (int)W_ENDCOL(wp) - n,
|
||||
' ', ' ', HL_ATTR(HLF_SC));
|
||||
@@ -2377,7 +2375,7 @@ win_draw_end(
|
||||
}
|
||||
# endif
|
||||
screen_fill(W_WINROW(wp) + row, W_WINROW(wp) + endrow,
|
||||
W_WINCOL(wp), W_ENDCOL(wp) - 1 - FDC_OFF,
|
||||
wp->w_wincol, W_ENDCOL(wp) - 1 - FDC_OFF,
|
||||
c2, c2, HL_ATTR(hl));
|
||||
screen_fill(W_WINROW(wp) + row, W_WINROW(wp) + endrow,
|
||||
W_ENDCOL(wp) - 1 - FDC_OFF, W_ENDCOL(wp) - FDC_OFF,
|
||||
@@ -2394,7 +2392,7 @@ win_draw_end(
|
||||
if (n > wp->w_width)
|
||||
n = wp->w_width;
|
||||
screen_fill(W_WINROW(wp) + row, W_WINROW(wp) + endrow,
|
||||
W_WINCOL(wp), (int)W_WINCOL(wp) + n,
|
||||
wp->w_wincol, (int)wp->w_wincol + n,
|
||||
cmdwin_type, ' ', HL_ATTR(HLF_AT));
|
||||
}
|
||||
#endif
|
||||
@@ -2404,10 +2402,10 @@ win_draw_end(
|
||||
int nn = n + fdc;
|
||||
|
||||
/* draw the fold column at the left */
|
||||
if (nn > W_WIDTH(wp))
|
||||
nn = W_WIDTH(wp);
|
||||
if (nn > wp->w_width)
|
||||
nn = wp->w_width;
|
||||
screen_fill(W_WINROW(wp) + row, W_WINROW(wp) + endrow,
|
||||
W_WINCOL(wp) + n, (int)W_WINCOL(wp) + nn,
|
||||
wp->w_wincol + n, (int)wp->w_wincol + nn,
|
||||
' ', ' ', HL_ATTR(HLF_FC));
|
||||
n = nn;
|
||||
}
|
||||
@@ -2418,16 +2416,16 @@ win_draw_end(
|
||||
int nn = n + 2;
|
||||
|
||||
/* draw the sign column after the fold column */
|
||||
if (nn > W_WIDTH(wp))
|
||||
nn = W_WIDTH(wp);
|
||||
if (nn > wp->w_width)
|
||||
nn = wp->w_width;
|
||||
screen_fill(W_WINROW(wp) + row, W_WINROW(wp) + endrow,
|
||||
W_WINCOL(wp) + n, (int)W_WINCOL(wp) + nn,
|
||||
wp->w_wincol + n, (int)wp->w_wincol + nn,
|
||||
' ', ' ', HL_ATTR(HLF_SC));
|
||||
n = nn;
|
||||
}
|
||||
#endif
|
||||
screen_fill(W_WINROW(wp) + row, W_WINROW(wp) + endrow,
|
||||
W_WINCOL(wp) + FDC_OFF, (int)W_ENDCOL(wp),
|
||||
wp->w_wincol + FDC_OFF, (int)W_ENDCOL(wp),
|
||||
c1, c2, HL_ATTR(hl));
|
||||
}
|
||||
set_empty_rows(wp, row);
|
||||
@@ -2484,7 +2482,7 @@ text_to_screenline(win_T *wp, char_u *text, int col)
|
||||
{
|
||||
cells = (*mb_ptr2cells)(p);
|
||||
c_len = (*mb_ptr2len)(p);
|
||||
if (col + cells > W_WIDTH(wp)
|
||||
if (col + cells > wp->w_width
|
||||
# ifdef FEAT_RIGHTLEFT
|
||||
- (wp->w_p_rl ? col : 0)
|
||||
# endif
|
||||
@@ -2568,8 +2566,8 @@ text_to_screenline(win_T *wp, char_u *text, int col)
|
||||
{
|
||||
int len = (int)STRLEN(text);
|
||||
|
||||
if (len > W_WIDTH(wp) - col)
|
||||
len = W_WIDTH(wp) - col;
|
||||
if (len > wp->w_width - col)
|
||||
len = wp->w_width - col;
|
||||
if (len > 0)
|
||||
{
|
||||
#ifdef FEAT_RIGHTLEFT
|
||||
@@ -2595,7 +2593,7 @@ compute_foldcolumn(win_T *wp, int col)
|
||||
{
|
||||
int fdc = wp->w_p_fdc;
|
||||
int wmw = wp == curwin && p_wmw == 0 ? 1 : p_wmw;
|
||||
int wwidth = W_WIDTH(wp);
|
||||
int wwidth = wp->w_width;
|
||||
|
||||
if (fdc > wwidth - (col + wmw))
|
||||
fdc = wwidth - (col + wmw);
|
||||
@@ -2664,11 +2662,11 @@ fold_line(
|
||||
{
|
||||
int i;
|
||||
|
||||
copy_text_attr(off + W_WIDTH(wp) - fdc - col, buf, fdc,
|
||||
copy_text_attr(off + wp->w_width - fdc - col, buf, fdc,
|
||||
HL_ATTR(HLF_FC));
|
||||
/* reverse the fold column */
|
||||
for (i = 0; i < fdc; ++i)
|
||||
ScreenLines[off + W_WIDTH(wp) - i - 1 - col] = buf[i];
|
||||
ScreenLines[off + wp->w_width - i - 1 - col] = buf[i];
|
||||
}
|
||||
else
|
||||
#endif
|
||||
@@ -2679,7 +2677,7 @@ fold_line(
|
||||
#ifdef FEAT_RIGHTLEFT
|
||||
# define RL_MEMSET(p, v, l) if (wp->w_p_rl) \
|
||||
for (ri = 0; ri < l; ++ri) \
|
||||
ScreenAttrs[off + (W_WIDTH(wp) - (p) - (l)) + ri] = v; \
|
||||
ScreenAttrs[off + (wp->w_width - (p) - (l)) + ri] = v; \
|
||||
else \
|
||||
for (ri = 0; ri < l; ++ri) \
|
||||
ScreenAttrs[off + (p) + ri] = v
|
||||
@@ -2690,13 +2688,13 @@ fold_line(
|
||||
|
||||
/* Set all attributes of the 'number' or 'relativenumber' column and the
|
||||
* text */
|
||||
RL_MEMSET(col, HL_ATTR(HLF_FL), W_WIDTH(wp) - col);
|
||||
RL_MEMSET(col, HL_ATTR(HLF_FL), wp->w_width - col);
|
||||
|
||||
#ifdef FEAT_SIGNS
|
||||
/* If signs are being displayed, add two spaces. */
|
||||
if (signcolumn_on(wp))
|
||||
{
|
||||
len = W_WIDTH(wp) - col;
|
||||
len = wp->w_width - col;
|
||||
if (len > 0)
|
||||
{
|
||||
if (len > 2)
|
||||
@@ -2704,7 +2702,7 @@ fold_line(
|
||||
# ifdef FEAT_RIGHTLEFT
|
||||
if (wp->w_p_rl)
|
||||
/* the line number isn't reversed */
|
||||
copy_text_attr(off + W_WIDTH(wp) - len - col,
|
||||
copy_text_attr(off + wp->w_width - len - col,
|
||||
(char_u *)" ", len, HL_ATTR(HLF_FL));
|
||||
else
|
||||
# endif
|
||||
@@ -2719,7 +2717,7 @@ fold_line(
|
||||
*/
|
||||
if (wp->w_p_nu || wp->w_p_rnu)
|
||||
{
|
||||
len = W_WIDTH(wp) - col;
|
||||
len = wp->w_width - col;
|
||||
if (len > 0)
|
||||
{
|
||||
int w = number_width(wp);
|
||||
@@ -2749,7 +2747,7 @@ fold_line(
|
||||
#ifdef FEAT_RIGHTLEFT
|
||||
if (wp->w_p_rl)
|
||||
/* the line number isn't reversed */
|
||||
copy_text_attr(off + W_WIDTH(wp) - len - col, buf, len,
|
||||
copy_text_attr(off + wp->w_width - len - col, buf, len,
|
||||
HL_ATTR(HLF_FL));
|
||||
else
|
||||
#endif
|
||||
@@ -2777,7 +2775,7 @@ fold_line(
|
||||
if (wp->w_p_rl)
|
||||
col -= txtcol;
|
||||
#endif
|
||||
while (col < W_WIDTH(wp)
|
||||
while (col < wp->w_width
|
||||
#ifdef FEAT_RIGHTLEFT
|
||||
- (wp->w_p_rl ? txtcol : 0)
|
||||
#endif
|
||||
@@ -2839,14 +2837,14 @@ fold_line(
|
||||
if (VIsual_mode == Ctrl_V)
|
||||
{
|
||||
/* Visual block mode: highlight the chars part of the block */
|
||||
if (wp->w_old_cursor_fcol + txtcol < (colnr_T)W_WIDTH(wp))
|
||||
if (wp->w_old_cursor_fcol + txtcol < (colnr_T)wp->w_width)
|
||||
{
|
||||
if (wp->w_old_cursor_lcol != MAXCOL
|
||||
&& wp->w_old_cursor_lcol + txtcol
|
||||
< (colnr_T)W_WIDTH(wp))
|
||||
< (colnr_T)wp->w_width)
|
||||
len = wp->w_old_cursor_lcol;
|
||||
else
|
||||
len = W_WIDTH(wp) - txtcol;
|
||||
len = wp->w_width - txtcol;
|
||||
RL_MEMSET(wp->w_old_cursor_fcol + txtcol, HL_ATTR(HLF_V),
|
||||
len - (int)wp->w_old_cursor_fcol);
|
||||
}
|
||||
@@ -2854,7 +2852,7 @@ fold_line(
|
||||
else
|
||||
{
|
||||
/* Set all attributes of the text */
|
||||
RL_MEMSET(txtcol, HL_ATTR(HLF_V), W_WIDTH(wp) - txtcol);
|
||||
RL_MEMSET(txtcol, HL_ATTR(HLF_V), wp->w_width - txtcol);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2874,7 +2872,7 @@ fold_line(
|
||||
txtcol -= wp->w_skipcol;
|
||||
else
|
||||
txtcol -= wp->w_leftcol;
|
||||
if (txtcol >= 0 && txtcol < W_WIDTH(wp))
|
||||
if (txtcol >= 0 && txtcol < wp->w_width)
|
||||
ScreenAttrs[off + txtcol] = hl_combine_attr(
|
||||
ScreenAttrs[off + txtcol], HL_ATTR(HLF_MC));
|
||||
txtcol = old_txtcol;
|
||||
@@ -2890,14 +2888,14 @@ fold_line(
|
||||
txtcol -= wp->w_skipcol;
|
||||
else
|
||||
txtcol -= wp->w_leftcol;
|
||||
if (txtcol >= 0 && txtcol < W_WIDTH(wp))
|
||||
if (txtcol >= 0 && txtcol < wp->w_width)
|
||||
ScreenAttrs[off + txtcol] = hl_combine_attr(
|
||||
ScreenAttrs[off + txtcol], HL_ATTR(HLF_CUC));
|
||||
}
|
||||
#endif
|
||||
|
||||
screen_line(row + W_WINROW(wp), W_WINCOL(wp), (int)W_WIDTH(wp),
|
||||
(int)W_WIDTH(wp), FALSE);
|
||||
screen_line(row + W_WINROW(wp), wp->w_wincol, (int)wp->w_width,
|
||||
(int)wp->w_width, FALSE);
|
||||
|
||||
/*
|
||||
* Update w_cline_height and w_cline_folded if the cursor line was
|
||||
@@ -3000,8 +2998,7 @@ win_line(
|
||||
linenr_T lnum,
|
||||
int startrow,
|
||||
int endrow,
|
||||
int nochange UNUSED, /* not updating for changed text */
|
||||
proftime_T *syntax_tm UNUSED)
|
||||
int nochange UNUSED) /* not updating for changed text */
|
||||
{
|
||||
int col = 0; /* visual column on screen */
|
||||
unsigned off; /* offset in ScreenLines/ScreenAttrs */
|
||||
@@ -3216,7 +3213,7 @@ win_line(
|
||||
* error, stop syntax highlighting. */
|
||||
save_did_emsg = did_emsg;
|
||||
did_emsg = FALSE;
|
||||
syntax_start(wp, lnum, syntax_tm);
|
||||
syntax_start(wp, lnum);
|
||||
if (did_emsg)
|
||||
wp->w_s->b_syn_error = TRUE;
|
||||
else
|
||||
@@ -3614,7 +3611,7 @@ win_line(
|
||||
# ifdef FEAT_SYN_HL
|
||||
/* Need to restart syntax highlighting for this line. */
|
||||
if (has_syntax)
|
||||
syntax_start(wp, lnum, syntax_tm);
|
||||
syntax_start(wp, lnum);
|
||||
# endif
|
||||
}
|
||||
#endif
|
||||
@@ -3727,7 +3724,7 @@ win_line(
|
||||
/* Rightleft window: process the text in the normal direction, but put
|
||||
* it in current_ScreenLine[] from right to left. Start at the
|
||||
* rightmost column of the window. */
|
||||
col = W_WIDTH(wp) - 1;
|
||||
col = wp->w_width - 1;
|
||||
off += col;
|
||||
}
|
||||
#endif
|
||||
@@ -3966,7 +3963,7 @@ win_line(
|
||||
n_extra = col + 1;
|
||||
else
|
||||
# endif
|
||||
n_extra = W_WIDTH(wp) - col;
|
||||
n_extra = wp->w_width - col;
|
||||
char_attr = HL_ATTR(HLF_DED);
|
||||
}
|
||||
# endif
|
||||
@@ -4019,7 +4016,7 @@ win_line(
|
||||
#endif
|
||||
)
|
||||
{
|
||||
screen_line(screen_row, W_WINCOL(wp), col, -(int)W_WIDTH(wp),
|
||||
screen_line(screen_row, wp->w_wincol, col, -(int)wp->w_width,
|
||||
HAS_RIGHTLEFT(wp->w_p_rl));
|
||||
/* Pretend we have finished updating the window. Except when
|
||||
* 'cursorcolumn' is set. */
|
||||
@@ -4171,6 +4168,10 @@ win_line(
|
||||
if (shl != &search_hl && cur != NULL)
|
||||
cur = cur->next;
|
||||
}
|
||||
/* Only highlight one character after the last column. */
|
||||
if (*ptr == NUL && (did_line_attr >= 1
|
||||
|| (wp->w_p_list && lcs_eol_one == -1)))
|
||||
search_attr = 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -4288,7 +4289,7 @@ win_line(
|
||||
# ifdef FEAT_RIGHTLEFT
|
||||
wp->w_p_rl ? (col <= 0) :
|
||||
# endif
|
||||
(col >= W_WIDTH(wp) - 1))
|
||||
(col >= wp->w_width - 1))
|
||||
&& (*mb_char2cells)(mb_c) == 2)
|
||||
{
|
||||
c = '>';
|
||||
@@ -4489,7 +4490,7 @@ win_line(
|
||||
# ifdef FEAT_RIGHTLEFT
|
||||
wp->w_p_rl ? (col <= 0) :
|
||||
# endif
|
||||
(col >= W_WIDTH(wp) - 1))
|
||||
(col >= wp->w_width - 1))
|
||||
&& (*mb_char2cells)(mb_c) == 2)
|
||||
{
|
||||
c = '>';
|
||||
@@ -4706,7 +4707,7 @@ win_line(
|
||||
/* TODO: is passing p for start of the line OK? */
|
||||
n_extra = win_lbr_chartabsize(wp, line, p, (colnr_T)vcol,
|
||||
NULL) - 1;
|
||||
if (c == TAB && n_extra + col > W_WIDTH(wp))
|
||||
if (c == TAB && n_extra + col > wp->w_width)
|
||||
n_extra = (int)wp->w_buffer->b_p_ts
|
||||
- vcol % (int)wp->w_buffer->b_p_ts - 1;
|
||||
|
||||
@@ -4923,7 +4924,7 @@ win_line(
|
||||
# ifdef FEAT_RIGHTLEFT
|
||||
wp->w_p_rl ? (col >= 0) :
|
||||
# endif
|
||||
(col < W_WIDTH(wp)))
|
||||
(col < wp->w_width))
|
||||
&& !(noinvcur
|
||||
&& lnum == wp->w_cursor.lnum
|
||||
&& (colnr_T)vcol == wp->w_virtcol)))
|
||||
@@ -5034,7 +5035,7 @@ win_line(
|
||||
# ifdef FEAT_RIGHTLEFT
|
||||
wp->w_p_rl ? (col >= 0) :
|
||||
# endif
|
||||
(col < W_WIDTH(wp))))
|
||||
(col < wp->w_width)))
|
||||
{
|
||||
c = ' ';
|
||||
--ptr; /* put it back at the NUL */
|
||||
@@ -5057,7 +5058,7 @@ win_line(
|
||||
# ifdef FEAT_CONCEAL
|
||||
- boguscols
|
||||
# endif
|
||||
< W_WIDTH(wp))))
|
||||
< wp->w_width)))
|
||||
{
|
||||
/* Highlight until the right side of the window */
|
||||
c = ' ';
|
||||
@@ -5067,7 +5068,9 @@ win_line(
|
||||
++did_line_attr;
|
||||
|
||||
/* don't do search HL for the rest of the line */
|
||||
if (line_attr != 0 && char_attr == search_attr && col > 0)
|
||||
if (line_attr != 0 && char_attr == search_attr
|
||||
&& (did_line_attr > 1
|
||||
|| (wp->w_p_list && lcs_eol > 0)))
|
||||
char_attr = line_attr;
|
||||
# ifdef FEAT_DIFF
|
||||
if (diff_hlf == HLF_TXD)
|
||||
@@ -5178,7 +5181,7 @@ win_line(
|
||||
{
|
||||
# ifdef FEAT_RIGHTLEFT
|
||||
if (wp->w_p_rl)
|
||||
wp->w_wcol = W_WIDTH(wp) - col + boguscols - 1;
|
||||
wp->w_wcol = wp->w_width - col + boguscols - 1;
|
||||
else
|
||||
# endif
|
||||
wp->w_wcol = col - boguscols;
|
||||
@@ -5327,6 +5330,13 @@ win_line(
|
||||
#ifdef FEAT_SEARCH_EXTRA
|
||||
/* highlight 'hlsearch' match at end of line */
|
||||
|| (prevcol_hl_flag == TRUE
|
||||
# ifdef FEAT_SYN_HL
|
||||
&& !(wp->w_p_cul && lnum == wp->w_cursor.lnum
|
||||
&& !(wp == curwin && VIsual_active))
|
||||
# endif
|
||||
# ifdef FEAT_DIFF
|
||||
&& diff_hlf == (hlf_T)0
|
||||
# endif
|
||||
# if defined(LINE_ATTR)
|
||||
&& did_line_attr <= 1
|
||||
# endif
|
||||
@@ -5345,7 +5355,7 @@ win_line(
|
||||
else
|
||||
#endif
|
||||
{
|
||||
if (col >= W_WIDTH(wp))
|
||||
if (col >= wp->w_width)
|
||||
n = -1;
|
||||
}
|
||||
if (n != 0)
|
||||
@@ -5449,7 +5459,7 @@ win_line(
|
||||
if (((wp->w_p_cuc
|
||||
&& (int)wp->w_virtcol >= VCOL_HLC - eol_hl_off
|
||||
&& (int)wp->w_virtcol <
|
||||
W_WIDTH(wp) * (row - startrow + 1) + v
|
||||
wp->w_width * (row - startrow + 1) + v
|
||||
&& lnum != wp->w_cursor.lnum)
|
||||
|| draw_color_col)
|
||||
# ifdef FEAT_RIGHTLEFT
|
||||
@@ -5468,7 +5478,7 @@ win_line(
|
||||
if (rightmost_vcol < color_cols[i])
|
||||
rightmost_vcol = color_cols[i];
|
||||
|
||||
while (col < W_WIDTH(wp))
|
||||
while (col < wp->w_width)
|
||||
{
|
||||
ScreenLines[off] = ' ';
|
||||
#ifdef FEAT_MBYTE
|
||||
@@ -5495,8 +5505,8 @@ win_line(
|
||||
}
|
||||
#endif
|
||||
|
||||
screen_line(screen_row, W_WINCOL(wp), col,
|
||||
(int)W_WIDTH(wp), HAS_RIGHTLEFT(wp->w_p_rl));
|
||||
screen_line(screen_row, wp->w_wincol, col,
|
||||
(int)wp->w_width, HAS_RIGHTLEFT(wp->w_p_rl));
|
||||
row++;
|
||||
|
||||
/*
|
||||
@@ -5526,7 +5536,7 @@ win_line(
|
||||
#ifdef FEAT_RIGHTLEFT
|
||||
wp->w_p_rl ? col == 0 :
|
||||
#endif
|
||||
col == W_WIDTH(wp) - 1)
|
||||
col == wp->w_width - 1)
|
||||
&& (*ptr != NUL
|
||||
|| (wp->w_p_list && lcs_eol_one > 0)
|
||||
|| (n_extra && (c_extra != NUL || *p_extra != NUL))))
|
||||
@@ -5791,7 +5801,7 @@ win_line(
|
||||
#ifdef FEAT_RIGHTLEFT
|
||||
wp->w_p_rl ? (col < 0) :
|
||||
#endif
|
||||
(col >= W_WIDTH(wp)))
|
||||
(col >= wp->w_width))
|
||||
&& (*ptr != NUL
|
||||
#ifdef FEAT_DIFF
|
||||
|| filler_todo > 0
|
||||
@@ -5801,12 +5811,12 @@ win_line(
|
||||
)
|
||||
{
|
||||
#ifdef FEAT_CONCEAL
|
||||
screen_line(screen_row, W_WINCOL(wp), col - boguscols,
|
||||
(int)W_WIDTH(wp), HAS_RIGHTLEFT(wp->w_p_rl));
|
||||
screen_line(screen_row, wp->w_wincol, col - boguscols,
|
||||
(int)wp->w_width, HAS_RIGHTLEFT(wp->w_p_rl));
|
||||
boguscols = 0;
|
||||
#else
|
||||
screen_line(screen_row, W_WINCOL(wp), col,
|
||||
(int)W_WIDTH(wp), HAS_RIGHTLEFT(wp->w_p_rl));
|
||||
screen_line(screen_row, wp->w_wincol, col,
|
||||
(int)wp->w_width, HAS_RIGHTLEFT(wp->w_p_rl));
|
||||
#endif
|
||||
++row;
|
||||
++screen_row;
|
||||
@@ -5843,7 +5853,7 @@ win_line(
|
||||
#ifdef FEAT_DIFF
|
||||
&& filler_todo <= 0
|
||||
#endif
|
||||
&& W_WIDTH(wp) == Columns)
|
||||
&& wp->w_width == Columns)
|
||||
{
|
||||
/* Remember that the line wraps, used for modeless copy. */
|
||||
LineWraps[screen_row - 1] = TRUE;
|
||||
@@ -5880,7 +5890,7 @@ win_line(
|
||||
* then output the same character again to let the
|
||||
* terminal know about the wrap. If the terminal doesn't
|
||||
* auto-wrap, we overwrite the character. */
|
||||
if (screen_cur_col != W_WIDTH(wp))
|
||||
if (screen_cur_col != wp->w_width)
|
||||
screen_char(LineOffset[screen_row - 1]
|
||||
+ (unsigned)Columns - 1,
|
||||
screen_row - 1, (int)(Columns - 1));
|
||||
@@ -5906,7 +5916,7 @@ win_line(
|
||||
#ifdef FEAT_RIGHTLEFT
|
||||
if (wp->w_p_rl)
|
||||
{
|
||||
col = W_WIDTH(wp) - 1; /* col is not used if breaking! */
|
||||
col = wp->w_width - 1; /* col is not used if breaking! */
|
||||
off += col;
|
||||
}
|
||||
#endif
|
||||
@@ -6903,9 +6913,9 @@ win_redr_status(win_T *wp)
|
||||
len += (int)STRLEN(p + len);
|
||||
}
|
||||
|
||||
this_ru_col = ru_col - (Columns - W_WIDTH(wp));
|
||||
if (this_ru_col < (W_WIDTH(wp) + 1) / 2)
|
||||
this_ru_col = (W_WIDTH(wp) + 1) / 2;
|
||||
this_ru_col = ru_col - (Columns - wp->w_width);
|
||||
if (this_ru_col < (wp->w_width + 1) / 2)
|
||||
this_ru_col = (wp->w_width + 1) / 2;
|
||||
if (this_ru_col <= 1)
|
||||
{
|
||||
p = (char_u *)"<"; /* No room for file name! */
|
||||
@@ -6944,14 +6954,14 @@ win_redr_status(win_T *wp)
|
||||
}
|
||||
|
||||
row = W_WINROW(wp) + wp->w_height;
|
||||
screen_puts(p, row, W_WINCOL(wp), attr);
|
||||
screen_fill(row, row + 1, len + W_WINCOL(wp),
|
||||
this_ru_col + W_WINCOL(wp), fillchar, fillchar, attr);
|
||||
screen_puts(p, row, wp->w_wincol, attr);
|
||||
screen_fill(row, row + 1, len + wp->w_wincol,
|
||||
this_ru_col + wp->w_wincol, fillchar, fillchar, attr);
|
||||
|
||||
if (get_keymap_str(wp, (char_u *)"<%s>", NameBuff, MAXPATHL)
|
||||
&& (int)(this_ru_col - len) > (int)(STRLEN(NameBuff) + 1))
|
||||
screen_puts(NameBuff, row, (int)(this_ru_col - STRLEN(NameBuff)
|
||||
- 1 + W_WINCOL(wp)), attr);
|
||||
- 1 + wp->w_wincol), attr);
|
||||
|
||||
#ifdef FEAT_CMDL_INFO
|
||||
win_redr_ruler(wp, TRUE);
|
||||
@@ -7136,7 +7146,7 @@ win_redr_custom(
|
||||
{
|
||||
row = W_WINROW(wp) + wp->w_height;
|
||||
fillchar = fillchar_status(&attr, wp);
|
||||
maxwidth = W_WIDTH(wp);
|
||||
maxwidth = wp->w_width;
|
||||
|
||||
if (draw_ruler)
|
||||
{
|
||||
@@ -7152,10 +7162,10 @@ win_redr_custom(
|
||||
if (*stl++ != '(')
|
||||
stl = p_ruf;
|
||||
}
|
||||
col = ru_col - (Columns - W_WIDTH(wp));
|
||||
if (col < (W_WIDTH(wp) + 1) / 2)
|
||||
col = (W_WIDTH(wp) + 1) / 2;
|
||||
maxwidth = W_WIDTH(wp) - col;
|
||||
col = ru_col - (Columns - wp->w_width);
|
||||
if (col < (wp->w_width + 1) / 2)
|
||||
col = (wp->w_width + 1) / 2;
|
||||
maxwidth = wp->w_width - col;
|
||||
if (!wp->w_status_height)
|
||||
{
|
||||
row = Rows - 1;
|
||||
@@ -7180,7 +7190,7 @@ win_redr_custom(
|
||||
# endif
|
||||
}
|
||||
|
||||
col += W_WINCOL(wp);
|
||||
col += wp->w_wincol;
|
||||
}
|
||||
|
||||
if (maxwidth <= 0)
|
||||
@@ -9448,11 +9458,11 @@ setcursor(void)
|
||||
{
|
||||
validate_cursor();
|
||||
windgoto(W_WINROW(curwin) + curwin->w_wrow,
|
||||
W_WINCOL(curwin) + (
|
||||
curwin->w_wincol + (
|
||||
#ifdef FEAT_RIGHTLEFT
|
||||
/* With 'rightleft' set and the cursor on a double-wide
|
||||
* character, position it on the leftmost column. */
|
||||
curwin->w_p_rl ? ((int)W_WIDTH(curwin) - curwin->w_wcol - (
|
||||
curwin->w_p_rl ? ((int)curwin->w_width - curwin->w_wcol - (
|
||||
# ifdef FEAT_MBYTE
|
||||
(has_mbyte
|
||||
&& (*mb_ptr2cells)(ml_get_cursor()) == 2
|
||||
@@ -9520,12 +9530,12 @@ win_ins_lines(
|
||||
{
|
||||
wp->w_redr_status = TRUE;
|
||||
redraw_cmdline = TRUE;
|
||||
nextrow = W_WINROW(wp) + wp->w_height + W_STATUS_HEIGHT(wp);
|
||||
nextrow = W_WINROW(wp) + wp->w_height + wp->w_status_height;
|
||||
lastrow = nextrow + line_count;
|
||||
if (lastrow > Rows)
|
||||
lastrow = Rows;
|
||||
screen_fill(nextrow - line_count, lastrow - line_count,
|
||||
W_WINCOL(wp), (int)W_ENDCOL(wp),
|
||||
wp->w_wincol, (int)W_ENDCOL(wp),
|
||||
' ', ' ', 0);
|
||||
}
|
||||
|
||||
@@ -9636,7 +9646,7 @@ win_do_lines(
|
||||
if (row + line_count >= wp->w_height)
|
||||
{
|
||||
screen_fill(W_WINROW(wp) + row, W_WINROW(wp) + wp->w_height,
|
||||
W_WINCOL(wp), (int)W_ENDCOL(wp),
|
||||
wp->w_wincol, (int)W_ENDCOL(wp),
|
||||
' ', ' ', 0);
|
||||
return OK;
|
||||
}
|
||||
@@ -9658,7 +9668,7 @@ win_do_lines(
|
||||
* a character in the lower right corner of the scroll region may cause a
|
||||
* scroll-up .
|
||||
*/
|
||||
if (scroll_region || W_WIDTH(wp) != Columns)
|
||||
if (scroll_region || wp->w_width != Columns)
|
||||
{
|
||||
if (scroll_region && (wp->w_width == Columns || *T_CSV != NUL))
|
||||
scroll_region_set(wp, row);
|
||||
@@ -10760,21 +10770,21 @@ redraw_win_toolbar(win_T *wp)
|
||||
|
||||
/* TODO: use fewer spaces if there is not enough room */
|
||||
for (menu = wp->w_winbar->children;
|
||||
menu != NULL && col < W_WIDTH(wp); menu = menu->next)
|
||||
menu != NULL && col < wp->w_width; menu = menu->next)
|
||||
{
|
||||
space_to_screenline(off + col, fill_attr);
|
||||
if (++col >= W_WIDTH(wp))
|
||||
if (++col >= wp->w_width)
|
||||
break;
|
||||
if (col > 1)
|
||||
{
|
||||
space_to_screenline(off + col, fill_attr);
|
||||
if (++col >= W_WIDTH(wp))
|
||||
if (++col >= wp->w_width)
|
||||
break;
|
||||
}
|
||||
|
||||
wp->w_winbar_items[item_idx].wb_startcol = col;
|
||||
space_to_screenline(off + col, button_attr);
|
||||
if (++col >= W_WIDTH(wp))
|
||||
if (++col >= wp->w_width)
|
||||
break;
|
||||
|
||||
next_col = text_to_screenline(wp, menu->name, col);
|
||||
@@ -10787,20 +10797,20 @@ redraw_win_toolbar(win_T *wp)
|
||||
wp->w_winbar_items[item_idx].wb_menu = menu;
|
||||
++item_idx;
|
||||
|
||||
if (col >= W_WIDTH(wp))
|
||||
if (col >= wp->w_width)
|
||||
break;
|
||||
space_to_screenline(off + col, button_attr);
|
||||
++col;
|
||||
}
|
||||
while (col < W_WIDTH(wp))
|
||||
while (col < wp->w_width)
|
||||
{
|
||||
space_to_screenline(off + col, fill_attr);
|
||||
++col;
|
||||
}
|
||||
wp->w_winbar_items[item_idx].wb_menu = NULL; /* end marker */
|
||||
|
||||
screen_line(wp->w_winrow, W_WINCOL(wp), (int)W_WIDTH(wp),
|
||||
(int)W_WIDTH(wp), FALSE);
|
||||
screen_line(wp->w_winrow, wp->w_wincol, (int)wp->w_width,
|
||||
(int)wp->w_width, FALSE);
|
||||
}
|
||||
#endif
|
||||
/*
|
||||
@@ -10931,8 +10941,8 @@ win_redr_ruler(win_T *wp, int always)
|
||||
{
|
||||
row = W_WINROW(wp) + wp->w_height;
|
||||
fillchar = fillchar_status(&attr, wp);
|
||||
off = W_WINCOL(wp);
|
||||
width = W_WIDTH(wp);
|
||||
off = wp->w_wincol;
|
||||
width = wp->w_width;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
+15
-10
@@ -2617,7 +2617,7 @@ showmatch(
|
||||
if (!curwin->w_p_wrap)
|
||||
getvcol(curwin, lpos, NULL, &vcol, NULL);
|
||||
if (curwin->w_p_wrap || (vcol >= curwin->w_leftcol
|
||||
&& vcol < curwin->w_leftcol + W_WIDTH(curwin)))
|
||||
&& vcol < curwin->w_leftcol + curwin->w_width))
|
||||
{
|
||||
mpos = *lpos; /* save the pos, update_screen() may change it */
|
||||
save_cursor = curwin->w_cursor;
|
||||
@@ -4620,7 +4620,7 @@ current_quote(
|
||||
|
||||
#endif /* FEAT_TEXTOBJ */
|
||||
|
||||
static int is_one_char(char_u *pattern, int move, pos_T *cur);
|
||||
static int is_one_char(char_u *pattern, int move, pos_T *cur, int direction);
|
||||
|
||||
/*
|
||||
* Find next search match under cursor, cursor at end.
|
||||
@@ -4641,6 +4641,7 @@ current_search(
|
||||
int flags = 0;
|
||||
pos_T save_VIsual = VIsual;
|
||||
int one_char;
|
||||
int direction = forward ? FORWARD : BACKWARD;
|
||||
|
||||
/* wrapping should not occur */
|
||||
p_ws = FALSE;
|
||||
@@ -4667,8 +4668,10 @@ current_search(
|
||||
else
|
||||
orig_pos = pos = curwin->w_cursor;
|
||||
|
||||
/* Is the pattern is zero-width? */
|
||||
one_char = is_one_char(spats[last_idx].pat, TRUE, &curwin->w_cursor);
|
||||
/* Is the pattern is zero-width?, this time, don't care about the direction
|
||||
*/
|
||||
one_char = is_one_char(spats[last_idx].pat, TRUE, &curwin->w_cursor,
|
||||
FORWARD);
|
||||
if (one_char == -1)
|
||||
{
|
||||
p_ws = old_p_ws;
|
||||
@@ -4727,11 +4730,11 @@ current_search(
|
||||
}
|
||||
|
||||
start_pos = pos;
|
||||
flags = forward ? SEARCH_END : 0;
|
||||
flags = forward ? SEARCH_END : SEARCH_START;
|
||||
|
||||
/* Check again from the current cursor position,
|
||||
* since the next match might actually by only one char wide */
|
||||
one_char = is_one_char(spats[last_idx].pat, FALSE, &pos);
|
||||
one_char = is_one_char(spats[last_idx].pat, FALSE, &pos, direction);
|
||||
if (one_char < 0)
|
||||
/* search failed, abort */
|
||||
return FAIL;
|
||||
@@ -4739,7 +4742,7 @@ current_search(
|
||||
/* move to match, except for zero-width matches, in which case, we are
|
||||
* already on the next match */
|
||||
if (!one_char)
|
||||
result = searchit(curwin, curbuf, &pos, (forward ? FORWARD : BACKWARD),
|
||||
result = searchit(curwin, curbuf, &pos, direction,
|
||||
spats[last_idx].pat, 0L, flags | SEARCH_KEEP, RE_SEARCH, 0,
|
||||
NULL, NULL);
|
||||
|
||||
@@ -4788,10 +4791,11 @@ current_search(
|
||||
* Check if the pattern is one character long or zero-width.
|
||||
* If move is TRUE, check from the beginning of the buffer, else from position
|
||||
* "cur".
|
||||
* "direction" is FORWARD or BACKWARD.
|
||||
* Returns TRUE, FALSE or -1 for failure.
|
||||
*/
|
||||
static int
|
||||
is_one_char(char_u *pattern, int move, pos_T *cur)
|
||||
is_one_char(char_u *pattern, int move, pos_T *cur, int direction)
|
||||
{
|
||||
regmmatch_T regmatch;
|
||||
int nmatched = 0;
|
||||
@@ -4821,7 +4825,7 @@ is_one_char(char_u *pattern, int move, pos_T *cur)
|
||||
flag = SEARCH_START;
|
||||
}
|
||||
|
||||
if (searchit(curwin, curbuf, &pos, FORWARD, pattern, 1,
|
||||
if (searchit(curwin, curbuf, &pos, direction, pattern, 1,
|
||||
SEARCH_KEEP + flag, RE_SEARCH, 0, NULL, NULL) != FAIL)
|
||||
{
|
||||
/* Zero-width pattern should match somewhere, then we can check if
|
||||
@@ -4834,7 +4838,8 @@ is_one_char(char_u *pattern, int move, pos_T *cur)
|
||||
pos.lnum, regmatch.startpos[0].col, NULL, NULL);
|
||||
if (!nmatched)
|
||||
break;
|
||||
} while (regmatch.startpos[0].col < pos.col);
|
||||
} while (direction == FORWARD ? regmatch.startpos[0].col < pos.col
|
||||
: regmatch.startpos[0].col > pos.col);
|
||||
|
||||
if (!called_emsg)
|
||||
{
|
||||
|
||||
+17
-6
@@ -2712,12 +2712,10 @@ struct window_S
|
||||
int w_height; /* number of rows in window, excluding
|
||||
status/command/winbar line(s) */
|
||||
int w_status_height; /* number of status lines (0 or 1) */
|
||||
int w_wincol; /* Leftmost column of window in screen.
|
||||
use W_WINCOL() */
|
||||
int w_width; /* Width of window, excluding separation.
|
||||
use W_WIDTH() */
|
||||
int w_vsep_width; /* Number of separator columns (0 or 1).
|
||||
use W_VSEP_WIDTH() */
|
||||
int w_wincol; /* Leftmost column of window in screen. */
|
||||
int w_width; /* Width of window, excluding separation. */
|
||||
int w_vsep_width; /* Number of separator columns (0 or 1). */
|
||||
|
||||
/*
|
||||
* === start of cached values ====
|
||||
*/
|
||||
@@ -3426,3 +3424,16 @@ typedef struct lval_S
|
||||
dictitem_T *ll_di; /* The dictitem or NULL */
|
||||
char_u *ll_newkey; /* New key for Dict in alloc. mem or NULL. */
|
||||
} lval_T;
|
||||
|
||||
/* Structure used to save the current state. Used when executing Normal mode
|
||||
* commands while in any other mode. */
|
||||
typedef struct {
|
||||
int save_msg_scroll;
|
||||
int save_restart_edit;
|
||||
int save_msg_didout;
|
||||
int save_State;
|
||||
int save_insertmode;
|
||||
int save_finish_op;
|
||||
int save_opcount;
|
||||
tasave_T tabuf;
|
||||
} save_state_T;
|
||||
|
||||
+94
-36
@@ -368,7 +368,7 @@ static win_T *syn_win; /* current window for highlighting */
|
||||
static buf_T *syn_buf; /* current buffer for highlighting */
|
||||
static synblock_T *syn_block; /* current buffer for highlighting */
|
||||
#ifdef FEAT_RELTIME
|
||||
static proftime_T *syn_tm;
|
||||
static proftime_T *syn_tm; /* timeout limit */
|
||||
#endif
|
||||
static linenr_T current_lnum = 0; /* lnum of current state */
|
||||
static colnr_T current_col = 0; /* column of current state */
|
||||
@@ -489,6 +489,18 @@ static int get_id_list(char_u **arg, int keylen, short **list, int skip);
|
||||
static void syn_combine_list(short **clstr1, short **clstr2, int list_op);
|
||||
static void syn_incl_toplevel(int id, int *flagsp);
|
||||
|
||||
#if defined(FEAT_RELTIME) || defined(PROTO)
|
||||
/*
|
||||
* Set the timeout used for syntax highlighting.
|
||||
* Use NULL to reset, no timeout.
|
||||
*/
|
||||
void
|
||||
syn_set_timeout(proftime_T *tm)
|
||||
{
|
||||
syn_tm = tm;
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Start the syntax recognition for a line. This function is normally called
|
||||
* from the screen updating, once for each displayed line.
|
||||
@@ -497,7 +509,7 @@ static void syn_incl_toplevel(int id, int *flagsp);
|
||||
* window.
|
||||
*/
|
||||
void
|
||||
syntax_start(win_T *wp, linenr_T lnum, proftime_T *syntax_tm UNUSED)
|
||||
syntax_start(win_T *wp, linenr_T lnum)
|
||||
{
|
||||
synstate_T *p;
|
||||
synstate_T *last_valid = NULL;
|
||||
@@ -527,9 +539,6 @@ syntax_start(win_T *wp, linenr_T lnum, proftime_T *syntax_tm UNUSED)
|
||||
}
|
||||
changedtick = CHANGEDTICK(syn_buf);
|
||||
syn_win = wp;
|
||||
#ifdef FEAT_RELTIME
|
||||
syn_tm = syntax_tm;
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Allocate syntax stack when needed.
|
||||
@@ -6569,7 +6578,7 @@ syn_get_id(
|
||||
if (wp->w_buffer != syn_buf
|
||||
|| lnum != current_lnum
|
||||
|| col < current_col)
|
||||
syntax_start(wp, lnum, NULL);
|
||||
syntax_start(wp, lnum);
|
||||
else if (wp->w_buffer == syn_buf
|
||||
&& lnum == current_lnum
|
||||
&& col > current_col)
|
||||
@@ -6645,7 +6654,7 @@ syn_get_foldlevel(win_T *wp, long lnum)
|
||||
# endif
|
||||
)
|
||||
{
|
||||
syntax_start(wp, lnum, NULL);
|
||||
syntax_start(wp, lnum);
|
||||
|
||||
for (i = 0; i < current_state.ga_len; ++i)
|
||||
if (CUR_STATE(i).si_flags & HL_FOLD)
|
||||
@@ -7006,7 +7015,7 @@ static char *(highlight_init_light[]) = {
|
||||
CENT("ToolbarLine term=underline ctermbg=LightGrey",
|
||||
"ToolbarLine term=underline ctermbg=LightGrey guibg=LightGrey"),
|
||||
CENT("ToolbarButton cterm=bold ctermfg=White ctermbg=DarkGrey",
|
||||
"ToolbarButton cterm=bold ctermfg=White ctermbg=DarkGrey gui=bold guifg=White guibg=DarkGrey"),
|
||||
"ToolbarButton cterm=bold ctermfg=White ctermbg=DarkGrey gui=bold guifg=White guibg=Grey40"),
|
||||
#endif
|
||||
NULL
|
||||
};
|
||||
@@ -7102,7 +7111,7 @@ static char *(highlight_init_dark[]) = {
|
||||
#endif
|
||||
#ifdef FEAT_MENU
|
||||
CENT("ToolbarLine term=underline ctermbg=DarkGrey",
|
||||
"ToolbarLine term=underline ctermbg=DarkGrey guibg=DarkGrey"),
|
||||
"ToolbarLine term=underline ctermbg=DarkGrey guibg=Grey50"),
|
||||
CENT("ToolbarButton cterm=bold ctermfg=Black ctermbg=LightGrey",
|
||||
"ToolbarButton cterm=bold ctermfg=Black ctermbg=LightGrey gui=bold guifg=Black guibg=LightGrey"),
|
||||
#endif
|
||||
@@ -7341,6 +7350,12 @@ lookup_color(int idx, int foreground, int *boldp)
|
||||
else
|
||||
color = color_numbers_8[idx];
|
||||
}
|
||||
#ifdef FEAT_TERMRESPONSE
|
||||
if (t_colors >= 256 && color == 15 && is_mac_terminal)
|
||||
/* Terminal.app has a bug: 15 is light grey. Use white
|
||||
* from the color cube instead. */
|
||||
color = 231;
|
||||
#endif
|
||||
}
|
||||
return color;
|
||||
}
|
||||
@@ -7369,6 +7384,7 @@ do_highlight(
|
||||
int id;
|
||||
int idx;
|
||||
struct hl_group item_before;
|
||||
int did_change = FALSE;
|
||||
int dodefault = FALSE;
|
||||
int doclear = FALSE;
|
||||
int dolink = FALSE;
|
||||
@@ -7779,6 +7795,7 @@ do_highlight(
|
||||
/* GUI not started yet, always accept the name. */
|
||||
vim_free(HL_TABLE()[idx].sg_font_name);
|
||||
HL_TABLE()[idx].sg_font_name = vim_strsave(arg);
|
||||
did_change = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -7807,6 +7824,7 @@ do_highlight(
|
||||
gui_mch_free_fontset(temp_sg_fontset);
|
||||
vim_free(HL_TABLE()[idx].sg_font_name);
|
||||
HL_TABLE()[idx].sg_font_name = vim_strsave(arg);
|
||||
did_change = TRUE;
|
||||
}
|
||||
else
|
||||
HL_TABLE()[idx].sg_fontset = temp_sg_fontset;
|
||||
@@ -7818,6 +7836,7 @@ do_highlight(
|
||||
gui_mch_free_font(temp_sg_font);
|
||||
vim_free(HL_TABLE()[idx].sg_font_name);
|
||||
HL_TABLE()[idx].sg_font_name = vim_strsave(arg);
|
||||
did_change = TRUE;
|
||||
}
|
||||
else
|
||||
HL_TABLE()[idx].sg_font = temp_sg_font;
|
||||
@@ -7962,6 +7981,8 @@ do_highlight(
|
||||
else if (STRCMP(key, "GUIFG") == 0)
|
||||
{
|
||||
#if defined(FEAT_GUI) || defined(FEAT_EVAL)
|
||||
char_u **namep = &HL_TABLE()[idx].sg_gui_fg_name;
|
||||
|
||||
if (!init || !(HL_TABLE()[idx].sg_set & SG_GUI))
|
||||
{
|
||||
if (!init)
|
||||
@@ -7974,22 +7995,34 @@ do_highlight(
|
||||
{
|
||||
HL_TABLE()[idx].sg_gui_fg = i;
|
||||
# endif
|
||||
vim_free(HL_TABLE()[idx].sg_gui_fg_name);
|
||||
if (STRCMP(arg, "NONE") != 0)
|
||||
HL_TABLE()[idx].sg_gui_fg_name = vim_strsave(arg);
|
||||
else
|
||||
HL_TABLE()[idx].sg_gui_fg_name = NULL;
|
||||
if (*namep == NULL || STRCMP(*namep, arg) != 0)
|
||||
{
|
||||
vim_free(*namep);
|
||||
if (STRCMP(arg, "NONE") != 0)
|
||||
*namep = vim_strsave(arg);
|
||||
else
|
||||
*namep = NULL;
|
||||
did_change = TRUE;
|
||||
}
|
||||
# if defined(FEAT_GUI) || defined(FEAT_TERMGUICOLORS)
|
||||
# ifdef FEAT_GUI_X11
|
||||
if (is_menu_group)
|
||||
if (is_menu_group && gui.menu_fg_pixel != i)
|
||||
{
|
||||
gui.menu_fg_pixel = i;
|
||||
if (is_scrollbar_group)
|
||||
do_colors = TRUE;
|
||||
}
|
||||
if (is_scrollbar_group && gui.scroll_fg_pixel != i)
|
||||
{
|
||||
gui.scroll_fg_pixel = i;
|
||||
do_colors = TRUE;
|
||||
}
|
||||
# ifdef FEAT_BEVAL
|
||||
if (is_tooltip_group)
|
||||
if (is_tooltip_group && gui.tooltip_fg_pixel != i)
|
||||
{
|
||||
gui.tooltip_fg_pixel = i;
|
||||
do_colors = TRUE;
|
||||
}
|
||||
# endif
|
||||
do_colors = TRUE;
|
||||
# endif
|
||||
}
|
||||
# endif
|
||||
@@ -7999,6 +8032,8 @@ do_highlight(
|
||||
else if (STRCMP(key, "GUIBG") == 0)
|
||||
{
|
||||
#if defined(FEAT_GUI) || defined(FEAT_EVAL)
|
||||
char_u **namep = &HL_TABLE()[idx].sg_gui_bg_name;
|
||||
|
||||
if (!init || !(HL_TABLE()[idx].sg_set & SG_GUI))
|
||||
{
|
||||
if (!init)
|
||||
@@ -8011,22 +8046,34 @@ do_highlight(
|
||||
{
|
||||
HL_TABLE()[idx].sg_gui_bg = i;
|
||||
# endif
|
||||
vim_free(HL_TABLE()[idx].sg_gui_bg_name);
|
||||
if (STRCMP(arg, "NONE") != 0)
|
||||
HL_TABLE()[idx].sg_gui_bg_name = vim_strsave(arg);
|
||||
else
|
||||
HL_TABLE()[idx].sg_gui_bg_name = NULL;
|
||||
if (*namep == NULL || STRCMP(*namep, arg) != 0)
|
||||
{
|
||||
vim_free(*namep);
|
||||
if (STRCMP(arg, "NONE") != 0)
|
||||
*namep = vim_strsave(arg);
|
||||
else
|
||||
*namep = NULL;
|
||||
did_change = TRUE;
|
||||
}
|
||||
# if defined(FEAT_GUI) || defined(FEAT_TERMGUICOLORS)
|
||||
# ifdef FEAT_GUI_X11
|
||||
if (is_menu_group)
|
||||
if (is_menu_group && gui.menu_bg_pixel != i)
|
||||
{
|
||||
gui.menu_bg_pixel = i;
|
||||
if (is_scrollbar_group)
|
||||
do_colors = TRUE;
|
||||
}
|
||||
if (is_scrollbar_group && gui.scroll_bg_pixel != i)
|
||||
{
|
||||
gui.scroll_bg_pixel = i;
|
||||
do_colors = TRUE;
|
||||
}
|
||||
# ifdef FEAT_BEVAL
|
||||
if (is_tooltip_group)
|
||||
if (is_tooltip_group && gui.tooltip_bg_pixel != i)
|
||||
{
|
||||
gui.tooltip_bg_pixel = i;
|
||||
do_colors = TRUE;
|
||||
}
|
||||
# endif
|
||||
do_colors = TRUE;
|
||||
# endif
|
||||
}
|
||||
# endif
|
||||
@@ -8036,6 +8083,8 @@ do_highlight(
|
||||
else if (STRCMP(key, "GUISP") == 0)
|
||||
{
|
||||
#if defined(FEAT_GUI) || defined(FEAT_EVAL)
|
||||
char_u **namep = &HL_TABLE()[idx].sg_gui_sp_name;
|
||||
|
||||
if (!init || !(HL_TABLE()[idx].sg_set & SG_GUI))
|
||||
{
|
||||
if (!init)
|
||||
@@ -8047,11 +8096,15 @@ do_highlight(
|
||||
{
|
||||
HL_TABLE()[idx].sg_gui_sp = i;
|
||||
# endif
|
||||
vim_free(HL_TABLE()[idx].sg_gui_sp_name);
|
||||
if (STRCMP(arg, "NONE") != 0)
|
||||
HL_TABLE()[idx].sg_gui_sp_name = vim_strsave(arg);
|
||||
else
|
||||
HL_TABLE()[idx].sg_gui_sp_name = NULL;
|
||||
if (*namep == NULL || STRCMP(*namep, arg) != 0)
|
||||
{
|
||||
vim_free(*namep);
|
||||
if (STRCMP(arg, "NONE") != 0)
|
||||
*namep = vim_strsave(arg);
|
||||
else
|
||||
*namep = NULL;
|
||||
did_change = TRUE;
|
||||
}
|
||||
# ifdef FEAT_GUI
|
||||
}
|
||||
# endif
|
||||
@@ -8220,13 +8273,18 @@ do_highlight(
|
||||
|
||||
/* Only call highlight_changed() once, after a sequence of highlight
|
||||
* commands, and only if an attribute actually changed. */
|
||||
if (memcmp(&HL_TABLE()[idx], &item_before, sizeof(item_before)) != 0
|
||||
if ((did_change
|
||||
|| memcmp(&HL_TABLE()[idx], &item_before, sizeof(item_before)) != 0)
|
||||
#if defined(FEAT_GUI) || defined(FEAT_TERMGUICOLORS)
|
||||
&& !did_highlight_changed
|
||||
#endif
|
||||
)
|
||||
{
|
||||
redraw_all_later(NOT_VALID);
|
||||
/* Do not trigger a redraw when highlighting is changed while
|
||||
* redrawing. This may happen when evaluating 'statusline' changes the
|
||||
* StatusLine group. */
|
||||
if (!updating_screen)
|
||||
redraw_all_later(NOT_VALID);
|
||||
need_highlight_changed = TRUE;
|
||||
}
|
||||
}
|
||||
@@ -9548,7 +9606,7 @@ syn_name2attr(char_u *name)
|
||||
int id = syn_name2id(name);
|
||||
|
||||
if (id != 0)
|
||||
return syn_id2attr(syn_get_final_id(id));
|
||||
return syn_id2attr(id);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -9747,7 +9805,7 @@ syn_id2colors(int hl_id, guicolor_T *fgp, guicolor_T *bgp)
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(FEAT_TERMINAL) || defined(PROT)
|
||||
#if defined(FEAT_TERMINAL) || defined(PROTO)
|
||||
void
|
||||
syn_id2cterm_bg(int hl_id, int *fgp, int *bgp)
|
||||
{
|
||||
|
||||
@@ -1,10 +1,15 @@
|
||||
# A very (if not the most) simplistic Makefile for MSVC
|
||||
|
||||
SUBSYSTEM = console
|
||||
!if "$(SUBSYSTEM_VER)" != ""
|
||||
SUBSYSTEM = $(SUBSYSTEM),$(SUBSYSTEM_VER)
|
||||
!endif
|
||||
|
||||
CC=cl
|
||||
CFLAGS=/O2 /nologo
|
||||
|
||||
tee.exe: tee.obj
|
||||
$(CC) $(CFLAGS) /Fo$@ $**
|
||||
$(CC) $(CFLAGS) /Fo$@ $** /link /subsystem:$(SUBSYSTEM)
|
||||
|
||||
tee.obj: tee.c
|
||||
$(CC) $(CFLAGS) /c $**
|
||||
|
||||
+119
-27
@@ -125,6 +125,17 @@ static int crv_status = STATUS_GET;
|
||||
/* Request Cursor position report: */
|
||||
static int u7_status = STATUS_GET;
|
||||
|
||||
# ifdef FEAT_TERMINAL
|
||||
/* Request foreground color report: */
|
||||
static int rfg_status = STATUS_GET;
|
||||
static int fg_r = 0;
|
||||
static int fg_g = 0;
|
||||
static int fg_b = 0;
|
||||
static int bg_r = 255;
|
||||
static int bg_g = 255;
|
||||
static int bg_b = 255;
|
||||
# endif
|
||||
|
||||
/* Request background color report: */
|
||||
static int rbg_status = STATUS_GET;
|
||||
|
||||
@@ -882,6 +893,7 @@ static struct builtin_term builtin_termcaps[] =
|
||||
{(int)KS_CGP, IF_EB("\033[13t", ESC_STR "[13t")},
|
||||
# endif
|
||||
{(int)KS_CRV, IF_EB("\033[>c", ESC_STR "[>c")},
|
||||
{(int)KS_RFG, IF_EB("\033]10;?\007", ESC_STR "]10;?\007")},
|
||||
{(int)KS_RBG, IF_EB("\033]11;?\007", ESC_STR "]11;?\007")},
|
||||
{(int)KS_U7, IF_EB("\033[6n", ESC_STR "[6n")},
|
||||
# ifdef FEAT_TERMGUICOLORS
|
||||
@@ -1185,6 +1197,7 @@ static struct builtin_term builtin_termcaps[] =
|
||||
# endif
|
||||
{(int)KS_CRV, "[CRV]"},
|
||||
{(int)KS_U7, "[U7]"},
|
||||
{(int)KS_RFG, "[RFG]"},
|
||||
{(int)KS_RBG, "[RBG]"},
|
||||
{K_UP, "[KU]"},
|
||||
{K_DOWN, "[KD]"},
|
||||
@@ -1614,7 +1627,7 @@ set_termname(char_u *term)
|
||||
{KS_TS, "ts"}, {KS_FS, "fs"},
|
||||
{KS_CWP, "WP"}, {KS_CWS, "WS"},
|
||||
{KS_CSI, "SI"}, {KS_CEI, "EI"},
|
||||
{KS_U7, "u7"}, {KS_RBG, "RB"},
|
||||
{KS_U7, "u7"}, {KS_RFG, "RF"}, {KS_RBG, "RB"},
|
||||
{KS_8F, "8f"}, {KS_8B, "8b"},
|
||||
{KS_CBE, "BE"}, {KS_CBD, "BD"},
|
||||
{KS_CPS, "PS"}, {KS_CPE, "PE"},
|
||||
@@ -3277,11 +3290,10 @@ set_shellsize(int width, int height, int mustset)
|
||||
if (pum_visible())
|
||||
{
|
||||
redraw_later(NOT_VALID);
|
||||
ins_compl_show_pum(); /* This includes the redraw. */
|
||||
ins_compl_show_pum();
|
||||
}
|
||||
else
|
||||
#endif
|
||||
update_screen(NOT_VALID);
|
||||
update_screen(NOT_VALID);
|
||||
if (redrawing())
|
||||
setcursor();
|
||||
}
|
||||
@@ -3327,6 +3339,9 @@ settmode(int tmode)
|
||||
* them. */
|
||||
if (tmode != TMODE_RAW && (crv_status == STATUS_SENT
|
||||
|| u7_status == STATUS_SENT
|
||||
#ifdef FEAT_TERMINAL
|
||||
|| rfg_status == STATUS_SENT
|
||||
#endif
|
||||
|| rbg_status == STATUS_SENT
|
||||
|| rbm_status == STATUS_SENT
|
||||
|| rcs_status == STATUS_SENT))
|
||||
@@ -3398,6 +3413,9 @@ stoptermcap(void)
|
||||
/* May need to discard T_CRV, T_U7 or T_RBG response. */
|
||||
if (crv_status == STATUS_SENT
|
||||
|| u7_status == STATUS_SENT
|
||||
# ifdef FEAT_TERMINAL
|
||||
|| rfg_status == STATUS_SENT
|
||||
# endif
|
||||
|| rbg_status == STATUS_SENT
|
||||
|| rbm_status == STATUS_SENT
|
||||
|| rcs_status == STATUS_SENT)
|
||||
@@ -3515,16 +3533,30 @@ may_req_bg_color(void)
|
||||
{
|
||||
if (can_get_termresponse() && starting == 0)
|
||||
{
|
||||
/* Only request background if t_RB is set and 'background' wasn't
|
||||
* changed. */
|
||||
if (rbg_status == STATUS_GET
|
||||
&& *T_RBG != NUL
|
||||
&& !option_was_set((char_u *)"bg"))
|
||||
int didit = FALSE;
|
||||
|
||||
# ifdef FEAT_TERMINAL
|
||||
/* Only request foreground if t_RF is set. */
|
||||
if (rfg_status == STATUS_GET && *T_RFG != NUL)
|
||||
{
|
||||
LOG_TR("Sending FG request");
|
||||
out_str(T_RFG);
|
||||
rfg_status = STATUS_SENT;
|
||||
didit = TRUE;
|
||||
}
|
||||
# endif
|
||||
|
||||
/* Only request background if t_RB is set. */
|
||||
if (rbg_status == STATUS_GET && *T_RBG != NUL)
|
||||
{
|
||||
LOG_TR("Sending BG request");
|
||||
out_str(T_RBG);
|
||||
rbg_status = STATUS_SENT;
|
||||
didit = TRUE;
|
||||
}
|
||||
|
||||
if (didit)
|
||||
{
|
||||
/* check for the characters now, otherwise they might be eaten by
|
||||
* get_keystroke() */
|
||||
out_flush();
|
||||
@@ -3822,8 +3854,8 @@ scroll_region_set(win_T *wp, int off)
|
||||
OUT_STR(tgoto((char *)T_CS, W_WINROW(wp) + wp->w_height - 1,
|
||||
W_WINROW(wp) + off));
|
||||
if (*T_CSV != NUL && wp->w_width != Columns)
|
||||
OUT_STR(tgoto((char *)T_CSV, W_WINCOL(wp) + wp->w_width - 1,
|
||||
W_WINCOL(wp)));
|
||||
OUT_STR(tgoto((char *)T_CSV, wp->w_wincol + wp->w_width - 1,
|
||||
wp->w_wincol));
|
||||
screen_start(); /* don't know where cursor is now */
|
||||
}
|
||||
|
||||
@@ -4564,7 +4596,10 @@ check_termcode(
|
||||
/* Mac Terminal.app sends 1;95;0 */
|
||||
if (version == 95
|
||||
&& STRNCMP(tp + extra - 2, "1;95;0c", 7) == 0)
|
||||
{
|
||||
is_not_xterm = TRUE;
|
||||
is_mac_terminal = TRUE;
|
||||
}
|
||||
|
||||
/* Gnome terminal sends 1;3801;0, 1;4402;0 or 1;2501;0.
|
||||
* xfce4-terminal sends 1;2802;0.
|
||||
@@ -4692,46 +4727,72 @@ check_termcode(
|
||||
}
|
||||
}
|
||||
|
||||
/* Check for background color response from the terminal:
|
||||
/* Check for fore/background color response from the terminal:
|
||||
*
|
||||
* {lead}11;rgb:{rrrr}/{gggg}/{bbbb}{tail}
|
||||
* {lead}{code};rgb:{rrrr}/{gggg}/{bbbb}{tail}
|
||||
*
|
||||
* {code} is 10 for foreground, 11 for background
|
||||
* {lead} can be <Esc>] or OSC
|
||||
* {tail} can be '\007', <Esc>\ or STERM.
|
||||
*
|
||||
* Consume any code that starts with "{lead}11;", it's also
|
||||
* possible that "rgba" is following.
|
||||
*/
|
||||
else if (*T_RBG != NUL
|
||||
else if ((*T_RBG != NUL || *T_RFG != NUL)
|
||||
&& ((tp[0] == ESC && len >= 2 && tp[1] == ']')
|
||||
|| tp[0] == OSC))
|
||||
{
|
||||
j = 1 + (tp[0] == ESC);
|
||||
if (len >= j + 3 && (argp[0] != '1'
|
||||
|| argp[1] != '1' || argp[2] != ';'))
|
||||
|| (argp[1] != '1' && argp[1] != '0')
|
||||
|| argp[2] != ';'))
|
||||
i = 0; /* no match */
|
||||
else
|
||||
for (i = j; i < len; ++i)
|
||||
if (tp[i] == '\007' || (tp[0] == OSC ? tp[i] == STERM
|
||||
: (tp[i] == ESC && i + 1 < len && tp[i + 1] == '\\')))
|
||||
{
|
||||
int is_bg = argp[1] == '1';
|
||||
|
||||
if (i - j >= 21 && STRNCMP(tp + j + 3, "rgb:", 4) == 0
|
||||
&& tp[j + 11] == '/' && tp[j + 16] == '/'
|
||||
&& !option_was_set((char_u *)"bg"))
|
||||
&& tp[j + 11] == '/' && tp[j + 16] == '/')
|
||||
{
|
||||
char *newval = (3 * '6' < tp[j+7] + tp[j+12]
|
||||
int rval = hexhex2nr(tp + j + 7);
|
||||
int gval = hexhex2nr(tp + j + 12);
|
||||
int bval = hexhex2nr(tp + j + 17);
|
||||
|
||||
if (is_bg)
|
||||
{
|
||||
char *newval = (3 * '6' < tp[j+7] + tp[j+12]
|
||||
+ tp[j+17]) ? "light" : "dark";
|
||||
|
||||
LOG_TR("Received RBG response");
|
||||
rbg_status = STATUS_GOT;
|
||||
if (STRCMP(p_bg, newval) != 0)
|
||||
{
|
||||
/* value differs, apply it */
|
||||
set_option_value((char_u *)"bg", 0L,
|
||||
LOG_TR("Received RBG response");
|
||||
rbg_status = STATUS_GOT;
|
||||
#ifdef FEAT_TERMINAL
|
||||
bg_r = rval;
|
||||
bg_g = gval;
|
||||
bg_b = bval;
|
||||
#endif
|
||||
if (!option_was_set((char_u *)"bg")
|
||||
&& STRCMP(p_bg, newval) != 0)
|
||||
{
|
||||
/* value differs, apply it */
|
||||
set_option_value((char_u *)"bg", 0L,
|
||||
(char_u *)newval, 0);
|
||||
reset_option_was_set((char_u *)"bg");
|
||||
redraw_asap(CLEAR);
|
||||
reset_option_was_set((char_u *)"bg");
|
||||
redraw_asap(CLEAR);
|
||||
}
|
||||
}
|
||||
#ifdef FEAT_TERMINAL
|
||||
else
|
||||
{
|
||||
LOG_TR("Received RFG response");
|
||||
rfg_status = STATUS_GOT;
|
||||
fg_r = rval;
|
||||
fg_g = gval;
|
||||
fg_b = bval;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
/* got finished code: consume it */
|
||||
@@ -4739,7 +4800,8 @@ check_termcode(
|
||||
key_name[1] = (int)KE_IGNORE;
|
||||
slen = i + 1 + (tp[i] == ESC);
|
||||
# ifdef FEAT_EVAL
|
||||
set_vim_var_string(VV_TERMRGBRESP, tp, slen);
|
||||
set_vim_var_string(is_bg ? VV_TERMRBGRESP
|
||||
: VV_TERMRFGRESP, tp, slen);
|
||||
# endif
|
||||
break;
|
||||
}
|
||||
@@ -5772,6 +5834,36 @@ check_termcode(
|
||||
return 0; /* no match found */
|
||||
}
|
||||
|
||||
#if (defined(FEAT_TERMINAL) && defined(FEAT_TERMRESPONSE)) || defined(PROTO)
|
||||
/*
|
||||
* Get the text foreground color, if known.
|
||||
*/
|
||||
void
|
||||
term_get_fg_color(char_u *r, char_u *g, char_u *b)
|
||||
{
|
||||
if (rfg_status == STATUS_GOT)
|
||||
{
|
||||
*r = fg_r;
|
||||
*g = fg_g;
|
||||
*b = fg_b;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Get the text background color, if known.
|
||||
*/
|
||||
void
|
||||
term_get_bg_color(char_u *r, char_u *g, char_u *b)
|
||||
{
|
||||
if (rbg_status == STATUS_GOT)
|
||||
{
|
||||
*r = bg_r;
|
||||
*g = bg_g;
|
||||
*b = bg_b;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Replace any terminal code strings in from[] with the equivalent internal
|
||||
* vim representation. This is used for the "from" and "to" part of a
|
||||
|
||||
@@ -88,6 +88,7 @@ enum SpecialKey
|
||||
KS_CGP, /* get window position */
|
||||
KS_CWS, /* set window size in characters */
|
||||
KS_CRV, /* request version string */
|
||||
KS_RFG, /* request foreground color */
|
||||
KS_RBG, /* request background color */
|
||||
KS_CSI, /* start insert mode (bar cursor) */
|
||||
KS_CEI, /* end insert mode (block cursor) */
|
||||
@@ -185,6 +186,7 @@ extern char_u *(term_strings[]); /* current terminal strings */
|
||||
#define T_CEI (TERM_STR(KS_CEI)) /* end insert mode */
|
||||
#define T_CSR (TERM_STR(KS_CSR)) /* start replace mode */
|
||||
#define T_CRV (TERM_STR(KS_CRV)) /* request version string */
|
||||
#define T_RFG (TERM_STR(KS_RFG)) /* request foreground RGB */
|
||||
#define T_RBG (TERM_STR(KS_RBG)) /* request background RGB */
|
||||
#define T_OP (TERM_STR(KS_OP)) /* original color pair */
|
||||
#define T_U7 (TERM_STR(KS_U7)) /* request cursor position */
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user