diff --git a/Filelist b/Filelist index dafe5342cd..7334e5ed56 100644 --- a/Filelist +++ b/Filelist @@ -93,6 +93,7 @@ SRC_ALL = \ src/vim.h \ src/winclip.c \ src/window.c \ + src/tee/tee.c \ src/xxd/xxd.c \ src/main.aap \ src/testdir/main.aap \ @@ -263,6 +264,7 @@ SRC_UNIX = \ src/workshop.h \ src/wsdebug.c \ src/wsdebug.h \ + src/tee/Makefile \ src/xxd/Makefile \ # source files for both DOS and Unix @@ -314,6 +316,7 @@ SRC_DOS = \ src/Make_dvc.mak \ src/Make_ming.mak \ src/Make_mvc.mak \ + tools/rename.bat \ src/bigvim.bat \ src/bigvim64.bat \ src/msvcsetup.bat \ @@ -357,6 +360,7 @@ SRC_DOS = \ src/vimrun.c \ src/xpm_w32.c \ src/xpm_w32.h \ + src/tee/Make_mvc.mak \ src/xxd/Make_bc5.mak \ src/xxd/Make_ming.mak \ src/xxd/Make_mvc.mak \ diff --git a/Makefile b/Makefile index df9bb88875..cdc4a76fe5 100644 --- a/Makefile +++ b/Makefile @@ -51,12 +51,9 @@ all install uninstall tools config configure reconfig proto depend lint tags typ # # dossrc vim##src.zip sources for MS-DOS # dosrt vim##rt.zip runtime for MS-DOS -# dosbin vim##d16.zip binary for MS-DOS 16 bits -# vim##d32.zip binary for MS-DOS 32 bits -# vim##w32.zip binary for Win32 +# dosbin vim##w32.zip binary for Win32 # gvim##.zip binary for GUI Win32 # gvim##ole.zip OLE exe for Win32 GUI -# gvim##_s.zip exe for Win32s GUI # # OBSOLETE # amisrc vim##src.tgz sources for Amiga @@ -73,15 +70,6 @@ all install uninstall tools config configure reconfig proto depend lint tags typ MAJOR = 7 MINOR = 4 -# Uncomment this line if the Win32s version is to be included. -# DOSBIN_S = dosbin_s - -# Uncomment this line if the 16 bit DOS version is to be included. -# DOSBIN_D16 = dosbin_d16 - -# Uncomment this line if the 32 bit DOS version is to be included. -# DOSBIN_D32 = dosbin_d32 - # CHECKLIST for creating a new version: # # - Update Vim version number. For a test version in: src/version.h, Contents, @@ -149,17 +137,21 @@ MINOR = 4 # - > cd src # > nmake -f Make_mvc.mak # - Run the tests: -# > rm testdir/*.out testdir/*.res +# > nmake -f Make_mvc.mak testclean # > nmake -f Make_mvc.mak test # - check the output. -# - Rename vim.exe to vimw32.exe, xxd/xxd.exe to xxdw32.exe. -# - Rename vim.pdb to vimw32.pdb. -# - Rename install.exe to installw32.exe and uninstal.exe to uninstalw32.exe. +# - Rename (using tools/rename.bat): +# vim.exe to vimw32.exe +# tee/tee.exe to teew32.exe +# xxd/xxd.exe to xxdw32.exe +# vim.pdb to vimw32.pdb +# install.exe to installw32.exe +# uninstal.exe to uninstalw32.exe # Win32 GUI version build: # - > cd src # > nmake -f Make_mvc.mak GUI=yes # - Run the tests: -# > rm testdir/*.out testdir/*.res +# > 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). @@ -173,7 +165,7 @@ MINOR = 4 # Adjust bigvim.bat to match the version of each interface you want. # > bigvim.bat # - Run the tests: -# > rm testdir/*.out testdir/*.res +# > nmake -f Make_mvc.mak testclean # > nmake -f Make_mvc.mak testgvim # - check the output. # - Rename "gvim.exe" to "gvim_ole.exe". @@ -187,7 +179,8 @@ MINOR = 4 # NSIS self installing exe: # - To get NSIS see http://nsis.sourceforge.net # - Make sure gvim_ole.exe, vimw32.exe, installw32.exe, -# uninstalw32.exe and xxdw32.exe have been build as mentioned above. +# uninstalw32.exe, teew32.exe and xxdw32.exe have been build as mentioned +# above. # - copy these files (get them from a binary archive or build them): # gvimext.dll in src/GvimExt # gvimext64.dll in src/GvimExt @@ -221,15 +214,7 @@ MINOR = 4 # 32 bit DOS version: Support was removed in 7.4.1399. When syncing to before # that it probably won't build. # -# Win32s GUI version: (requires a very old compiler) -# - Set environment for Visual C++ 4.1 (requires a new console window): -# "vcvars32.bat" (use the path for VC 4.1 e:\msdev\bin) -# - "nmake -f Make_mvc.mak GUI=yes INTL=no clean" (use the path for VC 4.1) -# - "nmake -f Make_mvc.mak GUI=yes INTL=no" (use the path for VC 4.1) -# - Rename "gvim.exe" to "gvim_w32s.exe". -# - Rename "install.exe" to "installw32.exe" -# - Rename "uninstal.exe" to "uninstalw32.exe" -# - The produced uninstalw32.exe and vimrun.exe are used. +# Win32s GUI version: Support was removed in patch 7.4.1364. # # OS/2 support was removed in patch 7.4.1008. If you want to give it a try # sync to before that and check the old version of this Makefile for @@ -268,12 +253,9 @@ dist/comment: mkdir dist/comment COMMENT_RT = comment/$(VERSION)-rt -COMMENT_D16 = comment/$(VERSION)-bin-d16 -COMMENT_D32 = comment/$(VERSION)-bin-d32 COMMENT_W32 = comment/$(VERSION)-bin-w32 COMMENT_GVIM = comment/$(VERSION)-bin-gvim COMMENT_OLE = comment/$(VERSION)-bin-ole -COMMENT_W32S = comment/$(VERSION)-bin-w32s COMMENT_SRC = comment/$(VERSION)-src COMMENT_HTML = comment/$(VERSION)-html COMMENT_FARSI = comment/$(VERSION)-farsi @@ -281,12 +263,6 @@ COMMENT_FARSI = comment/$(VERSION)-farsi dist/$(COMMENT_RT): dist/comment echo "Vim - Vi IMproved - v$(VDOT) runtime files for MS-DOS and MS-Windows" > dist/$(COMMENT_RT) -dist/$(COMMENT_D16): dist/comment - echo "Vim - Vi IMproved - v$(VDOT) binaries for MS-DOS 16 bit real mode" > dist/$(COMMENT_D16) - -dist/$(COMMENT_D32): dist/comment - echo "Vim - Vi IMproved - v$(VDOT) binaries for MS-DOS 32 bit protected mode" > dist/$(COMMENT_D32) - dist/$(COMMENT_W32): dist/comment echo "Vim - Vi IMproved - v$(VDOT) binaries for MS-Windows NT/95" > dist/$(COMMENT_W32) @@ -296,9 +272,6 @@ dist/$(COMMENT_GVIM): dist/comment dist/$(COMMENT_OLE): dist/comment echo "Vim - Vi IMproved - v$(VDOT) MS-Windows GUI binaries with OLE support" > dist/$(COMMENT_OLE) -dist/$(COMMENT_W32S): dist/comment - echo "Vim - Vi IMproved - v$(VDOT) GUI binaries for MS-Windows 3.1/3.11" > dist/$(COMMENT_W32S) - dist/$(COMMENT_SRC): dist/comment echo "Vim - Vi IMproved - v$(VDOT) sources for MS-DOS and MS-Windows" > dist/$(COMMENT_SRC) @@ -501,7 +474,8 @@ runtime_unix2dos: dosrt_files cd dist/vim/$(VIMRTDIR); tar cf - * \ | (cd ../../../runtime/dos; tar xf -) -dosbin: prepare dosbin_gvim dosbin_w32 $(DOSBIN_D32) dosbin_ole $(DOSBIN_S) $(DOSBIN_D16) +dosbin: prepare dosbin_gvim dosbin_w32 dosbin_ole $(DOSBIN_S) + -rm $(IN_README_DIR) # make Win32 gvim dosbin_gvim: dist no_title.vim dist/$(COMMENT_GVIM) @@ -512,8 +486,8 @@ dosbin_gvim: dist no_title.vim dist/$(COMMENT_GVIM) tar cf - \ $(BIN_DOS) \ | (cd dist/vim/$(VIMRTDIR); tar xf -) - -rm $(IN_README_DIR) cp gvim.exe dist/vim/$(VIMRTDIR)/gvim.exe + cp teew32.exe dist/vim/$(VIMRTDIR)/tee.exe cp xxdw32.exe dist/vim/$(VIMRTDIR)/xxd.exe cp vimrun.exe dist/vim/$(VIMRTDIR)/vimrun.exe cp installw32.exe dist/vim/$(VIMRTDIR)/install.exe @@ -532,43 +506,13 @@ dosbin_w32: dist no_title.vim dist/$(COMMENT_W32) $(BIN_DOS) \ | (cd dist/vim/$(VIMRTDIR); tar xf -) cp vimw32.exe dist/vim/$(VIMRTDIR)/vim.exe + cp teew32.exe dist/vim/$(VIMRTDIR)/tee.exe cp xxdw32.exe dist/vim/$(VIMRTDIR)/xxd.exe cp installw32.exe dist/vim/$(VIMRTDIR)/install.exe cp uninstalw32.exe dist/vim/$(VIMRTDIR)/uninstal.exe cd dist && zip -9 -rD -z vim$(VERSION)w32.zip vim <$(COMMENT_W32) cp vimw32.pdb dist/vim$(VERSION)w32.pdb -# make 32bit DOS -dosbin_d32: dist no_title.vim dist/$(COMMENT_D32) - -rm -rf dist/vim$(VERSION)d32.zip - -rm -rf dist/vim - mkdir dist/vim - mkdir dist/vim/$(VIMRTDIR) - tar cf - \ - $(BIN_DOS) \ - | (cd dist/vim/$(VIMRTDIR); tar xf -) - cp vimd32.exe dist/vim/$(VIMRTDIR)/vim.exe - cp xxdd32.exe dist/vim/$(VIMRTDIR)/xxd.exe - cp installd32.exe dist/vim/$(VIMRTDIR)/install.exe - cp uninstald32.exe dist/vim/$(VIMRTDIR)/uninstal.exe - cp csdpmi4b.zip dist/vim/$(VIMRTDIR) - cd dist && zip -9 -rD -z vim$(VERSION)d32.zip vim <$(COMMENT_D32) - -# make 16bit DOS -dosbin_d16: dist no_title.vim dist/$(COMMENT_D16) - -rm -rf dist/vim$(VERSION)d16.zip - -rm -rf dist/vim - mkdir dist/vim - mkdir dist/vim/$(VIMRTDIR) - tar cf - \ - $(BIN_DOS) \ - | (cd dist/vim/$(VIMRTDIR); tar xf -) - cp vimd16.exe dist/vim/$(VIMRTDIR)/vim.exe - cp xxdd16.exe dist/vim/$(VIMRTDIR)/xxd.exe - cp installd16.exe dist/vim/$(VIMRTDIR)/install.exe - cp uninstald16.exe dist/vim/$(VIMRTDIR)/uninstal.exe - cd dist && zip -9 -rD -z vim$(VERSION)d16.zip vim <$(COMMENT_D16) - # make Win32 gvim with OLE dosbin_ole: dist no_title.vim dist/$(COMMENT_OLE) -rm -rf dist/gvim$(VERSION)ole.zip @@ -579,6 +523,7 @@ dosbin_ole: dist no_title.vim dist/$(COMMENT_OLE) $(BIN_DOS) \ | (cd dist/vim/$(VIMRTDIR); tar xf -) cp gvim_ole.exe dist/vim/$(VIMRTDIR)/gvim.exe + cp teew32.exe dist/vim/$(VIMRTDIR)/tee.exe cp xxdw32.exe dist/vim/$(VIMRTDIR)/xxd.exe cp vimrun.exe dist/vim/$(VIMRTDIR)/vimrun.exe cp installw32.exe dist/vim/$(VIMRTDIR)/install.exe @@ -590,22 +535,6 @@ dosbin_ole: dist no_title.vim dist/$(COMMENT_OLE) cd dist && zip -9 -rD -z gvim$(VERSION)ole.zip vim <$(COMMENT_OLE) cp gvim_ole.pdb dist/gvim$(VERSION)ole.pdb -# make Win32s gvim -dosbin_s: dist no_title.vim dist/$(COMMENT_W32S) - -rm -rf dist/gvim$(VERSION)_s.zip - -rm -rf dist/vim - mkdir dist/vim - mkdir dist/vim/$(VIMRTDIR) - tar cf - \ - $(BIN_DOS) \ - | (cd dist/vim/$(VIMRTDIR); tar xf -) - cp gvim_w32s.exe dist/vim/$(VIMRTDIR)/gvim.exe - cp xxdd32.exe dist/vim/$(VIMRTDIR)/xxd.exe - cp README_w32s.txt dist/vim/$(VIMRTDIR) - cp installw32.exe dist/vim/$(VIMRTDIR)/install.exe - cp uninstalw32.exe dist/vim/$(VIMRTDIR)/uninstal.exe - cd dist && zip -9 -rD -z gvim$(VERSION)_s.zip vim <$(COMMENT_W32S) - html: dist dist/$(COMMENT_HTML) -rm -rf dist/vim$(VERSION)html.zip cd runtime/doc && zip -9 -z ../../dist/vim$(VERSION)html.zip *.html <../../dist/$(COMMENT_HTML) diff --git a/nsis/gvim.nsi b/nsis/gvim.nsi index 2ae7d41249..26d7aab8ee 100644 --- a/nsis/gvim.nsi +++ b/nsis/gvim.nsi @@ -188,6 +188,7 @@ Section "Vim executables and runtime files" File /oname=install.exe ${VIMSRC}\installw32.exe File /oname=uninstal.exe ${VIMSRC}\uninstalw32.exe File ${VIMSRC}\vimrun.exe + File /oname=tee.exe ${VIMSRC}\teew32.exe File /oname=xxd.exe ${VIMSRC}\xxdw32.exe File ${VIMTOOLS}\diff.exe File ${VIMRT}\vimtutor.bat diff --git a/runtime/defaults.vim b/runtime/defaults.vim index 023d640208..0ff834a2a0 100644 --- a/runtime/defaults.vim +++ b/runtime/defaults.vim @@ -1,7 +1,7 @@ " The default vimrc file. " " Maintainer: Bram Moolenaar -" Last change: 2016 Aug 21 +" Last change: 2016 Aug 28 " " This is loaded if no vimrc file was found. " Except when Vim is run with "-u NONE" or "-C". @@ -31,6 +31,9 @@ set ttimeoutlen=100 " wait up to 100ms after Esc for special key " Show @@@ in the last line if it is truncated. set display=truncate +" Show a few lines of context around the cursor. +set scrolloff=5 + " Do incremental searching when it's possible to timeout. if has('reltime') set incsearch diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt index 52c067cb43..54cfc9d0a9 100644 --- a/runtime/doc/eval.txt +++ b/runtime/doc/eval.txt @@ -1,4 +1,4 @@ -*eval.txt* For Vim version 7.4. Last change: 2016 Aug 27 +*eval.txt* For Vim version 7.4. Last change: 2016 Aug 28 VIM REFERENCE MANUAL by Bram Moolenaar @@ -3272,6 +3272,8 @@ delete({fname} [, {flags}]) *delete()* When {flags} is "rf": Deletes the directory by the name {fname} and everything in it, recursively. BE CAREFUL! + Note: on MS-Windows it is not possible to delete a directory + that is being used. A symbolic link itself is deleted, not what it points to. @@ -6344,7 +6346,7 @@ round({expr}) *round()* {only available when compiled with the |+float| feature} screenattr(row, col) *screenattr()* - Like screenchar(), but return the attribute. This is a rather + Like |screenchar()|, but return the attribute. This is a rather arbitrary number that can only be used to compare to the attribute at other positions. diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt index a082328f1d..6a590bb7e0 100644 --- a/runtime/doc/options.txt +++ b/runtime/doc/options.txt @@ -1,4 +1,4 @@ -*options.txt* For Vim version 7.4. Last change: 2016 Aug 26 +*options.txt* For Vim version 7.4. Last change: 2016 Aug 27 VIM REFERENCE MANUAL by Bram Moolenaar @@ -2869,10 +2869,17 @@ A jump table for the options with a short description can be found at |Q_op|. global {not in Vi} Enables the reading of .vimrc, .exrc and .gvimrc in the current - directory. If you switch this option on you should also consider - setting the 'secure' option (see |initialization|). Using a local - .exrc, .vimrc or .gvimrc is a potential security leak, use with care! - also see |.vimrc| and |gui-init|. + directory. + + Setting this option is a potential security leak. E.g., consider + unpacking a package or fetching files from github, a .vimrc in there + might be a trojan horse. BETTER NOT SET THIS OPTION! + Instead, define an autocommand in your .vimrc to set options for a + matching directory. + + If you do switch this option on you should also consider setting the + 'secure' option (see |initialization|). + Also see |.vimrc| and |gui-init|. This option cannot be set from a |modeline| or in the |sandbox|, for security reasons. diff --git a/runtime/doc/starting.txt b/runtime/doc/starting.txt index 52bab313de..228a292f64 100644 --- a/runtime/doc/starting.txt +++ b/runtime/doc/starting.txt @@ -1,4 +1,4 @@ -*starting.txt* For Vim version 7.4. Last change: 2016 Aug 26 +*starting.txt* For Vim version 7.4. Last change: 2016 Aug 27 VIM REFERENCE MANUAL by Bram Moolenaar @@ -839,7 +839,7 @@ accordingly. Vim proceeds in this order: options values and has "syntax on" and "filetype on" commands, which is what most new users will want. See |defaults.vim|. - d. If the 'exrc' option is on (which is not the default), the current + d. If the 'exrc' option is on (which is NOT the default), the current directory is searched for three files. The first that exists is used, the others are ignored. - The file ".vimrc" (for Unix, Amiga and OS/2) (*) diff --git a/runtime/doc/version8.txt b/runtime/doc/version8.txt index 1fb092aea6..28c675f526 100644 --- a/runtime/doc/version8.txt +++ b/runtime/doc/version8.txt @@ -1,4 +1,4 @@ -*version8.txt* For Vim version 8.0. Last change: 2016 Aug 26 +*version8.txt* For Vim version 8.0. Last change: 2016 Aug 28 VIM REFERENCE MANUAL by Bram Moolenaar @@ -163,6 +163,9 @@ checked with the |+num64| feature. Many items were added so support |new-style-testing|. +printf() now accepts any type of argument for %s. It is converted to a string +like with string(). + Various new items *new-items-8* ----------------- @@ -208,6 +211,7 @@ Ex commands: ~ |:cfdo| execute command in each file in error list |:chistory| display quickfix list stack |:clearjumps| clear the jump list +:filter only output lines that (do not) match a pattern |:helpclose| close one help window |:lbottom| scroll to the bottom of the location window |:ldo| execute command in valid location list entries @@ -444,6 +448,7 @@ supposed to be. The blowfish2 method has been added to fix that. Note that this still isn't a state-of-the-art encryption, but good enough for most usage. See 'cryptmethod'. + ============================================================================== COMPILE TIME CHANGES *compile-changes-8* @@ -13566,6 +13571,417 @@ Problem: When using matchaddpos() a character after the end of the line can Solution: Only highlight existing characters. (Hirohito Higashi) Files: src/screen.c, src/structs.h, src/testdir/test_match.vim +Patch 7.4.2218 +Problem: Can't build with +timers when +digraph is not included. +Solution: Change #ifdef for e_number_exp. (Damien) +Files: src/globals.h + +Patch 7.4.2219 +Problem: Recursive call to substitute gets stuck in sandbox. (Nikolai + Pavlov) +Solution: Handle the recursive call. (Christian Brabandt, closes #950) + Add a test. +Files: src/ex_cmds.c, src/testdir/test_regexp_latin.vim + +Patch 7.4.2220 +Problem: printf() gives an error when the argument for %s is not a string. + (Ozaki Kiichi) +Solution: Behave like invoking string() on the argument. (Ken Takata) +Files: runtime/doc/eval.txt, src/message.c, src/testdir/test_expr.vim + +Patch 7.4.2221 +Problem: printf() does not support binary format. +Solution: Add %b and %B. (Ozaki Kiichi) +Files: runtime/doc/eval.txt, src/message.c, src/testdir/test_expr.vim + +Patch 7.4.2222 +Problem: Sourcing a script where a character has 0x80 as a second byte does + not work. (Filipe L B Correia) +Solution: Turn 0x80 into K_SPECIAL KS_SPECIAL KE_FILLER. (Christian + Brabandt, closes #728) Add a test case. +Files: src/getchar.c, src/proto/getchar.pro, src/misc1.c, + src/testdir/test_regexp_utf8.vim + +Patch 7.4.2223 +Problem: Buffer overflow when using latin1 character with feedkeys(). +Solution: Check for an illegal character. Add a test. +Files: src/testdir/test_regexp_utf8.vim, src/testdir/test_source.vim, + src/testdir/test_alot_utf8.vim, src/Makefile, src/getchar.c, + src/macros.h, src/evalfunc.c, src/os_unix.c, src/os_win32.c, + src/spell.c, + +Patch 7.4.2224 +Problem: Compiler warnings with older compiler and 64 bit numbers. +Solution: Add "LL" to large values. (Mike Williams) +Files: src/eval.c, src/evalfunc.c + +Patch 7.4.2225 +Problem: Crash when placing a sign in a deleted buffer. +Solution: Check for missing buffer name. (Dominique Pelle). Add a test. +Files: src/ex_cmds.c, src/testdir/test_signs.vim + +Patch 7.4.2226 +Problem: The field names used by getbufinfo(), gettabinfo() and + getwininfo() are not consistent. +Solution: Use bufnr, winnr and tabnr. (Yegappan Lakshmanan) +Files: runtime/doc/eval.txt, src/evalfunc.c, + src/testdir/test_bufwintabinfo.vim + +Patch 7.4.2227 +Problem: Tab page tests are old style. +Solution: Change into new style tests. (Hirohito Higashi) +Files: src/Makefile, src/testdir/Make_all.mak, src/testdir/test62.in, + src/testdir/test62.ok, src/testdir/test_alot.vim, + src/testdir/test_tabpage.vim + +Patch 7.4.2228 +Problem: Test files have inconsistent modelines. +Solution: Don't set 'tabstop' to 2, use 'sts' and 'sw'. +Files: src/testdir/README.txt, src/testdir/test_backspace_opt.vim, + src/testdir/test_digraph.vim, src/testdir/test_gn.vim + src/testdir/test_help_tagjump.vim, + src/testdir/test_increment_dbcs.vim, + src/testdir/test_increment.vim, src/testdir/test_match.vim, + src/testdir/test_tagjump.vim, src/testdir/test_window_cmd.vim, + src/testdir/test_regexp_latin.vim, src/testdir/test_timers.vim + +Patch 7.4.2229 +Problem: Startup test fails on Solaris. +Solution: Recognize a character device. (Danek Duvall) +Files: src/buffer.c, src/fileio.c, src/proto/fileio.pro, src/vim.h + +Patch 7.4.2230 +Problem: There is no equivalent of 'smartcase' for a tag search. +Solution: Add value "followscs" and "smart" to 'tagcase'. (Christian + Brabandt, closes #712) Turn tagcase test into new style. +Files: runtime/doc/options.txt, runtime/doc/tagsrch.txt, src/option.h, + src/tag.c, src/search.c, src/proto/search.pro, + src/testdir/test_tagcase.in, src/testdir/test_tagcase.ok, + src/testdir/test_tagcase.vim, src/Makefile, + src/testdir/Make_all.mak, src/testdir/test_alot.vim + +Patch 7.4.2231 +Problem: ":oldfiles" output is a very long list. +Solution: Add a pattern argument. (Coot, closes #575) +Files: runtime/doc/starting.txt, src/ex_cmds.h, src/eval.c, + src/ex_cmds.c, src/proto/eval.pro, src/proto/ex_cmds.pro, + src/testdir/test_viminfo.vim + +Patch 7.4.2232 +Problem: The default ttimeoutlen is very long. +Solution: Use "100". (Hirohito Higashi) +Files: runtime/defaults.vim + +Patch 7.4.2233 +Problem: Crash when using funcref() with invalid name. (Dominique Pelle) +Solution: Check for NULL translated name. +Files: src/evalfunc.c, src/testdir/test_expr.vim + +Patch 7.4.2234 +Problem: Can't build with +eval but without +quickfix. (John Marriott) +Solution: Move skip_vimgrep_pat() to separate #ifdef block. +Files: src/quickfix.c + +Patch 7.4.2235 +Problem: submatch() does not check for a valid argument. +Solution: Give an error if the argument is out of range. (Dominique Pelle) +Files: src/evalfunc.c, src/testdir/test_expr.vim + +Patch 7.4.2236 +Problem: The 'langnoremap' option leads to double negatives. And it does + not work for the last character of a mapping. +Solution: Add 'langremap' with the opposite value. Keep 'langnoremap' for + backwards compatibility. Make it work for the last character of a + mapping. Make the test work. +Files: runtime/doc/options.txt, runtime/defaults.vim, src/option.c, + src/option.h, src/macros.h, src/testdir/test_mapping.vim + +Patch 7.4.2237 +Problem: Can't use "." and "$" with ":tab". +Solution: Support a range for ":tab". (Hirohito Higashi) +Files: runtime/doc/tabpage.txt, src/ex_docmd.c, + src/testdir/test_tabpage.vim + +Patch 7.4.2238 +Problem: With SGR mouse reporting (suckless terminal) the mouse release and + scroll up/down is confused. +Solution: Don't see a release as a scroll up/down. (Ralph Eastwood) +Files: src/term.c + +Patch 7.4.2239 +Problem: Warning for missing declaration of skip_vimgrep_pat(). (John + Marriott) +Solution: Move it to another file. +Files: src/quickfix.c, src/proto/quickfix.pro, src/ex_cmds.c, + src/proto/ex_cmds.pro + +Patch 7.4.2240 +Problem: Tests using the sleep time can be flaky. +Solution: Use reltime() if available. (Partly by Shane Harper) +Files: src/testdir/shared.vim, src/testdir/test_timers.vim + +Patch 7.4.2241 (after 7.4.2240) +Problem: Timer test sometimes fails. +Solution: Increase the maximum time for repeating timer. +Files: src/testdir/test_timers.vim + +Patch 7.4.2242 (after 7.4.2240) +Problem: Timer test sometimes fails. +Solution: Increase the maximum time for callback timer test. +Files: src/testdir/test_timers.vim + +Patch 7.4.2243 +Problem: Warning for assigning negative value to unsigned. (Danek Duvall) +Solution: Make cterm_normal_fg_gui_color and _bg_ guicolor_T, cast to long_u + only when an unsigned is needed. +Files: src/structs.h, src/globals.h, src/screen.c, src/term.c, + src/syntax.c, src/gui_gtk_x11.c, src/gui.c, src/gui_mac.c, + src/gui_photon.c, src/gui_w32.c, src/gui_x11.c, + src/proto/term.pro, src/proto/gui_gtk_x11.pro, + src/proto/gui_mac.pro, src/proto/gui_photon.pro, + src/proto/gui_w32.pro, src/proto/gui_x11.pro + +Patch 7.4.2244 +Problem: Adding pattern to ":oldfiles" is not a generic solution. +Solution: Add the ":filter /pat/ cmd" command modifier. Only works for some + commands right now. +Files: src/structs.h, src/ex_docmd.c, src/ex_cmds.h, src/message.c, + src/proto/message.pro, runtime/doc/starting.txt, + runtime/doc/various.txt, src/testdir/test_viminfo.vim, + src/testdir/test_alot.vim, src/testdir/test_filter_cmd.vim, + src/Makefile + +Patch 7.4.2245 (after 7.4.2244) +Problem: Filter test fails. +Solution: Include missing changes. +Files: src/buffer.c + +Patch 7.4.2246 (after 7.4.2244) +Problem: Oldfiles test fails. +Solution: Include missing changes. +Files: src/ex_cmds.c + +Patch 7.4.2247 (after 7.4.2244) +Problem: Tiny build fails. (Tony Mechelynck) +Solution: Remove #ifdef. +Files: src/ex_cmds.c + +Patch 7.4.2248 +Problem: When cancelling the :ptjump prompt a preview window is opened for + a following command. +Solution: Reset g_do_tagpreview. (Hirohito Higashi) Add a test. Avoid that + the test runner gets stuck in trying to close a window. +Files: src/tag.c, src/testdir/test_tagjump.vim, src/testdir/runtest.vim + +Patch 7.4.2249 +Problem: Missing colon in error message. +Solution: Add the colon. (Dominique Pelle) +Files: src/userfunc.c + +Patch 7.4.2250 +Problem: Some error messages cannot be translated. +Solution: Enclose them in _() and N_(). (Dominique Pelle) +Files: src/channel.c, src/evalfunc.c, src/ex_cmds.c, src/spell.c, + src/window.c + +Patch 7.4.2251 +Problem: In rare cases diffing 4 buffers is not enough. +Solution: Raise the limit to 8. (closes #1000) +Files: src/structs.h, runtime/doc/diff.txt + +Patch 7.4.2252 +Problem: Compiler warnings for signed/unsigned in expression. +Solution: Remove type cast. (Dominique Pelle) +Files: src/vim.h + +Patch 7.4.2253 +Problem: Check for Windows 3.1 will always return false. (Christian + Brabandt) +Solution: Remove the dead code. +Files: src/gui_w32.c, src/evalfunc.c, src/ex_cmds.c, src/option.c, + src/os_win32.c, src/version.c, src/proto/gui_w32.pro + +Patch 7.4.2254 +Problem: Compiler warnings in MzScheme code. +Solution: Add UNUSED. Remove unreachable code. +Files: src/if_mzsch.c + +Patch 7.4.2255 +Problem: The script that checks translations can't handle plurals. +Solution: Check for plural msgid and msgstr entries. Leave the cursor on + the first error. +Files: src/po/check.vim + +Patch 7.4.2256 +Problem: Coverity complains about null pointer check. +Solution: Remove wrong and superfluous error check. +Files: src/eval.c + +Patch 7.4.2257 +Problem: Coverity complains about not checking for NULL. +Solution: Check for out of memory. +Files: src/if_py_both.h + +Patch 7.4.2258 +Problem: Two JSON messages are sent without a separator. +Solution: Separate messages with a NL. (closes #1001) +Files: src/json.c, src/channel.c, src/vim.h, src/testdir/test_channel.py, + src/testdir/test_channel.vim, runtime/doc/channel.txt + +Patch 7.4.2259 +Problem: With 'incsearch' can only see the next match. +Solution: Make CTRL-N/CTRL-P move to the previous/next match. (Christian + Brabandt) +Files: runtime/doc/cmdline.txt, src/ex_getln.c, src/testdir/Make_all.mak, + src/testdir/test_search.vim, src/Makefile + +Patch 7.4.2260 (after 7.4.2258) +Problem: Channel test is flaky. +Solution: Add a newline to separate JSON messages. +Files: src/testdir/test_channel.vim + +Patch 7.4.2261 (after 7.4.2259) +Problem: Build fails with small features. +Solution: Move "else" inside the #ifdef. +Files: src/ex_getln.c + +Patch 7.4.2262 +Problem: Fail to read register content from viminfo if it is 438 characters + long. (John Chen) +Solution: Adjust the check for line wrapping. (closes #1010) +Files: src/testdir/test_viminfo.vim, src/ex_cmds.c + +Patch 7.4.2263 +Problem: :filter does not work for many commands. Can only get matching + messages. +Solution: Make :filter work for :command, :map, :list, :number and :print. + Make ":filter!" show non-matching lines. +Files: src/getchar.c, src/ex_cmds.c, src/ex_cmds.h, src/ex_docmd.c, + src/message.c, src/structs.h, src/testdir/test_filter_cmd.vim + +Patch 7.4.2264 +Problem: When adding entries to an empty quickfix list the title is reset. +Solution: Improve handling of the title. (Yegappan Lakshmanan) +Files: src/testdir/test_quickfix.vim, src/quickfix.c + +Patch 7.4.2265 +Problem: printf() isn't tested much. +Solution: Add more tests for printf(). (Dominique Pelle) +Files: src/testdir/test_expr.vim + +Patch 7.4.2266 (after 7.4.2265) +Problem: printf() test fails on Windows. "-inf" is not used. +Solution: Check for Windows-specific values for "nan". Add sign to "inf" + when appropriate. +Files: src/message.c, src/testdir/test_expr.vim + +Patch 7.4.2267 (after 7.4.2266) +Problem: Build fails on MS-Windows. +Solution: Add define to get isinf(). +Files: src/message.c + +Patch 7.4.2268 (after 7.4.2259) +Problem: Using CTRL-N and CTRL-P for incsearch shadows completion keys. +Solution: Use CTRL-T and CTRL-G instead. +Files: runtime/doc/cmdline.txt, src/ex_getln.c, + src/testdir/test_search.vim + +Patch 7.4.2269 +Problem: Using 'hlsearch' highlighting instead of matchpos if there is no + search match. +Solution: Pass NULL as last item to next_search_hl() when searching for + 'hlsearch' match. (Shane Harper, closes #1013) +Files: src/screen.c, src/testdir/test_match.vim. + +Patch 7.4.2270 +Problem: Insufficient testing for NUL bytes on a raw channel. +Solution: Add a test for writing and reading. +Files: src/testdir/test_channel.vim + +Patch 7.4.2271 +Problem: Netbeans test doesn't read settings from file. +Solution: Use "-Xnbauth". +Files: src/testdir/test_netbeans.vim + +Patch 7.4.2272 +Problem: getbufinfo(), getwininfo() and gettabinfo() are inefficient. +Solution: Instead of making a copy of the variables dictionary, use a + reference. +Files: src/evalfunc.c + +Patch 7.4.2273 +Problem: getwininfo() and getbufinfo() are inefficient. +Solution: Do not make a copy of all window/buffer-local options. Make it + possible to get them with gettabwinvar() or getbufvar(). +Files: src/evalfunc.c, src/eval.c, src/testdir/test_bufwintabinfo.vim, + runtime/doc/eval.txt + +Patch 7.4.2274 +Problem: Command line completion on "find **/filename" drops sub-directory. +Solution: Handle this case separately. (Harm te Hennepe, closes #932, closes + #939) +Files: src/misc1.c, src/testdir/test_cmdline.vim + +Patch 7.4.2275 +Problem: ":diffoff!" does not remove filler lines. +Solution: Force a redraw and invalidate the cursor. (closes #1014) +Files: src/diff.c, src/testdir/test_diffmode.vim + +Patch 7.4.2276 +Problem: Command line test fails on Windows when run twice. +Solution: Wipe the buffer so that the directory can be deleted. +Files: src/testdir/test_cmdline.vim + +Patch 7.4.2277 +Problem: Memory leak in getbufinfo() when there is a sign. (Dominique + Pelle) +Solution: Remove extra vim_strsave(). +Files: src/evalfunc.c + +Patch 7.4.2278 +Problem: New users have no idea of the 'scrolloff' option. +Solution: Set 'scrolloff' in defaults.vim. +Files: runtime/defaults.vim + +Patch 7.4.2279 +Problem: Starting diff mode with the cursor in the last line might end up + only showing one closed fold. (John Beckett) +Solution: Scroll the window to show the same relative cursor position. +Files: src/diff.c, src/window.c, src/proto/window.pro + +Patch 7.4.2280 +Problem: printf() doesn't handle infinity float values correctly. +Solution: Add a table with possible infinity values. (Dominique Pelle) +Files: src/message.c, src/testdir/test_expr.vim + +Patch 7.4.2281 +Problem: Timer test fails sometimes. +Solution: Reduce minimum time by 1 msec. +Files: src/testdir/test_timers.vim + +Patch 7.4.2282 +Problem: When a child process is very fast waiting 10 msec for it is + noticeable. (Ramel Eshed) +Solution: Start waiting for 1 msec and gradually increase. +Files: src/os_unix.c + +Patch 7.4.2283 +Problem: Part of ":oldfiles" command isn't cleared. (Lifepillar) +Solution: Clear the rest of the line. (closes 1018) +Files: src/ex_cmds.c + +Patch 7.4.2284 +Problem: Comment in scope header file is outdated. (KillTheMule) +Solution: Point to the help instead. (closes #1017) +Files: src/if_cscope.h + +Patch 7.4.2285 +Problem: Generated files are outdated. +Solution: Generate the files. Avoid errors when generating prototypes. +Files: src/if_mzsch.h, src/Makefile, src/option.h, src/os_mac_conv.c, + src/os_amiga.c, src/vim.h, src/structs.h, src/os_win32.c, + src/if_lua.c, src/proto/mbyte.pro + [STILL MORE COMING!] vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime/synmenu.vim b/runtime/synmenu.vim index 01dad3c7f2..81e3667298 100644 --- a/runtime/synmenu.vim +++ b/runtime/synmenu.vim @@ -61,7 +61,6 @@ an 50.10.320 &Syntax.AB.Ascii\ Doc :cal SetSyn("asciidoc") an 50.10.330 &Syntax.AB.ASP\ with\ VBScript :cal SetSyn("aspvbs") an 50.10.340 &Syntax.AB.ASP\ with\ Perl :cal SetSyn("aspperl") an 50.10.350 &Syntax.AB.Assembly.680x0 :cal SetSyn("asm68k") -an 50.10.355 &Syntax.AB.Assembly.AVR :cal SetSyn("avra") an 50.10.360 &Syntax.AB.Assembly.Flat :cal SetSyn("fasm") an 50.10.370 &Syntax.AB.Assembly.GNU :cal SetSyn("asm") an 50.10.380 &Syntax.AB.Assembly.GNU\ H-8300 :cal SetSyn("asmh8300") @@ -162,31 +161,31 @@ an 50.30.290 &Syntax.DE.Doxygen.C\ with\ doxygen :cal SetSyn("c.doxygen") an 50.30.300 &Syntax.DE.Doxygen.C++\ with\ doxygen :cal SetSyn("cpp.doxygen") an 50.30.310 &Syntax.DE.Doxygen.IDL\ with\ doxygen :cal SetSyn("idl.doxygen") an 50.30.320 &Syntax.DE.Doxygen.Java\ with\ doxygen :cal SetSyn("java.doxygen") -an 50.30.320 &Syntax.DE.Doxygen.DataScript\ with\ doxygen :cal SetSyn("datascript.doxygen") -an 50.30.330 &Syntax.DE.Dracula :cal SetSyn("dracula") -an 50.30.340 &Syntax.DE.DSSSL :cal SetSyn("dsl") -an 50.30.350 &Syntax.DE.DTD :cal SetSyn("dtd") -an 50.30.360 &Syntax.DE.DTML\ (Zope) :cal SetSyn("dtml") -an 50.30.370 &Syntax.DE.DTrace :cal SetSyn("dtrace") -an 50.30.380 &Syntax.DE.Dts/dtsi :cal SetSyn("dts") -an 50.30.390 &Syntax.DE.Dylan.Dylan :cal SetSyn("dylan") -an 50.30.400 &Syntax.DE.Dylan.Dylan\ interface :cal SetSyn("dylanintr") -an 50.30.410 &Syntax.DE.Dylan.Dylan\ lid :cal SetSyn("dylanlid") -an 50.30.430 &Syntax.DE.EDIF :cal SetSyn("edif") -an 50.30.440 &Syntax.DE.Eiffel :cal SetSyn("eiffel") -an 50.30.450 &Syntax.DE.Elinks\ config :cal SetSyn("elinks") -an 50.30.460 &Syntax.DE.Elm\ filter\ rules :cal SetSyn("elmfilt") -an 50.30.470 &Syntax.DE.Embedix\ Component\ Description :cal SetSyn("ecd") -an 50.30.480 &Syntax.DE.ERicsson\ LANGuage :cal SetSyn("erlang") -an 50.30.490 &Syntax.DE.ESMTP\ rc :cal SetSyn("esmtprc") -an 50.30.500 &Syntax.DE.ESQL-C :cal SetSyn("esqlc") -an 50.30.510 &Syntax.DE.Essbase\ script :cal SetSyn("csc") -an 50.30.520 &Syntax.DE.Esterel :cal SetSyn("esterel") -an 50.30.530 &Syntax.DE.Eterm\ config :cal SetSyn("eterm") -an 50.30.540 &Syntax.DE.Eviews :cal SetSyn("eviews") -an 50.30.550 &Syntax.DE.Exim\ conf :cal SetSyn("exim") -an 50.30.560 &Syntax.DE.Expect :cal SetSyn("expect") -an 50.30.570 &Syntax.DE.Exports :cal SetSyn("exports") +an 50.30.330 &Syntax.DE.Doxygen.DataScript\ with\ doxygen :cal SetSyn("datascript.doxygen") +an 50.30.340 &Syntax.DE.Dracula :cal SetSyn("dracula") +an 50.30.350 &Syntax.DE.DSSSL :cal SetSyn("dsl") +an 50.30.360 &Syntax.DE.DTD :cal SetSyn("dtd") +an 50.30.370 &Syntax.DE.DTML\ (Zope) :cal SetSyn("dtml") +an 50.30.380 &Syntax.DE.DTrace :cal SetSyn("dtrace") +an 50.30.390 &Syntax.DE.Dts/dtsi :cal SetSyn("dts") +an 50.30.400 &Syntax.DE.Dylan.Dylan :cal SetSyn("dylan") +an 50.30.410 &Syntax.DE.Dylan.Dylan\ interface :cal SetSyn("dylanintr") +an 50.30.420 &Syntax.DE.Dylan.Dylan\ lid :cal SetSyn("dylanlid") +an 50.30.440 &Syntax.DE.EDIF :cal SetSyn("edif") +an 50.30.450 &Syntax.DE.Eiffel :cal SetSyn("eiffel") +an 50.30.460 &Syntax.DE.Elinks\ config :cal SetSyn("elinks") +an 50.30.470 &Syntax.DE.Elm\ filter\ rules :cal SetSyn("elmfilt") +an 50.30.480 &Syntax.DE.Embedix\ Component\ Description :cal SetSyn("ecd") +an 50.30.490 &Syntax.DE.ERicsson\ LANGuage :cal SetSyn("erlang") +an 50.30.500 &Syntax.DE.ESMTP\ rc :cal SetSyn("esmtprc") +an 50.30.510 &Syntax.DE.ESQL-C :cal SetSyn("esqlc") +an 50.30.520 &Syntax.DE.Essbase\ script :cal SetSyn("csc") +an 50.30.530 &Syntax.DE.Esterel :cal SetSyn("esterel") +an 50.30.540 &Syntax.DE.Eterm\ config :cal SetSyn("eterm") +an 50.30.550 &Syntax.DE.Eviews :cal SetSyn("eviews") +an 50.30.560 &Syntax.DE.Exim\ conf :cal SetSyn("exim") +an 50.30.570 &Syntax.DE.Expect :cal SetSyn("expect") +an 50.30.580 &Syntax.DE.Exports :cal SetSyn("exports") an 50.40.100 &Syntax.FG.Falcon :cal SetSyn("falcon") an 50.40.110 &Syntax.FG.Fantom :cal SetSyn("fan") an 50.40.120 &Syntax.FG.Fetchmail :cal SetSyn("fetchmail") @@ -328,7 +327,6 @@ an 50.70.270 &Syntax.M.Messages\ (/var/log) :cal SetSyn("messages") an 50.70.280 &Syntax.M.Metafont :cal SetSyn("mf") an 50.70.290 &Syntax.M.MetaPost :cal SetSyn("mp") an 50.70.300 &Syntax.M.MGL :cal SetSyn("mgl") -an 50.70.305 &Syntax.M.MIX :cal SetSyn("mix") an 50.70.310 &Syntax.M.MMIX :cal SetSyn("mmix") an 50.70.320 &Syntax.M.Modconf :cal SetSyn("modconf") an 50.70.330 &Syntax.M.Model :cal SetSyn("model") diff --git a/src/Makefile b/src/Makefile index f1115591c3..572aff5428 100644 --- a/src/Makefile +++ b/src/Makefile @@ -335,9 +335,13 @@ CClink = $(CC) # Uncomment one of these lines if you have that GUI but don't want to use it. # The automatic check will use another one that can be found. -# Gnome is disabled by default, it may cause trouble. +# Gnome is disabled by default, because it may cause trouble. +# +# When both GTK+ 2 and GTK+ 3 are possible then GTK+ 2 will be selected. +# To use GTK+ 3 instead use --enable-gui=gtk3 (see below). #CONF_OPT_GUI = --disable-gtk2-check #CONF_OPT_GUI = --enable-gnome2-check +#CONF_OPT_GUI = --disable-gtk3-check #CONF_OPT_GUI = --disable-motif-check #CONF_OPT_GUI = --disable-athena-check #CONF_OPT_GUI = --disable-nextaw-check @@ -348,18 +352,24 @@ CClink = $(CC) # # GTK versions that are known not to work 100% are rejected. # Use "--disable-gtktest" to accept them anyway. -# Only GTK 2 is supported, for GTK 1 use Vim 7.2. +# For GTK 1 use Vim 7.2. # # GNOME means GTK with Gnome support. If using GTK and --enable-gnome-check # is used then GNOME will automatically be used if it is found. If you have # GNOME, but do not want to use it (e.g., want a GTK-only version), then use # --enable-gui=gtk or leave out --enable-gnome-check. # +# GNOME makes sense only for GTK+ 2. Avoid use of --enable-gnome-check with +# GTK+ 3 build, as the functionality of GNOME is already incooperated into +# GTK+ 3. +# # If the selected GUI isn't found, the GUI is disabled automatically #CONF_OPT_GUI = --enable-gui=gtk2 #CONF_OPT_GUI = --enable-gui=gtk2 --disable-gtktest #CONF_OPT_GUI = --enable-gui=gnome2 #CONF_OPT_GUI = --enable-gui=gnome2 --disable-gtktest +#CONF_OPT_GUI = --enable-gui=gtk3 +#CONF_OPT_GUI = --enable-gui=gtk3 --disable-gtktest #CONF_OPT_GUI = --enable-gui=motif #CONF_OPT_GUI = --enable-gui=motif --with-motif-lib="-static -lXm -shared" #CONF_OPT_GUI = --enable-gui=athena @@ -368,7 +378,7 @@ CClink = $(CC) # Carbon GUI for Mac OS X #CONF_OPT_GUI = --enable-gui=carbon -# Uncomment this line to run an indivisual test with gvim. +# Uncomment this line to run an individual test with gvim. #GUI_TESTARG = GUI_FLAG=-g # DARWIN - detecting Mac OS X @@ -402,6 +412,7 @@ CClink = $(CC) # MZSCHEME # Uncomment this when you want to include the MzScheme interface. +# NOTE: does not work well together with valgrind. #CONF_OPT_MZSCHEME = --enable-mzschemeinterp # PLT/mrscheme/drscheme Home dir; the PLTHOME environment variable also works #CONF_OPT_PLTHOME = --with-plthome=/usr/local/plt @@ -2463,7 +2474,8 @@ install-languages: languages $(DEST_LANG) $(DEST_KMAP) chmod $(FILEMOD) $(DEST_KMAP)/README.txt $(DEST_KMAP)/*.vim; \ fi -# install the icons for KDE, if the directory exists and the icon doesn't. +# Install the icons for KDE, if the directory exists and the icon doesn't. +# Always when $(DESTDIR) is not empty. ICON48PATH = $(DESTDIR)$(DATADIR)/icons/hicolor/48x48/apps ICON32PATH = $(DESTDIR)$(DATADIR)/icons/locolor/32x32/apps ICON16PATH = $(DESTDIR)$(DATADIR)/icons/locolor/16x16/apps @@ -2471,6 +2483,11 @@ ICONTHEMEPATH = $(DATADIR)/icons/hicolor DESKTOPPATH = $(DESTDIR)$(DATADIR)/applications KDEPATH = $(HOME)/.kde/share/icons install-icons: + if test -n "$(DESTDIR)"; then \ + $(SHELL) ./mkinstalldirs $(ICON48PATH) $(ICON32PATH) \ + $(ICON16PATH) $(DESKTOPPATH); \ + fi + if test -d $(ICON48PATH) -a -w $(ICON48PATH) \ -a ! -f $(ICON48PATH)/gvim.png; then \ $(INSTALL_DATA) $(SCRIPTSOURCE)/vim48x48.png $(ICON48PATH)/gvim.png; \ @@ -3430,7 +3447,7 @@ objects/option.o: option.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h objects/os_unix.o: os_unix.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \ ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \ gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \ - globals.h farsi.h arabic.h os_unixx.h + globals.h farsi.h arabic.h if_mzsch.h os_unixx.h objects/pathdef.o: auto/pathdef.c vim.h auto/config.h feature.h os_unix.h \ auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \ regexp.h gui.h gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h \ @@ -3604,7 +3621,7 @@ objects/if_lua.o: if_lua.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h objects/if_mzsch.o: if_mzsch.c vim.h auto/config.h feature.h os_unix.h \ auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \ regexp.h gui.h gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h \ - proto.h globals.h farsi.h arabic.h if_mzsch.h + proto.h globals.h farsi.h arabic.h if_mzsch.h mzscheme_base.c objects/if_perl.o: auto/if_perl.c vim.h auto/config.h feature.h os_unix.h \ auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \ regexp.h gui.h gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h spell.h \ diff --git a/src/channel.c b/src/channel.c index a20469f890..eab4ac33af 100644 --- a/src/channel.c +++ b/src/channel.c @@ -3481,7 +3481,7 @@ send_common( EMSG2(_("E917: Cannot use a callback with %s()"), fun); return NULL; } - channel_set_req_callback(channel, part_send, + channel_set_req_callback(channel, *part_read, opt->jo_callback, opt->jo_partial, id); } diff --git a/src/diff.c b/src/diff.c index 35e29fcdf9..05ca7ac250 100644 --- a/src/diff.c +++ b/src/diff.c @@ -1075,6 +1075,10 @@ ex_diffsplit(exarg_T *eap) #ifdef FEAT_GUI need_mouse_correct = TRUE; #endif + /* Need to compute w_fraction when no redraw happened yet. */ + validate_cursor(); + set_fraction(curwin); + /* don't use a new tab page, each tab page has its own diffs */ cmdmod.tab = 0; @@ -1101,6 +1105,9 @@ ex_diffsplit(exarg_T *eap) curbuf, curwin->w_cursor.lnum); } + /* Now that lines are folded scroll to show the cursor at the same + * relative position. */ + scroll_to_fraction(curwin, curwin->w_height); } } } diff --git a/src/evalfunc.c b/src/evalfunc.c index 04f5c79685..9d59e47064 100644 --- a/src/evalfunc.c +++ b/src/evalfunc.c @@ -3905,8 +3905,7 @@ get_buffer_signs(buf_T *buf, list_T *l) { dict_add_nr_str(d, "id", sign->id, NULL); dict_add_nr_str(d, "lnum", sign->lnum, NULL); - dict_add_nr_str(d, "name", 0L, - vim_strsave(sign_typenr2name(sign->typenr))); + dict_add_nr_str(d, "name", 0L, sign_typenr2name(sign->typenr)); list_append_dict(l, d); } diff --git a/src/ex_cmds.c b/src/ex_cmds.c index 9f2cd9540f..b38171b49e 100644 --- a/src/ex_cmds.c +++ b/src/ex_cmds.c @@ -8471,6 +8471,7 @@ ex_oldfiles(exarg_T *eap UNUSED) msg_outnum((long)nr); MSG_PUTS(": "); msg_outtrans(fname); + msg_clr_eos(); msg_putchar('\n'); out_flush(); /* output one line at a time */ ui_breakcheck(); diff --git a/src/if_cscope.h b/src/if_cscope.h index a572f7385e..c542227404 100644 --- a/src/if_cscope.h +++ b/src/if_cscope.h @@ -25,16 +25,7 @@ #define CSCOPE_PROMPT ">> " /* - * s 0name Find this C symbol - * g 1name Find this definition - * d 2name Find functions called by this function - * c 3name Find functions calling this function - * t 4string find text string (cscope 12.9) - * t 4name Find assignments to (cscope 13.3) - * 5pattern change pattern -- NOT USED - * e 6pattern Find this egrep pattern - * f 7name Find this file - * i 8name Find files #including this file + * See ":help cscope-find" for the possible queries. */ typedef struct { diff --git a/src/if_lua.c b/src/if_lua.c index 5803d07912..b77a3cd5dd 100644 --- a/src/if_lua.c +++ b/src/if_lua.c @@ -398,14 +398,15 @@ lua_link_init(char *libname, int verbose) } return OK; } +#endif /* DYNAMIC_LUA */ +#if defined(DYNAMIC_LUA) || defined(PROTO) int lua_enabled(int verbose) { return lua_link_init((char *)p_luadll, verbose) == OK; } - -#endif /* DYNAMIC_LUA */ +#endif #if LUA_VERSION_NUM > 501 static int diff --git a/src/if_mzsch.h b/src/if_mzsch.h index 7c1766ebbc..8852602c09 100644 --- a/src/if_mzsch.h +++ b/src/if_mzsch.h @@ -10,6 +10,11 @@ # include #endif +#ifdef PROTO +/* avoid syntax error for defining Thread_Local_Variables. */ +# define __thread /* empty */ +#endif + /* #ifdef needed for "make depend" */ #ifdef FEAT_MZSCHEME # include diff --git a/src/message.c b/src/message.c index 5ed2347d50..9e76e28a5d 100644 --- a/src/message.c +++ b/src/message.c @@ -3994,6 +3994,30 @@ tv_float(typval_T *tvs, int *idxp) # endif #endif +#ifdef FEAT_FLOAT +/* + * Return the representation of infinity for printf() function: + * "-inf", "inf", "+inf", " inf", "-INF", "INF", "+INF" or " INF". + */ + static const char * +infinity_str(int positive, + char fmt_spec, + int force_sign, + int space_for_positive) +{ + static const char *table[] = + { + "-inf", "inf", "+inf", " inf", + "-INF", "INF", "+INF", " INF" + }; + int idx = positive * (1 + force_sign + force_sign * space_for_positive); + + if (ASCII_ISUPPER(fmt_spec)) + idx += 4; + return table[idx]; +} +#endif + /* * This code was included to provide a portable vsnprintf() and snprintf(). * Some systems may provide their own, but we always use this one for @@ -4012,8 +4036,8 @@ tv_float(typval_T *tvs, int *idxp) * * Limited support for floating point was added: 'f', 'e', 'E', 'g', 'G'. * - * Length modifiers 'h' (short int) and 'l' (long int) are supported. - * 'll' (long long int) is not supported. + * Length modifiers 'h' (short int) and 'l' (long int) and 'll' (long long int) + * are supported. * * The locale is not used, the string is used as a byte string. This is only * relevant for double-byte encodings where the second byte may be '%'. @@ -4401,7 +4425,7 @@ vim_vsnprintf( uvarnumber_T ullong_arg = 0; # endif - /* only defined for b convertion */ + /* only defined for b conversion */ uvarnumber_T bin_arg = 0; /* pointer argument value -only defined for p @@ -4706,7 +4730,6 @@ vim_vsnprintf( char format[40]; int l; int remove_trailing_zeroes = FALSE; - char *s; f = # if defined(FEAT_EVAL) @@ -4736,16 +4759,10 @@ vim_vsnprintf( ) { /* Avoid a buffer overflow */ - if (f < 0) - { - strcpy(tmp, "-inf"); - str_arg_l = 4; - } - else - { - strcpy(tmp, "inf"); - str_arg_l = 3; - } + STRCPY(tmp, infinity_str(f > 0.0, fmt_spec, + force_sign, space_for_positive)); + str_arg_l = STRLEN(tmp); + zero_padding = 0; } else { @@ -4765,23 +4782,25 @@ vim_vsnprintf( } format[l] = fmt_spec; format[l + 1] = NUL; - str_arg_l = sprintf(tmp, format, f); - /* Be consistent: Change "1.#IND" to "nan" and - * "1.#INF" to "inf". */ - s = *tmp == '-' ? tmp + 1 : tmp; - if (STRNCMP(s, "1.#INF", 6) == 0) - STRCPY(s, "inf"); - else if (STRNCMP(s, "1.#IND", 6) == 0) - STRCPY(s, "nan"); - - /* Remove sign before "nan". */ - if (STRNCMP(tmp, "-nan", 4) == 0) - STRCPY(tmp, "nan"); - - /* Add sign before "inf" if needed. */ - if (isinf(f) == -1 && STRNCMP(tmp, "inf", 3) == 0) - STRCPY(tmp, "-inf"); + if (isnan(f)) + { + /* Not a number: nan or NAN */ + STRCPY(tmp, ASCII_ISUPPER(fmt_spec) ? "NAN" + : "nan"); + str_arg_l = 3; + zero_padding = 0; + } + else if (isinf(f)) + { + STRCPY(tmp, infinity_str(f > 0.0, fmt_spec, + force_sign, space_for_positive)); + str_arg_l = STRLEN(tmp); + zero_padding = 0; + } + else + /* Regular float number */ + str_arg_l = sprintf(tmp, format, f); if (remove_trailing_zeroes) { diff --git a/src/option.h b/src/option.h index 1947431531..2ce8de8664 100644 --- a/src/option.h +++ b/src/option.h @@ -343,7 +343,7 @@ EXTERN unsigned bo_flags; static char *(p_bo_values[]) = {"all", "backspace", "cursor", "complete", "copy", "ctrlg", "error", "esc", "ex", "hangul", "insertmode", "lang", "mess", - "showmatch", "operator", "register", "shell", + "showmatch", "operator", "register", "shell", "spell", "wildmode", NULL}; # endif diff --git a/src/os_amiga.c b/src/os_amiga.c index 13610306e9..1d440aa1da 100644 --- a/src/os_amiga.c +++ b/src/os_amiga.c @@ -1123,7 +1123,7 @@ out_num(long n) dos_packet( struct MsgPort *pid, /* process identifier ... (handlers message port) */ long action, /* packet type ... (what you want handler to do) */ - arg) /* single argument */ + long arg) /* single argument */ { # ifdef FEAT_ARP struct MsgPort *replyport; diff --git a/src/os_mac_conv.c b/src/os_mac_conv.c index 9d8a6cfdfc..5fdec88e48 100644 --- a/src/os_mac_conv.c +++ b/src/os_mac_conv.c @@ -14,7 +14,7 @@ */ #define NO_X11_INCLUDES -#define BalloonEval int /* used in header files */ +typedef int BalloonEval; /* used in header files */ #include "vim.h" diff --git a/src/os_unix.c b/src/os_unix.c index cd7474396b..0f2fc62f7d 100644 --- a/src/os_unix.c +++ b/src/os_unix.c @@ -3940,6 +3940,7 @@ mch_new_shellsize(void) wait4pid(pid_t child, waitstatus *status) { pid_t wait_pid = 0; + long delay_msec = 1; while (wait_pid != child) { @@ -3954,8 +3955,10 @@ wait4pid(pid_t child, waitstatus *status) # endif if (wait_pid == 0) { - /* Wait for 10 msec before trying again. */ - mch_delay(10L, TRUE); + /* Wait for 1 to 10 msec before trying again. */ + mch_delay(delay_msec, TRUE); + if (++delay_msec > 10) + delay_msec = 10; continue; } if (wait_pid <= 0 @@ -4951,6 +4954,8 @@ finished: # if defined(FEAT_XCLIPBOARD) && defined(FEAT_X11) else { + long delay_msec = 1; + /* * Similar to the loop above, but only handle X events, no * I/O. @@ -4983,7 +4988,11 @@ finished: /* Handle any X events, e.g. serving the clipboard. */ clip_update(); - mch_delay(10L, TRUE); + /* Wait for 1 to 10 msec. 1 is faster but gives the child + * less time. */ + mch_delay(delay_msec, TRUE); + if (++delay_msec > 10) + delay_msec = 10; } } # endif diff --git a/src/os_win32.c b/src/os_win32.c index 2773953a6b..8e908b673e 100644 --- a/src/os_win32.c +++ b/src/os_win32.c @@ -137,6 +137,8 @@ typedef int PSNSECINFO; typedef int PSNSECINFOW; typedef int STARTUPINFO; typedef int PROCESS_INFORMATION; +typedef int LPSECURITY_ATTRIBUTES; +# define __stdcall /* empty */ #endif #ifndef FEAT_GUI_W32 diff --git a/src/proto/mbyte.pro b/src/proto/mbyte.pro index 0e41a41255..806a6c698a 100644 --- a/src/proto/mbyte.pro +++ b/src/proto/mbyte.pro @@ -10,7 +10,6 @@ int latin_char2len(int c); int latin_char2bytes(int c, char_u *buf); int latin_ptr2len(char_u *p); int latin_ptr2len_len(char_u *p, int size); -int utf_ambiguous_width(int c); int utf_char2cells(int c); int latin_ptr2cells(char_u *p); int utf_ptr2cells(char_u *p); @@ -41,6 +40,7 @@ int utf_char2bytes(int c, char_u *buf); int utf_iscomposing(int c); int utf_printable(int c); int utf_class(int c); +int utf_ambiguous_width(int c); int utf_fold(int a); int utf_toupper(int a); int utf_islower(int a); diff --git a/src/proto/window.pro b/src/proto/window.pro index d82988e30b..8b649dbf15 100644 --- a/src/proto/window.pro +++ b/src/proto/window.pro @@ -56,6 +56,7 @@ void win_drag_status_line(win_T *dragwin, int offset); void win_drag_vsep_line(win_T *dragwin, int offset); void set_fraction(win_T *wp); void win_new_height(win_T *wp, int height); +void scroll_to_fraction(win_T *wp, int prev_height); void win_new_width(win_T *wp, int width); void win_comp_scroll(win_T *wp); void command_height(void); diff --git a/src/structs.h b/src/structs.h index 63fb0e2c3f..3ed18cf98d 100644 --- a/src/structs.h +++ b/src/structs.h @@ -1127,8 +1127,13 @@ typedef long_u hash_T; /* Type for hi_hash */ #ifdef FEAT_NUM64 /* Use 64-bit Number. */ # ifdef WIN3264 +# ifdef PROTO +typedef long varnumber_T; +typedef unsigned long uvarnumber_T; +# else typedef __int64 varnumber_T; typedef unsigned __int64 uvarnumber_T; +# endif # elif defined(HAVE_STDINT_H) typedef int64_t varnumber_T; typedef uint64_t uvarnumber_T; diff --git a/src/testdir/test_channel.vim b/src/testdir/test_channel.vim index 6ecbc789aa..a038d4a2df 100644 --- a/src/testdir/test_channel.vim +++ b/src/testdir/test_channel.vim @@ -245,7 +245,6 @@ endfunc """"""""" -let g:Ch_reply = "" func Ch_handler(chan, msg) unlet g:Ch_reply let g:Ch_reply = a:msg @@ -271,8 +270,10 @@ endfunc func Test_channel_handler() call ch_log('Test_channel_handler()') + let g:Ch_reply = "" let s:chopt.callback = 'Ch_handler' call s:run_server('Ch_channel_handler') + let g:Ch_reply = "" let s:chopt.callback = function('Ch_handler') call s:run_server('Ch_channel_handler') unlet s:chopt.callback @@ -443,6 +444,11 @@ func Test_raw_pipe() let msg = ch_readraw(job) call assert_equal("this\nAND this\n", substitute(msg, "\r", "", 'g')) + let g:Ch_reply = "" + call ch_sendraw(job, "double this\n", {'callback': 'Ch_handler'}) + call WaitFor('"" != g:Ch_reply') + call assert_equal("this\nAND this\n", substitute(g:Ch_reply, "\r", "", 'g')) + let reply = ch_evalraw(job, "quit\n", {'timeout': 100}) call assert_equal("Goodbye!\n", substitute(reply, "\r", "", 'g')) finally diff --git a/src/testdir/test_cmdline.vim b/src/testdir/test_cmdline.vim index f6721d523a..4bacf5721d 100644 --- a/src/testdir/test_cmdline.vim +++ b/src/testdir/test_cmdline.vim @@ -186,5 +186,6 @@ func Test_expand_star_star() call writefile(['asdfasdf'], 'a/b/fileXname') call feedkeys(":find **/fileXname\\", 'xt') call assert_equal('find a/b/fileXname', getreg(':')) + bwipe! call delete('a', 'rf') endfunc diff --git a/src/testdir/test_expr.vim b/src/testdir/test_expr.vim index 6f1de59c94..11ca288dde 100644 --- a/src/testdir/test_expr.vim +++ b/src/testdir/test_expr.vim @@ -154,13 +154,22 @@ function Test_printf_misc() call assert_equal(' 123', printf('% d', 123)) call assert_equal('-123', printf('% d', -123)) + call assert_equal('123', printf('%2d', 123)) + call assert_equal(' 123', printf('%6d', 123)) + call assert_equal('000123', printf('%06d', 123)) + call assert_equal('+00123', printf('%+06d', 123)) + call assert_equal(' 00123', printf('% 06d', 123)) + call assert_equal(' +123', printf('%+6d', 123)) + call assert_equal(' 123', printf('% 6d', 123)) + call assert_equal(' -123', printf('% 6d', -123)) + call assert_equal('+123 ', printf('%-+6d', 123)) + call assert_equal(' 123 ', printf('%- 6d', 123)) + call assert_equal('-123 ', printf('%- 6d', -123)) + call assert_equal('00123', printf('%.*d', 5, 123)) call assert_equal(' 123', printf('% *d', 5, 123)) call assert_equal(' +123', printf('%+ *d', 5, 123)) - call assert_equal('123', printf('%2d', 123)) - call assert_equal(' 123', printf('%5d', 123)) - call assert_equal('00123', printf('%05d', 123)) call assert_equal('123 ', printf('%-5d', 123)) call assert_equal('0x7b', printf('%#x', 123)) call assert_equal('0X7B', printf('%#X', 123)) @@ -194,20 +203,81 @@ function Test_printf_float() if has('float') call assert_equal('1.230000', printf('%f', 1.23)) call assert_equal('1.230000', printf('%F', 1.23)) - call assert_equal('1.23', printf('%g', 1.23)) - call assert_equal('1.23', printf('%G', 1.23)) + call assert_equal('9999999.9', printf('%g', 9999999.9)) + call assert_equal('9999999.9', printf('%G', 9999999.9)) + call assert_equal('1.00000001e7', printf('%.8g', 10000000.1)) + call assert_equal('1.00000001E7', printf('%.8G', 10000000.1)) call assert_equal('1.230000e+00', printf('%e', 1.23)) call assert_equal('1.230000E+00', printf('%E', 1.23)) call assert_equal('1.200000e-02', printf('%e', 0.012)) call assert_equal('-1.200000e-02', printf('%e', -0.012)) - call assert_equal('1.2', printf('%.1f', 1.23)) + call assert_equal('0.33', printf('%.2f', 1.0/3.0)) + call assert_equal(' 0.33', printf('%6.2f', 1.0/3.0)) + call assert_equal(' -0.33', printf('%6.2f', -1.0/3.0)) + call assert_equal('000.33', printf('%06.2f', 1.0/3.0)) + " FIXME: call assert_equal('-00.33', printf('%06.2f', -1.0/3.0)) + " FIXME: call assert_equal('-00.33', printf('%+06.2f', -1.0/3.0)) + " FIXME: call assert_equal('+00.33', printf('%+06.2f', 1.0/3.0)) + " FIXME: call assert_equal(' 00.33', printf('% 06.2f', 1.0/3.0)) + " Float infinity can be signed. call assert_equal('inf', printf('%f', 1.0/0.0)) + call assert_equal('-inf', printf('%f', -1.0/0.0)) + call assert_equal('inf', printf('%g', 1.0/0.0)) + call assert_equal('-inf', printf('%g', -1.0/0.0)) + call assert_equal('inf', printf('%e', 1.0/0.0)) + call assert_equal('-inf', printf('%e', -1.0/0.0)) + call assert_equal('INF', printf('%E', 1.0/0.0)) + call assert_equal('-INF', printf('%E', -1.0/0.0)) + call assert_equal('INF', printf('%E', 1.0/0.0)) + call assert_equal('-INF', printf('%G', -1.0/0.0)) + call assert_equal('+inf', printf('%+f', 1.0/0.0)) + call assert_equal('-inf', printf('%+f', -1.0/0.0)) + call assert_equal(' inf', printf('% f', 1.0/0.0)) + call assert_equal(' inf', printf('%6f', 1.0/0.0)) + call assert_equal(' -inf', printf('%6f', -1.0/0.0)) + call assert_equal(' inf', printf('%6g', 1.0/0.0)) + call assert_equal(' -inf', printf('%6g', -1.0/0.0)) + call assert_equal(' +inf', printf('%+6f', 1.0/0.0)) + call assert_equal(' inf', printf('% 6f', 1.0/0.0)) + call assert_equal(' +inf', printf('%+06f', 1.0/0.0)) + call assert_equal('inf ', printf('%-6f', 1.0/0.0)) + call assert_equal('-inf ', printf('%-6f', -1.0/0.0)) + call assert_equal('+inf ', printf('%-+6f', 1.0/0.0)) + call assert_equal(' inf ', printf('%- 6f', 1.0/0.0)) + call assert_equal('INF ', printf('%-6G', 1.0/0.0)) + call assert_equal('-INF ', printf('%-6G', -1.0/0.0)) + call assert_equal('INF ', printf('%-6E', 1.0/0.0)) + call assert_equal('-INF ', printf('%-6E', -1.0/0.0)) + call assert_equal('inf', printf('%s', 1.0/0.0)) + call assert_equal('-inf', printf('%s', -1.0/0.0)) - call assert_match('^-inf$', printf('%f', -1.0/0.0)) + " Float zero can be signed. + call assert_equal('0.000000', printf('%f', 1.0/(1.0/0.0))) + call assert_equal('-0.000000', printf('%f', 1.0/(-1.0/0.0))) + call assert_equal('0.0', printf('%s', 1.0/(1.0/0.0))) + call assert_equal('-0.0', printf('%s', 1.0/(-1.0/0.0))) + call assert_equal('0.0', printf('%S', 1.0/(1.0/0.0))) + call assert_equal('-0.0', printf('%S', 1.0/(-1.0/0.0))) - call assert_match('^nan$', printf('%f', sqrt(-1.0))) - call assert_match('^nan$', printf('%f', 0.0/0.0)) + " Float nan (not a number) has no sign. + call assert_equal('nan', printf('%f', sqrt(-1.0))) + call assert_equal('nan', printf('%f', 0.0/0.0)) + call assert_equal('nan', printf('%f', -0.0/0.0)) + call assert_equal('nan', printf('%g', 0.0/0.0)) + call assert_equal('nan', printf('%e', 0.0/0.0)) + call assert_equal('NAN', printf('%G', 0.0/0.0)) + call assert_equal('NAN', printf('%E', 0.0/0.0)) + call assert_equal('NAN', printf('%G', -0.0/0.0)) + call assert_equal('NAN', printf('%E', -0.0/0.0)) + call assert_equal(' nan', printf('%6f', 0.0/0.0)) + call assert_equal(' nan', printf('%06f', 0.0/0.0)) + call assert_equal('nan ', printf('%-6f', 0.0/0.0)) + call assert_equal('nan ', printf('%- 6f', 0.0/0.0)) + call assert_equal('nan', printf('%s', 0.0/0.0)) + call assert_equal('nan', printf('%s', -0.0/0.0)) + call assert_equal('nan', printf('%S', 0.0/0.0)) + call assert_equal('nan', printf('%S', -0.0/0.0)) call assert_fails('echo printf("%f", "a")', 'E807:') endif diff --git a/src/testdir/test_timers.vim b/src/testdir/test_timers.vim index 7f1e5396fe..0fcc78341c 100644 --- a/src/testdir/test_timers.vim +++ b/src/testdir/test_timers.vim @@ -20,7 +20,7 @@ func Test_oneshot() let slept = WaitFor('g:val == 1') call assert_equal(1, g:val) if has('reltime') - call assert_inrange(50, 100, slept) + call assert_inrange(49, 100, slept) else call assert_inrange(20, 100, slept) endif @@ -32,7 +32,7 @@ func Test_repeat_three() let slept = WaitFor('g:val == 3') call assert_equal(3, g:val) if has('reltime') - call assert_inrange(150, 250, slept) + call assert_inrange(149, 250, slept) else call assert_inrange(80, 200, slept) endif @@ -57,7 +57,7 @@ func Test_with_partial_callback() let slept = WaitFor('g:val == 1') call assert_equal(1, g:val) if has('reltime') - call assert_inrange(50, 200, slept) + call assert_inrange(49, 200, slept) else call assert_inrange(20, 100, slept) endif diff --git a/src/version.c b/src/version.c index 8a071627ce..5b18157739 100644 --- a/src/version.c +++ b/src/version.c @@ -778,6 +778,36 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 2290, +/**/ + 2289, +/**/ + 2288, +/**/ + 2287, +/**/ + 2286, +/**/ + 2285, +/**/ + 2284, +/**/ + 2283, +/**/ + 2282, +/**/ + 2281, +/**/ + 2280, +/**/ + 2279, +/**/ + 2278, +/**/ + 2277, +/**/ + 2276, /**/ 2275, /**/ diff --git a/src/vim.h b/src/vim.h index e2e8e1f665..5a66999cd0 100644 --- a/src/vim.h +++ b/src/vim.h @@ -411,7 +411,11 @@ typedef __int64 off_T; # define vim_ftell _ftelli64 # endif #else +# ifdef PROTO +typedef long off_T; +# else typedef off_t off_T; +# endif # ifdef HAVE_FSEEKO # define vim_lseek lseek # define vim_ftell ftello @@ -1812,10 +1816,14 @@ typedef int proftime_T; /* dummy for function prototypes */ * bits elsewhere. That causes memory corruption. Define time_T and use it * for global variables to avoid that. */ -#ifdef WIN3264 -typedef __time64_t time_T; +#ifdef PROTO +typedef long time_T; #else +# ifdef WIN3264 +typedef __time64_t time_T; +# else typedef time_t time_T; +# endif #endif #ifdef _WIN64 diff --git a/src/window.c b/src/window.c index 438bd9a072..99716dfa7f 100644 --- a/src/window.c +++ b/src/window.c @@ -5679,8 +5679,6 @@ set_fraction(win_T *wp) void win_new_height(win_T *wp, int height) { - linenr_T lnum; - int sline, line_size; int prev_height = wp->w_height; /* Don't want a negative height. Happens when splitting a tiny window. @@ -5706,6 +5704,16 @@ win_new_height(win_T *wp, int height) wp->w_height = height; wp->w_skipcol = 0; + scroll_to_fraction(wp, prev_height); +} + + void +scroll_to_fraction(win_T *wp, int prev_height) +{ + linenr_T lnum; + int sline, line_size; + int height = wp->w_height; + /* Don't change w_topline when height is zero. Don't set w_topline when * 'scrollbind' is set and this isn't the current window. */ if (height > 0 diff --git a/tools/rename.bat b/tools/rename.bat new file mode 100644 index 0000000000..d66b0d33f8 --- /dev/null +++ b/tools/rename.bat @@ -0,0 +1,6 @@ +mv vim.exe vimw32.exe +mv tee/tee.exe teew32.exe +mv xxd/xxd.exe xxdw32.exe +mv vim.pdb vimw32.pdb +mv install.exe installw32.exe +mv uninstal.exe uninstalw32.exe