diff --git a/.gitignore b/.gitignore index 64fb33a..b66c295 100644 --- a/.gitignore +++ b/.gitignore @@ -6,6 +6,22 @@ SOURCES/7.4.064 SOURCES/7.4.085 SOURCES/7.4.131 SOURCES/7.4.147 +SOURCES/7.4.184 +SOURCES/7.4.241 +SOURCES/7.4.243 +SOURCES/7.4.249 +SOURCES/7.4.269 +SOURCES/7.4.399 +SOURCES/7.4.467 +SOURCES/7.4.492 +SOURCES/7.4.530 +SOURCES/7.4.563 +SOURCES/7.4.569 +SOURCES/7.4.573 +SOURCES/7.4.598 +SOURCES/7.4.608 +SOURCES/7.4.612 +SOURCES/7.4.616 SOURCES/Changelog.rpm SOURCES/gvim64.png SOURCES/vim-7.4.tar.bz2 diff --git a/.vim.metadata b/.vim.metadata index c3279d5..90bd371 100644 --- a/.vim.metadata +++ b/.vim.metadata @@ -6,6 +6,22 @@ d317d8d98c8d9e5b82311cdebbe641e49769acd3 SOURCES/7.4.045 06eec99738521488b4d08d6c9160ba3d2d3456f9 SOURCES/7.4.085 e75488de78a1174eb10f993b76f62d91633b9181 SOURCES/7.4.131 feebf1c35bd31622a16b6f91c70d9380ff1ef268 SOURCES/7.4.147 +9c8aedb4f282f4cc68dd8b198588309dce0413ad SOURCES/7.4.184 +623cd83b9cbf0e5eea8a5396c4a7de05c974dfb2 SOURCES/7.4.241 +06f65815eefec5d6ad4ebd73732c82ef77014e67 SOURCES/7.4.243 +7ab307fa27b4dc125b19bb871a2414945c062f97 SOURCES/7.4.249 +827d39f0e6ac104af4b4f598a3ec1162be55b5db SOURCES/7.4.269 +b8d2e20259ed477a557909e226ac232f8b06d986 SOURCES/7.4.399 +e05fdb6e3b231c66cc853a67d020cfe7ff8b2878 SOURCES/7.4.467 +4801f379d5452b2fefdb305bbbeddffef7eddaf2 SOURCES/7.4.492 +0aec9c9c3116e4b7ef8d5bd653805829824e6592 SOURCES/7.4.530 +aa25161167430793fd933e2a1f46d03f36382fd6 SOURCES/7.4.563 +4de7b50156f2bb862d93a751c69d74ece9f2f943 SOURCES/7.4.569 +e3ea314176a88fd1afe0c317370e6bf906763ce6 SOURCES/7.4.573 +136cf59f1de080cc1b0b91b7e2b9f7c04c0848f6 SOURCES/7.4.598 +42662ad6caea9620f3492a276cea3bcedd4c6f84 SOURCES/7.4.608 +f43aaa9078697b0a5577252c16cf84d682fa29eb SOURCES/7.4.612 +9c637238c6902c0b395d7f8dd277386e81ead87c SOURCES/7.4.616 5ea81545fc28b57c490d25bda67a63a2838dd25b SOURCES/Changelog.rpm c32bd520a1498b71ee9bbcddc7ad05df1565d085 SOURCES/gvim64.png 601abf7cc2b5ab186f40d8790e542f86afca86b7 SOURCES/vim-7.4.tar.bz2 diff --git a/SOURCES/7.4.161 b/SOURCES/7.4.161 new file mode 100644 index 0000000..0487264 --- /dev/null +++ b/SOURCES/7.4.161 @@ -0,0 +1,75 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.161 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.161 +Problem: Crash in Python exception handling. +Solution: Only use exception variables if did_throw is set. (ZyX) +Files: if_py_both.h + + +*** ../vim-7.4.160/src/if_py_both.h 2014-01-14 19:35:49.000000000 +0100 +--- src/if_py_both.h 2014-01-31 14:46:20.455526607 +0100 +*************** +*** 564,573 **** + /* Keyboard interrupt should be preferred over anything else */ + if (got_int) + { +! if (current_exception != NULL) + discard_current_exception(); +- else +- need_rethrow = did_throw = FALSE; + got_int = FALSE; + PyErr_SetNone(PyExc_KeyboardInterrupt); + return -1; +--- 564,571 ---- + /* Keyboard interrupt should be preferred over anything else */ + if (got_int) + { +! if (did_throw) + discard_current_exception(); + got_int = FALSE; + PyErr_SetNone(PyExc_KeyboardInterrupt); + return -1; +*************** +*** 599,608 **** + /* Python exception is preferred over vim one; unlikely to occur though */ + else if (PyErr_Occurred()) + { +! if (current_exception != NULL) +! discard_current_exception(); +! else +! need_rethrow = did_throw = FALSE; + return -1; + } + /* Finally transform VimL exception to python one */ +--- 597,603 ---- + /* Python exception is preferred over vim one; unlikely to occur though */ + else if (PyErr_Occurred()) + { +! discard_current_exception(); + return -1; + } + /* Finally transform VimL exception to python one */ +*** ../vim-7.4.160/src/version.c 2014-01-24 19:55:33.078220735 +0100 +--- src/version.c 2014-01-31 14:46:39.127526894 +0100 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 161, + /**/ + +-- +Eagles may soar, but weasels don't get sucked into jet engines. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.162 b/SOURCES/7.4.162 new file mode 100644 index 0000000..0687e88 --- /dev/null +++ b/SOURCES/7.4.162 @@ -0,0 +1,45 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.162 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.162 +Problem: Running tests in shadow dir doesn't work. +Solution: Add testdir/sautest to the shadow target. (James McCoy) +Files: src/Makefile + + +*** ../vim-7.4.161/src/Makefile 2013-11-07 03:25:51.000000000 +0100 +--- src/Makefile 2014-02-05 12:34:00.214024436 +0100 +*************** +*** 2381,2386 **** +--- 2381,2387 ---- + ../../testdir/*.in \ + ../../testdir/*.vim \ + ../../testdir/python* \ ++ ../../testdir/sautest \ + ../../testdir/test83-tags? \ + ../../testdir/*.ok . + +*** ../vim-7.4.161/src/version.c 2014-01-31 14:53:59.715533645 +0100 +--- src/version.c 2014-02-05 12:34:19.766024736 +0100 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 162, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +263. You have more e-mail addresses than shorts. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.163 b/SOURCES/7.4.163 new file mode 100644 index 0000000..b04e91d --- /dev/null +++ b/SOURCES/7.4.163 @@ -0,0 +1,75 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.163 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.163 (after 7.4.142) +Problem: MS-Windows input doesn't work properly on Windows 7 and earlier. +Solution: Add a check for Windows 8. (Yasuhiro Matsumoto) +Files: src/os_win32.c + + +*** ../vim-7.4.162/src/os_win32.c 2014-01-24 19:55:33.078220735 +0100 +--- src/os_win32.c 2014-02-05 13:33:03.758078734 +0100 +*************** +*** 232,237 **** +--- 232,239 ---- + + static char_u *exe_path = NULL; + ++ static BOOL win8_or_later = FALSE; ++ + /* + * Version of ReadConsoleInput() that works with IME. + * Works around problems on Windows 8. +*************** +*** 252,257 **** +--- 254,266 ---- + static DWORD s_dwMax = 0; + DWORD dwEvents; + ++ if (!win8_or_later) ++ { ++ if (nLength == -1) ++ return PeekConsoleInput(hInput, lpBuffer, 1, lpEvents); ++ return ReadConsoleInput(hInput, lpBuffer, 1, &dwEvents); ++ } ++ + if (s_dwMax == 0) + { + if (nLength == -1) +*************** +*** 617,622 **** +--- 626,635 ---- + + g_PlatformId = ovi.dwPlatformId; + ++ if ((ovi.dwMajorVersion == 6 && ovi.dwMinorVersion >= 2) ++ || ovi.dwMajorVersion > 6) ++ win8_or_later = TRUE; ++ + #ifdef HAVE_ACL + /* + * Load the ADVAPI runtime if we are on anything +*** ../vim-7.4.162/src/version.c 2014-02-05 12:36:36.622026833 +0100 +--- src/version.c 2014-02-05 13:31:31.618077322 +0100 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 163, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +266. You hear most of your jokes via e-mail instead of in person. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.164 b/SOURCES/7.4.164 new file mode 100644 index 0000000..b35deba --- /dev/null +++ b/SOURCES/7.4.164 @@ -0,0 +1,78 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.164 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.164 (after 7.4.163) +Problem: Problem with event handling on Windows 8. +Solution: Ignore duplicate WINDOW_BUFFER_SIZE_EVENTs. (Nobuhiro Takasaki) +Files: src/os_win32.c + + +*** ../vim-7.4.163/src/os_win32.c 2014-02-05 13:36:50.846082213 +0100 +--- src/os_win32.c 2014-02-05 14:01:13.350104623 +0100 +*************** +*** 253,258 **** +--- 253,261 ---- + static DWORD s_dwIndex = 0; + static DWORD s_dwMax = 0; + DWORD dwEvents; ++ int head; ++ int tail; ++ int i; + + if (!win8_or_later) + { +*************** +*** 274,280 **** +--- 277,305 ---- + *lpEvents = 0; + return TRUE; + } ++ ++ if (s_dwMax > 1) ++ { ++ head = 0; ++ tail = s_dwMax - 1; ++ while (head != tail) ++ { ++ if (s_irCache[head].EventType == WINDOW_BUFFER_SIZE_EVENT ++ && s_irCache[head + 1].EventType ++ == WINDOW_BUFFER_SIZE_EVENT) ++ { ++ /* Remove duplicate event to avoid flicker. */ ++ for (i = head; i < tail; ++i) ++ s_irCache[i] = s_irCache[i + 1]; ++ --tail; ++ continue; ++ } ++ head++; ++ } ++ s_dwMax = tail + 1; ++ } + } ++ + *lpBuffer = s_irCache[s_dwIndex]; + if (nLength != -1 && ++s_dwIndex >= s_dwMax) + s_dwMax = 0; +*** ../vim-7.4.163/src/version.c 2014-02-05 13:36:50.850082213 +0100 +--- src/version.c 2014-02-05 13:54:15.570098222 +0100 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 164, + /**/ + +-- +XML is a nice language for computers. Not for humans. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.165 b/SOURCES/7.4.165 new file mode 100644 index 0000000..ab42f73 --- /dev/null +++ b/SOURCES/7.4.165 @@ -0,0 +1,71 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.165 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.165 +Problem: By default, after closing a buffer changes can't be undone. +Solution: In the example vimrc file set 'undofile'. +Files: runtime/vimrc_example.vim + + +*** ../vim-7.4.164/runtime/vimrc_example.vim 2011-04-15 20:58:36.000000000 +0200 +--- runtime/vimrc_example.vim 2014-02-05 21:59:40.534544501 +0100 +*************** +*** 1,7 **** + " An example for a vimrc file. + " + " Maintainer: Bram Moolenaar <Bram@vim.org> +! " Last change: 2011 Apr 15 + " + " To use it, copy it to + " for Unix and OS/2: ~/.vimrc +--- 1,7 ---- + " An example for a vimrc file. + " + " Maintainer: Bram Moolenaar <Bram@vim.org> +! " Last change: 2014 Feb 05 + " + " To use it, copy it to + " for Unix and OS/2: ~/.vimrc +*************** +*** 24,30 **** + if has("vms") + set nobackup " do not keep a backup file, use versions instead + else +! set backup " keep a backup file + endif + set history=50 " keep 50 lines of command line history + set ruler " show the cursor position all the time +--- 24,31 ---- + if has("vms") + set nobackup " do not keep a backup file, use versions instead + else +! set backup " keep a backup file (restore to previous version) +! set undofile " keep an undo file (undo changes after closing) + endif + set history=50 " keep 50 lines of command line history + set ruler " show the cursor position all the time +*** ../vim-7.4.164/src/version.c 2014-02-05 14:02:23.590105699 +0100 +--- src/version.c 2014-02-05 21:59:47.774544612 +0100 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 165, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +269. You wonder how you can make your dustbin produce Sesame Street's + Oscar's the Garbage Monster song when you empty it. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.166 b/SOURCES/7.4.166 new file mode 100644 index 0000000..16f51b4 --- /dev/null +++ b/SOURCES/7.4.166 @@ -0,0 +1,53 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.166 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.166 +Problem: Auto-loading a function for code that won't be executed. +Solution: Do not auto-load when evaluation is off. (Yasuhiro Matsumoto) +Files: src/eval.c + + +*** ../vim-7.4.165/src/eval.c 2014-01-23 20:09:29.523869260 +0100 +--- src/eval.c 2014-02-05 22:04:21.110548800 +0100 +*************** +*** 5159,5165 **** + { + /* If "s" is the name of a variable of type VAR_FUNC + * use its contents. */ +! s = deref_func_name(s, &len, FALSE); + + /* Invoke the function. */ + ret = get_func_tv(s, len, rettv, arg, +--- 5159,5165 ---- + { + /* If "s" is the name of a variable of type VAR_FUNC + * use its contents. */ +! s = deref_func_name(s, &len, !evaluate); + + /* Invoke the function. */ + ret = get_func_tv(s, len, rettv, arg, +*** ../vim-7.4.165/src/version.c 2014-02-05 22:01:56.690546587 +0100 +--- src/version.c 2014-02-05 22:06:18.610550600 +0100 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 166, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +270. You are subscribed to a mailing list for every piece of software + you use. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.167 b/SOURCES/7.4.167 new file mode 100644 index 0000000..c3ad074 --- /dev/null +++ b/SOURCES/7.4.167 @@ -0,0 +1,195 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.167 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.167 (after 7.4.149) +Problem: Fixes are not tested. +Solution: Add a test for not autoloading on assignment. (Yukihiro Nakadaira) +Files: src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, + src/testdir/Make_ming.mak, src/testdir/Make_os2.mak, + src/testdir/Make_vms.mms, src/testdir/Makefile, + src/testdir/sautest/autoload/Test104.vim, src/testdir/test104.in, + src/testdir/test104.ok + + +*** ../vim-7.4.166/src/testdir/Make_amiga.mak 2013-11-21 14:21:25.000000000 +0100 +--- src/testdir/Make_amiga.mak 2014-02-05 22:16:46.654560224 +0100 +*************** +*** 34,40 **** + test81.out test82.out test83.out test84.out test88.out \ + test89.out test90.out test91.out test92.out test93.out \ + test94.out test95.out test96.out test97.out test98.out \ +! test99.out test100.out test101.out test102.out test103.out + + .SUFFIXES: .in .out + +--- 34,41 ---- + test81.out test82.out test83.out test84.out test88.out \ + test89.out test90.out test91.out test92.out test93.out \ + test94.out test95.out test96.out test97.out test98.out \ +! test99.out test100.out test101.out test102.out test103.out \ +! test104.out + + .SUFFIXES: .in .out + +*************** +*** 154,156 **** +--- 155,158 ---- + test101.out: test101.in + test102.out: test102.in + test103.out: test103.in ++ test104.out: test104.in +*** ../vim-7.4.166/src/testdir/Make_dos.mak 2013-11-21 14:21:25.000000000 +0100 +--- src/testdir/Make_dos.mak 2014-02-05 22:16:46.654560224 +0100 +*************** +*** 33,39 **** + test84.out test85.out test86.out test87.out test88.out \ + test89.out test90.out test91.out test92.out test93.out \ + test94.out test95.out test96.out test98.out test99.out \ +! test100.out test101.out test102.out test103.out + + SCRIPTS32 = test50.out test70.out + +--- 33,39 ---- + test84.out test85.out test86.out test87.out test88.out \ + test89.out test90.out test91.out test92.out test93.out \ + test94.out test95.out test96.out test98.out test99.out \ +! test100.out test101.out test102.out test103.out test104.out + + SCRIPTS32 = test50.out test70.out + +*** ../vim-7.4.166/src/testdir/Make_ming.mak 2014-01-06 15:51:46.000000000 +0100 +--- src/testdir/Make_ming.mak 2014-02-05 22:16:46.654560224 +0100 +*************** +*** 53,59 **** + test84.out test85.out test86.out test87.out test88.out \ + test89.out test90.out test91.out test92.out test93.out \ + test94.out test95.out test96.out test98.out test99.out \ +! test100.out test101.out test102.out test103.out + + SCRIPTS32 = test50.out test70.out + +--- 53,59 ---- + test84.out test85.out test86.out test87.out test88.out \ + test89.out test90.out test91.out test92.out test93.out \ + test94.out test95.out test96.out test98.out test99.out \ +! test100.out test101.out test102.out test103.out test104.out + + SCRIPTS32 = test50.out test70.out + +*** ../vim-7.4.166/src/testdir/Make_os2.mak 2013-11-21 14:21:25.000000000 +0100 +--- src/testdir/Make_os2.mak 2014-02-05 22:16:46.654560224 +0100 +*************** +*** 35,41 **** + test81.out test82.out test83.out test84.out test88.out \ + test89.out test90.out test91.out test92.out test93.out \ + test94.out test95.out test96.out test98.out test99.out \ +! test100.out test101.out test102.out test103.out + + .SUFFIXES: .in .out + +--- 35,41 ---- + test81.out test82.out test83.out test84.out test88.out \ + test89.out test90.out test91.out test92.out test93.out \ + test94.out test95.out test96.out test98.out test99.out \ +! test100.out test101.out test102.out test103.out test104.out + + .SUFFIXES: .in .out + +*** ../vim-7.4.166/src/testdir/Make_vms.mms 2013-11-21 14:21:25.000000000 +0100 +--- src/testdir/Make_vms.mms 2014-02-05 22:16:46.658560224 +0100 +*************** +*** 79,85 **** + test82.out test83.out test84.out test88.out test89.out \ + test90.out test91.out test92.out test93.out test94.out \ + test95.out test96.out test97.out test98.out test99.out \ +! test100.out test101.out test102.out test103.out + + # Known problems: + # Test 30: a problem around mac format - unknown reason +--- 79,85 ---- + test82.out test83.out test84.out test88.out test89.out \ + test90.out test91.out test92.out test93.out test94.out \ + test95.out test96.out test97.out test98.out test99.out \ +! test100.out test101.out test102.out test103.out test104.out + + # Known problems: + # Test 30: a problem around mac format - unknown reason +*** ../vim-7.4.166/src/testdir/Makefile 2013-11-21 14:21:25.000000000 +0100 +--- src/testdir/Makefile 2014-02-05 22:16:46.658560224 +0100 +*************** +*** 30,36 **** + test84.out test85.out test86.out test87.out test88.out \ + test89.out test90.out test91.out test92.out test93.out \ + test94.out test95.out test96.out test97.out test98.out \ +! test99.out test100.out test101.out test102.out test103.out + + SCRIPTS_GUI = test16.out + +--- 30,37 ---- + test84.out test85.out test86.out test87.out test88.out \ + test89.out test90.out test91.out test92.out test93.out \ + test94.out test95.out test96.out test97.out test98.out \ +! test99.out test100.out test101.out test102.out test103.out \ +! test104.out + + SCRIPTS_GUI = test16.out + +*** ../vim-7.4.166/src/testdir/sautest/autoload/Test104.vim 2014-02-05 22:25:12.050567968 +0100 +--- src/testdir/sautest/autoload/Test104.vim 2014-02-05 22:16:46.658560224 +0100 +*************** +*** 0 **** +--- 1 ---- ++ let Test104#numvar = 123 +*** ../vim-7.4.166/src/testdir/test104.in 2014-02-05 22:25:12.062567968 +0100 +--- src/testdir/test104.in 2014-02-05 22:24:07.706566982 +0100 +*************** +*** 0 **** +--- 1,16 ---- ++ Tests for autoload. vim: set ft=vim ts=8 : ++ ++ STARTTEST ++ :so small.vim ++ :set runtimepath+=./sautest ++ :" Test to not autoload when assigning. It causes internal error. ++ :try ++ : let Test104#numvar = function('tr') ++ : $put ='OK: ' . string(Test104#numvar) ++ :catch ++ : $put ='FAIL: ' . v:exception ++ :endtry ++ :/^Results/,$wq! test.out ++ ENDTEST ++ ++ Results of test104: +*** ../vim-7.4.166/src/testdir/test104.ok 2014-02-05 22:25:12.070567968 +0100 +--- src/testdir/test104.ok 2014-02-05 22:16:46.658560224 +0100 +*************** +*** 0 **** +--- 1,2 ---- ++ Results of test104: ++ OK: function('tr') +*** ../vim-7.4.166/src/version.c 2014-02-05 22:13:02.366556787 +0100 +--- src/version.c 2014-02-05 22:18:05.506561432 +0100 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 167, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +271. You collect hilarious signatures from all 250 mailing lists you + are subscribed to. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.168 b/SOURCES/7.4.168 new file mode 100644 index 0000000..ac57dc4 --- /dev/null +++ b/SOURCES/7.4.168 @@ -0,0 +1,91 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.168 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.168 +Problem: Can't compile with Ruby 2.1.0. +Solution: Add support for new GC. (Kohei Suzuki) +Files: src/if_ruby.c + + +*** ../vim-7.4.167/src/if_ruby.c 2013-05-20 12:47:48.000000000 +0200 +--- src/if_ruby.c 2014-02-05 22:35:17.378577243 +0100 +*************** +*** 96,101 **** +--- 96,107 ---- + # define rb_num2int rb_num2int_stub + #endif + ++ # if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 21 ++ /* Ruby 2.1 adds new GC called RGenGC and RARRAY_PTR uses ++ * rb_gc_writebarrier_unprotect_promoted if USE_RGENGC */ ++ # define rb_gc_writebarrier_unprotect_promoted rb_gc_writebarrier_unprotect_promoted_stub ++ # endif ++ + #include <ruby.h> + #ifdef RUBY19_OR_LATER + # include <ruby/encoding.h> +*************** +*** 373,378 **** +--- 379,388 ---- + static void* (*ruby_process_options)(int, char**); + # endif + ++ # if defined(USE_RGENGC) && USE_RGENGC ++ static void (*dll_rb_gc_writebarrier_unprotect_promoted)(VALUE); ++ # endif ++ + # if defined(RUBY19_OR_LATER) && !defined(PROTO) + SIGNED_VALUE rb_num2long_stub(VALUE x) + { +*************** +*** 406,411 **** +--- 416,428 ---- + # endif + # endif + ++ # if defined(USE_RGENGC) && USE_RGENGC ++ void rb_gc_writebarrier_unprotect_promoted_stub(VALUE obj) ++ { ++ return dll_rb_gc_writebarrier_unprotect_promoted(obj); ++ } ++ # endif ++ + static HINSTANCE hinstRuby = NULL; /* Instance of ruby.dll */ + + /* +*************** +*** 521,526 **** +--- 538,546 ---- + # endif + {"ruby_init_stack", (RUBY_PROC*)&dll_ruby_init_stack}, + # endif ++ # if defined(USE_RGENGC) && USE_RGENGC ++ {"rb_gc_writebarrier_unprotect_promoted", (RUBY_PROC*)&dll_rb_gc_writebarrier_unprotect_promoted}, ++ # endif + {"", NULL}, + }; + +*** ../vim-7.4.167/src/version.c 2014-02-05 22:25:29.982568243 +0100 +--- src/version.c 2014-02-05 22:36:14.010578111 +0100 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 168, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +10E. You start counting in hex. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.169 b/SOURCES/7.4.169 new file mode 100644 index 0000000..bfb4c16 --- /dev/null +++ b/SOURCES/7.4.169 @@ -0,0 +1,53 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.169 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.169 +Problem: ":sleep" puts cursor in the wrong column. (Liang Li) +Solution: Add the window offset. (Christian Brabandt) +Files: src/ex_docmd.c + + +*** ../vim-7.4.168/src/ex_docmd.c 2014-01-10 15:53:09.000000000 +0100 +--- src/ex_docmd.c 2014-02-05 22:45:39.318586773 +0100 +*************** +*** 8371,8377 **** + { + n = W_WINROW(curwin) + curwin->w_wrow - msg_scrolled; + if (n >= 0) +! windgoto((int)n, curwin->w_wcol); + } + + len = eap->line2; +--- 8371,8377 ---- + { + n = W_WINROW(curwin) + curwin->w_wrow - msg_scrolled; + if (n >= 0) +! windgoto((int)n, W_WINCOL(curwin) + curwin->w_wcol); + } + + len = eap->line2; +*** ../vim-7.4.168/src/version.c 2014-02-05 22:41:11.430582669 +0100 +--- src/version.c 2014-02-05 22:44:51.458586040 +0100 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 169, + /**/ + +-- +ARTHUR: This new learning amazes me, Sir Bedevere. Explain again how sheep's + bladders may be employed to prevent earthquakes. + "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.170 b/SOURCES/7.4.170 new file mode 100644 index 0000000..17de640 --- /dev/null +++ b/SOURCES/7.4.170 @@ -0,0 +1,90 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.170 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.170 +Problem: Some help tags don't work with ":help". (Tim Chase) +Solution: Add exceptions. +Files: src/ex_cmds.c + + +*** ../vim-7.4.169/src/ex_cmds.c 2013-11-09 03:31:45.000000000 +0100 +--- src/ex_cmds.c 2014-02-11 12:10:43.905946437 +0100 +*************** +*** 5936,5949 **** + "?", ":?", "?<CR>", "g?", "g?g?", "g??", "z?", + "/\\?", "/\\z(\\)", "\\=", ":s\\=", + "[count]", "[quotex]", "[range]", +! "[pattern]", "\\|", "\\%$"}; + static char *(rtable[]) = {"star", "gstar", "[star", "]star", ":star", + "/star", "/\\\\star", "quotestar", "starstar", + "cpo-star", "/\\\\(\\\\)", "/\\\\%(\\\\)", + "?", ":?", "?<CR>", "g?", "g?g?", "g??", "z?", + "/\\\\?", "/\\\\z(\\\\)", "\\\\=", ":s\\\\=", + "\\[count]", "\\[quotex]", "\\[range]", +! "\\[pattern]", "\\\\bar", "/\\\\%\\$"}; + int flags; + + d = IObuff; /* assume IObuff is long enough! */ +--- 5936,5953 ---- + "?", ":?", "?<CR>", "g?", "g?g?", "g??", "z?", + "/\\?", "/\\z(\\)", "\\=", ":s\\=", + "[count]", "[quotex]", "[range]", +! "[pattern]", "\\|", "\\%$", +! "s/\\~", "s/\\U", "s/\\L", +! "s/\\1", "s/\\2", "s/\\3", "s/\\9"}; + static char *(rtable[]) = {"star", "gstar", "[star", "]star", ":star", + "/star", "/\\\\star", "quotestar", "starstar", + "cpo-star", "/\\\\(\\\\)", "/\\\\%(\\\\)", + "?", ":?", "?<CR>", "g?", "g?g?", "g??", "z?", + "/\\\\?", "/\\\\z(\\\\)", "\\\\=", ":s\\\\=", + "\\[count]", "\\[quotex]", "\\[range]", +! "\\[pattern]", "\\\\bar", "/\\\\%\\$", +! "s/\\\\\\~", "s/\\\\U", "s/\\\\L", +! "s/\\\\1", "s/\\\\2", "s/\\\\3", "s/\\\\9"}; + int flags; + + d = IObuff; /* assume IObuff is long enough! */ +*************** +*** 5982,5988 **** + /* Replace: + * "[:...:]" with "\[:...:]" + * "[++...]" with "\[++...]" +! * "\{" with "\\{" + */ + if ((arg[0] == '[' && (arg[1] == ':' + || (arg[1] == '+' && arg[2] == '+'))) +--- 5986,5992 ---- + /* Replace: + * "[:...:]" with "\[:...:]" + * "[++...]" with "\[++...]" +! * "\{" with "\\{" -- matching "} \}" + */ + if ((arg[0] == '[' && (arg[1] == ':' + || (arg[1] == '+' && arg[2] == '+'))) +*** ../vim-7.4.169/src/version.c 2014-02-05 22:46:49.062587842 +0100 +--- src/version.c 2014-02-11 11:41:50.433919875 +0100 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 170, + /**/ + +-- + GALAHAD turns back. We see from his POV the lovely ZOOT standing by him + smiling enchantingly and a number of equally delectable GIRLIES draped + around in the seductively poulticed room. They look at him smilingly and + wave. + "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.171 b/SOURCES/7.4.171 new file mode 100644 index 0000000..cfd3906 --- /dev/null +++ b/SOURCES/7.4.171 @@ -0,0 +1,841 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.171 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.171 +Problem: Redo does not set v:count and v:count1. +Solution: Use a separate buffer for redo, so that we can set the counts when + performing redo. +Files: src/getchar.c, src/globals.h, src/normal.c, src/proto/getchar.pro, + src/structs.h + + +*** ../vim-7.4.170/src/getchar.c 2013-06-29 13:43:27.000000000 +0200 +--- src/getchar.c 2014-02-11 14:54:46.830097259 +0100 +*************** +*** 40,52 **** + + #define MINIMAL_SIZE 20 /* minimal size for b_str */ + +! static struct buffheader redobuff = {{NULL, {NUL}}, NULL, 0, 0}; +! static struct buffheader old_redobuff = {{NULL, {NUL}}, NULL, 0, 0}; + #if defined(FEAT_AUTOCMD) || defined(FEAT_EVAL) || defined(PROTO) +! static struct buffheader save_redobuff = {{NULL, {NUL}}, NULL, 0, 0}; +! static struct buffheader save_old_redobuff = {{NULL, {NUL}}, NULL, 0, 0}; + #endif +! static struct buffheader recordbuff = {{NULL, {NUL}}, NULL, 0, 0}; + + static int typeahead_char = 0; /* typeahead char that's not flushed */ + +--- 40,52 ---- + + #define MINIMAL_SIZE 20 /* minimal size for b_str */ + +! static buffheader_T redobuff = {{NULL, {NUL}}, NULL, 0, 0}; +! static buffheader_T old_redobuff = {{NULL, {NUL}}, NULL, 0, 0}; + #if defined(FEAT_AUTOCMD) || defined(FEAT_EVAL) || defined(PROTO) +! static buffheader_T save_redobuff = {{NULL, {NUL}}, NULL, 0, 0}; +! static buffheader_T save_old_redobuff = {{NULL, {NUL}}, NULL, 0, 0}; + #endif +! static buffheader_T recordbuff = {{NULL, {NUL}}, NULL, 0, 0}; + + static int typeahead_char = 0; /* typeahead char that's not flushed */ + +*************** +*** 112,122 **** + + static int last_recorded_len = 0; /* number of last recorded chars */ + +! static char_u *get_buffcont __ARGS((struct buffheader *, int)); +! static void add_buff __ARGS((struct buffheader *, char_u *, long n)); +! static void add_num_buff __ARGS((struct buffheader *, long)); +! static void add_char_buff __ARGS((struct buffheader *, int)); +! static int read_stuff __ARGS((int advance)); + static void start_stuff __ARGS((void)); + static int read_redo __ARGS((int, int)); + static void copy_redo __ARGS((int)); +--- 112,123 ---- + + static int last_recorded_len = 0; /* number of last recorded chars */ + +! static char_u *get_buffcont __ARGS((buffheader_T *, int)); +! static void add_buff __ARGS((buffheader_T *, char_u *, long n)); +! static void add_num_buff __ARGS((buffheader_T *, long)); +! static void add_char_buff __ARGS((buffheader_T *, int)); +! static int read_readbuffers __ARGS((int advance)); +! static int read_readbuf __ARGS((buffheader_T *buf, int advance)); + static void start_stuff __ARGS((void)); + static int read_redo __ARGS((int, int)); + static void copy_redo __ARGS((int)); +*************** +*** 137,145 **** + */ + void + free_buff(buf) +! struct buffheader *buf; + { +! struct buffblock *p, *np; + + for (p = buf->bh_first.b_next; p != NULL; p = np) + { +--- 138,146 ---- + */ + void + free_buff(buf) +! buffheader_T *buf; + { +! buffblock_T *p, *np; + + for (p = buf->bh_first.b_next; p != NULL; p = np) + { +*************** +*** 155,168 **** + */ + static char_u * + get_buffcont(buffer, dozero) +! struct buffheader *buffer; + int dozero; /* count == zero is not an error */ + { + long_u count = 0; + char_u *p = NULL; + char_u *p2; + char_u *str; +! struct buffblock *bp; + + /* compute the total length of the string */ + for (bp = buffer->bh_first.b_next; bp != NULL; bp = bp->b_next) +--- 156,169 ---- + */ + static char_u * + get_buffcont(buffer, dozero) +! buffheader_T *buffer; + int dozero; /* count == zero is not an error */ + { + long_u count = 0; + char_u *p = NULL; + char_u *p2; + char_u *str; +! buffblock_T *bp; + + /* compute the total length of the string */ + for (bp = buffer->bh_first.b_next; bp != NULL; bp = bp->b_next) +*************** +*** 230,240 **** + */ + static void + add_buff(buf, s, slen) +! struct buffheader *buf; + char_u *s; + long slen; /* length of "s" or -1 */ + { +! struct buffblock *p; + long_u len; + + if (slen < 0) +--- 231,241 ---- + */ + static void + add_buff(buf, s, slen) +! buffheader_T *buf; + char_u *s; + long slen; /* length of "s" or -1 */ + { +! buffblock_T *p; + long_u len; + + if (slen < 0) +*************** +*** 270,276 **** + len = MINIMAL_SIZE; + else + len = slen; +! p = (struct buffblock *)lalloc((long_u)(sizeof(struct buffblock) + len), + TRUE); + if (p == NULL) + return; /* no space, just forget it */ +--- 271,277 ---- + len = MINIMAL_SIZE; + else + len = slen; +! p = (buffblock_T *)lalloc((long_u)(sizeof(buffblock_T) + len), + TRUE); + if (p == NULL) + return; /* no space, just forget it */ +*************** +*** 289,295 **** + */ + static void + add_num_buff(buf, n) +! struct buffheader *buf; + long n; + { + char_u number[32]; +--- 290,296 ---- + */ + static void + add_num_buff(buf, n) +! buffheader_T *buf; + long n; + { + char_u number[32]; +*************** +*** 304,310 **** + */ + static void + add_char_buff(buf, c) +! struct buffheader *buf; + int c; + { + #ifdef FEAT_MBYTE +--- 305,311 ---- + */ + static void + add_char_buff(buf, c) +! buffheader_T *buf; + int c; + { + #ifdef FEAT_MBYTE +*************** +*** 354,399 **** + #endif + } + + /* +! * Get one byte from the stuff buffer. + * If advance == TRUE go to the next char. + * No translation is done K_SPECIAL and CSI are escaped. + */ + static int +! read_stuff(advance) + int advance; + { +! char_u c; +! struct buffblock *curr; + +! if (stuffbuff.bh_first.b_next == NULL) /* buffer is empty */ + return NUL; + +! curr = stuffbuff.bh_first.b_next; +! c = curr->b_str[stuffbuff.bh_index]; + + if (advance) + { +! if (curr->b_str[++stuffbuff.bh_index] == NUL) + { +! stuffbuff.bh_first.b_next = curr->b_next; + vim_free(curr); +! stuffbuff.bh_index = 0; + } + } + return c; + } + + /* +! * Prepare the stuff buffer for reading (if it contains something). + */ + static void + start_stuff() + { +! if (stuffbuff.bh_first.b_next != NULL) + { +! stuffbuff.bh_curr = &(stuffbuff.bh_first); +! stuffbuff.bh_space = 0; + } + } + +--- 355,425 ---- + #endif + } + ++ /* First read ahead buffer. Used for translated commands. */ ++ static buffheader_T readbuf1 = {{NULL, {NUL}}, NULL, 0, 0}; ++ ++ /* Second read ahead buffer. Used for redo. */ ++ static buffheader_T readbuf2 = {{NULL, {NUL}}, NULL, 0, 0}; ++ + /* +! * Get one byte from the read buffers. Use readbuf1 one first, use readbuf2 +! * if that one is empty. + * If advance == TRUE go to the next char. + * No translation is done K_SPECIAL and CSI are escaped. + */ + static int +! read_readbuffers(advance) + int advance; + { +! int c; +! +! c = read_readbuf(&readbuf1, advance); +! if (c == NUL) +! c = read_readbuf(&readbuf2, advance); +! return c; +! } +! +! static int +! read_readbuf(buf, advance) +! buffheader_T *buf; +! int advance; +! { +! char_u c; +! buffblock_T *curr; + +! if (buf->bh_first.b_next == NULL) /* buffer is empty */ + return NUL; + +! curr = buf->bh_first.b_next; +! c = curr->b_str[buf->bh_index]; + + if (advance) + { +! if (curr->b_str[++buf->bh_index] == NUL) + { +! buf->bh_first.b_next = curr->b_next; + vim_free(curr); +! buf->bh_index = 0; + } + } + return c; + } + + /* +! * Prepare the read buffers for reading (if they contains something). + */ + static void + start_stuff() + { +! if (readbuf1.bh_first.b_next != NULL) + { +! readbuf1.bh_curr = &(readbuf1.bh_first); +! readbuf1.bh_space = 0; +! } +! if (readbuf2.bh_first.b_next != NULL) +! { +! readbuf2.bh_curr = &(readbuf2.bh_first); +! readbuf2.bh_space = 0; + } + } + +*************** +*** 403,409 **** + int + stuff_empty() + { +! return (stuffbuff.bh_first.b_next == NULL); + } + + /* +--- 429,446 ---- + int + stuff_empty() + { +! return (readbuf1.bh_first.b_next == NULL +! && readbuf2.bh_first.b_next == NULL); +! } +! +! /* +! * Return TRUE if readbuf1 is empty. There may still be redo characters in +! * redbuf2. +! */ +! int +! readbuf1_empty() +! { +! return (readbuf1.bh_first.b_next == NULL); + } + + /* +*************** +*** 428,434 **** + init_typebuf(); + + start_stuff(); +! while (read_stuff(TRUE) != NUL) + ; + + if (flush_typeahead) /* remove all typeahead */ +--- 465,471 ---- + init_typebuf(); + + start_stuff(); +! while (read_readbuffers(TRUE) != NUL) + ; + + if (flush_typeahead) /* remove all typeahead */ +*************** +*** 483,489 **** + redobuff = old_redobuff; + old_redobuff.bh_first.b_next = NULL; + start_stuff(); +! while (read_stuff(TRUE) != NUL) + ; + } + } +--- 520,526 ---- + redobuff = old_redobuff; + old_redobuff.bh_first.b_next = NULL; + start_stuff(); +! while (read_readbuffers(TRUE) != NUL) + ; + } + } +*************** +*** 638,644 **** + stuffReadbuff(s) + char_u *s; + { +! add_buff(&stuffbuff, s, -1L); + } + + void +--- 675,681 ---- + stuffReadbuff(s) + char_u *s; + { +! add_buff(&readbuf1, s, -1L); + } + + void +*************** +*** 646,652 **** + char_u *s; + long len; + { +! add_buff(&stuffbuff, s, len); + } + + #if defined(FEAT_EVAL) || defined(PROTO) +--- 683,689 ---- + char_u *s; + long len; + { +! add_buff(&readbuf1, s, len); + } + + #if defined(FEAT_EVAL) || defined(PROTO) +*************** +*** 692,698 **** + stuffcharReadbuff(c) + int c; + { +! add_char_buff(&stuffbuff, c); + } + + /* +--- 729,735 ---- + stuffcharReadbuff(c) + int c; + { +! add_char_buff(&readbuf1, c); + } + + /* +*************** +*** 702,708 **** + stuffnumReadbuff(n) + long n; + { +! add_num_buff(&stuffbuff, n); + } + + /* +--- 739,745 ---- + stuffnumReadbuff(n) + long n; + { +! add_num_buff(&readbuf1, n); + } + + /* +*************** +*** 718,730 **** + int init; + int old_redo; + { +! static struct buffblock *bp; +! static char_u *p; +! int c; + #ifdef FEAT_MBYTE +! int n; +! char_u buf[MB_MAXBYTES + 1]; +! int i; + #endif + + if (init) +--- 755,767 ---- + int init; + int old_redo; + { +! static buffblock_T *bp; +! static char_u *p; +! int c; + #ifdef FEAT_MBYTE +! int n; +! char_u buf[MB_MAXBYTES + 1]; +! int i; + #endif + + if (init) +*************** +*** 795,805 **** + int c; + + while ((c = read_redo(FALSE, old_redo)) != NUL) +! stuffcharReadbuff(c); + } + + /* +! * Stuff the redo buffer into the stuffbuff. + * Insert the redo count into the command. + * If "old_redo" is TRUE, the last but one command is repeated + * instead of the last command (inserting text). This is used for +--- 832,842 ---- + int c; + + while ((c = read_redo(FALSE, old_redo)) != NUL) +! add_char_buff(&readbuf2, c); + } + + /* +! * Stuff the redo buffer into readbuf2. + * Insert the redo count into the command. + * If "old_redo" is TRUE, the last but one command is repeated + * instead of the last command (inserting text). This is used for +*************** +*** 823,835 **** + /* copy the buffer name, if present */ + if (c == '"') + { +! add_buff(&stuffbuff, (char_u *)"\"", 1L); + c = read_redo(FALSE, old_redo); + + /* if a numbered buffer is used, increment the number */ + if (c >= '1' && c < '9') + ++c; +! add_char_buff(&stuffbuff, c); + c = read_redo(FALSE, old_redo); + } + +--- 860,872 ---- + /* copy the buffer name, if present */ + if (c == '"') + { +! add_buff(&readbuf2, (char_u *)"\"", 1L); + c = read_redo(FALSE, old_redo); + + /* if a numbered buffer is used, increment the number */ + if (c >= '1' && c < '9') + ++c; +! add_char_buff(&readbuf2, c); + c = read_redo(FALSE, old_redo); + } + +*************** +*** 850,867 **** + { + while (VIM_ISDIGIT(c)) /* skip "old" count */ + c = read_redo(FALSE, old_redo); +! add_num_buff(&stuffbuff, count); + } + + /* copy from the redo buffer into the stuff buffer */ +! add_char_buff(&stuffbuff, c); + copy_redo(old_redo); + return OK; + } + + /* + * Repeat the last insert (R, o, O, a, A, i or I command) by stuffing +! * the redo buffer into the stuffbuff. + * return FAIL for failure, OK otherwise + */ + int +--- 887,904 ---- + { + while (VIM_ISDIGIT(c)) /* skip "old" count */ + c = read_redo(FALSE, old_redo); +! add_num_buff(&readbuf2, count); + } + + /* copy from the redo buffer into the stuff buffer */ +! add_char_buff(&readbuf2, c); + copy_redo(old_redo); + return OK; + } + + /* + * Repeat the last insert (R, o, O, a, A, i or I command) by stuffing +! * the redo buffer into readbuf2. + * return FAIL for failure, OK otherwise + */ + int +*************** +*** 879,885 **** + if (vim_strchr((char_u *)"AaIiRrOo", c) != NULL) + { + if (c == 'O' || c == 'o') +! stuffReadbuff(NL_STR); + break; + } + } +--- 916,922 ---- + if (vim_strchr((char_u *)"AaIiRrOo", c) != NULL) + { + if (c == 'O' || c == 'o') +! add_buff(&readbuf2, NL_STR, -1L); + break; + } + } +*************** +*** 1360,1367 **** + tp->old_mod_mask = old_mod_mask; + old_char = -1; + +! tp->save_stuffbuff = stuffbuff; +! stuffbuff.bh_first.b_next = NULL; + # ifdef USE_INPUT_BUF + tp->save_inputbuf = get_input_buf(); + # endif +--- 1397,1406 ---- + tp->old_mod_mask = old_mod_mask; + old_char = -1; + +! tp->save_readbuf1 = readbuf1; +! readbuf1.bh_first.b_next = NULL; +! tp->save_readbuf2 = readbuf2; +! readbuf2.bh_first.b_next = NULL; + # ifdef USE_INPUT_BUF + tp->save_inputbuf = get_input_buf(); + # endif +*************** +*** 1384,1391 **** + old_char = tp->old_char; + old_mod_mask = tp->old_mod_mask; + +! free_buff(&stuffbuff); +! stuffbuff = tp->save_stuffbuff; + # ifdef USE_INPUT_BUF + set_input_buf(tp->save_inputbuf); + # endif +--- 1423,1432 ---- + old_char = tp->old_char; + old_mod_mask = tp->old_mod_mask; + +! free_buff(&readbuf1); +! readbuf1 = tp->save_readbuf1; +! free_buff(&readbuf2); +! readbuf2 = tp->save_readbuf2; + # ifdef USE_INPUT_BUF + set_input_buf(tp->save_inputbuf); + # endif +*************** +*** 1992,1998 **** + typeahead_char = 0; + } + else +! c = read_stuff(advance); + if (c != NUL && !got_int) + { + if (advance) +--- 2033,2039 ---- + typeahead_char = 0; + } + else +! c = read_readbuffers(advance); + if (c != NUL && !got_int) + { + if (advance) +*** ../vim-7.4.170/src/globals.h 2013-11-09 03:31:45.000000000 +0100 +--- src/globals.h 2014-02-11 14:17:44.070063200 +0100 +*************** +*** 979,989 **** + EXTERN int readonlymode INIT(= FALSE); /* Set to TRUE for "view" */ + EXTERN int recoverymode INIT(= FALSE); /* Set to TRUE for "-r" option */ + +- EXTERN struct buffheader stuffbuff /* stuff buffer */ +- #ifdef DO_INIT +- = {{NULL, {NUL}}, NULL, 0, 0} +- #endif +- ; + EXTERN typebuf_T typebuf /* typeahead buffer */ + #ifdef DO_INIT + = {NULL, NULL, 0, 0, 0, 0, 0, 0, 0} +--- 979,984 ---- +*** ../vim-7.4.170/src/normal.c 2014-01-14 13:18:53.000000000 +0100 +--- src/normal.c 2014-02-11 14:53:54.246096453 +0100 +*************** +*** 655,662 **** + #ifdef FEAT_EVAL + /* Set v:count here, when called from main() and not a stuffed + * command, so that v:count can be used in an expression mapping +! * when there is no count. */ +! if (toplevel && stuff_empty()) + set_vcount_ca(&ca, &set_prevcount); + #endif + +--- 655,662 ---- + #ifdef FEAT_EVAL + /* Set v:count here, when called from main() and not a stuffed + * command, so that v:count can be used in an expression mapping +! * when there is no count. Do set it for redo. */ +! if (toplevel && readbuf1_empty()) + set_vcount_ca(&ca, &set_prevcount); + #endif + +*************** +*** 736,743 **** + #ifdef FEAT_EVAL + /* Set v:count here, when called from main() and not a stuffed + * command, so that v:count can be used in an expression mapping +! * right after the count. */ +! if (toplevel && stuff_empty()) + set_vcount_ca(&ca, &set_prevcount); + #endif + if (ctrl_w) +--- 736,743 ---- + #ifdef FEAT_EVAL + /* Set v:count here, when called from main() and not a stuffed + * command, so that v:count can be used in an expression mapping +! * right after the count. Do set it for redo. */ +! if (toplevel && readbuf1_empty()) + set_vcount_ca(&ca, &set_prevcount); + #endif + if (ctrl_w) +*************** +*** 819,826 **** + #ifdef FEAT_EVAL + /* + * Only set v:count when called from main() and not a stuffed command. + */ +! if (toplevel && stuff_empty()) + set_vcount(ca.count0, ca.count1, set_prevcount); + #endif + +--- 819,827 ---- + #ifdef FEAT_EVAL + /* + * Only set v:count when called from main() and not a stuffed command. ++ * Do set it for redo. + */ +! if (toplevel && readbuf1_empty()) + set_vcount(ca.count0, ca.count1, set_prevcount); + #endif + +*** ../vim-7.4.170/src/proto/getchar.pro 2013-08-10 13:37:12.000000000 +0200 +--- src/proto/getchar.pro 2014-02-11 14:55:14.806097687 +0100 +*************** +*** 1,8 **** + /* getchar.c */ +! void free_buff __ARGS((struct buffheader *buf)); + char_u *get_recorded __ARGS((void)); + char_u *get_inserted __ARGS((void)); + int stuff_empty __ARGS((void)); + void typeahead_noflush __ARGS((int c)); + void flush_buffers __ARGS((int flush_typeahead)); + void ResetRedobuff __ARGS((void)); +--- 1,9 ---- + /* getchar.c */ +! void free_buff __ARGS((buffheader_T *buf)); + char_u *get_recorded __ARGS((void)); + char_u *get_inserted __ARGS((void)); + int stuff_empty __ARGS((void)); ++ int readbuf1_empty __ARGS((void)); + void typeahead_noflush __ARGS((int c)); + void flush_buffers __ARGS((int flush_typeahead)); + void ResetRedobuff __ARGS((void)); +*** ../vim-7.4.170/src/structs.h 2013-11-12 04:43:57.000000000 +0100 +--- src/structs.h 2014-02-11 14:35:43.606079741 +0100 +*************** +*** 471,483 **** + blocknr_T nt_new_bnum; /* new, positive, number */ + }; + + /* + * structure used to store one block of the stuff/redo/recording buffers + */ + struct buffblock + { +! struct buffblock *b_next; /* pointer to next buffblock */ +! char_u b_str[1]; /* contents (actually longer) */ + }; + + /* +--- 471,487 ---- + blocknr_T nt_new_bnum; /* new, positive, number */ + }; + ++ ++ typedef struct buffblock buffblock_T; ++ typedef struct buffheader buffheader_T; ++ + /* + * structure used to store one block of the stuff/redo/recording buffers + */ + struct buffblock + { +! buffblock_T *b_next; /* pointer to next buffblock */ +! char_u b_str[1]; /* contents (actually longer) */ + }; + + /* +*************** +*** 485,494 **** + */ + struct buffheader + { +! struct buffblock bh_first; /* first (dummy) block of list */ +! struct buffblock *bh_curr; /* buffblock for appending */ +! int bh_index; /* index for reading */ +! int bh_space; /* space in bh_curr for appending */ + }; + + /* +--- 489,498 ---- + */ + struct buffheader + { +! buffblock_T bh_first; /* first (dummy) block of list */ +! buffblock_T *bh_curr; /* buffblock for appending */ +! int bh_index; /* index for reading */ +! int bh_space; /* space in bh_curr for appending */ + }; + + /* +*************** +*** 964,970 **** + int typebuf_valid; /* TRUE when save_typebuf valid */ + int old_char; + int old_mod_mask; +! struct buffheader save_stuffbuff; + #ifdef USE_INPUT_BUF + char_u *save_inputbuf; + #endif +--- 968,975 ---- + int typebuf_valid; /* TRUE when save_typebuf valid */ + int old_char; + int old_mod_mask; +! buffheader_T save_readbuf1; +! buffheader_T save_readbuf2; + #ifdef USE_INPUT_BUF + char_u *save_inputbuf; + #endif +*** ../vim-7.4.170/src/version.c 2014-02-11 12:15:39.781950970 +0100 +--- src/version.c 2014-02-11 15:05:17.306106920 +0100 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 171, + /**/ + +-- +Linux is just like a wigwam: no Windows, no Gates and an Apache inside. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.172 b/SOURCES/7.4.172 new file mode 100644 index 0000000..8ad9fca --- /dev/null +++ b/SOURCES/7.4.172 @@ -0,0 +1,346 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.172 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.172 +Problem: The blowfish code mentions output feedback, but the code is + actually doing cipher feedback. +Solution: Adjust names and comments. +Files: src/blowfish.c, src/fileio.c, src/proto/blowfish.pro, + src/memline.c + + +*** ../vim-7.4.171/src/blowfish.c 2010-12-17 19:58:18.000000000 +0100 +--- src/blowfish.c 2014-02-11 15:18:12.882118804 +0100 +*************** +*** 6,12 **** + * Do ":help credits" in Vim to see a list of people who contributed. + * See README.txt for an overview of the Vim source code. + * +! * Blowfish encryption for Vim; in Blowfish output feedback mode. + * Contributed by Mohsin Ahmed, http://www.cs.albany.edu/~mosh + * Based on http://www.schneier.com/blowfish.html by Bruce Schneier. + */ +--- 6,12 ---- + * Do ":help credits" in Vim to see a list of people who contributed. + * See README.txt for an overview of the Vim source code. + * +! * Blowfish encryption for Vim; in Blowfish cipher feedback mode. + * Contributed by Mohsin Ahmed, http://www.cs.albany.edu/~mosh + * Based on http://www.schneier.com/blowfish.html by Bruce Schneier. + */ +*************** +*** 19,25 **** + + #define BF_BLOCK 8 + #define BF_BLOCK_MASK 7 +! #define BF_OFB_LEN (8*(BF_BLOCK)) + + typedef union { + UINT32_T ul[2]; +--- 19,25 ---- + + #define BF_BLOCK 8 + #define BF_BLOCK_MASK 7 +! #define BF_CFB_LEN (8*(BF_BLOCK)) + + typedef union { + UINT32_T ul[2]; +*************** +*** 554,595 **** + return err > 0 ? FAIL : OK; + } + +! /* Output feedback mode. */ + static int randbyte_offset = 0; + static int update_offset = 0; +! static char_u ofb_buffer[BF_OFB_LEN]; /* 64 bytes */ + + /* + * Initialize with seed "iv[iv_len]". + */ + void +! bf_ofb_init(iv, iv_len) + char_u *iv; + int iv_len; + { + int i, mi; + + randbyte_offset = update_offset = 0; +! vim_memset(ofb_buffer, 0, BF_OFB_LEN); + if (iv_len > 0) + { +! mi = iv_len > BF_OFB_LEN ? iv_len : BF_OFB_LEN; + for (i = 0; i < mi; i++) +! ofb_buffer[i % BF_OFB_LEN] ^= iv[i % iv_len]; + } + } + +! #define BF_OFB_UPDATE(c) { \ +! ofb_buffer[update_offset] ^= (char_u)c; \ +! if (++update_offset == BF_OFB_LEN) \ + update_offset = 0; \ + } + + #define BF_RANBYTE(t) { \ + if ((randbyte_offset & BF_BLOCK_MASK) == 0) \ +! bf_e_cblock(&ofb_buffer[randbyte_offset]); \ +! t = ofb_buffer[randbyte_offset]; \ +! if (++randbyte_offset == BF_OFB_LEN) \ + randbyte_offset = 0; \ + } + +--- 554,595 ---- + return err > 0 ? FAIL : OK; + } + +! /* Cipher feedback mode. */ + static int randbyte_offset = 0; + static int update_offset = 0; +! static char_u cfb_buffer[BF_CFB_LEN]; /* 64 bytes */ + + /* + * Initialize with seed "iv[iv_len]". + */ + void +! bf_cfb_init(iv, iv_len) + char_u *iv; + int iv_len; + { + int i, mi; + + randbyte_offset = update_offset = 0; +! vim_memset(cfb_buffer, 0, BF_CFB_LEN); + if (iv_len > 0) + { +! mi = iv_len > BF_CFB_LEN ? iv_len : BF_CFB_LEN; + for (i = 0; i < mi; i++) +! cfb_buffer[i % BF_CFB_LEN] ^= iv[i % iv_len]; + } + } + +! #define BF_CFB_UPDATE(c) { \ +! cfb_buffer[update_offset] ^= (char_u)c; \ +! if (++update_offset == BF_CFB_LEN) \ + update_offset = 0; \ + } + + #define BF_RANBYTE(t) { \ + if ((randbyte_offset & BF_BLOCK_MASK) == 0) \ +! bf_e_cblock(&cfb_buffer[randbyte_offset]); \ +! t = cfb_buffer[randbyte_offset]; \ +! if (++randbyte_offset == BF_CFB_LEN) \ + randbyte_offset = 0; \ + } + +*************** +*** 610,616 **** + { + ztemp = from[i]; + BF_RANBYTE(t); +! BF_OFB_UPDATE(ztemp); + to[i] = t ^ ztemp; + } + } +--- 610,616 ---- + { + ztemp = from[i]; + BF_RANBYTE(t); +! BF_CFB_UPDATE(ztemp); + to[i] = t ^ ztemp; + } + } +*************** +*** 630,636 **** + { + BF_RANBYTE(t); + *p ^= t; +! BF_OFB_UPDATE(*p); + } + } + +--- 630,636 ---- + { + BF_RANBYTE(t); + *p ^= t; +! BF_CFB_UPDATE(*p); + } + } + +*************** +*** 646,658 **** + + for (p = passwd; *p != NUL; ++p) + { +! BF_OFB_UPDATE(*p); + } + } + + static int save_randbyte_offset; + static int save_update_offset; +! static char_u save_ofb_buffer[BF_OFB_LEN]; + static UINT32_T save_pax[18]; + static UINT32_T save_sbx[4][256]; + +--- 646,658 ---- + + for (p = passwd; *p != NUL; ++p) + { +! BF_CFB_UPDATE(*p); + } + } + + static int save_randbyte_offset; + static int save_update_offset; +! static char_u save_cfb_buffer[BF_CFB_LEN]; + static UINT32_T save_pax[18]; + static UINT32_T save_sbx[4][256]; + +*************** +*** 665,671 **** + { + save_randbyte_offset = randbyte_offset; + save_update_offset = update_offset; +! mch_memmove(save_ofb_buffer, ofb_buffer, BF_OFB_LEN); + mch_memmove(save_pax, pax, 4 * 18); + mch_memmove(save_sbx, sbx, 4 * 4 * 256); + } +--- 665,671 ---- + { + save_randbyte_offset = randbyte_offset; + save_update_offset = update_offset; +! mch_memmove(save_cfb_buffer, cfb_buffer, BF_CFB_LEN); + mch_memmove(save_pax, pax, 4 * 18); + mch_memmove(save_sbx, sbx, 4 * 4 * 256); + } +*************** +*** 679,685 **** + { + randbyte_offset = save_randbyte_offset; + update_offset = save_update_offset; +! mch_memmove(ofb_buffer, save_ofb_buffer, BF_OFB_LEN); + mch_memmove(pax, save_pax, 4 * 18); + mch_memmove(sbx, save_sbx, 4 * 4 * 256); + } +--- 679,685 ---- + { + randbyte_offset = save_randbyte_offset; + update_offset = save_update_offset; +! mch_memmove(cfb_buffer, save_cfb_buffer, BF_CFB_LEN); + mch_memmove(pax, save_pax, 4 * 18); + mch_memmove(sbx, save_sbx, 4 * 4 * 256); + } +*** ../vim-7.4.171/src/fileio.c 2013-11-28 18:53:47.000000000 +0100 +--- src/fileio.c 2014-02-11 15:16:57.546117649 +0100 +*************** +*** 2973,2979 **** + else + { + bf_key_init(cryptkey, ptr + CRYPT_MAGIC_LEN, salt_len); +! bf_ofb_init(ptr + CRYPT_MAGIC_LEN + salt_len, seed_len); + } + + /* Remove magic number from the text */ +--- 2973,2979 ---- + else + { + bf_key_init(cryptkey, ptr + CRYPT_MAGIC_LEN, salt_len); +! bf_cfb_init(ptr + CRYPT_MAGIC_LEN + salt_len, seed_len); + } + + /* Remove magic number from the text */ +*************** +*** 3025,3031 **** + if (fread(buffer, salt_len + seed_len, 1, fp) != 1) + return FAIL; + bf_key_init(curbuf->b_p_key, buffer, salt_len); +! bf_ofb_init(buffer + salt_len, seed_len); + } + return OK; + } +--- 3025,3031 ---- + if (fread(buffer, salt_len + seed_len, 1, fp) != 1) + return FAIL; + bf_key_init(curbuf->b_p_key, buffer, salt_len); +! bf_cfb_init(buffer + salt_len, seed_len); + } + return OK; + } +*************** +*** 3064,3070 **** + seed = salt + salt_len; + sha2_seed(salt, salt_len, seed, seed_len); + bf_key_init(buf->b_p_key, salt, salt_len); +! bf_ofb_init(seed, seed_len); + } + } + *lenp = CRYPT_MAGIC_LEN + salt_len + seed_len; +--- 3064,3070 ---- + seed = salt + salt_len; + sha2_seed(salt, salt_len, seed, seed_len); + bf_key_init(buf->b_p_key, salt, salt_len); +! bf_cfb_init(seed, seed_len); + } + } + *lenp = CRYPT_MAGIC_LEN + salt_len + seed_len; +*** ../vim-7.4.171/src/proto/blowfish.pro 2013-08-10 13:37:06.000000000 +0200 +--- src/proto/blowfish.pro 2014-02-11 15:18:20.382118919 +0100 +*************** +*** 1,6 **** + /* blowfish.c */ + void bf_key_init __ARGS((char_u *password, char_u *salt, int salt_len)); +! void bf_ofb_init __ARGS((char_u *iv, int iv_len)); + void bf_crypt_encode __ARGS((char_u *from, size_t len, char_u *to)); + void bf_crypt_decode __ARGS((char_u *ptr, long len)); + void bf_crypt_init_keys __ARGS((char_u *passwd)); +--- 1,6 ---- + /* blowfish.c */ + void bf_key_init __ARGS((char_u *password, char_u *salt, int salt_len)); +! void bf_cfb_init __ARGS((char_u *iv, int iv_len)); + void bf_crypt_encode __ARGS((char_u *from, size_t len, char_u *to)); + void bf_crypt_decode __ARGS((char_u *ptr, long len)); + void bf_crypt_init_keys __ARGS((char_u *passwd)); +*** ../vim-7.4.171/src/memline.c 2013-11-28 17:41:41.000000000 +0100 +--- src/memline.c 2014-02-11 15:17:02.190117720 +0100 +*************** +*** 4914,4920 **** + * block for the salt. */ + vim_snprintf((char *)salt, sizeof(salt), "%ld", (long)offset); + bf_key_init(key, salt, (int)STRLEN(salt)); +! bf_ofb_init(seed, MF_SEED_LEN); + } + } + +--- 4914,4920 ---- + * block for the salt. */ + vim_snprintf((char *)salt, sizeof(salt), "%ld", (long)offset); + bf_key_init(key, salt, (int)STRLEN(salt)); +! bf_cfb_init(seed, MF_SEED_LEN); + } + } + +*** ../vim-7.4.171/src/version.c 2014-02-11 15:10:38.138111836 +0100 +--- src/version.c 2014-02-11 15:16:01.206116786 +0100 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 172, + /**/ + +-- +GALAHAD: No look, really, this isn't nescess ... +PIGLET: We must examine you. +GALAHAD: There's nothing wrong with ... that. + "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.173 b/SOURCES/7.4.173 new file mode 100644 index 0000000..1756bdc --- /dev/null +++ b/SOURCES/7.4.173 @@ -0,0 +1,61 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.173 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.173 +Problem: When using scrollbind the cursor can end up below the last line. + (mvxxc) +Solution: Reset w_botfill when scrolling up. (Christian Brabandt) +Files: src/move.c + + +*** ../vim-7.4.172/src/move.c 2012-11-28 18:15:42.000000000 +0100 +--- src/move.c 2014-02-11 15:39:24.758138292 +0100 +*************** +*** 2101,2106 **** +--- 2101,2107 ---- + int used; + lineoff_T loff; + lineoff_T boff; ++ linenr_T old_topline = curwin->w_topline; + + loff.lnum = boff.lnum = curwin->w_cursor.lnum; + #ifdef FEAT_FOLDING +*************** +*** 2156,2161 **** +--- 2157,2164 ---- + curwin->w_topline = topline; + #ifdef FEAT_DIFF + curwin->w_topfill = topfill; ++ if (old_topline > curwin->w_topline + curwin->w_height) ++ curwin->w_botfill = FALSE; + check_topfill(curwin, FALSE); + #endif + curwin->w_valid &= ~(VALID_WROW|VALID_CROW|VALID_BOTLINE|VALID_BOTLINE_AP); +*** ../vim-7.4.172/src/version.c 2014-02-11 15:23:27.942123631 +0100 +--- src/version.c 2014-02-11 15:38:34.562137523 +0100 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 173, + /**/ + +-- + GALAHAD hurries to the door and pushes through it. As he leaves the room + we CUT TO the reverse to show that he is now in a room full of bathing + and romping GIRLIES, all innocent, wide-eyed and beautiful. They smile + enchantingly at him as he tries to keep walking without being diverted by + the lovely sights assaulting his eyeballs. + "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.174 b/SOURCES/7.4.174 new file mode 100644 index 0000000..827e65c --- /dev/null +++ b/SOURCES/7.4.174 @@ -0,0 +1,94 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.174 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.174 +Problem: Compiler warnings for Python interface. (Tony Mechelynck) +Solution: Add type casts, initialize variable. +Files: src/if_py_both.h + + +*** ../vim-7.4.173/src/if_py_both.h 2014-01-31 14:53:59.715533645 +0100 +--- src/if_py_both.h 2014-02-11 15:57:30.678154932 +0100 +*************** +*** 2368,2374 **** + PyInt numreplaced = 0; + PyInt numadded = 0; + PyInt size; +! listitem_T **lis; + + size = ListLength(self); + +--- 2368,2374 ---- + PyInt numreplaced = 0; + PyInt numadded = 0; + PyInt size; +! listitem_T **lis = NULL; + + size = ListLength(self); + +*************** +*** 2503,2510 **** + { + Py_DECREF(iterator); + PyErr_FORMAT(PyExc_ValueError, +! N_("attempt to assign sequence of size greater then %d " +! "to extended slice"), slicelen); + list_restore(numadded, numreplaced, slicelen, l, lis, lastaddedli); + PyMem_Free(lis); + return -1; +--- 2503,2510 ---- + { + Py_DECREF(iterator); + PyErr_FORMAT(PyExc_ValueError, +! N_("attempt to assign sequence of size greater then %ld " +! "to extended slice"), (long)slicelen); + list_restore(numadded, numreplaced, slicelen, l, lis, lastaddedli); + PyMem_Free(lis); + return -1; +*************** +*** 2516,2523 **** + if (step != 1 && i != slicelen) + { + PyErr_FORMAT2(PyExc_ValueError, +! N_("attempt to assign sequence of size %d to extended slice " +! "of size %d"), i, slicelen); + list_restore(numadded, numreplaced, slicelen, l, lis, lastaddedli); + PyMem_Free(lis); + return -1; +--- 2516,2523 ---- + if (step != 1 && i != slicelen) + { + PyErr_FORMAT2(PyExc_ValueError, +! N_("attempt to assign sequence of size %ld to extended slice " +! "of size %ld"), (long)i, (long)slicelen); + list_restore(numadded, numreplaced, slicelen, l, lis, lastaddedli); + PyMem_Free(lis); + return -1; +*** ../vim-7.4.173/src/version.c 2014-02-11 15:47:41.382145902 +0100 +--- src/version.c 2014-02-11 15:59:04.646156372 +0100 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 174, + /**/ + +-- +DINGO: You must spank her well and after you have spanked her you + may deal with her as you like and then ... spank me. +AMAZING: And spank me! +STUNNER: And me. +LOVELY: And me. + "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.175 b/SOURCES/7.4.175 new file mode 100644 index 0000000..99ca390 --- /dev/null +++ b/SOURCES/7.4.175 @@ -0,0 +1,180 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.175 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.175 +Problem: When a wide library function fails, falling back to the non-wide + function may do the wrong thing. +Solution: Check the platform, when the wide function is supported don't fall + back to the non-wide function. (Ken Takata) +Files: src/os_mswin.c, src/os_win32.c + + +*** ../vim-7.4.174/src/os_mswin.c 2014-01-14 12:18:41.000000000 +0100 +--- src/os_mswin.c 2014-02-11 17:02:03.002214267 +0100 +*************** +*** 648,654 **** + { + n = wstat_symlink_aware(wp, (struct _stat *)stp); + vim_free(wp); +! if (n >= 0) + return n; + /* Retry with non-wide function (for Windows 98). Can't use + * GetLastError() here and it's unclear what errno gets set to if +--- 648,654 ---- + { + n = wstat_symlink_aware(wp, (struct _stat *)stp); + vim_free(wp); +! if (n >= 0 || g_PlatformId == VER_PLATFORM_WIN32_NT) + return n; + /* Retry with non-wide function (for Windows 98). Can't use + * GetLastError() here and it's unclear what errno gets set to if +*************** +*** 815,822 **** + { + n = _wchdir(p); + vim_free(p); +! if (n == 0) +! return 0; + /* Retry with non-wide function (for Windows 98). */ + } + } +--- 815,822 ---- + { + n = _wchdir(p); + vim_free(p); +! if (n == 0 || g_PlatformId == VER_PLATFORM_WIN32_NT) +! return n; + /* Retry with non-wide function (for Windows 98). */ + } + } +*************** +*** 1942,1949 **** + + shortcut_errorw: + vim_free(p); +! if (hr == S_OK) +! goto shortcut_end; + } + } + /* Retry with non-wide function (for Windows 98). */ +--- 1942,1948 ---- + + shortcut_errorw: + vim_free(p); +! goto shortcut_end; + } + } + /* Retry with non-wide function (for Windows 98). */ +*** ../vim-7.4.174/src/os_win32.c 2014-02-05 14:02:23.590105699 +0100 +--- src/os_win32.c 2014-02-11 16:59:26.810211874 +0100 +*************** +*** 2877,2882 **** +--- 2877,2884 ---- + return OK; + } + } ++ else if (GetLastError() != ERROR_CALL_NOT_IMPLEMENTED) ++ return FAIL; + /* Retry with non-wide function (for Windows 98). */ + } + #endif +*************** +*** 2917,2922 **** +--- 2919,2926 ---- + return; + } + } ++ else if (GetLastError() != ERROR_CALL_NOT_IMPLEMENTED) ++ return; + /* Retry with non-wide function (for Windows 98). */ + } + #endif +*************** +*** 2966,2971 **** +--- 2970,2977 ---- + return OK; + } + } ++ else if (GetLastError() != ERROR_CALL_NOT_IMPLEMENTED) ++ return FAIL; + /* Retry with non-wide function (for Windows 98). */ + } + #endif +*************** +*** 3006,3012 **** + { + n = _wchmod(p, perm); + vim_free(p); +! if (n == -1 && GetLastError() != ERROR_CALL_NOT_IMPLEMENTED) + return FAIL; + /* Retry with non-wide function (for Windows 98). */ + } +--- 3012,3018 ---- + { + n = _wchmod(p, perm); + vim_free(p); +! if (n == -1 && g_PlatformId == VER_PLATFORM_WIN32_NT) + return FAIL; + /* Retry with non-wide function (for Windows 98). */ + } +*************** +*** 6048,6054 **** + { + f = _wopen(wn, flags, mode); + vim_free(wn); +! if (f >= 0) + return f; + /* Retry with non-wide function (for Windows 98). Can't use + * GetLastError() here and it's unclear what errno gets set to if +--- 6054,6060 ---- + { + f = _wopen(wn, flags, mode); + vim_free(wn); +! if (f >= 0 || g_PlatformId == VER_PLATFORM_WIN32_NT) + return f; + /* Retry with non-wide function (for Windows 98). Can't use + * GetLastError() here and it's unclear what errno gets set to if +*************** +*** 6099,6105 **** + _set_fmode(oldMode); + # endif + +! if (f != NULL) + return f; + /* Retry with non-wide function (for Windows 98). Can't use + * GetLastError() here and it's unclear what errno gets set to if +--- 6105,6111 ---- + _set_fmode(oldMode); + # endif + +! if (f != NULL || g_PlatformId == VER_PLATFORM_WIN32_NT) + return f; + /* Retry with non-wide function (for Windows 98). Can't use + * GetLastError() here and it's unclear what errno gets set to if +*** ../vim-7.4.174/src/version.c 2014-02-11 16:00:31.198157698 +0100 +--- src/version.c 2014-02-11 16:33:10.002187713 +0100 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 175, + /**/ + +-- +DINGO: And after the spanking ... the oral sex. +GALAHAD: Oh, dear! Well, I... +GIRLS: The oral sex ... The oral sex. +GALAHAD: Well, I suppose I could stay a BIT longer. + "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.176 b/SOURCES/7.4.176 new file mode 100644 index 0000000..ccde6b6 --- /dev/null +++ b/SOURCES/7.4.176 @@ -0,0 +1,91 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.176 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.176 +Problem: Dictionary.update() thows an error when used without arguments. + Python programmers don't expect that. +Solution: Make Dictionary.update() without arguments do nothing. (ZyX) +Files: src/if_py_both.h, src/testdir/test86.in, src/testdir/test87.in + + +*** ../vim-7.4.175/src/if_py_both.h 2014-02-11 16:00:31.198157698 +0100 +--- src/if_py_both.h 2014-02-11 18:41:12.774305435 +0100 +*************** +*** 1918,1928 **** + } + else + { +! PyObject *obj; + +! if (!PyArg_ParseTuple(args, "O", &obj)) + return NULL; + + if (PyObject_HasAttrString(obj, "keys")) + return DictionaryUpdate(self, NULL, obj); + else +--- 1919,1935 ---- + } + else + { +! PyObject *obj = NULL; + +! if (!PyArg_ParseTuple(args, "|O", &obj)) + return NULL; + ++ if (obj == NULL) ++ { ++ Py_INCREF(Py_None); ++ return Py_None; ++ } ++ + if (PyObject_HasAttrString(obj, "keys")) + return DictionaryUpdate(self, NULL, obj); + else +*** ../vim-7.4.175/src/testdir/test86.in 2014-01-14 16:54:53.000000000 +0100 +--- src/testdir/test86.in 2014-02-11 17:25:08.414235496 +0100 +*************** +*** 39,44 **** +--- 39,45 ---- + py << EOF + d=vim.bindeval('d') + d['1']='asd' ++ d.update() # Must not do anything, including throwing errors + d.update(b=[1, 2, f]) + d.update((('-1', {'a': 1}),)) + d.update({'0': -1}) +*** ../vim-7.4.175/src/testdir/test87.in 2014-01-14 16:54:53.000000000 +0100 +--- src/testdir/test87.in 2014-02-11 17:25:12.602235560 +0100 +*************** +*** 33,38 **** +--- 33,39 ---- + py3 << EOF + d=vim.bindeval('d') + d['1']='asd' ++ d.update() # Must not do anything, including throwing errors + d.update(b=[1, 2, f]) + d.update((('-1', {'a': 1}),)) + d.update({'0': -1}) +*** ../vim-7.4.175/src/version.c 2014-02-11 17:05:57.282217857 +0100 +--- src/version.c 2014-02-11 18:46:37.518310411 +0100 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 176, + /**/ + +-- +"Intelligence has much less practical application than you'd think." + -- Scott Adams, Dilbert. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.177 b/SOURCES/7.4.177 new file mode 100644 index 0000000..b943a19 --- /dev/null +++ b/SOURCES/7.4.177 @@ -0,0 +1,48 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.177 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.177 +Problem: Compiler warning for unused variable. (Tony Mechelynck) +Solution: Add #ifdef. +Files: src/move.c + + +*** ../vim-7.4.176/src/move.c 2014-02-11 15:47:41.382145902 +0100 +--- src/move.c 2014-02-11 18:13:57.378280376 +0100 +*************** +*** 2101,2107 **** +--- 2101,2109 ---- + int used; + lineoff_T loff; + lineoff_T boff; ++ #ifdef FEAT_DIFF + linenr_T old_topline = curwin->w_topline; ++ #endif + + loff.lnum = boff.lnum = curwin->w_cursor.lnum; + #ifdef FEAT_FOLDING +*** ../vim-7.4.176/src/version.c 2014-02-11 18:47:18.682311042 +0100 +--- src/version.c 2014-02-11 18:57:55.110320794 +0100 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 177, + /**/ + +-- +The psychic said, "God bless you." I said, "I didn't sneeze." She +looked deep into my eyes and said, "You will, eventually." And, damn +if she wasn't right. Two days later, I sneezed. --Ellen Degeneres + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.178 b/SOURCES/7.4.178 new file mode 100644 index 0000000..36e2eec --- /dev/null +++ b/SOURCES/7.4.178 @@ -0,0 +1,62 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.178 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.178 +Problem: The J command does not update '[ and '] marks. (William Gardner) +Solution: Set the marks. (Christian Brabandt) +Files: src/ops.c + + +*** ../vim-7.4.177/src/ops.c 2014-01-14 12:33:32.000000000 +0100 +--- src/ops.c 2014-02-11 19:22:46.538343647 +0100 +*************** +*** 4452,4457 **** +--- 4452,4463 ---- + for (t = 0; t < count; ++t) + { + curr = curr_start = ml_get((linenr_T)(curwin->w_cursor.lnum + t)); ++ if (t == 0) ++ { ++ /* Set the '[ mark. */ ++ curwin->w_buffer->b_op_start.lnum = curwin->w_cursor.lnum; ++ curwin->w_buffer->b_op_start.col = (colnr_T)STRLEN(curr); ++ } + #if defined(FEAT_COMMENTS) || defined(PROTO) + if (remove_comments) + { +*************** +*** 4568,4573 **** +--- 4574,4583 ---- + } + ml_replace(curwin->w_cursor.lnum, newp, FALSE); + ++ /* Set the '] mark. */ ++ curwin->w_buffer->b_op_end.lnum = curwin->w_cursor.lnum; ++ curwin->w_buffer->b_op_end.col = (colnr_T)STRLEN(newp); ++ + /* Only report the change in the first line here, del_lines() will report + * the deleted line. */ + changed_lines(curwin->w_cursor.lnum, currsize, +*** ../vim-7.4.177/src/version.c 2014-02-11 18:58:05.102320947 +0100 +--- src/version.c 2014-02-11 19:23:59.722344768 +0100 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 178, + /**/ + +-- +Eight Megabytes And Continually Swapping. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.179 b/SOURCES/7.4.179 new file mode 100644 index 0000000..29b366e --- /dev/null +++ b/SOURCES/7.4.179 @@ -0,0 +1,57 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.179 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.179 +Problem: Warning for type-punned pointer. (Tony Mechelynck) +Solution: Use intermediate variable. +Files: src/if_py_both.h + + +*** ../vim-7.4.178/src/if_py_both.h 2014-02-11 18:47:18.678311042 +0100 +--- src/if_py_both.h 2014-02-11 18:41:12.774305435 +0100 +*************** +*** 1617,1624 **** + } + else if (flags & DICT_FLAG_RETURN_BOOL) + { +! Py_INCREF(Py_True); +! return Py_True; + } + + di = dict_lookup(hi); +--- 1617,1625 ---- + } + else if (flags & DICT_FLAG_RETURN_BOOL) + { +! ret = Py_True; +! Py_INCREF(ret); +! return ret; + } + + di = dict_lookup(hi); +*** ../vim-7.4.178/src/version.c 2014-02-11 19:33:03.358353098 +0100 +--- src/version.c 2014-02-12 22:08:16.795819706 +0100 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 179, + /**/ + +-- +Luxury. We used to have to get out of the lake at three o'clock in the +morning, clean the lake, eat a handful of hot gravel, go to work at the +mill every day for tuppence a month, come home, and Dad would beat us +around the head and neck with a broken bottle, if we were LUCKY! + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.180 b/SOURCES/7.4.180 new file mode 100644 index 0000000..4fa0769 --- /dev/null +++ b/SOURCES/7.4.180 @@ -0,0 +1,76 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.180 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.180 (after 7.4.174) +Problem: Older Python versions don't support %ld. +Solution: Use %d instead. (ZyX) +Files: src/if_py_both.h + + +*** ../vim-7.4.179/src/if_py_both.h 2014-02-12 22:08:46.055820155 +0100 +--- src/if_py_both.h 2014-02-15 15:56:44.133904982 +0100 +*************** +*** 2510,2517 **** + { + Py_DECREF(iterator); + PyErr_FORMAT(PyExc_ValueError, +! N_("attempt to assign sequence of size greater then %ld " +! "to extended slice"), (long)slicelen); + list_restore(numadded, numreplaced, slicelen, l, lis, lastaddedli); + PyMem_Free(lis); + return -1; +--- 2510,2517 ---- + { + Py_DECREF(iterator); + PyErr_FORMAT(PyExc_ValueError, +! N_("attempt to assign sequence of size greater then %d " +! "to extended slice"), (int) slicelen); + list_restore(numadded, numreplaced, slicelen, l, lis, lastaddedli); + PyMem_Free(lis); + return -1; +*************** +*** 2523,2530 **** + if (step != 1 && i != slicelen) + { + PyErr_FORMAT2(PyExc_ValueError, +! N_("attempt to assign sequence of size %ld to extended slice " +! "of size %ld"), (long)i, (long)slicelen); + list_restore(numadded, numreplaced, slicelen, l, lis, lastaddedli); + PyMem_Free(lis); + return -1; +--- 2523,2530 ---- + if (step != 1 && i != slicelen) + { + PyErr_FORMAT2(PyExc_ValueError, +! N_("attempt to assign sequence of size %d to extended slice " +! "of size %d"), (int) i, (int) slicelen); + list_restore(numadded, numreplaced, slicelen, l, lis, lastaddedli); + PyMem_Free(lis); + return -1; +*** ../vim-7.4.179/src/version.c 2014-02-12 22:08:46.059820155 +0100 +--- src/version.c 2014-02-15 15:58:13.877904839 +0100 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 180, + /**/ + +-- + LAUNCELOT leaps into SHOT with a mighty cry and runs the GUARD through and + hacks him to the floor. Blood. Swashbuckling music (perhaps). + LAUNCELOT races through into the castle screaming. +SECOND SENTRY: Hey! + "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.181 b/SOURCES/7.4.181 new file mode 100644 index 0000000..3668d08 --- /dev/null +++ b/SOURCES/7.4.181 @@ -0,0 +1,68 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.181 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.181 +Problem: When using 'pastetoggle' the status lines are not updated. (Samuel + Ferencik, Jan Christoph Ebersbach) +Solution: Update the status lines. (Nobuhiro Takasaki) +Files: src/getchar.c + + +*** ../vim-7.4.180/src/getchar.c 2014-02-11 15:10:38.130111835 +0100 +--- src/getchar.c 2014-02-15 16:14:34.249903278 +0100 +*************** +*** 406,412 **** + } + + /* +! * Prepare the read buffers for reading (if they contains something). + */ + static void + start_stuff() +--- 406,412 ---- + } + + /* +! * Prepare the read buffers for reading (if they contain something). + */ + static void + start_stuff() +*************** +*** 2302,2307 **** +--- 2302,2311 ---- + msg_row = Rows - 1; + msg_clr_eos(); /* clear ruler */ + } ++ #ifdef FEAT_WINDOWS ++ status_redraw_all(); ++ redraw_statuslines(); ++ #endif + showmode(); + setcursor(); + continue; +*** ../vim-7.4.180/src/version.c 2014-02-15 15:58:55.081904773 +0100 +--- src/version.c 2014-02-15 16:12:22.329903488 +0100 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 181, + /**/ + +-- +FIRST GUARD: Ah! Now ... we're not allowed to ... + SIR LAUNCELOT runs him through, grabs his spear and stabs the other + guard who collapses in a heap. Hiccoughs quietly. + "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.182 b/SOURCES/7.4.182 new file mode 100644 index 0000000..72b4148 --- /dev/null +++ b/SOURCES/7.4.182 @@ -0,0 +1,56 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.182 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.182 +Problem: Building with mzscheme and racket does not work. (David Chimay) +Solution: Adjust autoconf. (Sergey Khorev) +Files: src/configure.in, src/auto/configure + + +*** ../vim-7.4.181/src/configure.in 2013-11-21 12:17:46.000000000 +0100 +--- src/configure.in 2014-02-15 16:21:41.705902597 +0100 +*************** +*** 802,810 **** +--- 802,820 ---- + AC_MSG_CHECKING(for mzscheme_base.c) + if test -f "${SCHEME_COLLECTS}collects/scheme/base.ss" ; then + MZSCHEME_EXTRA="mzscheme_base.c" ++ MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/mzc" ++ MZSCHEME_MOD="++lib scheme/base" + else + if test -f "${SCHEME_COLLECTS}collects/scheme/base.rkt" ; then + MZSCHEME_EXTRA="mzscheme_base.c" ++ MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/mzc" ++ MZSCHEME_MOD="++lib scheme/base" ++ else ++ if test -f "${SCHEME_COLLECTS}collects/racket/base.rkt" ; then ++ MZSCHEME_EXTRA="mzscheme_base.c" ++ MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/raco ctool" ++ MZSCHEME_MOD="" ++ fi + fi + fi + if test "X$MZSCHEME_EXTRA" != "X" ; then +*** ../vim-7.4.181/src/version.c 2014-02-15 16:17:02.213903042 +0100 +--- src/version.c 2014-02-15 16:23:42.505902405 +0100 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 182, + /**/ + +-- +Overflow on /dev/null, please empty the bit bucket. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.183 b/SOURCES/7.4.183 new file mode 100644 index 0000000..f23061c --- /dev/null +++ b/SOURCES/7.4.183 @@ -0,0 +1,49 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.183 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.183 +Problem: MSVC Visual Studio update not supported. +Solution: Add version number. (Mike William) +Files: src/Make_mvc.mak + + +*** ../vim-7.4.182/src/Make_mvc.mak 2013-12-14 11:50:28.000000000 +0100 +--- src/Make_mvc.mak 2014-02-15 19:25:27.333885042 +0100 +*************** +*** 424,429 **** +--- 424,432 ---- + !if "$(_NMAKE_VER)" == "11.00.60610.1" + MSVCVER = 11.0 + !endif ++ !if "$(_NMAKE_VER)" == "11.00.61030.0" ++ MSVCVER = 11.0 ++ !endif + !if "$(_NMAKE_VER)" == "12.00.21005.1" + MSVCVER = 12.0 + !endif +*** ../vim-7.4.182/src/version.c 2014-02-15 17:18:56.953897128 +0100 +--- src/version.c 2014-02-15 19:31:11.337884494 +0100 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 183, + /**/ + +-- +FATHER: Did you kill all those guards? +LAUNCELOT: Yes ... I'm very sorry ... +FATHER: They cost fifty pounds each! + "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.185 b/SOURCES/7.4.185 new file mode 100644 index 0000000..b326a16 --- /dev/null +++ b/SOURCES/7.4.185 @@ -0,0 +1,64 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.185 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.185 +Problem: Clang gives warnings. +Solution: Adjust how bigness is set. (Dominique Pelle) +Files: src/ex_cmds.c + + +*** ../vim-7.4.184/src/ex_cmds.c 2014-02-11 12:15:39.781950970 +0100 +--- src/ex_cmds.c 2014-02-22 22:25:45.800904843 +0100 +*************** +*** 4099,4110 **** + * 'scroll' */ + if (eap->forceit) + bigness = curwin->w_height; +- else if (firstwin == lastwin) +- bigness = curwin->w_p_scr * 2; + #ifdef FEAT_WINDOWS +! else + bigness = curwin->w_height - 3; + #endif + if (bigness < 1) + bigness = 1; + +--- 4099,4110 ---- + * 'scroll' */ + if (eap->forceit) + bigness = curwin->w_height; + #ifdef FEAT_WINDOWS +! else if (firstwin != lastwin) + bigness = curwin->w_height - 3; + #endif ++ else ++ bigness = curwin->w_p_scr * 2; + if (bigness < 1) + bigness = 1; + +*** ../vim-7.4.184/src/version.c 2014-02-22 22:18:39.536905522 +0100 +--- src/version.c 2014-02-22 22:22:51.912905120 +0100 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 185, + /**/ + +-- +There are 2 kinds of people in my world: those who know Unix, Perl, Vim, GNU, +Linux, etc, and those who know COBOL. It gets very difficult for me at +parties, not knowing which group to socialise with :-) + Sitaram Chamarty + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.186 b/SOURCES/7.4.186 new file mode 100644 index 0000000..84f0a31 --- /dev/null +++ b/SOURCES/7.4.186 @@ -0,0 +1,164 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.186 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.186 (after 7.4.085) +Problem: Insert in Visual mode sometimes gives incorrect results. + (Dominique Pelle) +Solution: Remember the original insert start position. (Christian Brabandt, + Dominique Pelle) +Files: src/edit.c, src/globals.h, src/ops.c, src/structs.h + + +*** ../vim-7.4.185/src/edit.c 2014-01-23 22:45:54.608127182 +0100 +--- src/edit.c 2014-02-22 22:43:52.820903112 +0100 +*************** +*** 264,269 **** +--- 264,270 ---- + + static colnr_T Insstart_textlen; /* length of line when insert started */ + static colnr_T Insstart_blank_vcol; /* vcol for first inserted blank */ ++ static int update_Insstart_orig = TRUE; /* set Insstart_orig to Insstart */ + + static char_u *last_insert = NULL; /* the text of the previous insert, + K_SPECIAL and CSI are escaped */ +*************** +*** 340,345 **** +--- 341,349 ---- + * error message */ + check_for_delay(TRUE); + ++ /* set Insstart_orig to Insstart */ ++ update_Insstart_orig = TRUE; ++ + #ifdef HAVE_SANDBOX + /* Don't allow inserting in the sandbox. */ + if (sandbox != 0) +*************** +*** 631,636 **** +--- 635,643 ---- + if (arrow_used) /* don't repeat insert when arrow key used */ + count = 0; + ++ if (update_Insstart_orig) ++ Insstart_orig = Insstart; ++ + if (stop_insert_mode) + { + /* ":stopinsert" used or 'insertmode' reset */ +*************** +*** 6923,6928 **** +--- 6930,6936 ---- + if (end_insert_pos != NULL) + { + curbuf->b_op_start = Insstart; ++ curbuf->b_op_start_orig = Insstart_orig; + curbuf->b_op_end = *end_insert_pos; + } + } +*************** +*** 8257,8262 **** +--- 8265,8271 ---- + + /* Need to reset Insstart, esp. because a BS that joins + * a line to the previous one must save for undo. */ ++ update_Insstart_orig = FALSE; + Insstart = curwin->w_cursor; + break; + +*** ../vim-7.4.185/src/globals.h 2014-02-11 15:10:38.130111835 +0100 +--- src/globals.h 2014-02-22 23:02:01.644901378 +0100 +*************** +*** 752,757 **** +--- 752,763 ---- + */ + EXTERN pos_T Insstart; /* This is where the latest + * insert/append mode started. */ ++ ++ /* This is where the latest insert/append mode started. In contrast to ++ * Insstart, this won't be reset by certain keys and is needed for ++ * op_insert(), to detect correctly where inserting by the user started. */ ++ EXTERN pos_T Insstart_orig; ++ + #ifdef FEAT_VREPLACE + /* + * Stuff for VREPLACE mode. +*** ../vim-7.4.185/src/ops.c 2014-02-11 19:33:03.358353098 +0100 +--- src/ops.c 2014-02-22 22:39:47.588903502 +0100 +*************** +*** 2643,2662 **** + + /* The user may have moved the cursor before inserting something, try + * to adjust the block for that. */ +! if (oap->start.lnum == curbuf->b_op_start.lnum && !bd.is_MAX) + { + if (oap->op_type == OP_INSERT +! && oap->start.col != curbuf->b_op_start.col) + { +! oap->start.col = curbuf->b_op_start.col; + pre_textlen -= getviscol2(oap->start.col, oap->start.coladd) + - oap->start_vcol; + oap->start_vcol = getviscol2(oap->start.col, oap->start.coladd); + } + else if (oap->op_type == OP_APPEND +! && oap->end.col >= curbuf->b_op_start.col) + { +! oap->start.col = curbuf->b_op_start.col; + /* reset pre_textlen to the value of OP_INSERT */ + pre_textlen += bd.textlen; + pre_textlen -= getviscol2(oap->start.col, oap->start.coladd) +--- 2643,2662 ---- + + /* The user may have moved the cursor before inserting something, try + * to adjust the block for that. */ +! if (oap->start.lnum == curbuf->b_op_start_orig.lnum && !bd.is_MAX) + { + if (oap->op_type == OP_INSERT +! && oap->start.col != curbuf->b_op_start_orig.col) + { +! oap->start.col = curbuf->b_op_start_orig.col; + pre_textlen -= getviscol2(oap->start.col, oap->start.coladd) + - oap->start_vcol; + oap->start_vcol = getviscol2(oap->start.col, oap->start.coladd); + } + else if (oap->op_type == OP_APPEND +! && oap->end.col >= curbuf->b_op_start_orig.col) + { +! oap->start.col = curbuf->b_op_start_orig.col; + /* reset pre_textlen to the value of OP_INSERT */ + pre_textlen += bd.textlen; + pre_textlen -= getviscol2(oap->start.col, oap->start.coladd) +*** ../vim-7.4.185/src/structs.h 2014-02-11 15:10:38.138111836 +0100 +--- src/structs.h 2014-02-22 22:39:47.588903502 +0100 +*************** +*** 1449,1454 **** +--- 1449,1455 ---- + * start and end of an operator, also used for '[ and '] + */ + pos_T b_op_start; ++ pos_T b_op_start_orig; /* used for Insstart_orig */ + pos_T b_op_end; + + #ifdef FEAT_VIMINFO +*** ../vim-7.4.185/src/version.c 2014-02-22 22:27:20.772904692 +0100 +--- src/version.c 2014-02-22 22:39:08.932903564 +0100 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 186, + /**/ + +-- +Individualists unite! + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.187 b/SOURCES/7.4.187 new file mode 100644 index 0000000..122056e --- /dev/null +++ b/SOURCES/7.4.187 @@ -0,0 +1,136 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.187 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.187 +Problem: Delete that crosses line break splits multi-byte character. +Solution: Advance a character instead of a byte. (Cade Foster) +Files: src/normal.c, src/testdir/test69.in, src/testdir/test69.ok + + +*** ../vim-7.4.186/src/normal.c 2014-02-11 15:10:38.134111836 +0100 +--- src/normal.c 2014-02-22 23:41:12.472897635 +0100 +*************** +*** 21,27 **** + static int resel_VIsual_mode = NUL; /* 'v', 'V', or Ctrl-V */ + static linenr_T resel_VIsual_line_count; /* number of lines */ + static colnr_T resel_VIsual_vcol; /* nr of cols or end col */ +! static int VIsual_mode_orig = NUL; /* type of Visual mode, that user entered */ + + static int restart_VIsual_select = 0; + #endif +--- 21,27 ---- + static int resel_VIsual_mode = NUL; /* 'v', 'V', or Ctrl-V */ + static linenr_T resel_VIsual_line_count; /* number of lines */ + static colnr_T resel_VIsual_vcol; /* nr of cols or end col */ +! static int VIsual_mode_orig = NUL; /* saved Visual mode */ + + static int restart_VIsual_select = 0; + #endif +*************** +*** 6202,6209 **** + || cap->oap->op_type == OP_CHANGE) + && !lineempty(curwin->w_cursor.lnum)) + { +! if (*ml_get_cursor() != NUL) +! ++curwin->w_cursor.col; + cap->retval |= CA_NO_ADJ_OP_END; + } + continue; +--- 6202,6218 ---- + || cap->oap->op_type == OP_CHANGE) + && !lineempty(curwin->w_cursor.lnum)) + { +! char_u *cp = ml_get_cursor(); +! +! if (*cp != NUL) +! { +! #ifdef FEAT_MBYTE +! if (has_mbyte) +! curwin->w_cursor.col += (*mb_ptr2len)(cp); +! else +! #endif +! ++curwin->w_cursor.col; +! } + cap->retval |= CA_NO_ADJ_OP_END; + } + continue; +*************** +*** 9482,9488 **** + # ifdef FEAT_CLIPBOARD + adjust_clip_reg(®name); + # endif +! if (regname == 0 || regname == '"' + || VIM_ISDIGIT(regname) || regname == '-' + # ifdef FEAT_CLIPBOARD + || (clip_unnamed && (regname == '*' || regname == '+')) +--- 9491,9497 ---- + # ifdef FEAT_CLIPBOARD + adjust_clip_reg(®name); + # endif +! if (regname == 0 || regname == '"' + || VIM_ISDIGIT(regname) || regname == '-' + # ifdef FEAT_CLIPBOARD + || (clip_unnamed && (regname == '*' || regname == '+')) +*** ../vim-7.4.186/src/testdir/test69.in 2013-11-02 23:29:17.000000000 +0100 +--- src/testdir/test69.in 2014-02-22 23:38:50.508897861 +0100 +*************** +*** 155,160 **** +--- 155,170 ---- + aab + + STARTTEST ++ :set whichwrap+=h ++ /^x ++ dh ++ :set whichwrap-=h ++ ENDTEST ++ ++ á ++ x ++ ++ STARTTEST + :let a = '.é.' " one char of two bytes + :let b = '.é.' " normal e with composing char + /^byteidx +*** ../vim-7.4.186/src/testdir/test69.ok 2013-11-02 23:29:17.000000000 +0100 +--- src/testdir/test69.ok 2014-02-22 23:38:53.752897856 +0100 +*************** +*** 150,155 **** +--- 150,158 ---- + aaa + + ++ áx ++ ++ + byteidx + [0, 1, 3, 4, -1] + [0, 1, 4, 5, -1] +*** ../vim-7.4.186/src/version.c 2014-02-22 23:03:48.716901208 +0100 +--- src/version.c 2014-02-22 23:30:24.412898667 +0100 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 187, + /**/ + +-- +ARTHUR: Then who is your lord? +WOMAN: We don't have a lord. +ARTHUR: What? +DENNIS: I told you. We're an anarcho-syndicalist commune. We take it in + turns to act as a sort of executive officer for the week. + The Quest for the Holy Grail (Monty Python) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.188 b/SOURCES/7.4.188 new file mode 100644 index 0000000..b2b4fa1 --- /dev/null +++ b/SOURCES/7.4.188 @@ -0,0 +1,617 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.188 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.188 +Problem: SIZEOF_LONG clashes with similar defines in header files. +Solution: Rename to a name starting with VIM_. Also for SIZEOF_INT. +Files: src/if_ruby.c, src/vim.h, src/configure.in, src/auto/configure, + src/config.h.in, src/fileio.c, src/if_python.c, src/message.c, + src/spell.c, src/feature.h, src/os_os2_cfg.h, src/os_vms_conf.h, + src/os_win16.h, src/structs.h + + +*** ../vim-7.4.187/src/if_ruby.c 2014-02-05 22:41:11.430582669 +0100 +--- src/if_ruby.c 2014-02-23 21:55:03.516770208 +0100 +*************** +*** 89,97 **** + #endif + + #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 20 \ +! && SIZEOF_INT < SIZEOF_LONG + /* Ruby 2.0 defines a number of static functions which use rb_fix2int and +! * rb_num2int if SIZEOF_INT < SIZEOF_LONG (64bit) */ + # define rb_fix2int rb_fix2int_stub + # define rb_num2int rb_num2int_stub + #endif +--- 89,97 ---- + #endif + + #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 20 \ +! && VIM_SIZEOF_INT < VIM_SIZEOF_LONG + /* Ruby 2.0 defines a number of static functions which use rb_fix2int and +! * rb_num2int if VIM_SIZEOF_INT < VIM_SIZEOF_LONG (64bit) */ + # define rb_fix2int rb_fix2int_stub + # define rb_num2int rb_num2int_stub + #endif +*************** +*** 202,208 **** + # define rb_hash_new dll_rb_hash_new + # define rb_inspect dll_rb_inspect + # define rb_int2inum dll_rb_int2inum +! # if SIZEOF_INT < SIZEOF_LONG /* 64 bits only */ + # define rb_fix2int dll_rb_fix2int + # define rb_num2int dll_rb_num2int + # define rb_num2uint dll_rb_num2uint +--- 202,208 ---- + # define rb_hash_new dll_rb_hash_new + # define rb_inspect dll_rb_inspect + # define rb_int2inum dll_rb_int2inum +! # if VIM_SIZEOF_INT < VIM_SIZEOF_LONG /* 64 bits only */ + # define rb_fix2int dll_rb_fix2int + # define rb_num2int dll_rb_num2int + # define rb_num2uint dll_rb_num2uint +*************** +*** 310,316 **** + static VALUE (*dll_rb_hash_new) (void); + static VALUE (*dll_rb_inspect) (VALUE); + static VALUE (*dll_rb_int2inum) (long); +! # if SIZEOF_INT < SIZEOF_LONG /* 64 bits only */ + static long (*dll_rb_fix2int) (VALUE); + static long (*dll_rb_num2int) (VALUE); + static unsigned long (*dll_rb_num2uint) (VALUE); +--- 310,316 ---- + static VALUE (*dll_rb_hash_new) (void); + static VALUE (*dll_rb_inspect) (VALUE); + static VALUE (*dll_rb_int2inum) (long); +! # if VIM_SIZEOF_INT < VIM_SIZEOF_LONG /* 64 bits only */ + static long (*dll_rb_fix2int) (VALUE); + static long (*dll_rb_num2int) (VALUE); + static unsigned long (*dll_rb_num2uint) (VALUE); +*************** +*** 393,399 **** + return dll_rb_int2big(x); + } + # if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 20 \ +! && SIZEOF_INT < SIZEOF_LONG + long rb_fix2int_stub(VALUE x) + { + return dll_rb_fix2int(x); +--- 393,399 ---- + return dll_rb_int2big(x); + } + # if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 20 \ +! && VIM_SIZEOF_INT < VIM_SIZEOF_LONG + long rb_fix2int_stub(VALUE x) + { + return dll_rb_fix2int(x); +*************** +*** 466,472 **** + {"rb_hash_new", (RUBY_PROC*)&dll_rb_hash_new}, + {"rb_inspect", (RUBY_PROC*)&dll_rb_inspect}, + {"rb_int2inum", (RUBY_PROC*)&dll_rb_int2inum}, +! # if SIZEOF_INT < SIZEOF_LONG /* 64 bits only */ + {"rb_fix2int", (RUBY_PROC*)&dll_rb_fix2int}, + {"rb_num2int", (RUBY_PROC*)&dll_rb_num2int}, + {"rb_num2uint", (RUBY_PROC*)&dll_rb_num2uint}, +--- 466,472 ---- + {"rb_hash_new", (RUBY_PROC*)&dll_rb_hash_new}, + {"rb_inspect", (RUBY_PROC*)&dll_rb_inspect}, + {"rb_int2inum", (RUBY_PROC*)&dll_rb_int2inum}, +! # if VIM_SIZEOF_INT < VIM_SIZEOF_LONG /* 64 bits only */ + {"rb_fix2int", (RUBY_PROC*)&dll_rb_fix2int}, + {"rb_num2int", (RUBY_PROC*)&dll_rb_num2int}, + {"rb_num2uint", (RUBY_PROC*)&dll_rb_num2uint}, +*** ../vim-7.4.187/src/vim.h 2014-01-14 16:54:53.000000000 +0100 +--- src/vim.h 2014-02-23 21:58:23.764769890 +0100 +*************** +*** 43,49 **** + * it becomes zero. This is likely a problem of not being able to run the + * test program. Other items from configure may also be wrong then! + */ +! # if (SIZEOF_INT == 0) + Error: configure did not run properly. Check auto/config.log. + # endif + +--- 43,49 ---- + * it becomes zero. This is likely a problem of not being able to run the + * test program. Other items from configure may also be wrong then! + */ +! # if (VIM_SIZEOF_INT == 0) + Error: configure did not run properly. Check auto/config.log. + # endif + +*************** +*** 148,169 **** + #endif + + /* +! * SIZEOF_INT is used in feature.h, and the system-specific included files +! * need items from feature.h. Therefore define SIZEOF_INT here. + */ + #ifdef WIN3264 +! # define SIZEOF_INT 4 + #endif + #ifdef MSDOS + # ifdef DJGPP + # ifndef FEAT_GUI_GTK /* avoid problems when generating prototypes */ +! # define SIZEOF_INT 4 /* 32 bit ints */ + # endif + # define DOS32 + # define FEAT_CLIPBOARD + # else + # ifndef FEAT_GUI_GTK /* avoid problems when generating prototypes */ +! # define SIZEOF_INT 2 /* 16 bit ints */ + # endif + # define SMALL_MALLOC /* 16 bit storage allocation */ + # define DOS16 +--- 148,169 ---- + #endif + + /* +! * VIM_SIZEOF_INT is used in feature.h, and the system-specific included files +! * need items from feature.h. Therefore define VIM_SIZEOF_INT here. + */ + #ifdef WIN3264 +! # define VIM_SIZEOF_INT 4 + #endif + #ifdef MSDOS + # ifdef DJGPP + # ifndef FEAT_GUI_GTK /* avoid problems when generating prototypes */ +! # define VIM_SIZEOF_INT 4 /* 32 bit ints */ + # endif + # define DOS32 + # define FEAT_CLIPBOARD + # else + # ifndef FEAT_GUI_GTK /* avoid problems when generating prototypes */ +! # define VIM_SIZEOF_INT 2 /* 16 bit ints */ + # endif + # define SMALL_MALLOC /* 16 bit storage allocation */ + # define DOS16 +*************** +*** 174,191 **** + /* Be conservative about sizeof(int). It could be 4 too. */ + # ifndef FEAT_GUI_GTK /* avoid problems when generating prototypes */ + # ifdef __GNUC__ +! # define SIZEOF_INT 4 + # else +! # define SIZEOF_INT 2 + # endif + # endif + #endif + #ifdef MACOS + # if defined(__POWERPC__) || defined(MACOS_X) || defined(__fourbyteints__) \ + || defined(__MRC__) || defined(__SC__) || defined(__APPLE_CC__)/* MPW Compilers */ +! # define SIZEOF_INT 4 + # else +! # define SIZEOF_INT 2 + # endif + #endif + +--- 174,191 ---- + /* Be conservative about sizeof(int). It could be 4 too. */ + # ifndef FEAT_GUI_GTK /* avoid problems when generating prototypes */ + # ifdef __GNUC__ +! # define VIM_SIZEOF_INT 4 + # else +! # define VIM_SIZEOF_INT 2 + # endif + # endif + #endif + #ifdef MACOS + # if defined(__POWERPC__) || defined(MACOS_X) || defined(__fourbyteints__) \ + || defined(__MRC__) || defined(__SC__) || defined(__APPLE_CC__)/* MPW Compilers */ +! # define VIM_SIZEOF_INT 4 + # else +! # define VIM_SIZEOF_INT 2 + # endif + #endif + +*************** +*** 417,428 **** + #define PRINTF_DECIMAL_LONG_U SCANF_DECIMAL_LONG_U + + /* +! * Only systems which use configure will have SIZEOF_OFF_T and SIZEOF_LONG + * defined, which is ok since those are the same systems which can have + * varying sizes for off_t. The other systems will continue to use "%ld" to + * print off_t since off_t is simply a typedef to long for them. + */ +! #if defined(SIZEOF_OFF_T) && (SIZEOF_OFF_T > SIZEOF_LONG) + # define LONG_LONG_OFF_T + #endif + +--- 417,428 ---- + #define PRINTF_DECIMAL_LONG_U SCANF_DECIMAL_LONG_U + + /* +! * Only systems which use configure will have SIZEOF_OFF_T and VIM_SIZEOF_LONG + * defined, which is ok since those are the same systems which can have + * varying sizes for off_t. The other systems will continue to use "%ld" to + * print off_t since off_t is simply a typedef to long for them. + */ +! #if defined(SIZEOF_OFF_T) && (SIZEOF_OFF_T > VIM_SIZEOF_LONG) + # define LONG_LONG_OFF_T + #endif + +*************** +*** 448,454 **** + # ifdef UNICODE16 + typedef unsigned short u8char_T; /* short should be 16 bits */ + # else +! # if SIZEOF_INT >= 4 + typedef unsigned int u8char_T; /* int is 32 bits */ + # else + typedef unsigned long u8char_T; /* long should be 32 bits or more */ +--- 448,454 ---- + # ifdef UNICODE16 + typedef unsigned short u8char_T; /* short should be 16 bits */ + # else +! # if VIM_SIZEOF_INT >= 4 + typedef unsigned int u8char_T; /* int is 32 bits */ + # else + typedef unsigned long u8char_T; /* long should be 32 bits or more */ +*************** +*** 1608,1614 **** + * With this we restrict the maximum line length to 1073741823. I guess this is + * not a real problem. BTW: Longer lines are split. + */ +! #if SIZEOF_INT >= 4 + # ifdef __MVS__ + # define MAXCOL (0x3fffffffL) /* maximum column number, 30 bits */ + # else +--- 1608,1614 ---- + * With this we restrict the maximum line length to 1073741823. I guess this is + * not a real problem. BTW: Longer lines are split. + */ +! #if VIM_SIZEOF_INT >= 4 + # ifdef __MVS__ + # define MAXCOL (0x3fffffffL) /* maximum column number, 30 bits */ + # else +*** ../vim-7.4.187/src/configure.in 2014-02-15 17:18:56.953897128 +0100 +--- src/configure.in 2014-02-23 22:37:40.080766138 +0100 +*************** +*** 3581,3586 **** +--- 3581,3590 ---- + AC_CHECK_SIZEOF([time_t]) + AC_CHECK_SIZEOF([off_t]) + ++ dnl Use different names to avoid clashing with other header files. ++ AC_DEFINE_UNQUOTED(VIM_SIZEOF_INT, [$ac_cv_sizeof_int]) ++ AC_DEFINE_UNQUOTED(VIM_SIZEOF_LONG, [$ac_cv_sizeof_long]) ++ + dnl Make sure that uint32_t is really 32 bits unsigned. + AC_MSG_CHECKING([uint32_t is 32 bits]) + AC_TRY_RUN([ +*** ../vim-7.4.187/src/auto/configure 2013-11-21 12:17:46.000000000 +0100 +--- src/auto/configure 2014-02-23 22:37:43.692766132 +0100 +*************** +*** 5199,5207 **** +--- 5199,5217 ---- + $as_echo_n "checking for mzscheme_base.c... " >&6; } + if test -f "${SCHEME_COLLECTS}collects/scheme/base.ss" ; then + MZSCHEME_EXTRA="mzscheme_base.c" ++ MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/mzc" ++ MZSCHEME_MOD="++lib scheme/base" + else + if test -f "${SCHEME_COLLECTS}collects/scheme/base.rkt" ; then + MZSCHEME_EXTRA="mzscheme_base.c" ++ MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/mzc" ++ MZSCHEME_MOD="++lib scheme/base" ++ else ++ if test -f "${SCHEME_COLLECTS}collects/racket/base.rkt" ; then ++ MZSCHEME_EXTRA="mzscheme_base.c" ++ MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/raco ctool" ++ MZSCHEME_MOD="" ++ fi + fi + fi + if test "X$MZSCHEME_EXTRA" != "X" ; then +*************** +*** 12323,12328 **** +--- 12333,12347 ---- + + + ++ cat >>confdefs.h <<_ACEOF ++ #define VIM_SIZEOF_INT $ac_cv_sizeof_int ++ _ACEOF ++ ++ cat >>confdefs.h <<_ACEOF ++ #define VIM_SIZEOF_LONG $ac_cv_sizeof_long ++ _ACEOF ++ ++ + { $as_echo "$as_me:${as_lineno-$LINENO}: checking uint32_t is 32 bits" >&5 + $as_echo_n "checking uint32_t is 32 bits... " >&6; } + if test "$cross_compiling" = yes; then : +*** ../vim-7.4.187/src/config.h.in 2013-11-02 21:04:32.000000000 +0100 +--- src/config.h.in 2014-02-23 21:45:36.784771111 +0100 +*************** +*** 37,46 **** + #undef UNIX + + /* Defined to the size of an int */ +! #undef SIZEOF_INT + + /* Defined to the size of a long */ +! #undef SIZEOF_LONG + + /* Defined to the size of off_t */ + #undef SIZEOF_OFF_T +--- 37,46 ---- + #undef UNIX + + /* Defined to the size of an int */ +! #undef VIM_SIZEOF_INT + + /* Defined to the size of a long */ +! #undef VIM_SIZEOF_LONG + + /* Defined to the size of off_t */ + #undef SIZEOF_OFF_T +*** ../vim-7.4.187/src/fileio.c 2014-02-11 15:23:27.938123631 +0100 +--- src/fileio.c 2014-02-23 22:31:00.824766773 +0100 +*************** +*** 1185,1191 **** + * The amount is limited by the fact that read() only can read + * upto max_unsigned characters (and other things). + */ +! #if SIZEOF_INT <= 2 + if (linerest >= 0x7ff0) + { + ++split; +--- 1185,1191 ---- + * The amount is limited by the fact that read() only can read + * upto max_unsigned characters (and other things). + */ +! #if VIM_SIZEOF_INT <= 2 + if (linerest >= 0x7ff0) + { + ++split; +*************** +*** 1197,1203 **** + { + if (!skip_read) + { +! #if SIZEOF_INT > 2 + # if defined(SSIZE_MAX) && (SSIZE_MAX < 0x10000L) + size = SSIZE_MAX; /* use max I/O size, 52K */ + # else +--- 1197,1203 ---- + { + if (!skip_read) + { +! #if VIM_SIZEOF_INT > 2 + # if defined(SSIZE_MAX) && (SSIZE_MAX < 0x10000L) + size = SSIZE_MAX; /* use max I/O size, 52K */ + # else +*** ../vim-7.4.187/src/if_python.c 2014-01-14 19:35:49.000000000 +0100 +--- src/if_python.c 2014-02-23 21:54:39.212770247 +0100 +*************** +*** 613,619 **** + # endif + # endif + # if defined(PY_VERSION_HEX) && PY_VERSION_HEX >= 0x02050000 \ +! && SIZEOF_SIZE_T != SIZEOF_INT + # ifdef Py_DEBUG + {"Py_InitModule4TraceRefs_64", (PYTHON_PROC*)&dll_Py_InitModule4}, + # else +--- 613,619 ---- + # endif + # endif + # if defined(PY_VERSION_HEX) && PY_VERSION_HEX >= 0x02050000 \ +! && SIZEOF_SIZE_T != VIM_SIZEOF_INT + # ifdef Py_DEBUG + {"Py_InitModule4TraceRefs_64", (PYTHON_PROC*)&dll_Py_InitModule4}, + # else +*** ../vim-7.4.187/src/message.c 2013-11-04 02:00:55.000000000 +0100 +--- src/message.c 2014-02-23 21:55:16.984770187 +0100 +*************** +*** 4376,4382 **** + { + /* Don't put the #if inside memchr(), it can be a + * macro. */ +! #if SIZEOF_INT <= 2 + char *q = memchr(str_arg, '\0', precision); + #else + /* memchr on HP does not like n > 2^31 !!! */ +--- 4376,4382 ---- + { + /* Don't put the #if inside memchr(), it can be a + * macro. */ +! #if VIM_SIZEOF_INT <= 2 + char *q = memchr(str_arg, '\0', precision); + #else + /* memchr on HP does not like n > 2^31 !!! */ +*** ../vim-7.4.187/src/spell.c 2013-11-28 17:41:41.000000000 +0100 +--- src/spell.c 2014-02-23 21:55:24.600770175 +0100 +*************** +*** 317,323 **** + + /* Type used for indexes in the word tree need to be at least 4 bytes. If int + * is 8 bytes we could use something smaller, but what? */ +! #if SIZEOF_INT > 3 + typedef int idx_T; + #else + typedef long idx_T; +--- 317,323 ---- + + /* Type used for indexes in the word tree need to be at least 4 bytes. If int + * is 8 bytes we could use something smaller, but what? */ +! #if VIM_SIZEOF_INT > 3 + typedef int idx_T; + #else + typedef long idx_T; +*** ../vim-7.4.187/src/feature.h 2013-05-18 20:18:20.000000000 +0200 +--- src/feature.h 2014-02-23 21:55:54.868770127 +0100 +*************** +*** 328,334 **** + * + * Disabled for EBCDIC as it requires multibyte. + */ +! #if defined(FEAT_BIG) && !defined(WIN16) && SIZEOF_INT >= 4 && !defined(EBCDIC) + # define FEAT_ARABIC + #endif + #ifdef FEAT_ARABIC +--- 328,334 ---- + * + * Disabled for EBCDIC as it requires multibyte. + */ +! #if defined(FEAT_BIG) && !defined(WIN16) && VIM_SIZEOF_INT >= 4 && !defined(EBCDIC) + # define FEAT_ARABIC + #endif + #ifdef FEAT_ARABIC +*************** +*** 640,646 **** + */ + #if (defined(FEAT_NORMAL) || defined(FEAT_GUI_GTK) || defined(FEAT_ARABIC)) \ + && !defined(FEAT_MBYTE) && !defined(WIN16) \ +! && SIZEOF_INT >= 4 && !defined(EBCDIC) + # define FEAT_MBYTE + #endif + +--- 640,646 ---- + */ + #if (defined(FEAT_NORMAL) || defined(FEAT_GUI_GTK) || defined(FEAT_ARABIC)) \ + && !defined(FEAT_MBYTE) && !defined(WIN16) \ +! && VIM_SIZEOF_INT >= 4 && !defined(EBCDIC) + # define FEAT_MBYTE + #endif + +*************** +*** 661,667 **** + # define FEAT_MBYTE + #endif + +! #if defined(FEAT_MBYTE) && SIZEOF_INT < 4 && !defined(PROTO) + Error: Can only handle multi-byte feature with 32 bit int or larger + #endif + +--- 661,667 ---- + # define FEAT_MBYTE + #endif + +! #if defined(FEAT_MBYTE) && VIM_SIZEOF_INT < 4 && !defined(PROTO) + Error: Can only handle multi-byte feature with 32 bit int or larger + #endif + +*** ../vim-7.4.187/src/os_os2_cfg.h 2010-05-15 13:04:11.000000000 +0200 +--- src/os_os2_cfg.h 2014-02-23 21:56:03.540770113 +0100 +*************** +*** 47,53 **** + #undef UNIX /* define always by current configure script */ + + /* Defined to the size of an int */ +! #define SIZEOF_INT 4 + + /* + * If we cannot trust one of the following from the libraries, we use our +--- 47,53 ---- + #undef UNIX /* define always by current configure script */ + + /* Defined to the size of an int */ +! #define VIM_SIZEOF_INT 4 + + /* + * If we cannot trust one of the following from the libraries, we use our +*** ../vim-7.4.187/src/os_vms_conf.h 2010-07-28 19:07:48.000000000 +0200 +--- src/os_vms_conf.h 2014-02-23 21:56:20.700770086 +0100 +*************** +*** 23,29 **** + #define HAVE_DATE_TIME + + /* Defined to the size of an int */ +! #define SIZEOF_INT 4 + + /* #undef USEBCOPY */ + #define USEMEMMOVE +--- 23,29 ---- + #define HAVE_DATE_TIME + + /* Defined to the size of an int */ +! #define VIM_SIZEOF_INT 4 + + /* #undef USEBCOPY */ + #define USEMEMMOVE +*** ../vim-7.4.187/src/os_win16.h 2013-05-06 04:06:04.000000000 +0200 +--- src/os_win16.h 2014-02-23 21:56:39.292770056 +0100 +*************** +*** 55,62 **** + + #define FNAME_ILLEGAL "\"*?><|" /* illegal characters in a file name */ + +! #ifndef SIZEOF_INT +! # define SIZEOF_INT 2 + #endif + + typedef long off_t; +--- 55,62 ---- + + #define FNAME_ILLEGAL "\"*?><|" /* illegal characters in a file name */ + +! #ifndef VIM_SIZEOF_INT +! # define VIM_SIZEOF_INT 2 + #endif + + typedef long off_t; +*** ../vim-7.4.187/src/structs.h 2014-02-22 23:03:48.716901208 +0100 +--- src/structs.h 2014-02-23 21:57:17.680769995 +0100 +*************** +*** 364,370 **** + /* + * structures used in undo.c + */ +! #if SIZEOF_INT > 2 + # define ALIGN_LONG /* longword alignment and use filler byte */ + # define ALIGN_SIZE (sizeof(long)) + #else +--- 364,370 ---- + /* + * structures used in undo.c + */ +! #if VIM_SIZEOF_INT > 2 + # define ALIGN_LONG /* longword alignment and use filler byte */ + # define ALIGN_SIZE (sizeof(long)) + #else +*************** +*** 1094,1100 **** + typedef long_u hash_T; /* Type for hi_hash */ + + +! #if SIZEOF_INT <= 3 /* use long if int is smaller than 32 bits */ + typedef long varnumber_T; + #else + typedef int varnumber_T; +--- 1094,1100 ---- + typedef long_u hash_T; /* Type for hi_hash */ + + +! #if VIM_SIZEOF_INT <= 3 /* use long if int is smaller than 32 bits */ + typedef long varnumber_T; + #else + typedef int varnumber_T; +*** ../vim-7.4.187/src/version.c 2014-02-22 23:49:30.268896843 +0100 +--- src/version.c 2014-02-23 22:40:55.708765826 +0100 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 188, + /**/ + +-- +I'm sure that I asked CBuilder to do a "full" install. Looks like I got +a "fool" install, instead. Charles E Campbell, Jr, PhD + + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.189 b/SOURCES/7.4.189 new file mode 100644 index 0000000..cf6a2b7 --- /dev/null +++ b/SOURCES/7.4.189 @@ -0,0 +1,52 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.189 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.189 +Problem: Compiler warning for unused argument. +Solution: Add UNUSED. +Files: src/eval.c + + +*** ../vim-7.4.188/src/eval.c 2014-02-22 22:18:39.532905522 +0100 +--- src/eval.c 2014-02-23 22:29:14.976766942 +0100 +*************** +*** 9203,9209 **** + byteidx(argvars, rettv, comp) + typval_T *argvars; + typval_T *rettv; +! int comp; + { + #ifdef FEAT_MBYTE + char_u *t; +--- 9203,9209 ---- + byteidx(argvars, rettv, comp) + typval_T *argvars; + typval_T *rettv; +! int comp UNUSED; + { + #ifdef FEAT_MBYTE + char_u *t; +*** ../vim-7.4.188/src/version.c 2014-02-23 22:52:33.372764715 +0100 +--- src/version.c 2014-02-23 22:54:17.836764549 +0100 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 189, + /**/ + +-- +Q: How does a UNIX Guru pick up a girl? +A: look; grep; which; eval; nice; uname; talk; date; + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.190 b/SOURCES/7.4.190 new file mode 100644 index 0000000..6cafb4b --- /dev/null +++ b/SOURCES/7.4.190 @@ -0,0 +1,70 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.190 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.190 +Problem: Compiler warning for using %lld for off_t. +Solution: Add type cast. +Files: src/fileio.c + + +*** ../vim-7.4.189/src/fileio.c 2014-02-23 22:52:33.368764715 +0100 +--- src/fileio.c 2014-02-23 22:31:00.824766773 +0100 +*************** +*** 5294,5300 **** + if (shortmess(SHM_LINES)) + sprintf((char *)p, + #ifdef LONG_LONG_OFF_T +! "%ldL, %lldC", lnum, nchars + #else + /* Explicit typecast avoids warning on Mac OS X 10.6 */ + "%ldL, %ldC", lnum, (long)nchars +--- 5294,5300 ---- + if (shortmess(SHM_LINES)) + sprintf((char *)p, + #ifdef LONG_LONG_OFF_T +! "%ldL, %lldC", lnum, (long long)nchars + #else + /* Explicit typecast avoids warning on Mac OS X 10.6 */ + "%ldL, %ldC", lnum, (long)nchars +*************** +*** 5312,5318 **** + else + sprintf((char *)p, + #ifdef LONG_LONG_OFF_T +! _("%lld characters"), nchars + #else + /* Explicit typecast avoids warning on Mac OS X 10.6 */ + _("%ld characters"), (long)nchars +--- 5312,5318 ---- + else + sprintf((char *)p, + #ifdef LONG_LONG_OFF_T +! _("%lld characters"), (long long)nchars + #else + /* Explicit typecast avoids warning on Mac OS X 10.6 */ + _("%ld characters"), (long)nchars +*** ../vim-7.4.189/src/version.c 2014-02-23 22:54:54.728764490 +0100 +--- src/version.c 2014-02-23 22:57:43.648764221 +0100 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 190, + /**/ + +-- +Courtroom Quote #19: +Q: Doctor, how many autopsies have you performed on dead people? +A: All my autopsies have been performed on dead people. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.191 b/SOURCES/7.4.191 new file mode 100644 index 0000000..f0bb71b --- /dev/null +++ b/SOURCES/7.4.191 @@ -0,0 +1,689 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.191 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.191 +Problem: Escaping a file name for shell commands can't be done without a + function. +Solution: Add the :S file name modifier. +Files: src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, + src/testdir/Make_ming.mak, src/testdir/Make_os2.mak, + src/testdir/Make_vms.mms, src/testdir/Makefile, + src/testdir/test105.in, src/testdir/test105.ok, + runtime/doc/cmdline.txt, runtime/doc/eval.txt, + runtime/doc/map.txt, runtime/doc/options.txt, + runtime/doc/quickfix.txt, runtime/doc/usr_30.txt, + runtime/doc/usr_40.txt, runtime/doc/usr_42.txt, + runtime/doc/vi_diff.txt, src/eval.c, src/misc2.c, src/normal.c, + src/proto/misc2.pro + + +*** ../vim-7.4.190/src/testdir/Make_amiga.mak 2014-02-05 22:25:29.974568243 +0100 +--- src/testdir/Make_amiga.mak 2014-02-23 23:16:51.056762395 +0100 +*************** +*** 35,41 **** + test89.out test90.out test91.out test92.out test93.out \ + test94.out test95.out test96.out test97.out test98.out \ + test99.out test100.out test101.out test102.out test103.out \ +! test104.out + + .SUFFIXES: .in .out + +--- 35,41 ---- + test89.out test90.out test91.out test92.out test93.out \ + test94.out test95.out test96.out test97.out test98.out \ + test99.out test100.out test101.out test102.out test103.out \ +! test104.out test105.out + + .SUFFIXES: .in .out + +*************** +*** 156,158 **** +--- 156,159 ---- + test102.out: test102.in + test103.out: test103.in + test104.out: test104.in ++ test105.out: test105.in +*** ../vim-7.4.190/src/testdir/Make_dos.mak 2014-02-05 22:25:29.978568243 +0100 +--- src/testdir/Make_dos.mak 2014-02-23 23:17:41.840762314 +0100 +*************** +*** 33,39 **** + test84.out test85.out test86.out test87.out test88.out \ + test89.out test90.out test91.out test92.out test93.out \ + test94.out test95.out test96.out test98.out test99.out \ +! test100.out test101.out test102.out test103.out test104.out + + SCRIPTS32 = test50.out test70.out + +--- 33,40 ---- + test84.out test85.out test86.out test87.out test88.out \ + test89.out test90.out test91.out test92.out test93.out \ + test94.out test95.out test96.out test98.out test99.out \ +! test100.out test101.out test102.out test103.out test104.out \ +! test105.out + + SCRIPTS32 = test50.out test70.out + +*** ../vim-7.4.190/src/testdir/Make_ming.mak 2014-02-05 22:25:29.978568243 +0100 +--- src/testdir/Make_ming.mak 2014-02-23 23:17:29.400762333 +0100 +*************** +*** 53,59 **** + test84.out test85.out test86.out test87.out test88.out \ + test89.out test90.out test91.out test92.out test93.out \ + test94.out test95.out test96.out test98.out test99.out \ +! test100.out test101.out test102.out test103.out test104.out + + SCRIPTS32 = test50.out test70.out + +--- 53,60 ---- + test84.out test85.out test86.out test87.out test88.out \ + test89.out test90.out test91.out test92.out test93.out \ + test94.out test95.out test96.out test98.out test99.out \ +! test100.out test101.out test102.out test103.out test104.out \ +! test105.out + + SCRIPTS32 = test50.out test70.out + +*** ../vim-7.4.190/src/testdir/Make_os2.mak 2014-02-05 22:25:29.978568243 +0100 +--- src/testdir/Make_os2.mak 2014-02-23 23:17:49.476762302 +0100 +*************** +*** 35,41 **** + test81.out test82.out test83.out test84.out test88.out \ + test89.out test90.out test91.out test92.out test93.out \ + test94.out test95.out test96.out test98.out test99.out \ +! test100.out test101.out test102.out test103.out test104.out + + .SUFFIXES: .in .out + +--- 35,42 ---- + test81.out test82.out test83.out test84.out test88.out \ + test89.out test90.out test91.out test92.out test93.out \ + test94.out test95.out test96.out test98.out test99.out \ +! test100.out test101.out test102.out test103.out test104.out \ +! test105.out + + .SUFFIXES: .in .out + +*** ../vim-7.4.190/src/testdir/Make_vms.mms 2014-02-05 22:25:29.978568243 +0100 +--- src/testdir/Make_vms.mms 2014-02-23 23:17:56.596762290 +0100 +*************** +*** 4,10 **** + # Authors: Zoltan Arpadffy, <arpadffy@polarhome.com> + # Sandor Kopanyi, <sandor.kopanyi@mailbox.hu> + # +! # Last change: 2013 Nov 21 + # + # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64. + # Edit the lines in the Configuration section below to select. +--- 4,10 ---- + # Authors: Zoltan Arpadffy, <arpadffy@polarhome.com> + # Sandor Kopanyi, <sandor.kopanyi@mailbox.hu> + # +! # Last change: 2014 Feb 23 + # + # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64. + # Edit the lines in the Configuration section below to select. +*************** +*** 79,85 **** + test82.out test83.out test84.out test88.out test89.out \ + test90.out test91.out test92.out test93.out test94.out \ + test95.out test96.out test97.out test98.out test99.out \ +! test100.out test101.out test102.out test103.out test104.out + + # Known problems: + # Test 30: a problem around mac format - unknown reason +--- 79,86 ---- + test82.out test83.out test84.out test88.out test89.out \ + test90.out test91.out test92.out test93.out test94.out \ + test95.out test96.out test97.out test98.out test99.out \ +! test100.out test101.out test102.out test103.out test104.out \ +! test105.out + + # Known problems: + # Test 30: a problem around mac format - unknown reason +*** ../vim-7.4.190/src/testdir/Makefile 2014-02-05 22:25:29.982568243 +0100 +--- src/testdir/Makefile 2014-02-23 23:18:14.040762262 +0100 +*************** +*** 31,37 **** + test89.out test90.out test91.out test92.out test93.out \ + test94.out test95.out test96.out test97.out test98.out \ + test99.out test100.out test101.out test102.out test103.out \ +! test104.out + + SCRIPTS_GUI = test16.out + +--- 31,37 ---- + test89.out test90.out test91.out test92.out test93.out \ + test94.out test95.out test96.out test97.out test98.out \ + test99.out test100.out test101.out test102.out test103.out \ +! test104.out test105.out + + SCRIPTS_GUI = test16.out + +*** ../vim-7.4.190/src/testdir/test105.in 2014-02-23 23:35:40.680760596 +0100 +--- src/testdir/test105.in 2014-02-23 23:30:24.748761099 +0100 +*************** +*** 0 **** +--- 1,45 ---- ++ Test filename modifiers vim: set ft=vim : ++ ++ STARTTEST ++ :source small.vim ++ :%delete _ ++ :set shell=sh ++ :set shellslash ++ :let tab="\t" ++ :command -nargs=1 Put :let expr=<q-args> | $put =expr.tab.strtrans(string(eval(expr))) ++ :let $HOME=fnamemodify('.', ':p:h:h:h') ++ :Put fnamemodify('.', ':p' )[-1:] ++ :Put fnamemodify('.', ':p:h' )[-1:] ++ :Put fnamemodify('test.out', ':p' )[-1:] ++ :Put fnamemodify('test.out', ':.' ) ++ :Put fnamemodify('../testdir/a', ':.' ) ++ :Put fnamemodify('test.out', ':~' ) ++ :Put fnamemodify('../testdir/a', ':~' ) ++ :Put fnamemodify('../testdir/a', ':t' ) ++ :Put fnamemodify('.', ':p:t' ) ++ :Put fnamemodify('test.out', ':p:t' ) ++ :Put fnamemodify('test.out', ':p:e' ) ++ :Put fnamemodify('test.out', ':p:t:e' ) ++ :Put fnamemodify('abc.fb2.tar.gz', ':r' ) ++ :Put fnamemodify('abc.fb2.tar.gz', ':r:r' ) ++ :Put fnamemodify('abc.fb2.tar.gz', ':r:r:r' ) ++ :Put substitute(fnamemodify('abc.fb2.tar.gz', ':p:r:r'), '.*\(src/testdir/.*\)', '\1', '') ++ :Put fnamemodify('abc.fb2.tar.gz', ':e' ) ++ :Put fnamemodify('abc.fb2.tar.gz', ':e:e' ) ++ :Put fnamemodify('abc.fb2.tar.gz', ':e:e:e' ) ++ :Put fnamemodify('abc.fb2.tar.gz', ':e:e:e:e') ++ :Put fnamemodify('abc.fb2.tar.gz', ':e:e:r' ) ++ :Put fnamemodify('abc def', ':S' ) ++ :Put fnamemodify('abc" "def', ':S' ) ++ :Put fnamemodify('abc"%"def', ':S' ) ++ :Put fnamemodify('abc'' ''def', ':S' ) ++ :Put fnamemodify('abc''%''def', ':S' ) ++ :Put fnamemodify("abc\ndef", ':S' ) ++ :set shell=tcsh ++ :Put fnamemodify("abc\ndef", ':S' ) ++ :$put ='vim: ts=8' ++ :1 delete _ ++ :w! test.out ++ :qa! ++ ENDTEST ++ +*** ../vim-7.4.190/src/testdir/test105.ok 2014-02-23 23:35:40.688760596 +0100 +--- src/testdir/test105.ok 2014-02-23 23:32:11.204760929 +0100 +*************** +*** 0 **** +--- 1,29 ---- ++ fnamemodify('.', ':p' )[-1:] '/' ++ fnamemodify('.', ':p:h' )[-1:] 'r' ++ fnamemodify('test.out', ':p' )[-1:] 't' ++ fnamemodify('test.out', ':.' ) 'test.out' ++ fnamemodify('../testdir/a', ':.' ) 'a' ++ fnamemodify('test.out', ':~' ) '~/src/testdir/test.out' ++ fnamemodify('../testdir/a', ':~' ) '~/src/testdir/a' ++ fnamemodify('../testdir/a', ':t' ) 'a' ++ fnamemodify('.', ':p:t' ) '' ++ fnamemodify('test.out', ':p:t' ) 'test.out' ++ fnamemodify('test.out', ':p:e' ) 'out' ++ fnamemodify('test.out', ':p:t:e' ) 'out' ++ fnamemodify('abc.fb2.tar.gz', ':r' ) 'abc.fb2.tar' ++ fnamemodify('abc.fb2.tar.gz', ':r:r' ) 'abc.fb2' ++ fnamemodify('abc.fb2.tar.gz', ':r:r:r' ) 'abc' ++ substitute(fnamemodify('abc.fb2.tar.gz', ':p:r:r'), '.*\(src/testdir/.*\)', '\1', '') 'src/testdir/abc.fb2' ++ fnamemodify('abc.fb2.tar.gz', ':e' ) 'gz' ++ fnamemodify('abc.fb2.tar.gz', ':e:e' ) 'tar.gz' ++ fnamemodify('abc.fb2.tar.gz', ':e:e:e' ) 'fb2.tar.gz' ++ fnamemodify('abc.fb2.tar.gz', ':e:e:e:e') 'fb2.tar.gz' ++ fnamemodify('abc.fb2.tar.gz', ':e:e:r' ) 'tar' ++ fnamemodify('abc def', ':S' ) '''abc def''' ++ fnamemodify('abc" "def', ':S' ) '''abc" "def''' ++ fnamemodify('abc"%"def', ':S' ) '''abc"%"def''' ++ fnamemodify('abc'' ''def', ':S' ) '''abc''\'''' ''\''''def''' ++ fnamemodify('abc''%''def', ':S' ) '''abc''\''''%''\''''def''' ++ fnamemodify("abc\ndef", ':S' ) '''abc^@def''' ++ fnamemodify("abc\ndef", ':S' ) '''abc\^@def''' ++ vim: ts=8 +*** ../vim-7.4.190/runtime/doc/cmdline.txt 2013-11-09 05:30:18.000000000 +0100 +--- runtime/doc/cmdline.txt 2014-02-23 23:20:57.020762003 +0100 +*************** +*** 758,763 **** +--- 758,764 ---- + function expand() |expand()|. + % Is replaced with the current file name. *:_%* *c_%* + # Is replaced with the alternate file name. *:_#* *c_#* ++ This is remembered for every window. + #n (where n is a number) is replaced with *:_#0* *:_#n* + the file name of buffer n. "#0" is the same as "#". *c_#n* + ## Is replaced with all names in the argument list *:_##* *c_##* +*************** +*** 823,830 **** + the start of the function. + + *filename-modifiers* +! *:_%:* *::8* *::p* *::.* *::~* *::h* *::t* *::r* *::e* *::s* *::gs* +! *%:8* *%:p* *%:.* *%:~* *%:h* *%:t* *%:r* *%:e* *%:s* *%:gs* + The file name modifiers can be used after "%", "#", "#n", "<cfile>", "<sfile>", + "<afile>" or "<abuf>". They are also used with the |fnamemodify()| function. + These are not available when Vim has been compiled without the |+modify_fname| +--- 824,831 ---- + the start of the function. + + *filename-modifiers* +! *:_%:* *::8* *::p* *::.* *::~* *::h* *::t* *::r* *::e* *::s* *::gs* *::S* +! *%:8* *%:p* *%:.* *%:~* *%:h* *%:t* *%:r* *%:e* *%:s* *%:gs* *%:S* + The file name modifiers can be used after "%", "#", "#n", "<cfile>", "<sfile>", + "<afile>" or "<abuf>". They are also used with the |fnamemodify()| function. + These are not available when Vim has been compiled without the |+modify_fname| +*************** +*** 879,884 **** +--- 880,889 ---- + :gs?pat?sub? + Substitute all occurrences of "pat" with "sub". Otherwise + this works like ":s". ++ :S Escape special characters for use with a shell command (see ++ |shellescape()|). Must be the last one. Examples: > ++ :!dir <cfile>:S ++ :call system('chmod +w -- ' . expand('%:S')) + + Examples, when the file name is "src/version.c", current dir + "/home/mool/vim": > +*** ../vim-7.4.190/runtime/doc/eval.txt 2014-01-14 12:33:32.000000000 +0100 +--- runtime/doc/eval.txt 2014-02-23 23:19:32.420762138 +0100 +*************** +*** 5414,5419 **** +--- 5428,5434 ---- + < This results in a directory listing for the file under the + cursor. Example of use with |system()|: > + :call system("chmod +w -- " . shellescape(expand("%"))) ++ < See also |::S|. + + + shiftwidth() *shiftwidth()* +*************** +*** 5896,5909 **** + passed as stdin to the command. The string is written as-is, + you need to take care of using the correct line separators + yourself. Pipes are not used. +! Note: Use |shellescape()| to escape special characters in a +! command argument. Newlines in {expr} may cause the command to +! fail. The characters in 'shellquote' and 'shellxquote' may +! also cause trouble. + This is not to be used for interactive commands. + + The result is a String. Example: > + :let files = system("ls " . shellescape(expand('%:h'))) + + < To make the result more system-independent, the shell output + is filtered to replace <CR> with <NL> for Macintosh, and +--- 5911,5926 ---- + passed as stdin to the command. The string is written as-is, + you need to take care of using the correct line separators + yourself. Pipes are not used. +! Note: Use |shellescape()| or |::S| with |expand()| or +! |fnamemodify()| to escape special characters in a command +! argument. Newlines in {expr} may cause the command to fail. +! The characters in 'shellquote' and 'shellxquote' may also +! cause trouble. + This is not to be used for interactive commands. + + The result is a String. Example: > + :let files = system("ls " . shellescape(expand('%:h'))) ++ :let files = system('ls ' . expand('%:h:S')) + + < To make the result more system-independent, the shell output + is filtered to replace <CR> with <NL> for Macintosh, and +*** ../vim-7.4.190/runtime/doc/map.txt 2013-08-10 13:24:56.000000000 +0200 +--- runtime/doc/map.txt 2014-02-23 23:19:32.424762138 +0100 +*************** +*** 380,386 **** + The simplest way to load a set of related language mappings is by using the + 'keymap' option. See |45.5|. + In Insert mode and in Command-line mode the mappings can be disabled with +! the CTRL-^ command |i_CTRL-^| |c_CTRL-^| These commands change the value of + the 'iminsert' option. When starting to enter a normal command line (not a + search pattern) the mappings are disabled until a CTRL-^ is typed. The state + last used is remembered for Insert mode and Search patterns separately. The +--- 380,386 ---- + The simplest way to load a set of related language mappings is by using the + 'keymap' option. See |45.5|. + In Insert mode and in Command-line mode the mappings can be disabled with +! the CTRL-^ command |i_CTRL-^| |c_CTRL-^|. These commands change the value of + the 'iminsert' option. When starting to enter a normal command line (not a + search pattern) the mappings are disabled until a CTRL-^ is typed. The state + last used is remembered for Insert mode and Search patterns separately. The +*************** +*** 593,599 **** + When you have a mapping that contains an Ex command, you need to put a line + terminator after it to have it executed. The use of <CR> is recommended for + this (see |<>|). Example: > +! :map _ls :!ls -l %<CR>:echo "the end"<CR> + + To avoid mapping of the characters you type in insert or Command-line mode, + type a CTRL-V first. The mapping in Insert mode is disabled if the 'paste' +--- 593,599 ---- + When you have a mapping that contains an Ex command, you need to put a line + terminator after it to have it executed. The use of <CR> is recommended for + this (see |<>|). Example: > +! :map _ls :!ls -l %:S<CR>:echo "the end"<CR> + + To avoid mapping of the characters you type in insert or Command-line mode, + type a CTRL-V first. The mapping in Insert mode is disabled if the 'paste' +*** ../vim-7.4.190/runtime/doc/options.txt 2013-11-12 04:43:57.000000000 +0100 +--- runtime/doc/options.txt 2014-02-23 23:19:32.428762138 +0100 +*************** +*** 4757,4764 **** + global or local to buffer |global-local| + {not in Vi} + Program to use for the ":make" command. See |:make_makeprg|. +! This option may contain '%' and '#' characters, which are expanded to +! the current and alternate file name. |:_%| |:_#| + Environment variables are expanded |:set_env|. See |option-backslash| + about including spaces and backslashes. + Note that a '|' must be escaped twice: once for ":set" and once for +--- 4757,4765 ---- + global or local to buffer |global-local| + {not in Vi} + Program to use for the ":make" command. See |:make_makeprg|. +! This option may contain '%' and '#' characters (see |:_%| and |:_#|), +! which are expanded to the current and alternate file name. Use |::S| +! to escape file names in case they contain special characters. + Environment variables are expanded |:set_env|. See |option-backslash| + about including spaces and backslashes. + Note that a '|' must be escaped twice: once for ":set" and once for +*** ../vim-7.4.190/runtime/doc/quickfix.txt 2013-08-10 13:25:00.000000000 +0200 +--- runtime/doc/quickfix.txt 2014-02-23 23:19:32.432762138 +0100 +*************** +*** 838,844 **** + The alltests.py script seems to be used quite often, that's all. + Useful values for the 'makeprg' options therefore are: + setlocal makeprg=./alltests.py " Run a testsuite +! setlocal makeprg=python % " Run a single testcase + + Also see http://vim.sourceforge.net/tip_view.php?tip_id=280. + +--- 838,844 ---- + The alltests.py script seems to be used quite often, that's all. + Useful values for the 'makeprg' options therefore are: + setlocal makeprg=./alltests.py " Run a testsuite +! setlocal makeprg=python\ %:S " Run a single testcase + + Also see http://vim.sourceforge.net/tip_view.php?tip_id=280. + +*************** +*** 1332,1338 **** + Here is an alternative from Michael F. Lamb for Unix that filters the errors + first: > + :setl errorformat=%Z%f:%l:\ %m,%A%p^,%-G%*[^sl]%.%# +! :setl makeprg=javac\ %\ 2>&1\ \\\|\ vim-javac-filter + + You need to put the following in "vim-javac-filter" somewhere in your path + (e.g., in ~/bin) and make it executable: > +--- 1332,1338 ---- + Here is an alternative from Michael F. Lamb for Unix that filters the errors + first: > + :setl errorformat=%Z%f:%l:\ %m,%A%p^,%-G%*[^sl]%.%# +! :setl makeprg=javac\ %:S\ 2>&1\ \\\|\ vim-javac-filter + + You need to put the following in "vim-javac-filter" somewhere in your path + (e.g., in ~/bin) and make it executable: > +*** ../vim-7.4.190/runtime/doc/usr_30.txt 2013-08-10 13:25:05.000000000 +0200 +--- runtime/doc/usr_30.txt 2014-02-23 23:19:32.432762138 +0100 +*************** +*** 128,134 **** + You can include special Vim keywords in the command specification. The % + character expands to the name of the current file. So if you execute the + command: > +! :set makeprg=make\ % + + When you are editing main.c, then ":make" executes the following command: > + +--- 128,134 ---- + You can include special Vim keywords in the command specification. The % + character expands to the name of the current file. So if you execute the + command: > +! :set makeprg=make\ %:S + + When you are editing main.c, then ":make" executes the following command: > + +*************** +*** 137,143 **** + This is not too useful, so you will refine the command a little and use the :r + (root) modifier: > + +! :set makeprg=make\ %:r.o + + Now the command executed is as follows: > + +--- 137,143 ---- + This is not too useful, so you will refine the command a little and use the :r + (root) modifier: > + +! :set makeprg=make\ %:r:S.o + + Now the command executed is as follows: > + +*** ../vim-7.4.190/runtime/doc/usr_40.txt 2013-08-10 13:25:05.000000000 +0200 +--- runtime/doc/usr_40.txt 2014-02-23 23:19:32.432762138 +0100 +*************** +*** 209,215 **** + separates the two commands. This also means that a | character can't be used + inside a map command. To include one, use <Bar> (five characters). Example: + > +! :map <F8> :write <Bar> !checkin %<CR> + + The same problem applies to the ":unmap" command, with the addition that you + have to watch out for trailing white space. These two commands are different: +--- 209,215 ---- + separates the two commands. This also means that a | character can't be used + inside a map command. To include one, use <Bar> (five characters). Example: + > +! :map <F8> :write <Bar> !checkin %:S<CR> + + The same problem applies to the ":unmap" command, with the addition that you + have to watch out for trailing white space. These two commands are different: +*** ../vim-7.4.190/runtime/doc/usr_42.txt 2013-08-10 13:25:05.000000000 +0200 +--- runtime/doc/usr_42.txt 2014-02-23 23:19:32.432762138 +0100 +*************** +*** 311,317 **** + item with a bitmap. For example, define a new toolbar item with: > + + :tmenu ToolBar.Compile Compile the current file +! :amenu ToolBar.Compile :!cc % -o %:r<CR> + + Now you need to create the icon. For MS-Windows it must be in bitmap format, + with the name "Compile.bmp". For Unix XPM format is used, the file name is +--- 311,317 ---- + item with a bitmap. For example, define a new toolbar item with: > + + :tmenu ToolBar.Compile Compile the current file +! :amenu ToolBar.Compile :!cc %:S -o %:r:S<CR> + + Now you need to create the icon. For MS-Windows it must be in bitmap format, + with the name "Compile.bmp". For Unix XPM format is used, the file name is +*** ../vim-7.4.190/runtime/doc/vi_diff.txt 2013-08-10 13:25:07.000000000 +0200 +--- runtime/doc/vi_diff.txt 2014-02-23 23:19:32.432762138 +0100 +*************** +*** 540,546 **** + Added :wnext command. Same as ":write" followed by ":next". + + The ":w!" command always writes, also when the file is write protected. In Vi +! you would have to do ":!chmod +w %" and ":set noro". + + When 'tildeop' has been set, "~" is an operator (must be followed by a + movement command). +--- 540,546 ---- + Added :wnext command. Same as ":write" followed by ":next". + + The ":w!" command always writes, also when the file is write protected. In Vi +! you would have to do ":!chmod +w %:S" and ":set noro". + + When 'tildeop' has been set, "~" is an operator (must be followed by a + movement command). +*** ../vim-7.4.190/src/eval.c 2014-02-23 22:54:54.724764490 +0100 +--- src/eval.c 2014-02-23 23:19:32.432762138 +0100 +*************** +*** 16950,16956 **** + typval_T *rettv; + { + rettv->vval.v_string = vim_strsave_shellescape( +! get_tv_string(&argvars[0]), non_zero_arg(&argvars[1])); + rettv->v_type = VAR_STRING; + } + +--- 16950,16956 ---- + typval_T *rettv; + { + rettv->vval.v_string = vim_strsave_shellescape( +! get_tv_string(&argvars[0]), non_zero_arg(&argvars[1]), TRUE); + rettv->v_type = VAR_STRING; + } + +*************** +*** 24355,24360 **** +--- 24355,24371 ---- + } + } + ++ if (src[*usedlen] == ':' && src[*usedlen + 1] == 'S') ++ { ++ p = vim_strsave_shellescape(*fnamep, FALSE, FALSE); ++ if (p == NULL) ++ return -1; ++ vim_free(*bufp); ++ *bufp = *fnamep = p; ++ *fnamelen = (int)STRLEN(p); ++ *usedlen += 2; ++ } ++ + return valid; + } + +*** ../vim-7.4.190/src/misc2.c 2014-01-06 06:18:44.000000000 +0100 +--- src/misc2.c 2014-02-23 23:25:44.168761546 +0100 +*************** +*** 1369,1380 **** + * Escape a newline, depending on the 'shell' option. + * When "do_special" is TRUE also replace "!", "%", "#" and things starting + * with "<" like "<cfile>". + * Returns the result in allocated memory, NULL if we have run out. + */ + char_u * +! vim_strsave_shellescape(string, do_special) + char_u *string; + int do_special; + { + unsigned length; + char_u *p; +--- 1369,1382 ---- + * Escape a newline, depending on the 'shell' option. + * When "do_special" is TRUE also replace "!", "%", "#" and things starting + * with "<" like "<cfile>". ++ * When "do_newline" is FALSE do not escape newline unless it is csh shell. + * Returns the result in allocated memory, NULL if we have run out. + */ + char_u * +! vim_strsave_shellescape(string, do_special, do_newline) + char_u *string; + int do_special; ++ int do_newline; + { + unsigned length; + char_u *p; +*************** +*** 1403,1409 **** + # endif + if (*p == '\'') + length += 3; /* ' => '\'' */ +! if (*p == '\n' || (*p == '!' && (csh_like || do_special))) + { + ++length; /* insert backslash */ + if (csh_like && do_special) +--- 1405,1412 ---- + # endif + if (*p == '\'') + length += 3; /* ' => '\'' */ +! if ((*p == '\n' && (csh_like || do_newline)) +! || (*p == '!' && (csh_like || do_special))) + { + ++length; /* insert backslash */ + if (csh_like && do_special) +*************** +*** 1454,1460 **** + ++p; + continue; + } +! if (*p == '\n' || (*p == '!' && (csh_like || do_special))) + { + *d++ = '\\'; + if (csh_like && do_special) +--- 1457,1464 ---- + ++p; + continue; + } +! if ((*p == '\n' && (csh_like || do_newline)) +! || (*p == '!' && (csh_like || do_special))) + { + *d++ = '\\'; + if (csh_like && do_special) +*** ../vim-7.4.190/src/normal.c 2014-02-22 23:49:30.268896843 +0100 +--- src/normal.c 2014-02-23 23:19:32.436762138 +0100 +*************** +*** 5790,5796 **** + { + /* Escape the argument properly for a shell command */ + ptr = vim_strnsave(ptr, n); +! p = vim_strsave_shellescape(ptr, TRUE); + vim_free(ptr); + if (p == NULL) + { +--- 5790,5796 ---- + { + /* Escape the argument properly for a shell command */ + ptr = vim_strnsave(ptr, n); +! p = vim_strsave_shellescape(ptr, TRUE, TRUE); + vim_free(ptr); + if (p == NULL) + { +*** ../vim-7.4.190/src/proto/misc2.pro 2013-08-10 13:37:20.000000000 +0200 +--- src/proto/misc2.pro 2014-02-23 23:19:32.436762138 +0100 +*************** +*** 32,38 **** + char_u *vim_strsave_escaped __ARGS((char_u *string, char_u *esc_chars)); + char_u *vim_strsave_escaped_ext __ARGS((char_u *string, char_u *esc_chars, int cc, int bsl)); + int csh_like_shell __ARGS((void)); +! char_u *vim_strsave_shellescape __ARGS((char_u *string, int do_special)); + char_u *vim_strsave_up __ARGS((char_u *string)); + char_u *vim_strnsave_up __ARGS((char_u *string, int len)); + void vim_strup __ARGS((char_u *p)); +--- 32,38 ---- + char_u *vim_strsave_escaped __ARGS((char_u *string, char_u *esc_chars)); + char_u *vim_strsave_escaped_ext __ARGS((char_u *string, char_u *esc_chars, int cc, int bsl)); + int csh_like_shell __ARGS((void)); +! char_u *vim_strsave_shellescape __ARGS((char_u *string, int do_special, int do_newline)); + char_u *vim_strsave_up __ARGS((char_u *string)); + char_u *vim_strnsave_up __ARGS((char_u *string, int len)); + void vim_strup __ARGS((char_u *p)); +*** ../vim-7.4.190/src/version.c 2014-02-23 22:58:12.072764176 +0100 +--- src/version.c 2014-02-23 23:35:51.044760579 +0100 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 191, + /**/ + +-- +Windows +M!uqoms + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.192 b/SOURCES/7.4.192 new file mode 100644 index 0000000..256d0fa --- /dev/null +++ b/SOURCES/7.4.192 @@ -0,0 +1,44 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.192 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.192 +Problem: Memory leak when giving E853. +Solution: Free the argument. (Dominique Pelle) +Files: src/eval.c + + +*** ../vim-7.4.191/src/eval.c 2014-02-23 23:38:58.824760280 +0100 +--- src/eval.c 2014-02-24 03:27:39.244738435 +0100 +*************** +*** 21457,21462 **** +--- 21457,21463 ---- + if (STRCMP(((char_u **)(newargs.ga_data))[i], arg) == 0) + { + EMSG2(_("E853: Duplicate argument name: %s"), arg); ++ vim_free(arg); + goto erret; + } + +*** ../vim-7.4.191/src/version.c 2014-02-23 23:38:58.828760280 +0100 +--- src/version.c 2014-02-24 03:28:23.068738365 +0100 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 192, + /**/ + +-- +Seen on the back of a biker's vest: If you can read this, my wife fell off. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.193 b/SOURCES/7.4.193 new file mode 100644 index 0000000..f84a9d1 --- /dev/null +++ b/SOURCES/7.4.193 @@ -0,0 +1,106 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.193 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.193 +Problem: Typos in messages. +Solution: "then" -> "than". (Dominique Pelle) +Files: src/if_py_both.h, src/spell.c + + +*** ../vim-7.4.192/src/if_py_both.h 2014-02-15 15:58:55.081904773 +0100 +--- src/if_py_both.h 2014-03-08 16:10:46.015459417 +0100 +*************** +*** 236,242 **** + if (*result <= 0) + { + PyErr_SET_STRING(PyExc_ValueError, +! N_("number must be greater then zero")); + return -1; + } + } +--- 236,242 ---- + if (*result <= 0) + { + PyErr_SET_STRING(PyExc_ValueError, +! N_("number must be greater than zero")); + return -1; + } + } +*************** +*** 2405,2411 **** + if ((item = PyIter_Next(iterator))) + { + PyErr_FORMAT(PyExc_ValueError, +! N_("attempt to assign sequence of size greater then %d " + "to extended slice"), 0); + Py_DECREF(item); + ret = -1; +--- 2405,2411 ---- + if ((item = PyIter_Next(iterator))) + { + PyErr_FORMAT(PyExc_ValueError, +! N_("attempt to assign sequence of size greater than %d " + "to extended slice"), 0); + Py_DECREF(item); + ret = -1; +*************** +*** 2510,2516 **** + { + Py_DECREF(iterator); + PyErr_FORMAT(PyExc_ValueError, +! N_("attempt to assign sequence of size greater then %d " + "to extended slice"), (int) slicelen); + list_restore(numadded, numreplaced, slicelen, l, lis, lastaddedli); + PyMem_Free(lis); +--- 2510,2516 ---- + { + Py_DECREF(iterator); + PyErr_FORMAT(PyExc_ValueError, +! N_("attempt to assign sequence of size greater than %d " + "to extended slice"), (int) slicelen); + list_restore(numadded, numreplaced, slicelen, l, lis, lastaddedli); + PyMem_Free(lis); +*** ../vim-7.4.192/src/spell.c 2014-02-23 22:52:33.372764715 +0100 +--- src/spell.c 2014-03-08 16:10:46.019459417 +0100 +*************** +*** 12037,12043 **** + /* Normal byte, go one level deeper. If it's not equal to the + * byte in the bad word adjust the score. But don't even try + * when the byte was already changed. And don't try when we +! * just deleted this byte, accepting it is always cheaper then + * delete + substitute. */ + if (c == fword[sp->ts_fidx] + #ifdef FEAT_MBYTE +--- 12037,12043 ---- + /* Normal byte, go one level deeper. If it's not equal to the + * byte in the bad word adjust the score. But don't even try + * when the byte was already changed. And don't try when we +! * just deleted this byte, accepting it is always cheaper than + * delete + substitute. */ + if (c == fword[sp->ts_fidx] + #ifdef FEAT_MBYTE +*** ../vim-7.4.192/src/version.c 2014-02-24 03:31:55.816738026 +0100 +--- src/version.c 2014-03-08 16:11:51.591460422 +0100 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 193, + /**/ + +-- +BEDEVERE: How do you know so much about swallows? +ARTHUR: Well you have to know these things when you're a king, you know. + "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.194 b/SOURCES/7.4.194 new file mode 100644 index 0000000..e73bd13 --- /dev/null +++ b/SOURCES/7.4.194 @@ -0,0 +1,53 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.194 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.194 +Problem: Can't build for Android. +Solution: Add #if condition. (Fredrik Fornwall) +Files: src/mbyte.c + + +*** ../vim-7.4.193/src/mbyte.c 2014-01-14 13:26:17.000000000 +0100 +--- src/mbyte.c 2014-03-03 22:41:30.527101306 +0100 +*************** +*** 708,714 **** + * API */ + n = IsDBCSLeadByteEx(enc_dbcs, (WINBYTE)i) ? 2 : 1; + #else +! # if defined(MACOS) || defined(__amigaos4__) + /* + * if mblen() is not available, character which MSB is turned on + * are treated as leading byte character. (note : This assumption +--- 708,714 ---- + * API */ + n = IsDBCSLeadByteEx(enc_dbcs, (WINBYTE)i) ? 2 : 1; + #else +! # if defined(MACOS) || defined(__amigaos4__) || defined(__ANDROID__) + /* + * if mblen() is not available, character which MSB is turned on + * are treated as leading byte character. (note : This assumption +*** ../vim-7.4.193/src/version.c 2014-03-08 16:13:39.123462070 +0100 +--- src/version.c 2014-03-12 14:53:45.148684209 +0100 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 194, + /**/ + +-- +A programmer's wife asks him: "Please run to the store and pick up a loaf of +bread. If they have eggs, get a dozen". The programmer comes home with 12 +loafs of bread. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.195 b/SOURCES/7.4.195 new file mode 100644 index 0000000..0cd888d --- /dev/null +++ b/SOURCES/7.4.195 @@ -0,0 +1,164 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.195 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.195 (after 7.4.193) +Problem: Python tests fail. +Solution: Change "then" to "than" in more places. (Dominique Pelle, Taro + Muraoka) +Files: src/testdir/test86.in, src/testdir/test86.ok, + src/testdir/test87.in, src/testdir/test87.ok + + +*** ../vim-7.4.194/src/testdir/test86.in 2014-02-11 18:47:18.678311042 +0100 +--- src/testdir/test86.in 2014-03-12 15:20:41.512708977 +0100 +*************** +*** 675,681 **** + # Check GCing iterator that was not fully exhausted + i = iter(vim.buffers) + cb.append('i:' + str(next(i))) +! # and also check creating more then one iterator at a time + i2 = iter(vim.buffers) + cb.append('i2:' + str(next(i2))) + cb.append('i:' + str(next(i))) +--- 675,681 ---- + # Check GCing iterator that was not fully exhausted + i = iter(vim.buffers) + cb.append('i:' + str(next(i))) +! # and also check creating more than one iterator at a time + i2 = iter(vim.buffers) + cb.append('i2:' + str(next(i2))) + cb.append('i:' + str(next(i))) +*** ../vim-7.4.194/src/testdir/test86.ok 2014-01-14 16:54:53.000000000 +0100 +--- src/testdir/test86.ok 2014-03-12 15:19:28.080707851 +0100 +*************** +*** 882,892 **** + l[:] = FailingIter():NotImplementedError:('iter',) + l[:] = FailingIterNext():NotImplementedError:('next',) + <<< Finished +! nel[1:10:2] = "abcK":ValueError:('attempt to assign sequence of size greater then 2 to extended slice',) + ('a', 'b', 'c', 'O') + nel[1:10:2] = "a":ValueError:('attempt to assign sequence of size 1 to extended slice of size 2',) + ('a', 'b', 'c', 'O') +! nel[1:1:-1] = "a":ValueError:('attempt to assign sequence of size greater then 0 to extended slice',) + ('a', 'b', 'c', 'O') + nel[:] = FailingIterNextN(2):NotImplementedError:('next N',) + ('a', 'b', 'c', 'O') +--- 882,892 ---- + l[:] = FailingIter():NotImplementedError:('iter',) + l[:] = FailingIterNext():NotImplementedError:('next',) + <<< Finished +! nel[1:10:2] = "abcK":ValueError:('attempt to assign sequence of size greater than 2 to extended slice',) + ('a', 'b', 'c', 'O') + nel[1:10:2] = "a":ValueError:('attempt to assign sequence of size 1 to extended slice of size 2',) + ('a', 'b', 'c', 'O') +! nel[1:1:-1] = "a":ValueError:('attempt to assign sequence of size greater than 0 to extended slice',) + ('a', 'b', 'c', 'O') + nel[:] = FailingIterNextN(2):NotImplementedError:('next N',) + ('a', 'b', 'c', 'O') +*************** +*** 1233,1240 **** + >>> Testing NumberToLong using vim.buffers[%s] + vim.buffers[[]]:TypeError:('expected int(), long() or something supporting coercing to long(), but got list',) + vim.buffers[None]:TypeError:('expected int(), long() or something supporting coercing to long(), but got NoneType',) +! vim.buffers[-1]:ValueError:('number must be greater then zero',) +! vim.buffers[0]:ValueError:('number must be greater then zero',) + <<< Finished + > Current + >> CurrentGetattr +--- 1233,1240 ---- + >>> Testing NumberToLong using vim.buffers[%s] + vim.buffers[[]]:TypeError:('expected int(), long() or something supporting coercing to long(), but got list',) + vim.buffers[None]:TypeError:('expected int(), long() or something supporting coercing to long(), but got NoneType',) +! vim.buffers[-1]:ValueError:('number must be greater than zero',) +! vim.buffers[0]:ValueError:('number must be greater than zero',) + <<< Finished + > Current + >> CurrentGetattr +*** ../vim-7.4.194/src/testdir/test87.in 2014-02-11 18:47:18.678311042 +0100 +--- src/testdir/test87.in 2014-03-12 15:21:20.036709567 +0100 +*************** +*** 664,670 **** + # Check GCing iterator that was not fully exhausted + i = iter(vim.buffers) + cb.append('i:' + str(next(i))) +! # and also check creating more then one iterator at a time + i2 = iter(vim.buffers) + cb.append('i2:' + str(next(i2))) + cb.append('i:' + str(next(i))) +--- 664,670 ---- + # Check GCing iterator that was not fully exhausted + i = iter(vim.buffers) + cb.append('i:' + str(next(i))) +! # and also check creating more than one iterator at a time + i2 = iter(vim.buffers) + cb.append('i2:' + str(next(i2))) + cb.append('i:' + str(next(i))) +*** ../vim-7.4.194/src/testdir/test87.ok 2014-01-14 16:54:53.000000000 +0100 +--- src/testdir/test87.ok 2014-03-12 15:19:28.080707851 +0100 +*************** +*** 882,892 **** + l[:] = FailingIter():(<class 'NotImplementedError'>, NotImplementedError('iter',)) + l[:] = FailingIterNext():(<class 'NotImplementedError'>, NotImplementedError('next',)) + <<< Finished +! nel[1:10:2] = "abcK":(<class 'ValueError'>, ValueError('attempt to assign sequence of size greater then 2 to extended slice',)) + (b'a', b'b', b'c', b'O') + nel[1:10:2] = "a":(<class 'ValueError'>, ValueError('attempt to assign sequence of size 1 to extended slice of size 2',)) + (b'a', b'b', b'c', b'O') +! nel[1:1:-1] = "a":(<class 'ValueError'>, ValueError('attempt to assign sequence of size greater then 0 to extended slice',)) + (b'a', b'b', b'c', b'O') + nel[:] = FailingIterNextN(2):(<class 'NotImplementedError'>, NotImplementedError('next N',)) + (b'a', b'b', b'c', b'O') +--- 882,892 ---- + l[:] = FailingIter():(<class 'NotImplementedError'>, NotImplementedError('iter',)) + l[:] = FailingIterNext():(<class 'NotImplementedError'>, NotImplementedError('next',)) + <<< Finished +! nel[1:10:2] = "abcK":(<class 'ValueError'>, ValueError('attempt to assign sequence of size greater than 2 to extended slice',)) + (b'a', b'b', b'c', b'O') + nel[1:10:2] = "a":(<class 'ValueError'>, ValueError('attempt to assign sequence of size 1 to extended slice of size 2',)) + (b'a', b'b', b'c', b'O') +! nel[1:1:-1] = "a":(<class 'ValueError'>, ValueError('attempt to assign sequence of size greater than 0 to extended slice',)) + (b'a', b'b', b'c', b'O') + nel[:] = FailingIterNextN(2):(<class 'NotImplementedError'>, NotImplementedError('next N',)) + (b'a', b'b', b'c', b'O') +*************** +*** 1233,1240 **** + >>> Testing NumberToLong using vim.buffers[%s] + vim.buffers[[]]:(<class 'TypeError'>, TypeError('expected int() or something supporting coercing to int(), but got list',)) + vim.buffers[None]:(<class 'TypeError'>, TypeError('expected int() or something supporting coercing to int(), but got NoneType',)) +! vim.buffers[-1]:(<class 'ValueError'>, ValueError('number must be greater then zero',)) +! vim.buffers[0]:(<class 'ValueError'>, ValueError('number must be greater then zero',)) + <<< Finished + > Current + >> CurrentGetattr +--- 1233,1240 ---- + >>> Testing NumberToLong using vim.buffers[%s] + vim.buffers[[]]:(<class 'TypeError'>, TypeError('expected int() or something supporting coercing to int(), but got list',)) + vim.buffers[None]:(<class 'TypeError'>, TypeError('expected int() or something supporting coercing to int(), but got NoneType',)) +! vim.buffers[-1]:(<class 'ValueError'>, ValueError('number must be greater than zero',)) +! vim.buffers[0]:(<class 'ValueError'>, ValueError('number must be greater than zero',)) + <<< Finished + > Current + >> CurrentGetattr +*** ../vim-7.4.194/src/version.c 2014-03-12 14:54:29.920684895 +0100 +--- src/version.c 2014-03-12 15:19:20.016707728 +0100 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 195, + /**/ + +-- +Zen Microsystems: we're the om in .commmmmmmmm + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.196 b/SOURCES/7.4.196 new file mode 100644 index 0000000..d483b24 --- /dev/null +++ b/SOURCES/7.4.196 @@ -0,0 +1,51 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.196 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.196 +Problem: Tests fail on Solaris 9 and 10. +Solution: Use "test -f" instead of "test -e". (Laurent Blume) +Files: src/testdir/Makefile + + +*** ../vim-7.4.195/src/testdir/Makefile 2014-02-23 23:38:58.812760280 +0100 +--- src/testdir/Makefile 2014-03-12 15:46:41.352732878 +0100 +*************** +*** 61,67 **** + test1.out: test1.in + -rm -rf $*.failed $(RM_ON_RUN) $(RM_ON_START) wrongtermsize + $(RUN_VIM) $*.in +! @/bin/sh -c "if test -e wrongtermsize; \ + then echo; \ + echo test1 FAILED - terminal size must be 80x24 or larger; \ + echo; exit 1; \ +--- 61,67 ---- + test1.out: test1.in + -rm -rf $*.failed $(RM_ON_RUN) $(RM_ON_START) wrongtermsize + $(RUN_VIM) $*.in +! @/bin/sh -c "if test -f wrongtermsize; \ + then echo; \ + echo test1 FAILED - terminal size must be 80x24 or larger; \ + echo; exit 1; \ +*** ../vim-7.4.195/src/version.c 2014-03-12 15:26:36.432714415 +0100 +--- src/version.c 2014-03-12 15:48:09.700734232 +0100 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 196, + /**/ + +-- +My Go, this amn keyboar oesn't have a . + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.197 b/SOURCES/7.4.197 new file mode 100644 index 0000000..80783eb --- /dev/null +++ b/SOURCES/7.4.197 @@ -0,0 +1,1052 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.197 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.197 +Problem: Various problems on VMS. +Solution: Fix several VMS problems. (Zoltan Arpadffy) +Files: runtime/doc/os_vms.txt, src/Make_vms.mms, src/fileio.c, + src/os_unix.c, src/os_unix.h, src/os_vms.c, src/os_vms_conf.h, + src/proto/os_vms.pro, src/testdir/Make_vms.mms, + src/testdir/test72.in, src/testdir/test77a.com, + src/testdir/test77a.in, src/testdir/test77a.ok src/undo.c + + +*** ../vim-7.4.196/runtime/doc/os_vms.txt 2013-08-10 13:24:59.000000000 +0200 +--- runtime/doc/os_vms.txt 2014-03-12 15:55:50.196741288 +0100 +*************** +*** 1,4 **** +! *os_vms.txt* For Vim version 7.4. Last change: 2011 Aug 14 + + + VIM REFERENCE MANUAL +--- 1,4 ---- +! *os_vms.txt* For Vim version 7.4. Last change: 2014 Feb 24 + + + VIM REFERENCE MANUAL +*************** +*** 24,30 **** + + 1. Getting started *vms-started* + +! Vim (Vi IMproved) is a vi-compatible text editor that runs on nearly every + operating system known to humanity. Now use Vim on OpenVMS too, in character + or X/Motif environment. It is fully featured and absolutely compatible with + Vim on other operating systems. +--- 24,30 ---- + + 1. Getting started *vms-started* + +! Vim (Vi IMproved) is a Vi-compatible text editor that runs on nearly every + operating system known to humanity. Now use Vim on OpenVMS too, in character + or X/Motif environment. It is fully featured and absolutely compatible with + Vim on other operating systems. +*************** +*** 764,769 **** +--- 764,785 ---- + + 9. VMS related changes *vms-changes* + ++ Version 7.4 ++ - Undo: VMS can not handle more than one dot in the filenames use "dir/name" -> "dir/_un_name" ++ add _un_ at the beginning to keep the extension ++ - correct swap file name wildcard handling ++ - handle iconv usage correctly ++ - do not optimize on vax - otherwise it hangs compiling crypto files ++ - fileio.c fix the comment ++ - correct RealWaitForChar ++ - after 7.4-119 use different functions lib$cvtf_to_internal_time because Alpha and VAX have ++ G_FLOAT but IA64 uses IEEE float otherwise Vim crashes ++ - guard agains crashes that are caused by mixed filenames ++ - [TESTDIR]make_vms.mms changed to see the output files ++ - Improve tests, update known issues ++ - minor compiler warnings fixed ++ - CTAGS 5.8 +regex included ++ + Version 7.3 + - CTAGS 5.8 included + - VMS compile warnings fixed - floating-point overflow warning corrected on VAX +*** ../vim-7.4.196/src/Make_vms.mms 2013-05-06 04:06:04.000000000 +0200 +--- src/Make_vms.mms 2014-03-12 15:55:50.196741288 +0100 +*************** +*** 2,8 **** + # Makefile for Vim on OpenVMS + # + # Maintainer: Zoltan Arpadffy <arpadffy@polarhome.com> +! # Last change: 2008 Aug 16 + # + # This has script been tested on VMS 6.2 to 8.2 on DEC Alpha, VAX and IA64 + # with MMS and MMK +--- 2,8 ---- + # Makefile for Vim on OpenVMS + # + # Maintainer: Zoltan Arpadffy <arpadffy@polarhome.com> +! # Last change: 2014 Feb 24 + # + # This has script been tested on VMS 6.2 to 8.2 on DEC Alpha, VAX and IA64 + # with MMS and MMK +*************** +*** 21,29 **** + ###################################################################### + # Configuration section. + ###################################################################### +- # VMS version +- # Uncomment if you use VMS version 6.2 or older +- # OLD_VMS = YES + + # Compiler selection. + # Comment out if you use the VAXC compiler +--- 21,26 ---- +*************** +*** 60,66 **** + + # Uncomment if want a debug version. Resulting executable is DVIM.EXE + # Development purpose only! Normally, it should not be defined. !!! +! # DEBUG = YES + + # Languages support for Perl, Python, TCL etc. + # If you don't need it really, leave them behind the comment. +--- 57,63 ---- + + # Uncomment if want a debug version. Resulting executable is DVIM.EXE + # Development purpose only! Normally, it should not be defined. !!! +! # DEBUG = YES + + # Languages support for Perl, Python, TCL etc. + # If you don't need it really, leave them behind the comment. +*************** +*** 87,92 **** +--- 84,92 ---- + # Allow FEATURE_MZSCHEME + # VIM_MZSCHEME = YES + ++ # Use ICONV ++ # VIM_ICONV = YES ++ + ###################################################################### + # Directory, library and include files configuration section. + # Normally you need not to change anything below. ! +*************** +*** 99,123 **** + + .IFDEF MMSVAX + .IFDEF DECC # VAX with DECC +! CC_DEF = cc # /decc # some system requires this switch but when it is not required /ver might fail + PREFIX = /prefix=all + .ELSE # VAX with VAXC + CC_DEF = cc + PREFIX = + CCVER = + .ENDIF +! .ELSE # AXP wixh DECC + CC_DEF = cc + PREFIX = /prefix=all + .ENDIF + + LD_DEF = link + C_INC = [.proto] + +- .IFDEF OLD_VMS +- VMS_DEF = ,"OLD_VMS" +- .ENDIF +- + .IFDEF DEBUG + DEBUG_DEF = ,"DEBUG" + TARGET = dvim.exe +--- 99,123 ---- + + .IFDEF MMSVAX + .IFDEF DECC # VAX with DECC +! CC_DEF = cc # /decc # some versions require /decc switch but when it is not required /ver might fail + PREFIX = /prefix=all ++ OPTIMIZE= /noopt # do not optimize on VAX. The compiler has hard time with crypto functions + .ELSE # VAX with VAXC + CC_DEF = cc + PREFIX = ++ OPTIMIZE= /noopt + CCVER = + .ENDIF +! .ELSE # AXP and IA64 with DECC + CC_DEF = cc + PREFIX = /prefix=all ++ OPTIMIZE= /opt + .ENDIF + ++ + LD_DEF = link + C_INC = [.proto] + + .IFDEF DEBUG + DEBUG_DEF = ,"DEBUG" + TARGET = dvim.exe +*************** +*** 125,131 **** + LDFLAGS = /debug + .ELSE + TARGET = vim.exe +! CFLAGS = /opt$(PREFIX) + LDFLAGS = + .ENDIF + +--- 125,131 ---- + LDFLAGS = /debug + .ELSE + TARGET = vim.exe +! CFLAGS = $(OPTIMIZE)$(PREFIX) + LDFLAGS = + .ENDIF + +*************** +*** 274,279 **** +--- 274,284 ---- + MZSCH_OBJ = if_mzsch.obj + .ENDIF + ++ .IFDEF VIM_ICONV ++ # ICONV related setup ++ ICONV_DEF = ,"USE_ICONV" ++ .ENDIF ++ + ###################################################################### + # End of configuration section. + # Please, do not change anything below without programming experience. +*************** +*** 287,294 **** + + .SUFFIXES : .obj .c + +! ALL_CFLAGS = /def=($(MODEL_DEF)$(DEFS)$(VMS_DEF)$(DEBUG_DEF)$(PERL_DEF)$(PYTHON_DEF) - +! $(TCL_DEF)$(SNIFF_DEF)$(RUBY_DEF)$(XIM_DEF)$(HANGULIN_DEF)$(TAG_DEF)$(MZSCH_DEF)) - + $(CFLAGS)$(GUI_FLAG) - + /include=($(C_INC)$(GUI_INC_DIR)$(GUI_INC)$(PERL_INC)$(PYTHON_INC)$(TCL_INC)) + +--- 292,299 ---- + + .SUFFIXES : .obj .c + +! ALL_CFLAGS = /def=($(MODEL_DEF)$(DEFS)$(DEBUG_DEF)$(PERL_DEF)$(PYTHON_DEF) - +! $(TCL_DEF)$(SNIFF_DEF)$(RUBY_DEF)$(XIM_DEF)$(HANGULIN_DEF)$(TAG_DEF)$(MZSCH_DEF)$(ICONV_DEF)) - + $(CFLAGS)$(GUI_FLAG) - + /include=($(C_INC)$(GUI_INC_DIR)$(GUI_INC)$(PERL_INC)$(PYTHON_INC)$(TCL_INC)) + +*************** +*** 296,303 **** + # It is specially formated for correct display of unix like includes + # as $(GUI_INC) - replaced with $(GUI_INC_VER) + # Otherwise should not be any other difference. +! ALL_CFLAGS_VER = /def=($(MODEL_DEF)$(DEFS)$(VMS_DEF)$(DEBUG_DEF)$(PERL_DEF)$(PYTHON_DEF) - +! $(TCL_DEF)$(SNIFF_DEF)$(RUBY_DEF)$(XIM_DEF)$(HANGULIN_DEF)$(TAG_DEF)$(MZSCH_DEF)) - + $(CFLAGS)$(GUI_FLAG) - + /include=($(C_INC)$(GUI_INC_DIR)$(GUI_INC_VER)$(PERL_INC)$(PYTHON_INC)$(TCL_INC)) + +--- 301,308 ---- + # It is specially formated for correct display of unix like includes + # as $(GUI_INC) - replaced with $(GUI_INC_VER) + # Otherwise should not be any other difference. +! ALL_CFLAGS_VER = /def=($(MODEL_DEF)$(DEFS)$(DEBUG_DEF)$(PERL_DEF)$(PYTHON_DEF) - +! $(TCL_DEF)$(SNIFF_DEF)$(RUBY_DEF)$(XIM_DEF)$(HANGULIN_DEF)$(TAG_DEF)$(MZSCH_DEF)$(ICONV_DEF)) - + $(CFLAGS)$(GUI_FLAG) - + /include=($(C_INC)$(GUI_INC_DIR)$(GUI_INC_VER)$(PERL_INC)$(PYTHON_INC)$(TCL_INC)) + +*** ../vim-7.4.196/src/fileio.c 2014-02-23 22:58:12.072764176 +0100 +--- src/fileio.c 2014-03-12 15:55:50.200741288 +0100 +*************** +*** 7559,7565 **** + p = (char_u *)tempnam("tmp:", (char *)itmp); + if (p != NULL) + { +! /* VMS will use '.LOG' if we don't explicitly specify an extension, + * and VIM will then be unable to find the file later */ + STRCPY(itmp, p); + STRCAT(itmp, ".txt"); +--- 7559,7565 ---- + p = (char_u *)tempnam("tmp:", (char *)itmp); + if (p != NULL) + { +! /* VMS will use '.LIS' if we don't explicitly specify an extension, + * and VIM will then be unable to find the file later */ + STRCPY(itmp, p); + STRCAT(itmp, ".txt"); +*** ../vim-7.4.196/src/os_unix.c 2013-12-11 17:12:32.000000000 +0100 +--- src/os_unix.c 2014-03-12 16:25:11.144768271 +0100 +*************** +*** 2965,2971 **** +--- 2965,2990 ---- + + if (stat((char *)name, &st)) + return 0; ++ #ifdef VMS ++ /* Like on Unix system file can have executable rights but not necessarily ++ * be an executable, but on Unix is not a default for an ordianry file to ++ * have an executable flag - on VMS it is in most cases. ++ * Therefore, this check does not have any sense - let keep us to the ++ * conventions instead: ++ * *.COM and *.EXE files are the executables - the rest are not. This is ++ * not ideal but better then it was. ++ */ ++ int vms_executable = 0; ++ if (S_ISREG(st.st_mode) && mch_access((char *)name, X_OK) == 0) ++ { ++ if (strstr(vms_tolower((char*)name),".exe") != NULL ++ || strstr(vms_tolower((char*)name),".com")!= NULL) ++ vms_executable = 1; ++ } ++ return vms_executable; ++ #else + return S_ISREG(st.st_mode) && mch_access((char *)name, X_OK) == 0; ++ #endif + } + + /* +*************** +*** 2983,2989 **** +--- 3002,3010 ---- + /* If it's an absolute or relative path don't need to use $PATH. */ + if (mch_isFullName(name) || (name[0] == '.' && (name[1] == '/' + || (name[1] == '.' && name[2] == '/')))) ++ { + return executable_file(name); ++ } + + p = (char_u *)getenv("PATH"); + if (p == NULL || *p == NUL) +*** ../vim-7.4.196/src/os_unix.h 2013-12-11 17:12:32.000000000 +0100 +--- src/os_unix.h 2014-03-12 15:55:50.204741288 +0100 +*************** +*** 302,308 **** + # define USR_VIMRC_FILE2 "$HOME/vimfiles/vimrc" + # else + # ifdef VMS +! # define USR_VIMRC_FILE2 "sys$login:vimfiles:vimrc" + # else + # define USR_VIMRC_FILE2 "~/.vim/vimrc" + # endif +--- 302,308 ---- + # define USR_VIMRC_FILE2 "$HOME/vimfiles/vimrc" + # else + # ifdef VMS +! # define USR_VIMRC_FILE2 "sys$login:vimfiles/vimrc" + # else + # define USR_VIMRC_FILE2 "~/.vim/vimrc" + # endif +*************** +*** 329,335 **** + # define USR_GVIMRC_FILE2 "$HOME/vimfiles/gvimrc" + # else + # ifdef VMS +! # define USR_GVIMRC_FILE2 "sys$login:vimfiles:gvimrc" + # else + # define USR_GVIMRC_FILE2 "~/.vim/gvimrc" + # endif +--- 329,335 ---- + # define USR_GVIMRC_FILE2 "$HOME/vimfiles/gvimrc" + # else + # ifdef VMS +! # define USR_GVIMRC_FILE2 "sys$login:vimfiles/gvimrc" + # else + # define USR_GVIMRC_FILE2 "~/.vim/gvimrc" + # endif +*** ../vim-7.4.196/src/os_vms.c 2013-12-11 17:12:32.000000000 +0100 +--- src/os_vms.c 2014-03-12 16:26:17.544769288 +0100 +*************** +*** 296,301 **** +--- 296,313 ---- + } + + /* ++ * Convert string to lowercase - most often filename ++ */ ++ char * ++ vms_tolower( char *name ) ++ { ++ int i,nlen = strlen(name); ++ for (i = 0; i < nlen; i++) ++ name[i] = TOLOWER_ASC(name[i]); ++ return name; ++ } ++ ++ /* + * Convert VMS system() or lib$spawn() return code to Unix-like exit value. + */ + int +*************** +*** 361,373 **** + vms_wproc(char *name, int val) + { + int i; +- int nlen; + static int vms_match_alloced = 0; + +! if (val != DECC$K_FILE) /* Directories and foreign non VMS files are not +! counting */ + return 1; + + if (vms_match_num == 0) { + /* first time through, setup some things */ + if (NULL == vms_fmatch) { +--- 373,384 ---- + vms_wproc(char *name, int val) + { + int i; + static int vms_match_alloced = 0; + +! if (val == DECC$K_FOREIGN ) /* foreign non VMS files are not counting */ + return 1; + ++ /* accept all DECC$K_FILE and DECC$K_DIRECTORY */ + if (vms_match_num == 0) { + /* first time through, setup some things */ + if (NULL == vms_fmatch) { +*************** +*** 383,394 **** + } + } + + vms_remove_version(name); +! +! /* convert filename to lowercase */ +! nlen = strlen(name); +! for (i = 0; i < nlen; i++) +! name[i] = TOLOWER_ASC(name[i]); + + /* if name already exists, don't add it */ + for (i = 0; i<vms_match_num; i++) { +--- 394,402 ---- + } + } + ++ /* make matches look uniform */ + vms_remove_version(name); +! name=vms_tolower(name); + + /* if name already exists, don't add it */ + for (i = 0; i<vms_match_num; i++) { +*************** +*** 428,433 **** +--- 436,442 ---- + { + int i, cnt = 0; + char_u buf[MAXPATHL]; ++ char *result; + int dir; + int files_alloced, files_free; + +*************** +*** 449,456 **** + STRCPY(buf,pat[i]); + + vms_match_num = 0; /* reset collection counter */ +! cnt = decc$to_vms(decc$translate_vms(vms_fixfilename(buf)), vms_wproc, 1, 0); +! /* allow wild, no dir */ + if (cnt > 0) + cnt = vms_match_num; + +--- 458,470 ---- + STRCPY(buf,pat[i]); + + vms_match_num = 0; /* reset collection counter */ +! result = decc$translate_vms(vms_fixfilename(buf)); +! if ( (int) result == 0 || (int) result == -1 ) { +! cnt = 0; +! } +! else { +! cnt = decc$to_vms(result, vms_wproc, 1 /*allow wild*/ , (flags & EW_DIR ? 0:1 ) /*allow directory*/) ; +! } + if (cnt > 0) + cnt = vms_match_num; + +*************** +*** 497,506 **** + mch_expandpath(garray_T *gap, char_u *path, int flags) + { + int i,cnt = 0; +! vms_match_num = 0; + +! cnt = decc$to_vms(decc$translate_vms(vms_fixfilename(path)), vms_wproc, 1, 0); +! /* allow wild, no dir */ + if (cnt > 0) + cnt = vms_match_num; + for (i = 0; i < cnt; i++) +--- 511,528 ---- + mch_expandpath(garray_T *gap, char_u *path, int flags) + { + int i,cnt = 0; +! char *result; + +! vms_match_num = 0; +! /* the result from the decc$translate_vms needs to be handled */ +! /* otherwise it might create ACCVIO error in decc$to_vms */ +! result = decc$translate_vms(vms_fixfilename(path)); +! if ( (int) result == 0 || (int) result == -1 ) { +! cnt = 0; +! } +! else { +! cnt = decc$to_vms(result, vms_wproc, 1 /*allow_wild*/, (flags & EW_DIR ? 0:1 ) /*allow directory*/); +! } + if (cnt > 0) + cnt = vms_match_num; + for (i = 0; i < cnt; i++) +*************** +*** 521,526 **** +--- 543,549 ---- + char *end_of_dir; + char ch; + int len; ++ char *out_str=out; + + /* copy vms filename portion up to last colon + * (node and/or disk) +*************** +*** 602,608 **** + *end_of_dir = ']'; + } + +- + /* + * for decc$to_vms in vms_fixfilename + */ +--- 625,630 ---- +*************** +*** 710,735 **** + struct _generic_64 time_diff; + struct _generic_64 time_out; + unsigned int convert_operation = LIB$K_DELTA_SECONDS_F; +! float sec = (float) msec / 1000; + + /* make sure the iochan is set */ + if (!iochan) + get_tty(); + +! if (msec > 0) { + /* time-out specified; convert it to absolute time */ + + /* get current time (number of 100ns ticks since the VMS Epoch) */ + status = sys$gettim(&time_curr); + if (status != SS$_NORMAL) + return 0; /* error */ +- + /* construct the delta time */ +! status = lib$cvtf_to_internal_time( + &convert_operation, &sec, &time_diff); + if (status != LIB$_NORMAL) + return 0; /* error */ +- + /* add them up */ + status = lib$add_times( + &time_curr, +--- 732,764 ---- + struct _generic_64 time_diff; + struct _generic_64 time_out; + unsigned int convert_operation = LIB$K_DELTA_SECONDS_F; +! float sec =(float) msec/1000; + + /* make sure the iochan is set */ + if (!iochan) + get_tty(); + +! if (sec > 0) { + /* time-out specified; convert it to absolute time */ ++ /* sec>0 requirement of lib$cvtf_to_internal_time()*/ + + /* get current time (number of 100ns ticks since the VMS Epoch) */ + status = sys$gettim(&time_curr); + if (status != SS$_NORMAL) + return 0; /* error */ + /* construct the delta time */ +! #if __G_FLOAT==0 +! # ifndef VAX +! /* IEEE is default on IA64, but can be used on Alpha too - but not on VAX */ +! status = lib$cvts_to_internal_time( + &convert_operation, &sec, &time_diff); ++ # endif ++ #else /* default on Alpha and VAX */ ++ status = lib$cvtf_to_internal_time( ++ &convert_operation, &sec, &time_diff); ++ #endif + if (status != LIB$_NORMAL) + return 0; /* error */ + /* add them up */ + status = lib$add_times( + &time_curr, +*** ../vim-7.4.196/src/os_vms_conf.h 2014-02-23 22:52:33.372764715 +0100 +--- src/os_vms_conf.h 2014-03-12 15:55:50.204741288 +0100 +*************** +*** 166,173 **** + #undef HAVE_SYS_TIME_H + #undef HAVE_LOCALE_H + #define BROKEN_LOCALE +- #undef HAVE_ICONV_H +- #undef HAVE_ICONV + #undef DYNAMIC_ICONV + #undef HAVE_STRFTIME + #else +--- 166,171 ---- +*************** +*** 177,188 **** + #define HAVE_SYS_TIME_H + #define HAVE_LOCALE_H + #define BROKEN_LOCALE +- #undef HAVE_ICONV_H +- #undef HAVE_ICONV + #undef DYNAMIC_ICONV + #define HAVE_STRFTIME + #endif + + /* GUI support defines */ + #if defined(FEAT_GUI_MOTIF) || defined(FEAT_GUI_GTK) + #define HAVE_X11 +--- 175,192 ---- + #define HAVE_SYS_TIME_H + #define HAVE_LOCALE_H + #define BROKEN_LOCALE + #undef DYNAMIC_ICONV + #define HAVE_STRFTIME + #endif + ++ #if defined(USE_ICONV) ++ #define HAVE_ICONV_H ++ #define HAVE_ICONV ++ #else ++ #undef HAVE_ICONV_H ++ #undef HAVE_ICONV ++ #endif ++ + /* GUI support defines */ + #if defined(FEAT_GUI_MOTIF) || defined(FEAT_GUI_GTK) + #define HAVE_X11 +*** ../vim-7.4.196/src/proto/os_vms.pro 2013-08-10 13:37:40.000000000 +0200 +--- src/proto/os_vms.pro 2014-03-12 15:55:50.204741288 +0100 +*************** +*** 7,12 **** +--- 7,13 ---- + int vms_sys __ARGS((char *cmd, char *out, char *inp)); + int vms_sys_status __ARGS((int status)); + int vms_read __ARGS((char *inbuf, size_t nbytes)); ++ char *vms_tolower __ARGS((char *name)); + int mch_expand_wildcards __ARGS((int num_pat, char_u **pat, int *num_file, char_u ***file, int flags)); + int mch_expandpath __ARGS((garray_T *gap, char_u *path, int flags)); + void *vms_fixfilename __ARGS((void *instring)); +*** ../vim-7.4.196/src/testdir/Make_vms.mms 2014-02-23 23:38:58.812760280 +0100 +--- src/testdir/Make_vms.mms 2014-03-12 16:06:22.888750982 +0100 +*************** +*** 4,10 **** + # Authors: Zoltan Arpadffy, <arpadffy@polarhome.com> + # Sandor Kopanyi, <sandor.kopanyi@mailbox.hu> + # +! # Last change: 2014 Feb 23 + # + # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64. + # Edit the lines in the Configuration section below to select. +--- 4,10 ---- + # Authors: Zoltan Arpadffy, <arpadffy@polarhome.com> + # Sandor Kopanyi, <sandor.kopanyi@mailbox.hu> + # +! # Last change: 2014 Mar 12 + # + # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64. + # Edit the lines in the Configuration section below to select. +*************** +*** 41,56 **** + # They fail because VMS does not support file names. + # WANT_SPELL = YES + +! # Comment out if you want to run mzschema tests. + # It fails because VMS does not support this feature yet. + # WANT_MZSCH = YES + + # Comment out if you have gzip on your system + # HAVE_GZIP = YES + + # Comment out if you have GNU compatible diff on your system + # HAVE_GDIFF = YES + + ####################################################################### + # End of configuration section. + # +--- 41,71 ---- + # They fail because VMS does not support file names. + # WANT_SPELL = YES + +! # Comment out if you want to run mzschema tests. + # It fails because VMS does not support this feature yet. + # WANT_MZSCH = YES + ++ # Comment out if you have ODS-5 file system ++ # HAVE_ODS5 = YES ++ + # Comment out if you have gzip on your system + # HAVE_GZIP = YES + + # Comment out if you have GNU compatible diff on your system + # HAVE_GDIFF = YES + ++ # Comment out if you have GNU compatible cksum on your system ++ # HAVE_CKSUM = YES ++ ++ # Comment out if you have ICONV support ++ # HAVE_ICONV = YES ++ ++ # Comment out if you have LUA support ++ # HAVE_LUA = YES ++ ++ # Comment out if you have PYTHON support ++ # HAVE_PYTHON = YES ++ + ####################################################################### + # End of configuration section. + # +*************** +*** 63,99 **** + + SCRIPT = test1.out test2.out test3.out test4.out test5.out \ + test6.out test7.out test8.out test9.out test10a.out\ +! test13.out test14.out test15.out test17.out \ + test18.out test19.out test20.out test21.out test22.out \ + test23.out test24.out test26.out \ + test28.out test29.out test30.out test31.out test32.out \ + test33.out test34.out test35.out test36.out test37.out \ + test38.out test39.out test40.out test41.out test42.out \ + test43.out test44.out test45.out test46.out \ +! test48.out test51.out test53.out test54.out test55.out \ +! test56.out test57.out test60.out \ + test61.out test62.out test63.out test64.out test65.out \ + test66.out test67.out test68.out test69.out \ + test71.out test72.out test74.out test75.out test76.out \ +! test77.out test78.out test79.out test80.out test81.out \ +! test82.out test83.out test84.out test88.out test89.out \ + test90.out test91.out test92.out test93.out test94.out \ +! test95.out test96.out test97.out test98.out test99.out \ +! test100.out test101.out test102.out test103.out test104.out \ + test105.out + + # Known problems: +! # Test 30: a problem around mac format - unknown reason + # +! # Test 32: VMS is not case sensitive and all filenames are lowercase within Vim + # (this should be changed in order to preserve the original filename) - should + # be fixed. VMS allows just one dot in the filename + # +! # Test 58 and 59: Failed/Hangs - VMS does not support spell files (file names + # with too many dots). + # +! # Test 72: unknown reason +! # Test 85: no Lua interface + + .IFDEF WANT_GUI + SCRIPT_GUI = test16.out +--- 78,121 ---- + + SCRIPT = test1.out test2.out test3.out test4.out test5.out \ + test6.out test7.out test8.out test9.out test10a.out\ +! test13.out test14.out test15.out \ + test18.out test19.out test20.out test21.out test22.out \ + test23.out test24.out test26.out \ + test28.out test29.out test30.out test31.out test32.out \ + test33.out test34.out test35.out test36.out test37.out \ + test38.out test39.out test40.out test41.out test42.out \ + test43.out test44.out test45.out test46.out \ +! test48.out test49.out test51.out test53.out test54.out \ +! test55.out test56.out test57.out test60.out \ + test61.out test62.out test63.out test64.out test65.out \ + test66.out test67.out test68.out test69.out \ + test71.out test72.out test74.out test75.out test76.out \ +! test77a.out test78.out test79.out test80.out test81.out \ +! test82.out test84.out test88.out test89.out \ + test90.out test91.out test92.out test93.out test94.out \ +! test95.out test96.out test98.out test99.out \ +! test100.out test101.out test103.out test104.out \ + test105.out + + # Known problems: +! # test17: ? +! # +! # test30: bug, most probably - a problem around mac format + # +! # test32: VMS is not case sensitive and all filenames are lowercase within Vim + # (this should be changed in order to preserve the original filename) - should + # be fixed. VMS allows just one dot in the filename + # +! # test58, test59: Failed/Hangs - VMS does not support spell files (file names + # with too many dots). + # +! # test72: bug - Vim hangs at :rename (while rename works well otherwise) +! # test78: bug - Vim dies at :recover Xtest +! # test83: ? +! # test85: no Lua interface +! # test89: bug - findfile() does not work on VMS (just in the current directory) +! # test97, test102: Just ODS-5 supports space and special chars in the filename. +! # On ODS-2 tests fail. + + .IFDEF WANT_GUI + SCRIPT_GUI = test16.out +*************** +*** 101,107 **** + .ENDIF + + .IFDEF WANT_UNIX +! SCRIPT_UNIX = test10.out test12.out test25.out test27.out test49.out test73.out + .ENDIF + + .IFDEF WANT_WIN +--- 123,129 ---- + .ENDIF + + .IFDEF WANT_UNIX +! SCRIPT_UNIX = test10.out test12.out test17.out test25.out test27.out test49.out test73.out + .ENDIF + + .IFDEF WANT_WIN +*************** +*** 116,121 **** +--- 138,147 ---- + SCRIPT_MZSCH = test70.out + .ENDIF + ++ .IFDEF HAVE_ODS5 ++ SCRIPT_ODS5 = test97.out test102.out ++ .ENDIF ++ + .IFDEF HAVE_GZIP + SCRIPT_GZIP = test11.out + .ENDIF +*************** +*** 124,133 **** +--- 150,177 ---- + SCRIPT_GDIFF = test47.out + .ENDIF + ++ .IFDEF HAVE_CKSUM ++ SCRIPT_CKSUM = test77.out ++ .ENDIF ++ ++ .IFDEF HAVE_ICONV ++ SCRIPT_ICONV = test83.out ++ .ENDIF ++ ++ .IFDEF HAVE_LUA ++ SCRIPT_LUA = test85.out ++ .ENDIF ++ ++ .IFDEF HAVE_PYTHON ++ SCRIPT_PYTHON = test86.out test87.out ++ .ENDIF ++ + .in.out : + -@ !clean up before doing the test + -@ if "''F$SEARCH("test.out.*")'" .NES. "" then delete/noconfirm/nolog test.out.* + -@ if "''F$SEARCH("$*.out.*")'" .NES. "" then delete/noconfirm/nolog $*.out.* ++ -@ ! define TMP if not set - some tests use it ++ -@ if "''F$TRNLNM("TMP")'" .EQS. "" then define/nolog TMP [] + -@ write sys$output " " + -@ write sys$output "-----------------------------------------------" + -@ write sys$output " "$*" " +*************** +*** 140,148 **** + -@ if "''F$SEARCH("$*.out.*")'" .NES. "" then differences /par $*.out $*.ok; + -@ !clean up after the test + -@ if "''F$SEARCH("Xdotest.*")'" .NES. "" then delete/noconfirm/nolog Xdotest.*.* + +! all : clean nolog $(START_WITH) $(SCRIPT) $(SCRIPT_GUI) $(SCRIPT_UNIX) $(SCRIPT_WIN) $(SCRIPT_SPELL) $(SCRIPT_GZIP) \ +! $(SCRIPT_GDIFF) $(SCRIPT_MZSCH) nolog + -@ write sys$output " " + -@ write sys$output "-----------------------------------------------" + -@ write sys$output " All done" +--- 184,193 ---- + -@ if "''F$SEARCH("$*.out.*")'" .NES. "" then differences /par $*.out $*.ok; + -@ !clean up after the test + -@ if "''F$SEARCH("Xdotest.*")'" .NES. "" then delete/noconfirm/nolog Xdotest.*.* ++ -@ if "''F$SEARCH("Xtest.*")'" .NES. "" then delete/noconfirm/nolog Xtest.*.* + +! all : clean nolog $(START_WITH) $(SCRIPT) $(SCRIPT_GUI) $(SCRIPT_UNIX) $(SCRIPT_WIN) $(SCRIPT_SPELL) $(SCRIPT_ODS5) $(SCRIPT_GZIP) \ +! $(SCRIPT_GDIFF) $(SCRIPT_MZSCH) $(SCRIPT_CKSUM) $(SCRIPT_ICONV) $(SCRIPT_LUA) $(SCRIPT_PYTHON) nolog + -@ write sys$output " " + -@ write sys$output "-----------------------------------------------" + -@ write sys$output " All done" +*************** +*** 165,177 **** + -@ write sys$output " Test results:" + -@ write sys$output "-----------------------------------------------" + -@ write sys$output "MAKE_VMS.MMS options:" +! -@ write sys$output " WANT_GUI = ""$(WANT_GUI)"" " +! -@ write sys$output " WANT_UNIX = ""$(WANT_UNIX)"" " +! -@ write sys$output " WANT_WIN = ""$(WANT_WIN)"" " +! -@ write sys$output " WANT_SPELL= ""$(WANT_SPELL)"" " +! -@ write sys$output " WANT_MZSCH= ""$(WANT_MZSCH)"" " +! -@ write sys$output " HAVE_GZIP = ""$(HAVE_GZIP)"" " +! -@ write sys$output " HAVE_GDIFF= ""$(HAVE_GDIFF)"" " + -@ write sys$output "Default vimrc file is VMS.VIM:" + -@ write sys$output "-----------------------------------------------" + -@ type VMS.VIM +--- 210,227 ---- + -@ write sys$output " Test results:" + -@ write sys$output "-----------------------------------------------" + -@ write sys$output "MAKE_VMS.MMS options:" +! -@ write sys$output " WANT_GUI = ""$(WANT_GUI)"" " +! -@ write sys$output " WANT_UNIX = ""$(WANT_UNIX)"" " +! -@ write sys$output " WANT_WIN = ""$(WANT_WIN)"" " +! -@ write sys$output " WANT_SPELL = ""$(WANT_SPELL)"" " +! -@ write sys$output " WANT_MZSCH = ""$(WANT_MZSCH)"" " +! -@ write sys$output " HAVE_ODS5 = ""$(HAVE_ODS5)"" " +! -@ write sys$output " HAVE_GZIP = ""$(HAVE_GZIP)"" " +! -@ write sys$output " HAVE_GDIFF = ""$(HAVE_GDIFF)"" " +! -@ write sys$output " HAVE_CKSUM = ""$(HAVE_CKSUM)"" " +! -@ write sys$output " HAVE_ICONV = ""$(HAVE_ICONV)"" " +! -@ write sys$output " HAVE_LUA = ""$(HAVE_LUA)"" " +! -@ write sys$output " HAVE_PYTHON= ""$(HAVE_PYTHON)"" " + -@ write sys$output "Default vimrc file is VMS.VIM:" + -@ write sys$output "-----------------------------------------------" + -@ type VMS.VIM +*************** +*** 181,186 **** +--- 231,239 ---- + -@ if "''F$SEARCH("test.log")'" .NES. "" then delete/noconfirm/nolog test.log.* + -@ if "''F$SEARCH("test.ok")'" .NES. "" then delete/noconfirm/nolog test.ok.* + -@ if "''F$SEARCH("Xdotest.*")'" .NES. "" then delete/noconfirm/nolog Xdotest.*.* ++ -@ if "''F$SEARCH("Xtest*.*")'" .NES. "" then delete/noconfirm/nolog Xtest*.*.* ++ -@ if "''F$SEARCH("XX*.*")'" .NES. "" then delete/noconfirm/nolog XX*.*.* ++ -@ if "''F$SEARCH("_un_*.*")'" .NES. "" then delete/noconfirm/nolog _un_*.*.* + -@ if "''F$SEARCH("*.*_sw*")'" .NES. "" then delete/noconfirm/nolog *.*_sw*.* + -@ if "''F$SEARCH("*.failed")'" .NES. "" then delete/noconfirm/nolog *.failed.* + -@ if "''F$SEARCH("*.rej")'" .NES. "" then delete/noconfirm/nolog *.rej.* +*************** +*** 188,193 **** + -@ if "''F$SEARCH("small.vim")'" .NES. "" then delete/noconfirm/nolog small.vim.* + -@ if "''F$SEARCH("mbyte.vim")'" .NES. "" then delete/noconfirm/nolog mbyte.vim.* + -@ if "''F$SEARCH("mzscheme.vim")'" .NES. "" then delete/noconfirm/nolog mzscheme.vim.* +! -@ if "''F$SEARCH("lua.vim")'" .NES. "" then delete/noconfirm/nolog lua.vim.* + -@ if "''F$SEARCH("viminfo.*")'" .NES. "" then delete/noconfirm/nolog viminfo.*.* + +--- 241,246 ---- + -@ if "''F$SEARCH("small.vim")'" .NES. "" then delete/noconfirm/nolog small.vim.* + -@ if "''F$SEARCH("mbyte.vim")'" .NES. "" then delete/noconfirm/nolog mbyte.vim.* + -@ if "''F$SEARCH("mzscheme.vim")'" .NES. "" then delete/noconfirm/nolog mzscheme.vim.* +! -@ if "''F$SEARCH("lua.vim")'" .NES. "" then delete/noconfirm/nolog lua.vim.* + -@ if "''F$SEARCH("viminfo.*")'" .NES. "" then delete/noconfirm/nolog viminfo.*.* + +*** ../vim-7.4.196/src/testdir/test72.in 2012-01-04 19:04:17.000000000 +0100 +--- src/testdir/test72.in 2014-03-12 15:55:50.204741288 +0100 +*************** +*** 105,111 **** + u:.w >>test.out + :" + :" Rename the undo file so that it gets cleaned up. +! :call rename(".Xtestfile.un~", "Xtestundo") + :qa! + ENDTEST + +--- 105,115 ---- + u:.w >>test.out + :" + :" Rename the undo file so that it gets cleaned up. +! :if has("vms") +! : call rename("_un_Xtestfile", "Xtestundo") +! :else +! : call rename(".Xtestfile.un~", "Xtestundo") +! :endif + :qa! + ENDTEST + +*** ../vim-7.4.196/src/testdir/test77a.com 2014-03-12 16:49:10.740790329 +0100 +--- src/testdir/test77a.com 2014-03-12 16:40:04.316781957 +0100 +*************** +*** 0 **** +--- 1,8 ---- ++ $! test77a - help file creating checksum on VMS ++ $! Created by Zoltan Arpadffy ++ $ ++ $ IF P1 .NES. "" ++ $ THEN ++ $ checksum 'P1' ++ $ show symb CHECKSUM$CHECKSUM ++ $ ENDIF +*** ../vim-7.4.196/src/testdir/test77a.in 2014-03-12 16:49:10.748790329 +0100 +--- src/testdir/test77a.in 2014-03-12 15:55:50.204741288 +0100 +*************** +*** 0 **** +--- 1,31 ---- ++ Inserts 2 million lines with consecutive integers starting from 1 ++ (essentially, the output of GNU's seq 1 2000000), writes them to Xtest ++ and writes its cksum to test.out. ++ ++ We need 2 million lines to trigger a call to mf_hash_grow(). If it would mess ++ up the lines the checksum would differ. ++ ++ cksum is part of POSIX and so should be available on most Unixes. ++ If it isn't available then the test will be skipped. ++ ++ VMS does not have CKSUM but has a built in CHECKSUM - it should be used ++ STARTTEST ++ :so small.vim ++ :if !has("vms") ++ : e! test.ok ++ : w! test.out ++ : qa! ++ :endif ++ :set fileformat=unix undolevels=-1 ++ ggdG ++ :let i = 1 ++ :while i <= 2000000 | call append(i, range(i, i + 99)) | let i += 100 | endwhile ++ ggdd ++ :w! Xtest. ++ :r !@test77a.com Xtest. ++ :s/\s/ /g ++ :set fileformat& ++ :.w! test.out ++ :qa! ++ ENDTEST ++ +*** ../vim-7.4.196/src/testdir/test77a.ok 2014-03-12 16:49:10.756790330 +0100 +--- src/testdir/test77a.ok 2014-03-12 15:55:50.204741288 +0100 +*************** +*** 0 **** +--- 1 ---- ++ CHECKSUM$CHECKSUM = "844110470" +*** ../vim-7.4.196/src/undo.c 2014-01-23 18:12:44.695676751 +0100 +--- src/undo.c 2014-03-12 16:31:52.432774419 +0100 +*************** +*** 790,798 **** +--- 790,809 ---- + if (undo_file_name == NULL) + break; + p = gettail(undo_file_name); ++ #ifdef VMS ++ /* VMS can not handle more than one dot in the filenames ++ * use "dir/name" -> "dir/_un_name" - add _un_ ++ * at the beginning to keep the extension */ ++ mch_memmove(p + 4, p, STRLEN(p) + 1); ++ mch_memmove(p, "_un_", 4); ++ ++ #else ++ /* Use same directory as the ffname, ++ * "dir/name" -> "dir/.name.un~" */ + mch_memmove(p + 1, p, STRLEN(p) + 1); + *p = '.'; + STRCAT(p, ".un~"); ++ #endif + } + else + { +*** ../vim-7.4.196/src/version.c 2014-03-12 15:50:18.472736205 +0100 +--- src/version.c 2014-03-12 15:54:26.712740008 +0100 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 197, + /**/ + +-- +Violators can be fined, arrested or jailed for making ugly faces at a dog. + [real standing law in Oklahoma, United States of America] + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.198 b/SOURCES/7.4.198 new file mode 100644 index 0000000..f204c2e --- /dev/null +++ b/SOURCES/7.4.198 @@ -0,0 +1,103 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.198 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.198 +Problem: Can't build Vim with Perl when -Dusethreads is not specified for + building Perl, and building Vim with --enable-perlinterp=dynamic. +Solution: Adjust #ifdefs. (Yasuhiro Matsumoto) +Files: src/if_perl.xs + + +*** ../vim-7.4.197/src/if_perl.xs 2013-12-14 11:50:28.000000000 +0100 +--- src/if_perl.xs 2014-03-12 17:05:07.832804995 +0100 +*************** +*** 138,143 **** +--- 138,145 ---- + #endif + typedef int XSINIT_t; + typedef int XSUBADDR_t; ++ #endif ++ #ifndef USE_ITHREADS + typedef int perl_key; + #endif + +*************** +*** 264,270 **** + # define Perl_Iscopestack_ix_ptr dll_Perl_Iscopestack_ix_ptr + # define Perl_Iunitcheckav_ptr dll_Perl_Iunitcheckav_ptr + # if (PERL_REVISION == 5) && (PERL_VERSION >= 14) +! # define PL_thr_key *dll_PL_thr_key + # endif + + /* +--- 266,274 ---- + # define Perl_Iscopestack_ix_ptr dll_Perl_Iscopestack_ix_ptr + # define Perl_Iunitcheckav_ptr dll_Perl_Iunitcheckav_ptr + # if (PERL_REVISION == 5) && (PERL_VERSION >= 14) +! # ifdef USE_ITHREADS +! # define PL_thr_key *dll_PL_thr_key +! # endif + # endif + + /* +*************** +*** 386,392 **** +--- 390,398 ---- + #endif + + #if (PERL_REVISION == 5) && (PERL_VERSION >= 14) ++ # ifdef USE_ITHREADS + static perl_key* dll_PL_thr_key; ++ # endif + #else + static GV** (*Perl_Idefgv_ptr)(register PerlInterpreter*); + static GV** (*Perl_Ierrgv_ptr)(register PerlInterpreter*); +*************** +*** 413,419 **** +--- 419,427 ---- + #ifdef PERL5101_OR_LATER + {"Perl_croak_xs_usage", (PERL_PROC*)&Perl_croak_xs_usage}, + #endif ++ #ifdef PERL_IMPLICIT_CONTEXT + {"Perl_croak_nocontext", (PERL_PROC*)&Perl_croak_nocontext}, ++ #endif + {"Perl_dowantarray", (PERL_PROC*)&Perl_dowantarray}, + {"Perl_free_tmps", (PERL_PROC*)&Perl_free_tmps}, + {"Perl_gv_stashpv", (PERL_PROC*)&Perl_gv_stashpv}, +*************** +*** 505,511 **** +--- 513,521 ---- + # endif + #endif + #if (PERL_REVISION == 5) && (PERL_VERSION >= 14) ++ # ifdef USE_ITHREADS + {"PL_thr_key", (PERL_PROC*)&dll_PL_thr_key}, ++ # endif + #else + {"Perl_Idefgv_ptr", (PERL_PROC*)&Perl_Idefgv_ptr}, + {"Perl_Ierrgv_ptr", (PERL_PROC*)&Perl_Ierrgv_ptr}, +*** ../vim-7.4.197/src/version.c 2014-03-12 16:51:35.060792541 +0100 +--- src/version.c 2014-03-12 17:06:27.660806218 +0100 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 198, + /**/ + +-- +Dogs must have a permit signed by the mayor in order to congregate in groups +of three or more on private property. + [real standing law in Oklahoma, United States of America] + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.199 b/SOURCES/7.4.199 new file mode 100644 index 0000000..d421df0 --- /dev/null +++ b/SOURCES/7.4.199 @@ -0,0 +1,106 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.199 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.199 +Problem: (issue 197) ]P doesn't paste over Visual selection. +Solution: Handle Visual mode specifically. (Christian Brabandt) +Files: src/normal.c + + +*** ../vim-7.4.198/src/normal.c 2014-02-23 23:38:58.824760280 +0100 +--- src/normal.c 2014-03-12 17:33:28.184831049 +0100 +*************** +*** 6751,6760 **** + { + if (!checkclearop(cap->oap)) + { + prep_redo_cmd(cap); +! do_put(cap->oap->regname, +! (cap->cmdchar == ']' && cap->nchar == 'p') ? FORWARD : BACKWARD, +! cap->count1, PUT_FIXINDENT); + } + } + +--- 6751,6808 ---- + { + if (!checkclearop(cap->oap)) + { ++ int dir = (cap->cmdchar == ']' && cap->nchar == 'p') ++ ? FORWARD : BACKWARD; ++ int regname = cap->oap->regname; ++ #ifdef FEAT_VISUAL ++ int was_visual = VIsual_active; ++ int line_count = curbuf->b_ml.ml_line_count; ++ pos_T start, end; ++ ++ if (VIsual_active) ++ { ++ start = ltoreq(VIsual, curwin->w_cursor) ++ ? VIsual : curwin->w_cursor; ++ end = equalpos(start,VIsual) ? curwin->w_cursor : VIsual; ++ curwin->w_cursor = (dir == BACKWARD ? start : end); ++ } ++ #endif ++ # ifdef FEAT_CLIPBOARD ++ adjust_clip_reg(®name); ++ # endif + prep_redo_cmd(cap); +! +! do_put(regname, dir, cap->count1, PUT_FIXINDENT); +! #ifdef FEAT_VISUAL +! if (was_visual) +! { +! VIsual = start; +! curwin->w_cursor = end; +! if (dir == BACKWARD) +! { +! /* adjust lines */ +! VIsual.lnum += curbuf->b_ml.ml_line_count - line_count; +! curwin->w_cursor.lnum += +! curbuf->b_ml.ml_line_count - line_count; +! } +! +! VIsual_active = TRUE; +! if (VIsual_mode == 'V') +! { +! /* delete visually selected lines */ +! cap->cmdchar = 'd'; +! cap->nchar = NUL; +! cap->oap->regname = regname; +! nv_operator(cap); +! do_pending_operator(cap, 0, FALSE); +! } +! if (VIsual_active) +! { +! end_visual_mode(); +! redraw_later(SOME_VALID); +! } +! } +! #endif + } + } + +*** ../vim-7.4.198/src/version.c 2014-03-12 17:08:01.508807656 +0100 +--- src/version.c 2014-03-12 17:30:36.908828425 +0100 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 199, + /**/ + +-- +No man may purchase alcohol without written consent from his wife. + [real standing law in Pennsylvania, United States of America] + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.200 b/SOURCES/7.4.200 new file mode 100644 index 0000000..be3dfb3 --- /dev/null +++ b/SOURCES/7.4.200 @@ -0,0 +1,68 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.200 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.200 +Problem: Too many #ifdefs in the code. +Solution: Enable FEAT_VISUAL always, await any complaints +Files: src/feature.h + + +*** ../vim-7.4.199/src/feature.h 2014-02-23 22:52:33.372764715 +0100 +--- src/feature.h 2014-03-12 17:48:24.396844782 +0100 +*************** +*** 211,228 **** + #endif + + /* +! * +visual Visual mode. + * +visualextra Extra features for Visual mode (mostly block operators). + */ +! #ifdef FEAT_SMALL +! # define FEAT_VISUAL +! # ifdef FEAT_NORMAL +! # define FEAT_VISUALEXTRA +! # endif +! #else +! # ifdef FEAT_CLIPBOARD +! # undef FEAT_CLIPBOARD /* can't use clipboard without Visual mode */ +! # endif + #endif + + /* +--- 211,222 ---- + #endif + + /* +! * +visual Visual mode - now always included. + * +visualextra Extra features for Visual mode (mostly block operators). + */ +! #define FEAT_VISUAL +! #ifdef FEAT_NORMAL +! # define FEAT_VISUALEXTRA + #endif + + /* +*** ../vim-7.4.199/src/version.c 2014-03-12 17:41:59.128838878 +0100 +--- src/version.c 2014-03-12 17:52:28.080848516 +0100 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 200, + /**/ + +-- +It is illegal to take more than three sips of beer at a time while standing. + [real standing law in Texas, United States of America] + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.201 b/SOURCES/7.4.201 new file mode 100644 index 0000000..9bed2b5 --- /dev/null +++ b/SOURCES/7.4.201 @@ -0,0 +1,273 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.201 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.201 +Problem: 'lispwords' is a global option. +Solution: Make 'lispwords' global-local. (Sung Pae) +Files: runtime/doc/options.txt, runtime/optwin.vim, src/buffer.c, + src/misc1.c, src/option.c, src/option.h, src/structs.h, + src/testdir/test100.in, src/testdir/test100.ok + + +*** ../vim-7.4.200/runtime/doc/options.txt 2014-02-23 23:38:58.820760280 +0100 +--- runtime/doc/options.txt 2014-03-12 18:20:30.748874299 +0100 +*************** +*** 4629,4635 **** + + *'lispwords'* *'lw'* + 'lispwords' 'lw' string (default is very long) +! global + {not in Vi} + {not available when compiled without the |+lispindent| + feature} +--- 4629,4635 ---- + + *'lispwords'* *'lw'* + 'lispwords' 'lw' string (default is very long) +! global or local to buffer |global-local| + {not in Vi} + {not available when compiled without the |+lispindent| + feature} +*** ../vim-7.4.200/runtime/optwin.vim 2013-06-29 14:32:06.000000000 +0200 +--- runtime/optwin.vim 2014-03-12 18:20:30.748874299 +0100 +*************** +*** 855,861 **** + call append("$", "\t(local to buffer)") + call <SID>BinOptionL("lisp") + call append("$", "lispwords\twords that change how lisp indenting works") +! call <SID>OptionG("lw", &lw) + endif + + +--- 855,861 ---- + call append("$", "\t(local to buffer)") + call <SID>BinOptionL("lisp") + call append("$", "lispwords\twords that change how lisp indenting works") +! call <SID>OptionL("lw", &lw) + endif + + +*** ../vim-7.4.200/src/buffer.c 2014-01-10 16:43:09.000000000 +0100 +--- src/buffer.c 2014-03-12 18:20:30.752874299 +0100 +*************** +*** 1978,1983 **** +--- 1978,1986 ---- + #endif + buf->b_p_ar = -1; + buf->b_p_ul = NO_LOCAL_UNDOLEVEL; ++ #ifdef FEAT_LISP ++ clear_string_option(&buf->b_p_lw); ++ #endif + } + + /* +*** ../vim-7.4.200/src/misc1.c 2013-11-06 04:01:31.000000000 +0100 +--- src/misc1.c 2014-03-12 18:20:30.752874299 +0100 +*************** +*** 8879,8885 **** + { + char_u buf[LSIZE]; + int len; +! char_u *word = p_lispwords; + + while (*word != NUL) + { +--- 8879,8885 ---- + { + char_u buf[LSIZE]; + int len; +! char_u *word = *curbuf->b_p_lw != NUL ? curbuf->b_p_lw : p_lispwords; + + while (*word != NUL) + { +*** ../vim-7.4.200/src/option.c 2014-01-14 16:54:53.000000000 +0100 +--- src/option.c 2014-03-12 18:20:30.752874299 +0100 +*************** +*** 134,139 **** +--- 134,140 ---- + #define PV_KP OPT_BOTH(OPT_BUF(BV_KP)) + #ifdef FEAT_LISP + # define PV_LISP OPT_BUF(BV_LISP) ++ # define PV_LW OPT_BOTH(OPT_BUF(BV_LW)) + #endif + #define PV_MA OPT_BUF(BV_MA) + #define PV_ML OPT_BUF(BV_ML) +*************** +*** 1718,1724 **** + {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT}, + {"lispwords", "lw", P_STRING|P_VI_DEF|P_COMMA|P_NODUP, + #ifdef FEAT_LISP +! (char_u *)&p_lispwords, PV_NONE, + {(char_u *)LISPWORD_VALUE, (char_u *)0L} + #else + (char_u *)NULL, PV_NONE, +--- 1719,1725 ---- + {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT}, + {"lispwords", "lw", P_STRING|P_VI_DEF|P_COMMA|P_NODUP, + #ifdef FEAT_LISP +! (char_u *)&p_lispwords, PV_LW, + {(char_u *)LISPWORD_VALUE, (char_u *)0L} + #else + (char_u *)NULL, PV_NONE, +*************** +*** 5412,5417 **** +--- 5413,5421 ---- + check_string_option(&buf->b_p_dict); + check_string_option(&buf->b_p_tsr); + #endif ++ #ifdef FEAT_LISP ++ check_string_option(&buf->b_p_lw); ++ #endif + } + + /* +*************** +*** 9879,9884 **** +--- 9883,9893 ---- + case PV_UL: + buf->b_p_ul = NO_LOCAL_UNDOLEVEL; + break; ++ #ifdef FEAT_LISP ++ case PV_LW: ++ clear_string_option(&buf->b_p_lw); ++ break; ++ #endif + } + } + +*************** +*** 9928,9933 **** +--- 9937,9945 ---- + case PV_STL: return (char_u *)&(curwin->w_p_stl); + #endif + case PV_UL: return (char_u *)&(curbuf->b_p_ul); ++ #ifdef FEAT_LISP ++ case PV_LW: return (char_u *)&(curbuf->b_p_lw); ++ #endif + } + return NULL; /* "cannot happen" */ + } +*************** +*** 9994,9999 **** +--- 10006,10015 ---- + #endif + case PV_UL: return curbuf->b_p_ul != NO_LOCAL_UNDOLEVEL + ? (char_u *)&(curbuf->b_p_ul) : p->var; ++ #ifdef FEAT_LISP ++ case PV_LW: return *curbuf->b_p_lw != NUL ++ ? (char_u *)&(curbuf->b_p_lw) : p->var; ++ #endif + + #ifdef FEAT_ARABIC + case PV_ARAB: return (char_u *)&(curwin->w_p_arab); +*************** +*** 10567,10572 **** +--- 10583,10591 ---- + #ifdef FEAT_PERSISTENT_UNDO + buf->b_p_udf = p_udf; + #endif ++ #ifdef FEAT_LISP ++ buf->b_p_lw = empty_option; ++ #endif + + /* + * Don't copy the options set by ex_help(), use the saved values, +*** ../vim-7.4.200/src/option.h 2014-01-10 15:32:17.000000000 +0100 +--- src/option.h 2014-03-12 18:20:30.752874299 +0100 +*************** +*** 990,995 **** +--- 990,996 ---- + , BV_KP + #ifdef FEAT_LISP + , BV_LISP ++ , BV_LW + #endif + , BV_MA + , BV_ML +*** ../vim-7.4.200/src/structs.h 2014-02-23 22:52:33.372764715 +0100 +--- src/structs.h 2014-03-12 18:20:30.752874299 +0100 +*************** +*** 1641,1646 **** +--- 1641,1649 ---- + #ifdef FEAT_PERSISTENT_UNDO + int b_p_udf; /* 'undofile' */ + #endif ++ #ifdef FEAT_LISP ++ char_u *b_p_lw; /* 'lispwords' local value */ ++ #endif + + /* end of buffer options */ + +*** ../vim-7.4.200/src/testdir/test100.in 2013-11-07 03:25:51.000000000 +0100 +--- src/testdir/test100.in 2014-03-12 18:25:27.792878851 +0100 +*************** +*** 1,4 **** +! Tests for 'undolevel' setting being global-local + + STARTTEST + :so small.vim +--- 1,4 ---- +! Tests for 'undolevel' and 'lispwords' settings being global-local + + STARTTEST + :so small.vim +*************** +*** 37,42 **** +--- 37,50 ---- + :call UndoLevel() + :%w >> test.out + :"sleep 10 ++ :" ++ :" Testing 'lispwords' ++ :" ++ :setglobal lispwords=foo,bar,baz ++ :setlocal lispwords-=foo | setlocal lispwords+=quux ++ :redir >> test.out | echon "\nTesting 'lispwords' local value" | setglobal lispwords? | setlocal lispwords? | echo &lispwords . "\n" | redir end ++ :setlocal lispwords< ++ :redir >> test.out | echon "\nTesting 'lispwords' value reset" | setglobal lispwords? | setlocal lispwords? | echo &lispwords . "\n" | redir end + :qa! + ENDTEST + +*** ../vim-7.4.200/src/testdir/test100.ok 2013-11-07 03:25:51.000000000 +0100 +--- src/testdir/test100.ok 2014-03-12 18:25:27.792878851 +0100 +*************** +*** 39,41 **** +--- 39,51 ---- + + undolevels=50 global + undolevels=-123456 local ++ ++ Testing 'lispwords' local value ++ lispwords=foo,bar,baz ++ lispwords=bar,baz,quux ++ bar,baz,quux ++ ++ Testing 'lispwords' value reset ++ lispwords=foo,bar,baz ++ lispwords=foo,bar,baz ++ foo,bar,baz +*** ../vim-7.4.200/src/version.c 2014-03-12 17:56:42.960852421 +0100 +--- src/version.c 2014-03-12 18:19:13.720873119 +0100 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 201, + /**/ + +-- +Lawmakers made it obligatory for everybody to take at least one bath +each week -- on Saturday night. + [real standing law in Vermont, United States of America] + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.202 b/SOURCES/7.4.202 new file mode 100644 index 0000000..5c50d87 --- /dev/null +++ b/SOURCES/7.4.202 @@ -0,0 +1,281 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.202 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.202 +Problem: MS-Windows: non-ASCII font names don't work. +Solution: Convert between the current code page and 'encoding'. (Ken Takata) +Files: src/gui_w48.c, src/os_mswin.c, src/proto/winclip.pro, + src/winclip.c + + +*** ../vim-7.4.201/src/gui_w48.c 2013-09-22 15:43:34.000000000 +0200 +--- src/gui_w48.c 2014-03-12 19:18:14.264927370 +0100 +*************** +*** 3069,3083 **** + char *p; + char *res; + char *charset_name; + + charset_name = charset_id2name((int)lf.lfCharSet); +! res = alloc((unsigned)(strlen(lf.lfFaceName) + 20 + + (charset_name == NULL ? 0 : strlen(charset_name) + 2))); + if (res != NULL) + { + p = res; + /* make a normal font string out of the lf thing:*/ +! sprintf((char *)p, "%s:h%d", lf.lfFaceName, pixels_to_points( + lf.lfHeight < 0 ? -lf.lfHeight : lf.lfHeight, TRUE)); + while (*p) + { +--- 3069,3094 ---- + char *p; + char *res; + char *charset_name; ++ char *font_name = lf.lfFaceName; + + charset_name = charset_id2name((int)lf.lfCharSet); +! #ifdef FEAT_MBYTE +! /* Convert a font name from the current codepage to 'encoding'. +! * TODO: Use Wide APIs (including LOGFONTW) instead of ANSI APIs. */ +! if (enc_codepage >= 0 && (int)GetACP() != enc_codepage) +! { +! int len; +! acp_to_enc(lf.lfFaceName, strlen(lf.lfFaceName), +! (char_u **)&font_name, &len); +! } +! #endif +! res = alloc((unsigned)(strlen(font_name) + 20 + + (charset_name == NULL ? 0 : strlen(charset_name) + 2))); + if (res != NULL) + { + p = res; + /* make a normal font string out of the lf thing:*/ +! sprintf((char *)p, "%s:h%d", font_name, pixels_to_points( + lf.lfHeight < 0 ? -lf.lfHeight : lf.lfHeight, TRUE)); + while (*p) + { +*************** +*** 3102,3107 **** +--- 3113,3122 ---- + } + } + ++ #ifdef FEAT_MBYTE ++ if (font_name != lf.lfFaceName) ++ vim_free(font_name); ++ #endif + return res; + } + +*** ../vim-7.4.201/src/os_mswin.c 2014-02-11 17:05:57.278217857 +0100 +--- src/os_mswin.c 2014-03-12 19:18:14.264927370 +0100 +*************** +*** 2867,2878 **** +--- 2867,2893 ---- + { + char_u *p; + int i; ++ int ret = FAIL; + static LOGFONT *lastlf = NULL; ++ #ifdef FEAT_MBYTE ++ char_u *acpname = NULL; ++ #endif + + *lf = s_lfDefault; + if (name == NULL) + return OK; + ++ #ifdef FEAT_MBYTE ++ /* Convert 'name' from 'encoding' to the current codepage, because ++ * lf->lfFaceName uses the current codepage. ++ * TODO: Use Wide APIs instead of ANSI APIs. */ ++ if (enc_codepage >= 0 && (int)GetACP() != enc_codepage) ++ { ++ int len; ++ enc_to_acp(name, strlen(name), &acpname, &len); ++ name = acpname; ++ } ++ #endif + if (STRCMP(name, "*") == 0) + { + #if defined(FEAT_GUI_W32) +*************** +*** 2887,2896 **** + cf.lpLogFont = lf; + cf.nFontType = 0 ; //REGULAR_FONTTYPE; + if (ChooseFont(&cf)) +! goto theend; +! #else +! return FAIL; + #endif + } + + /* +--- 2902,2910 ---- + cf.lpLogFont = lf; + cf.nFontType = 0 ; //REGULAR_FONTTYPE; + if (ChooseFont(&cf)) +! ret = OK; + #endif ++ goto theend; + } + + /* +*************** +*** 2899,2905 **** + for (p = name; *p && *p != ':'; p++) + { + if (p - name + 1 > LF_FACESIZE) +! return FAIL; /* Name too long */ + lf->lfFaceName[p - name] = *p; + } + if (p != name) +--- 2913,2919 ---- + for (p = name; *p && *p != ':'; p++) + { + if (p - name + 1 > LF_FACESIZE) +! goto theend; /* Name too long */ + lf->lfFaceName[p - name] = *p; + } + if (p != name) +*************** +*** 2927,2933 **** + did_replace = TRUE; + } + if (!did_replace || init_logfont(lf) == FAIL) +! return FAIL; + } + + while (*p == ':') +--- 2941,2947 ---- + did_replace = TRUE; + } + if (!did_replace || init_logfont(lf) == FAIL) +! goto theend; + } + + while (*p == ':') +*************** +*** 2988,3012 **** + p[-1], name); + EMSG(IObuff); + } +! return FAIL; + } + while (*p == ':') + p++; + } + +- #if defined(FEAT_GUI_W32) + theend: +- #endif + /* ron: init lastlf */ +! if (printer_dc == NULL) + { + vim_free(lastlf); + lastlf = (LOGFONT *)alloc(sizeof(LOGFONT)); + if (lastlf != NULL) + mch_memmove(lastlf, lf, sizeof(LOGFONT)); + } + +! return OK; + } + + #endif /* defined(FEAT_GUI) || defined(FEAT_PRINTER) */ +--- 3002,3028 ---- + p[-1], name); + EMSG(IObuff); + } +! goto theend; + } + while (*p == ':') + p++; + } ++ ret = OK; + + theend: + /* ron: init lastlf */ +! if (ret == OK && printer_dc == NULL) + { + vim_free(lastlf); + lastlf = (LOGFONT *)alloc(sizeof(LOGFONT)); + if (lastlf != NULL) + mch_memmove(lastlf, lf, sizeof(LOGFONT)); + } ++ #ifdef FEAT_MBYTE ++ vim_free(acpname); ++ #endif + +! return ret; + } + + #endif /* defined(FEAT_GUI) || defined(FEAT_PRINTER) */ +*** ../vim-7.4.201/src/proto/winclip.pro 2013-08-10 13:37:39.000000000 +0200 +--- src/proto/winclip.pro 2014-03-12 19:18:14.264927370 +0100 +*************** +*** 11,14 **** +--- 11,15 ---- + short_u *enc_to_utf16 __ARGS((char_u *str, int *lenp)); + char_u *utf16_to_enc __ARGS((short_u *str, int *lenp)); + void acp_to_enc __ARGS((char_u *str, int str_size, char_u **out, int *outlen)); ++ void enc_to_acp __ARGS((char_u *str, int str_size, char_u **out, int *outlen)); + /* vim: set ft=c : */ +*** ../vim-7.4.201/src/winclip.c 2013-07-01 21:05:53.000000000 +0200 +--- src/winclip.c 2014-03-12 19:18:14.264927370 +0100 +*************** +*** 797,800 **** +--- 797,825 ---- + vim_free(widestr); + } + } ++ ++ /* ++ * Convert from 'encoding' to the active codepage. ++ * Input is "str[str_size]". ++ * The result is in allocated memory: "out[outlen]". With terminating NUL. ++ */ ++ void ++ enc_to_acp(str, str_size, out, outlen) ++ char_u *str; ++ int str_size; ++ char_u **out; ++ int *outlen; ++ ++ { ++ LPWSTR widestr; ++ int len = str_size; ++ ++ widestr = (WCHAR *)enc_to_utf16(str, &len); ++ if (widestr != NULL) ++ { ++ WideCharToMultiByte_alloc(GetACP(), 0, widestr, len, ++ (LPSTR *)out, outlen, 0, 0); ++ vim_free(widestr); ++ } ++ } + #endif +*** ../vim-7.4.201/src/version.c 2014-03-12 18:55:52.104906804 +0100 +--- src/version.c 2014-03-12 19:19:01.388928092 +0100 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 202, + /**/ + +-- +<Beeth> Girls are like internet domain names, + the ones I like are already taken. +<honx> Well, you can stil get one from a strange country :-P + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.203 b/SOURCES/7.4.203 new file mode 100644 index 0000000..d5cb84a --- /dev/null +++ b/SOURCES/7.4.203 @@ -0,0 +1,203 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.203 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.203 +Problem: Parsing 'errorformat' is not correct. +Solution: Reset "multiignore" at the start of a multi-line message. (Lcd) +Files: src/quickfix.c, src/testdir/Make_amiga.mak, + src/testdir/Make_dos.mak, src/testdir/Make_ming.mak, + src/testdir/Make_os2.mak, src/testdir/Make_vms.mms, + src/testdir/Makefile, src/testdir/test106.in, + src/testdir/test106.ok + + +*** ../vim-7.4.202/src/quickfix.c 2013-07-01 21:16:44.000000000 +0200 +--- src/quickfix.c 2014-03-12 19:35:22.016943118 +0100 +*************** +*** 751,757 **** +--- 751,760 ---- + fmt_start = fmt_ptr; + + if (vim_strchr((char_u *)"AEWI", idx) != NULL) ++ { + multiline = TRUE; /* start of a multi-line message */ ++ multiignore = FALSE; /* reset continuation */ ++ } + else if (vim_strchr((char_u *)"CZ", idx) != NULL) + { /* continuation of multi-line msg */ + if (qfprev == NULL) +*** ../vim-7.4.202/src/testdir/Make_amiga.mak 2014-02-23 23:38:58.808760280 +0100 +--- src/testdir/Make_amiga.mak 2014-03-12 19:32:32.192940516 +0100 +*************** +*** 35,41 **** + test89.out test90.out test91.out test92.out test93.out \ + test94.out test95.out test96.out test97.out test98.out \ + test99.out test100.out test101.out test102.out test103.out \ +! test104.out test105.out + + .SUFFIXES: .in .out + +--- 35,41 ---- + test89.out test90.out test91.out test92.out test93.out \ + test94.out test95.out test96.out test97.out test98.out \ + test99.out test100.out test101.out test102.out test103.out \ +! test104.out test105.out test106.out + + .SUFFIXES: .in .out + +*************** +*** 157,159 **** +--- 157,160 ---- + test103.out: test103.in + test104.out: test104.in + test105.out: test105.in ++ test106.out: test106.in +*** ../vim-7.4.202/src/testdir/Make_dos.mak 2014-02-23 23:38:58.808760280 +0100 +--- src/testdir/Make_dos.mak 2014-03-12 19:32:40.100940637 +0100 +*************** +*** 34,40 **** + test89.out test90.out test91.out test92.out test93.out \ + test94.out test95.out test96.out test98.out test99.out \ + test100.out test101.out test102.out test103.out test104.out \ +! test105.out + + SCRIPTS32 = test50.out test70.out + +--- 34,40 ---- + test89.out test90.out test91.out test92.out test93.out \ + test94.out test95.out test96.out test98.out test99.out \ + test100.out test101.out test102.out test103.out test104.out \ +! test105.out test106.out + + SCRIPTS32 = test50.out test70.out + +*** ../vim-7.4.202/src/testdir/Make_ming.mak 2014-02-23 23:38:58.812760280 +0100 +--- src/testdir/Make_ming.mak 2014-03-12 19:32:44.948940712 +0100 +*************** +*** 54,60 **** + test89.out test90.out test91.out test92.out test93.out \ + test94.out test95.out test96.out test98.out test99.out \ + test100.out test101.out test102.out test103.out test104.out \ +! test105.out + + SCRIPTS32 = test50.out test70.out + +--- 54,60 ---- + test89.out test90.out test91.out test92.out test93.out \ + test94.out test95.out test96.out test98.out test99.out \ + test100.out test101.out test102.out test103.out test104.out \ +! test105.out test106.out + + SCRIPTS32 = test50.out test70.out + +*** ../vim-7.4.202/src/testdir/Make_os2.mak 2014-02-23 23:38:58.812760280 +0100 +--- src/testdir/Make_os2.mak 2014-03-12 19:32:48.112940760 +0100 +*************** +*** 36,42 **** + test89.out test90.out test91.out test92.out test93.out \ + test94.out test95.out test96.out test98.out test99.out \ + test100.out test101.out test102.out test103.out test104.out \ +! test105.out + + .SUFFIXES: .in .out + +--- 36,42 ---- + test89.out test90.out test91.out test92.out test93.out \ + test94.out test95.out test96.out test98.out test99.out \ + test100.out test101.out test102.out test103.out test104.out \ +! test105.out test106.out + + .SUFFIXES: .in .out + +*** ../vim-7.4.202/src/testdir/Make_vms.mms 2014-03-12 16:51:35.060792541 +0100 +--- src/testdir/Make_vms.mms 2014-03-12 19:32:51.836940817 +0100 +*************** +*** 95,101 **** + test90.out test91.out test92.out test93.out test94.out \ + test95.out test96.out test98.out test99.out \ + test100.out test101.out test103.out test104.out \ +! test105.out + + # Known problems: + # test17: ? +--- 95,101 ---- + test90.out test91.out test92.out test93.out test94.out \ + test95.out test96.out test98.out test99.out \ + test100.out test101.out test103.out test104.out \ +! test105.out test106.out + + # Known problems: + # test17: ? +*** ../vim-7.4.202/src/testdir/Makefile 2014-03-12 15:50:18.472736205 +0100 +--- src/testdir/Makefile 2014-03-12 19:32:13.884940236 +0100 +*************** +*** 31,37 **** + test89.out test90.out test91.out test92.out test93.out \ + test94.out test95.out test96.out test97.out test98.out \ + test99.out test100.out test101.out test102.out test103.out \ +! test104.out test105.out + + SCRIPTS_GUI = test16.out + +--- 31,37 ---- + test89.out test90.out test91.out test92.out test93.out \ + test94.out test95.out test96.out test97.out test98.out \ + test99.out test100.out test101.out test102.out test103.out \ +! test104.out test105.out test106.out + + SCRIPTS_GUI = test16.out + +*** ../vim-7.4.202/src/testdir/test106.in 2014-03-12 19:40:59.584948291 +0100 +--- src/testdir/test106.in 2014-03-12 19:33:30.332941407 +0100 +*************** +*** 0 **** +--- 1,16 ---- ++ Tests for errorformat. vim: set ft=vim ts=8 : ++ ++ STARTTEST ++ :so small.vim ++ :if !has('quickfix') | e! test.ok | wq! test.out | endif ++ :set efm=%EEEE%m,%WWWW%m,%+CCCC%.%#,%-GGGG%.%# ++ :cgetexpr ['WWWW', 'EEEE', 'CCCC'] ++ :$put =strtrans(string(map(getqflist(), '[v:val.text, v:val.valid]'))) ++ :cgetexpr ['WWWW', 'GGGG', 'EEEE', 'CCCC'] ++ :$put =strtrans(string(map(getqflist(), '[v:val.text, v:val.valid]'))) ++ :cgetexpr ['WWWW', 'GGGG', 'ZZZZ', 'EEEE', 'CCCC', 'YYYY'] ++ :$put =strtrans(string(map(getqflist(), '[v:val.text, v:val.valid]'))) ++ :/^Results/,$wq! test.out ++ ENDTEST ++ ++ Results of test106: +*** ../vim-7.4.202/src/testdir/test106.ok 2014-03-12 19:40:59.592948291 +0100 +--- src/testdir/test106.ok 2014-03-12 19:33:50.496941716 +0100 +*************** +*** 0 **** +--- 1,4 ---- ++ Results of test106: ++ [['W', 1], ['E^@CCCC', 1]] ++ [['W', 1], ['E^@CCCC', 1]] ++ [['W', 1], ['ZZZZ', 0], ['E^@CCCC', 1], ['YYYY', 0]] +*** ../vim-7.4.202/src/version.c 2014-03-12 19:24:32.508933166 +0100 +--- src/version.c 2014-03-12 19:39:34.344946985 +0100 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 203, + /**/ + +-- +"I know that there are people who don't love their fellow man, +and I hate those people!" - Tom Lehrer + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.204 b/SOURCES/7.4.204 new file mode 100644 index 0000000..c6b491e --- /dev/null +++ b/SOURCES/7.4.204 @@ -0,0 +1,113 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.204 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.204 +Problem: A mapping where the second byte is 0x80 doesn't work. +Solution: Unescape before checking for incomplete multi-byte char. (Nobuhiro + Takasaki) +Files: src/getchar.c, src/testdir/test75.in, src/testdir/test75.ok + + +*** ../vim-7.4.203/src/getchar.c 2014-02-15 16:17:02.213903042 +0100 +--- src/getchar.c 2014-03-12 20:06:17.944971557 +0100 +*************** +*** 2206,2215 **** + #ifdef FEAT_MBYTE + /* Don't allow mapping the first byte(s) of a + * multi-byte char. Happens when mapping +! * <M-a> and then changing 'encoding'. */ +! if (has_mbyte && MB_BYTE2LEN(c1) +! > (*mb_ptr2len)(mp->m_keys)) +! mlen = 0; + #endif + /* + * Check an entry whether it matches. +--- 2206,2221 ---- + #ifdef FEAT_MBYTE + /* Don't allow mapping the first byte(s) of a + * multi-byte char. Happens when mapping +! * <M-a> and then changing 'encoding'. Beware +! * that 0x80 is escaped. */ +! { +! char_u *p1 = mp->m_keys; +! char_u *p2 = mb_unescape(&p1); +! +! if (has_mbyte && p2 != NULL +! && MB_BYTE2LEN(c1) > MB_PTR2LEN(p2)) +! mlen = 0; +! } + #endif + /* + * Check an entry whether it matches. +*** ../vim-7.4.203/src/testdir/test75.in 2013-11-02 04:19:10.000000000 +0100 +--- src/testdir/test75.in 2014-03-12 20:02:45.932968308 +0100 +*************** +*** 1,8 **** +--- 1,11 ---- + Tests for maparg(). ++ Also test utf8 map with a 0x80 byte. + + STARTTEST + :so small.vim ++ :so mbyte.vim + :set cpo-=< ++ :set encoding=utf8 + :" Test maparg() with a string result + :map foo<C-V> is<F4>foo + :vnoremap <script> <buffer> <expr> <silent> bar isbar +*************** +*** 17,22 **** +--- 20,39 ---- + :map abc y<S-char-114>y + :call append('$', maparg('abc')) + :" ++ Go:" ++ :" Outside of the range, minimum ++ :inoremap <Char-0x1040> a ++ :call feedkeys("a\u1040\<Esc>") ++ :" Inside of the range, minimum ++ :inoremap <Char-0x103f> b ++ :call feedkeys("a\u103f\<Esc>") ++ :" Inside of the range, maximum ++ :inoremap <Char-0xf03f> c ++ :call feedkeys("a\uf03f\<Esc>") ++ :" Outside of the range, maximum ++ :inoremap <Char-0xf040> d ++ :call feedkeys("a\uf040\<Esc>") ++ :" + :/^eof/+1,$w! test.out + :qa! + ENDTEST +*** ../vim-7.4.203/src/testdir/test75.ok 2013-06-29 13:50:08.000000000 +0200 +--- src/testdir/test75.ok 2014-03-12 20:02:49.780968367 +0100 +*************** +*** 4,6 **** +--- 4,7 ---- + {'silent': 0, 'noremap': 0, 'lhs': 'foo', 'mode': ' ', 'nowait': 1, 'expr': 0, 'sid': 0, 'rhs': 'bar', 'buffer': 1} + xrx + yRy ++ abcd +*** ../vim-7.4.203/src/version.c 2014-03-12 19:41:37.100948866 +0100 +--- src/version.c 2014-03-12 20:06:43.684971951 +0100 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 204, + /**/ + +-- +If you only have a hammer, you tend to see every problem as a nail. +If you only have MS-Windows, you tend to solve every problem by rebooting. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.205 b/SOURCES/7.4.205 new file mode 100644 index 0000000..1f4fcf4 --- /dev/null +++ b/SOURCES/7.4.205 @@ -0,0 +1,113 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.205 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.205 +Problem: ":mksession" writes command to move to second argument while it + does not exist. When it does exist the order might be wrong. +Solution: Use ":argadd" for each argument instead of using ":args" with a + list of names. (Nobuhiro Takasaki) +Files: src/ex_docmd.c + + +*** ../vim-7.4.204/src/ex_docmd.c 2014-02-05 22:46:49.058587842 +0100 +--- src/ex_docmd.c 2014-03-12 21:08:35.361028825 +0100 +*************** +*** 10381,10387 **** + } + + /* the global argument list */ +! if (ses_arglist(fd, "args", &global_alist.al_ga, + !(ssop_flags & SSOP_CURDIR), &ssop_flags) == FAIL) + return FAIL; + +--- 10381,10387 ---- + } + + /* the global argument list */ +! if (ses_arglist(fd, "argglobal", &global_alist.al_ga, + !(ssop_flags & SSOP_CURDIR), &ssop_flags) == FAIL) + return FAIL; + +*************** +*** 10955,10963 **** + char_u *buf = NULL; + char_u *s; + +! if (gap->ga_len == 0) +! return put_line(fd, "silent! argdel *"); +! if (fputs(cmd, fd) < 0) + return FAIL; + for (i = 0; i < gap->ga_len; ++i) + { +--- 10955,10963 ---- + char_u *buf = NULL; + char_u *s; + +! if (fputs(cmd, fd) < 0 || put_eol(fd) == FAIL) +! return FAIL; +! if (put_line(fd, "silent! argdel *") == FAIL) + return FAIL; + for (i = 0; i < gap->ga_len; ++i) + { +*************** +*** 10974,10980 **** + s = buf; + } + } +! if (fputs(" ", fd) < 0 || ses_put_fname(fd, s, flagp) == FAIL) + { + vim_free(buf); + return FAIL; +--- 10974,10982 ---- + s = buf; + } + } +! if (fputs("argadd ", fd) < 0 +! || ses_put_fname(fd, s, flagp) == FAIL +! || put_eol(fd) == FAIL) + { + vim_free(buf); + return FAIL; +*************** +*** 10982,10988 **** + vim_free(buf); + } + } +! return put_eol(fd); + } + + /* +--- 10984,10990 ---- + vim_free(buf); + } + } +! return OK; + } + + /* +*** ../vim-7.4.204/src/version.c 2014-03-12 20:17:47.752982126 +0100 +--- src/version.c 2014-03-12 21:09:16.273029451 +0100 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 205, + /**/ + +-- +A law to reduce crime states: "It is mandatory for a motorist with criminal +intentions to stop at the city limits and telephone the chief of police as he +is entering the town. + [real standing law in Washington, United States of America] + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.206 b/SOURCES/7.4.206 new file mode 100644 index 0000000..d251135 --- /dev/null +++ b/SOURCES/7.4.206 @@ -0,0 +1,72 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.206 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.206 +Problem: Compiler warnings on 64 bit Windows. +Solution: Add type casts. (Mike Williams) +Files: src/gui_w48.c, src/os_mswin.c + + +*** ../vim-7.4.205/src/gui_w48.c 2014-03-12 19:24:32.504933166 +0100 +--- src/gui_w48.c 2014-03-19 12:32:15.129821412 +0100 +*************** +*** 3078,3084 **** + if (enc_codepage >= 0 && (int)GetACP() != enc_codepage) + { + int len; +! acp_to_enc(lf.lfFaceName, strlen(lf.lfFaceName), + (char_u **)&font_name, &len); + } + #endif +--- 3078,3084 ---- + if (enc_codepage >= 0 && (int)GetACP() != enc_codepage) + { + int len; +! acp_to_enc(lf.lfFaceName, (int)strlen(lf.lfFaceName), + (char_u **)&font_name, &len); + } + #endif +*** ../vim-7.4.205/src/os_mswin.c 2014-03-12 19:24:32.504933166 +0100 +--- src/os_mswin.c 2014-03-19 12:32:15.129821412 +0100 +*************** +*** 2884,2890 **** + if (enc_codepage >= 0 && (int)GetACP() != enc_codepage) + { + int len; +! enc_to_acp(name, strlen(name), &acpname, &len); + name = acpname; + } + #endif +--- 2884,2890 ---- + if (enc_codepage >= 0 && (int)GetACP() != enc_codepage) + { + int len; +! enc_to_acp(name, (int)strlen(name), &acpname, &len); + name = acpname; + } + #endif +*** ../vim-7.4.205/src/version.c 2014-03-12 21:28:09.485046816 +0100 +--- src/version.c 2014-03-19 12:33:16.253822349 +0100 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 206, + /**/ + +-- +We apologise again for the fault in the subtitles. Those responsible for +sacking the people who have just been sacked have been sacked. + "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.207 b/SOURCES/7.4.207 new file mode 100644 index 0000000..895aa72 --- /dev/null +++ b/SOURCES/7.4.207 @@ -0,0 +1,176 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.207 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.207 +Problem: The cursor report sequence is sometimes not recognized and results + in entering replace mode. +Solution: Also check for the cursor report when not asked for. +Files: src/term.c + + +*** ../vim-7.4.206/src/term.c 2013-09-29 16:27:42.000000000 +0200 +--- src/term.c 2014-03-19 13:30:23.589874866 +0100 +*************** +*** 3379,3385 **** + out_str(buf); + out_str(T_U7); + u7_status = U7_SENT; +! term_windgoto(0, 0); + out_str((char_u *)" "); + term_windgoto(0, 0); + /* check for the characters now, otherwise they might be eaten by +--- 3379,3386 ---- + out_str(buf); + out_str(T_U7); + u7_status = U7_SENT; +! out_flush(); +! term_windgoto(1, 0); + out_str((char_u *)" "); + term_windgoto(0, 0); + /* check for the characters now, otherwise they might be eaten by +*************** +*** 4185,4208 **** + || (tp[0] == CSI && len >= 2)) + && (VIM_ISDIGIT(*p) || *p == '>' || *p == '?')) + { + j = 0; + extra = 0; + for (i = 2 + (tp[0] != CSI); i < len + && !(tp[i] >= '{' && tp[i] <= '~') + && !ASCII_ISALPHA(tp[i]); ++i) + if (tp[i] == ';' && ++j == 1) + extra = i + 1; + if (i == len) + { + LOG_TR("Not enough characters for CRV"); + return -1; + } +- + #ifdef FEAT_MBYTE +! /* Eat it when it has 2 arguments and ends in 'R'. Ignore it +! * when u7_status is not "sent", <S-F3> sends something +! * similar. */ +! if (j == 1 && tp[i] == 'R' && u7_status == U7_SENT) + { + char *aw = NULL; + +--- 4186,4223 ---- + || (tp[0] == CSI && len >= 2)) + && (VIM_ISDIGIT(*p) || *p == '>' || *p == '?')) + { ++ #ifdef FEAT_MBYTE ++ int col; ++ int row_char; ++ #endif + j = 0; + extra = 0; + for (i = 2 + (tp[0] != CSI); i < len + && !(tp[i] >= '{' && tp[i] <= '~') + && !ASCII_ISALPHA(tp[i]); ++i) + if (tp[i] == ';' && ++j == 1) ++ { + extra = i + 1; ++ #ifdef FEAT_MBYTE ++ row_char = tp[i - 1]; ++ #endif ++ } + if (i == len) + { + LOG_TR("Not enough characters for CRV"); + return -1; + } + #ifdef FEAT_MBYTE +! if (extra > 0) +! col = atoi((char *)tp + extra); +! else +! col = 0; +! +! /* Eat it when it has 2 arguments and ends in 'R'. Also when +! * u7_status is not "sent", it may be from a previous Vim that +! * just exited. But not for <S-F3>, it sends something +! * similar, check for row and column to make sense. */ +! if (j == 1 && tp[i] == 'R' && row_char == '2' && col >= 2) + { + char *aw = NULL; + +*************** +*** 4211,4228 **** + # ifdef FEAT_AUTOCMD + did_cursorhold = TRUE; + # endif +! if (extra > 0) +! extra = atoi((char *)tp + extra); +! if (extra == 2) + aw = "single"; +! else if (extra == 3) + aw = "double"; + if (aw != NULL && STRCMP(aw, p_ambw) != 0) + { + /* Setting the option causes a screen redraw. Do that + * right away if possible, keeping any messages. */ + set_option_value((char_u *)"ambw", 0L, (char_u *)aw, 0); +! #ifdef DEBUG_TERMRESPONSE + { + char buf[100]; + int r = redraw_asap(CLEAR); +--- 4226,4241 ---- + # ifdef FEAT_AUTOCMD + did_cursorhold = TRUE; + # endif +! if (col == 2) + aw = "single"; +! else if (col == 3) + aw = "double"; + if (aw != NULL && STRCMP(aw, p_ambw) != 0) + { + /* Setting the option causes a screen redraw. Do that + * right away if possible, keeping any messages. */ + set_option_value((char_u *)"ambw", 0L, (char_u *)aw, 0); +! # ifdef DEBUG_TERMRESPONSE + { + char buf[100]; + int r = redraw_asap(CLEAR); +*************** +*** 4231,4239 **** + r); + log_tr(buf); + } +! #else + redraw_asap(CLEAR); +! #endif + } + key_name[0] = (int)KS_EXTRA; + key_name[1] = (int)KE_IGNORE; +--- 4244,4252 ---- + r); + log_tr(buf); + } +! # else + redraw_asap(CLEAR); +! # endif + } + key_name[0] = (int)KS_EXTRA; + key_name[1] = (int)KE_IGNORE; +*** ../vim-7.4.206/src/version.c 2014-03-19 12:37:18.537826062 +0100 +--- src/version.c 2014-03-19 12:55:42.249842974 +0100 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 207, + /**/ + +-- +How come wrong numbers are never busy? + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.209 b/SOURCES/7.4.209 new file mode 100644 index 0000000..9791716 --- /dev/null +++ b/SOURCES/7.4.209 @@ -0,0 +1,63 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.209 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.209 +Problem: When repeating a filter command "%" and "#" are expanded. +Solution: Escape the command when storing for redo. (Christian Brabandt) +Files: src/ex_cmds.c + + +*** ../vim-7.4.208/src/ex_cmds.c 2014-02-22 22:27:20.768904692 +0100 +--- src/ex_cmds.c 2014-03-19 17:40:01.138104365 +0100 +*************** +*** 1012,1018 **** + + if (bangredo) /* put cmd in redo buffer for ! command */ + { +! AppendToRedobuffLit(prevcmd, -1); + AppendToRedobuff((char_u *)"\n"); + bangredo = FALSE; + } +--- 1012,1029 ---- + + if (bangredo) /* put cmd in redo buffer for ! command */ + { +! /* If % or # appears in the command, it must have been escaped. +! * Reescape them, so that redoing them does not substitute them by the +! * buffername. */ +! char_u *cmd = vim_strsave_escaped(prevcmd, (char_u *)"%#"); +! +! if (cmd != NULL) +! { +! AppendToRedobuffLit(cmd, -1); +! vim_free(cmd); +! } +! else +! AppendToRedobuffLit(prevcmd, -1); + AppendToRedobuff((char_u *)"\n"); + bangredo = FALSE; + } +*** ../vim-7.4.208/src/version.c 2014-03-19 17:32:32.454097490 +0100 +--- src/version.c 2014-03-19 17:40:24.810104728 +0100 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 209, + /**/ + +-- +System administrators are just like women: You can't live with them and you +can't live without them. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.210 b/SOURCES/7.4.210 new file mode 100644 index 0000000..a96431c --- /dev/null +++ b/SOURCES/7.4.210 @@ -0,0 +1,133 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.210 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.210 +Problem: Visual block mode plus virtual edit doesn't work well with tabs. + (Liang Li) +Solution: Take coladd into account. (Christian Brabandt) +Files: src/ops.c, src/testdir/test39.in, src/testdir/test39.ok + + +*** ../vim-7.4.209/src/ops.c 2014-02-22 23:03:48.716901208 +0100 +--- src/ops.c 2014-03-19 18:33:54.118153904 +0100 +*************** +*** 2646,2652 **** + if (oap->start.lnum == curbuf->b_op_start_orig.lnum && !bd.is_MAX) + { + if (oap->op_type == OP_INSERT +! && oap->start.col != curbuf->b_op_start_orig.col) + { + oap->start.col = curbuf->b_op_start_orig.col; + pre_textlen -= getviscol2(oap->start.col, oap->start.coladd) +--- 2646,2660 ---- + if (oap->start.lnum == curbuf->b_op_start_orig.lnum && !bd.is_MAX) + { + if (oap->op_type == OP_INSERT +! && oap->start.col +! #ifdef FEAT_VIRTUALEDIT +! + oap->start.coladd +! #endif +! != curbuf->b_op_start_orig.col +! #ifdef FEAT_VIRTUALEDIT +! + curbuf->b_op_start_orig.coladd +! #endif +! ) + { + oap->start.col = curbuf->b_op_start_orig.col; + pre_textlen -= getviscol2(oap->start.col, oap->start.coladd) +*************** +*** 2654,2660 **** + oap->start_vcol = getviscol2(oap->start.col, oap->start.coladd); + } + else if (oap->op_type == OP_APPEND +! && oap->end.col >= curbuf->b_op_start_orig.col) + { + oap->start.col = curbuf->b_op_start_orig.col; + /* reset pre_textlen to the value of OP_INSERT */ +--- 2662,2676 ---- + oap->start_vcol = getviscol2(oap->start.col, oap->start.coladd); + } + else if (oap->op_type == OP_APPEND +! && oap->end.col +! #ifdef FEAT_VIRTUALEDIT +! + oap->end.coladd +! #endif +! >= curbuf->b_op_start_orig.col +! #ifdef FEAT_VIRTUALEDIT +! + curbuf->b_op_start_orig.coladd +! #endif +! ) + { + oap->start.col = curbuf->b_op_start_orig.col; + /* reset pre_textlen to the value of OP_INSERT */ +*** ../vim-7.4.209/src/testdir/test39.in 2014-01-14 13:18:53.000000000 +0100 +--- src/testdir/test39.in 2014-03-19 18:35:31.382155394 +0100 +*************** +*** 35,40 **** +--- 35,46 ---- + /^C23$/ + :exe ":norm! l\<C-V>j$hhAab\<Esc>" + :.,/^$/w >> test.out ++ :" Test for Visual block insert when virtualedit=all ++ :set ve=all ++ :/\t\tline ++ :exe ":norm! 07l\<C-V>jjIx\<Esc>" ++ :set ve= ++ :.,/^$/w >> test.out + :" gUe must uppercase a whole word, also when � changes to SS + Gothe youtu�euu endYpk0wgUe + :" gUfx must uppercase until x, inclusive. +*************** +*** 62,67 **** +--- 68,77 ---- + :qa! + ENDTEST + ++ line1 ++ line2 ++ line3 ++ + aaaaaa + bbbbbb + cccccc +*** ../vim-7.4.209/src/testdir/test39.ok 2014-01-14 13:18:53.000000000 +0100 +--- src/testdir/test39.ok 2014-03-19 18:34:18.206154273 +0100 +*************** +*** 17,22 **** +--- 17,26 ---- + C23ab + 456ab7 + ++ x line1 ++ x line2 ++ x line3 ++ + the YOUTUSSEUU end + - yOUSSTUSSEXu - + THE YOUTUSSEUU END +*** ../vim-7.4.209/src/version.c 2014-03-19 17:41:20.390105580 +0100 +--- src/version.c 2014-03-19 18:27:19.746147861 +0100 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 210, + /**/ + +-- +SUPERIMPOSE "England AD 787". After a few more seconds we hear hoofbeats in +the distance. They come slowly closer. Then out of the mist comes KING +ARTHUR followed by a SERVANT who is banging two half coconuts together. + "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.211 b/SOURCES/7.4.211 new file mode 100644 index 0000000..783855c --- /dev/null +++ b/SOURCES/7.4.211 @@ -0,0 +1,68 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.211 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.211 +Problem: ":lu" is an abbreviation for ":lua", but it should be ":lunmap". + (ZyX) +Solution: Move "lunmap" to above "lua". +Files: src/ex_cmds.h + + +*** ../vim-7.4.210/src/ex_cmds.h 2013-11-09 05:30:18.000000000 +0100 +--- src/ex_cmds.h 2014-03-22 13:28:01.277844383 +0100 +*************** +*** 573,586 **** + RANGE|NOTADR|COUNT|TRLBAR|BANG), + EX(CMD_ltag, "ltag", ex_tag, + NOTADR|TRLBAR|BANG|WORD1), + EX(CMD_lua, "lua", ex_lua, + RANGE|EXTRA|NEEDARG|CMDWIN), + EX(CMD_luado, "luado", ex_luado, + RANGE|DFLALL|EXTRA|NEEDARG|CMDWIN), + EX(CMD_luafile, "luafile", ex_luafile, + RANGE|FILE1|NEEDARG|CMDWIN), +- EX(CMD_lunmap, "lunmap", ex_unmap, +- EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EX(CMD_lvimgrep, "lvimgrep", ex_vimgrep, + RANGE|NOTADR|BANG|NEEDARG|EXTRA|NOTRLCOM|TRLBAR|XFILE), + EX(CMD_lvimgrepadd, "lvimgrepadd", ex_vimgrep, +--- 573,586 ---- + RANGE|NOTADR|COUNT|TRLBAR|BANG), + EX(CMD_ltag, "ltag", ex_tag, + NOTADR|TRLBAR|BANG|WORD1), ++ EX(CMD_lunmap, "lunmap", ex_unmap, ++ EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EX(CMD_lua, "lua", ex_lua, + RANGE|EXTRA|NEEDARG|CMDWIN), + EX(CMD_luado, "luado", ex_luado, + RANGE|DFLALL|EXTRA|NEEDARG|CMDWIN), + EX(CMD_luafile, "luafile", ex_luafile, + RANGE|FILE1|NEEDARG|CMDWIN), + EX(CMD_lvimgrep, "lvimgrep", ex_vimgrep, + RANGE|NOTADR|BANG|NEEDARG|EXTRA|NOTRLCOM|TRLBAR|XFILE), + EX(CMD_lvimgrepadd, "lvimgrepadd", ex_vimgrep, +*** ../vim-7.4.210/src/version.c 2014-03-19 18:57:27.730175565 +0100 +--- src/version.c 2014-03-22 13:28:47.421845090 +0100 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 211, + /**/ + +-- +"I've been teaching myself to play the piano for about 5 years and now write +most of my songs on it, mainly because I can never find any paper." + Jeff Lynne, ELO's greatest hits + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.212 b/SOURCES/7.4.212 new file mode 100644 index 0000000..6bc98eb --- /dev/null +++ b/SOURCES/7.4.212 @@ -0,0 +1,5720 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.212 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.212 (after 7.4.200) +Problem: Now that the +visual feature is always enabled the #ifdefs for it + are not useful. +Solution: Remove the checks for FEAT_VISUAL. +Files: src/buffer.c, src/charset.c, src/edit.c, src/eval.c, + src/ex_cmds.c, src/ex_docmd.c, src/fold.c, src/getchar.c, + src/gui.c, src/gui_mac.c, src/gui_w48.c, src/main.c, src/mark.c, + src/menu.c, src/misc2.c, src/move.c, src/netbeans.c, src/normal.c, + src/ops.c, src/option.c, src/os_msdos.c, src/os_qnx.c, + src/quickfix.c, src/regexp.c, src/regexp_nfa.c, src/screen.c, + src/search.c, src/spell.c, src/syntax.c, src/term.c, src/ui.c, + src/undo.c, src/version.c, src/window.c, src/feature.h, + src/globals.h, src/option.h, src/os_win32.h, src/structs.h + + +*** ../vim-7.4.211/src/buffer.c 2014-03-12 18:55:52.100906804 +0100 +--- src/buffer.c 2014-03-23 13:01:39.843144050 +0100 +*************** +*** 1432,1441 **** + curwin->w_alt_fnum = curbuf->b_fnum; /* remember alternate file */ + buflist_altfpos(curwin); /* remember curpos */ + +- #ifdef FEAT_VISUAL + /* Don't restart Select mode after switching to another buffer. */ + VIsual_reselect = FALSE; +- #endif + + /* close_windows() or apply_autocmds() may change curbuf */ + prevbuf = curbuf; +--- 1432,1439 ---- +*** ../vim-7.4.211/src/charset.c 2013-02-06 16:20:01.000000000 +0100 +--- src/charset.c 2014-03-23 13:02:19.467144657 +0100 +*************** +*** 1380,1389 **** + && (State & NORMAL) + && !wp->w_p_list + && !virtual_active() +! #ifdef FEAT_VISUAL +! && !(VIsual_active +! && (*p_sel == 'e' || ltoreq(*pos, VIsual))) +! #endif + ) + *cursor = vcol + incr - 1; /* cursor at end */ + else +--- 1380,1386 ---- + && (State & NORMAL) + && !wp->w_p_list + && !virtual_active() +! && !(VIsual_active && (*p_sel == 'e' || ltoreq(*pos, VIsual))) + ) + *cursor = vcol + incr - 1; /* cursor at end */ + else +*************** +*** 1463,1469 **** + } + #endif + +- #if defined(FEAT_VISUAL) || defined(PROTO) + /* + * Get the leftmost and rightmost virtual column of pos1 and pos2. + * Used for Visual block mode. +--- 1460,1465 ---- +*************** +*** 1500,1506 **** + else + *right = to1; + } +- #endif + + /* + * skipwhite: skip over ' ' and '\t'. +--- 1496,1501 ---- +*** ../vim-7.4.211/src/edit.c 2014-02-22 23:03:48.712901208 +0100 +--- src/edit.c 2014-03-23 13:03:11.951145462 +0100 +*************** +*** 220,228 **** + #ifdef FEAT_RIGHTLEFT + static void ins_ctrl_ __ARGS((void)); + #endif +- #ifdef FEAT_VISUAL + static int ins_start_select __ARGS((int c)); +- #endif + static void ins_insert __ARGS((int replaceState)); + static void ins_ctrl_o __ARGS((void)); + static void ins_shift __ARGS((int c, int lastc)); +--- 220,226 ---- +*************** +*** 932,938 **** + } + #endif + +- #ifdef FEAT_VISUAL + /* + * If 'keymodel' contains "startsel", may start selection. If it + * does, a CTRL-O and c will be stuffed, we need to get these +--- 930,935 ---- +*************** +*** 940,946 **** + */ + if (ins_start_select(c)) + continue; +- #endif + + /* + * The big switch to handle a character in insert mode. +--- 937,942 ---- +*************** +*** 6900,6906 **** + else if (cc != NUL) + ++curwin->w_cursor.col; /* put cursor back on the NUL */ + +- #ifdef FEAT_VISUAL + /* <C-S-Right> may have started Visual mode, adjust the position for + * deleted characters. */ + if (VIsual_active && VIsual.lnum == curwin->w_cursor.lnum) +--- 6896,6901 ---- +*************** +*** 6910,6921 **** + if (VIsual.col > len) + { + VIsual.col = len; +! # ifdef FEAT_VIRTUALEDIT + VIsual.coladd = 0; +! # endif + } + } +- #endif + } + } + did_ai = FALSE; +--- 6905,6915 ---- + if (VIsual.col > len) + { + VIsual.col = len; +! #ifdef FEAT_VIRTUALEDIT + VIsual.coladd = 0; +! #endif + } + } + } + } + did_ai = FALSE; +*************** +*** 8112,8120 **** + int need_redraw = FALSE; + int regname; + int literally = 0; +- #ifdef FEAT_VISUAL + int vis_active = VIsual_active; +- #endif + + /* + * If we are going to wait for a character, show a '"'. +--- 8106,8112 ---- +*************** +*** 8218,8228 **** + if (need_redraw || stuff_empty()) + edit_unputchar(); + +- #ifdef FEAT_VISUAL + /* Disallow starting Visual mode here, would get a weird mode. */ + if (!vis_active && VIsual_active) + end_visual_mode(); +- #endif + } + + /* +--- 8210,8218 ---- +*************** +*** 8419,8429 **** + #endif + ) + && (restart_edit == NUL +! || (gchar_cursor() == NUL +! #ifdef FEAT_VISUAL +! && !VIsual_active +! #endif +! )) + #ifdef FEAT_RIGHTLEFT + && !revins_on + #endif +--- 8409,8415 ---- + #endif + ) + && (restart_edit == NUL +! || (gchar_cursor() == NUL && !VIsual_active)) + #ifdef FEAT_RIGHTLEFT + && !revins_on + #endif +*************** +*** 8525,8531 **** + } + #endif + +- #ifdef FEAT_VISUAL + /* + * If 'keymodel' contains "startsel", may start selection. + * Returns TRUE when a CTRL-O and other keys stuffed. +--- 8511,8516 ---- +*************** +*** 8581,8587 **** + } + return FALSE; + } +- #endif + + /* + * <Insert> key in Insert mode: toggle insert/replace mode. +--- 8566,8571 ---- +*** ../vim-7.4.211/src/eval.c 2014-02-24 03:31:55.816738026 +0100 +--- src/eval.c 2014-03-23 13:03:56.419146143 +0100 +*************** +*** 11833,11844 **** + { + case MLINE: buf[0] = 'V'; break; + case MCHAR: buf[0] = 'v'; break; +- #ifdef FEAT_VISUAL + case MBLOCK: + buf[0] = Ctrl_V; + sprintf((char *)buf + 1, "%ld", reglen + 1); + break; +- #endif + } + rettv->v_type = VAR_STRING; + rettv->vval.v_string = vim_strsave(buf); +--- 11833,11842 ---- +*************** +*** 12552,12560 **** + #ifdef FEAT_VIRTUALEDIT + "virtualedit", + #endif +- #ifdef FEAT_VISUAL + "visual", +- #endif + #ifdef FEAT_VISUALEXTRA + "visualextra", + #endif +--- 12550,12556 ---- +*************** +*** 14397,14403 **** + buf[1] = NUL; + buf[2] = NUL; + +- #ifdef FEAT_VISUAL + if (VIsual_active) + { + if (VIsual_select) +--- 14393,14398 ---- +*************** +*** 14405,14413 **** + else + buf[0] = VIsual_mode; + } +! else +! #endif +! if (State == HITRETURN || State == ASKMORE || State == SETWSIZE + || State == CONFIRM) + { + buf[0] = 'r'; +--- 14400,14406 ---- + else + buf[0] = VIsual_mode; + } +! else if (State == HITRETURN || State == ASKMORE || State == SETWSIZE + || State == CONFIRM) + { + buf[0] = 'r'; +*************** +*** 16756,16762 **** + case 'V': case 'l': /* line-wise selection */ + yank_type = MLINE; + break; +- #ifdef FEAT_VISUAL + case 'b': case Ctrl_V: /* block-wise selection */ + yank_type = MBLOCK; + if (VIM_ISDIGIT(stropt[1])) +--- 16749,16754 ---- +*************** +*** 16766,16772 **** + --stropt; + } + break; +- #endif + } + } + +--- 16758,16763 ---- +*************** +*** 18769,18775 **** + typval_T *argvars UNUSED; + typval_T *rettv UNUSED; + { +- #ifdef FEAT_VISUAL + char_u str[2]; + + rettv->v_type = VAR_STRING; +--- 18760,18765 ---- +*************** +*** 18780,18786 **** + /* A non-zero number or non-empty string argument: reset mode. */ + if (non_zero_arg(&argvars[0])) + curbuf->b_visual_mode_eval = NUL; +- #endif + } + + /* +--- 18770,18775 ---- +*************** +*** 19154,19167 **** + return NULL; + if (name[0] == '.') /* cursor */ + return &curwin->w_cursor; +- #ifdef FEAT_VISUAL + if (name[0] == 'v' && name[1] == NUL) /* Visual start */ + { + if (VIsual_active) + return &VIsual; + return &curwin->w_cursor; + } +- #endif + if (name[0] == '\'') /* mark */ + { + pp = getmark_buf_fnum(curbuf, name[1], FALSE, fnum); +--- 19143,19154 ---- +*** ../vim-7.4.211/src/ex_cmds.c 2014-03-19 17:41:20.390105580 +0100 +--- src/ex_cmds.c 2014-03-23 13:04:09.359146341 +0100 +*************** +*** 3274,3286 **** + goto theend; + } + +- #ifdef FEAT_VISUAL + /* + * End Visual mode before switching to another buffer, so the text can be + * copied into the GUI selection buffer. + */ + reset_VIsual(); +- #endif + + #ifdef FEAT_AUTOCMD + if ((command != NULL || newlnum > (linenr_T)0) +--- 3274,3284 ---- +*** ../vim-7.4.211/src/ex_docmd.c 2014-03-12 21:28:09.481046816 +0100 +--- src/ex_docmd.c 2014-03-23 13:04:47.975146933 +0100 +*************** +*** 8577,8586 **** + beginline(BL_SOL | BL_FIX); + } + +- #if defined(FEAT_VISUAL) + if (VIsual_active) + end_visual_mode(); +- #endif + + switch (eap->cmdidx) + { +--- 8577,8584 ---- +*************** +*** 8991,9001 **** + RedrawingDisabled = 0; + p_lz = FALSE; + update_topline(); +! update_screen(eap->forceit ? CLEAR : +! #ifdef FEAT_VISUAL +! VIsual_active ? INVERTED : +! #endif +! 0); + #ifdef FEAT_TITLE + if (need_maketitle) + maketitle(); +--- 8989,8995 ---- + RedrawingDisabled = 0; + p_lz = FALSE; + update_topline(); +! update_screen(eap->forceit ? CLEAR : VIsual_active ? INVERTED : 0); + #ifdef FEAT_TITLE + if (need_maketitle) + maketitle(); +*************** +*** 9030,9040 **** + status_redraw_all(); + else + status_redraw_curbuf(); +! update_screen( +! # ifdef FEAT_VISUAL +! VIsual_active ? INVERTED : +! # endif +! 0); + RedrawingDisabled = r; + p_lz = p; + out_flush(); +--- 9024,9030 ---- + status_redraw_all(); + else + status_redraw_curbuf(); +! update_screen(VIsual_active ? INVERTED : 0); + RedrawingDisabled = r; + p_lz = p; + out_flush(); +*** ../vim-7.4.211/src/fold.c 2013-11-05 07:12:59.000000000 +0100 +--- src/fold.c 2014-03-23 13:05:14.775147344 +0100 +*************** +*** 430,440 **** + } + if (done == DONE_NOTHING) + EMSG(_(e_nofold)); +- #ifdef FEAT_VISUAL + /* Force a redraw to remove the Visual highlighting. */ + if (had_visual) + redraw_curbuf_later(INVERTED); +- #endif + } + + /* openFold() {{{2 */ +--- 430,438 ---- +*************** +*** 807,817 **** + if (!did_one) + { + EMSG(_(e_nofold)); +- #ifdef FEAT_VISUAL + /* Force a redraw to remove the Visual highlighting. */ + if (had_visual) + redraw_curbuf_later(INVERTED); +- #endif + } + else + /* Deleting markers may make cursor column invalid. */ +--- 805,813 ---- +*************** +*** 1065,1071 **** + } + + /* foldAdjustVisual() {{{2 */ +- #ifdef FEAT_VISUAL + /* + * Adjust the Visual area to include any fold at the start or end completely. + */ +--- 1061,1066 ---- +*************** +*** 1103,1109 **** + #endif + } + } +- #endif + + /* cursor_foldstart() {{{2 */ + /* +--- 1098,1103 ---- +*** ../vim-7.4.211/src/getchar.c 2014-03-12 20:17:47.748982126 +0100 +--- src/getchar.c 2014-03-23 13:05:45.383147813 +0100 +*************** +*** 870,876 **** + c = read_redo(FALSE, old_redo); + } + +- #ifdef FEAT_VISUAL + if (c == 'v') /* redo Visual */ + { + VIsual = curwin->w_cursor; +--- 870,875 ---- +*************** +*** 880,886 **** + redo_VIsual_busy = TRUE; + c = read_redo(FALSE, old_redo); + } +- #endif + + /* try to enter the count (in place of a previous count) */ + if (count) +--- 879,884 ---- +*************** +*** 1162,1168 **** + return typebuf.tb_maplen == 0; + } + +- #if defined(FEAT_VISUAL) || defined(PROTO) + /* + * Return the number of characters that are mapped (or not typed). + */ +--- 1160,1165 ---- +*************** +*** 1171,1177 **** + { + return typebuf.tb_maplen; + } +- #endif + + /* + * remove "len" characters from typebuf.tb_buf[typebuf.tb_off + offset] +--- 1168,1173 ---- +*************** +*** 2443,2449 **** + idx = get_menu_index(current_menu, local_State); + if (idx != MENU_INDEX_INVALID) + { +- # ifdef FEAT_VISUAL + /* + * In Select mode and a Visual mode menu + * is used: Switch to Visual mode +--- 2439,2444 ---- +*************** +*** 2457,2463 **** + (void)ins_typebuf(K_SELECT_STRING, + REMAP_NONE, 0, TRUE, FALSE); + } +- # endif + ins_typebuf(current_menu->strings[idx], + current_menu->noremap[idx], + 0, TRUE, +--- 2452,2457 ---- +*************** +*** 2516,2522 **** + break; + } + +- #ifdef FEAT_VISUAL + /* + * In Select mode and a Visual mode mapping is used: + * Switch to Visual mode temporarily. Append K_SELECT +--- 2510,2515 ---- +*************** +*** 2529,2535 **** + (void)ins_typebuf(K_SELECT_STRING, REMAP_NONE, + 0, TRUE, FALSE); + } +- #endif + + #ifdef FEAT_EVAL + /* Copy the values from *mp that are used, because +--- 2522,2527 ---- +*** ../vim-7.4.211/src/gui.c 2013-06-30 17:41:48.000000000 +0200 +--- src/gui.c 2014-03-23 13:05:57.623148000 +0100 +*************** +*** 3132,3142 **** + */ + if (!mouse_has(checkfor) || checkfor == MOUSE_COMMAND) + { +- #ifdef FEAT_VISUAL + /* Don't do modeless selection in Visual mode. */ + if (checkfor != MOUSE_NONEF && VIsual_active && (State & NORMAL)) + return; +- #endif + + /* + * When 'mousemodel' is "popup", shift-left is translated to right. +--- 3132,3140 ---- +*** ../vim-7.4.211/src/gui_mac.c 2013-05-06 04:06:04.000000000 +0200 +--- src/gui_mac.c 2014-03-23 13:06:30.143148498 +0100 +*************** +*** 1068,1078 **** + } + */ + +- +- #ifdef FEAT_VISUAL + reset_VIsual(); +- #endif +- + fnames = new_fnames_from_AEDesc(&theList, &numFiles, &error); + + if (error) +--- 1068,1074 ---- +*************** +*** 1142,1148 **** + + /* Update the screen display */ + update_screen(NOT_VALID); +! #ifdef FEAT_VISUAL + /* Select the text if possible */ + if (gotPosition) + { +--- 1138,1144 ---- + + /* Update the screen display */ + update_screen(NOT_VALID); +! + /* Select the text if possible */ + if (gotPosition) + { +*************** +*** 1160,1166 **** + VIsual.col = 0; + } + } +! #endif + setcursor(); + out_flush(); + +--- 1156,1162 ---- + VIsual.col = 0; + } + } +! + setcursor(); + out_flush(); + +*** ../vim-7.4.211/src/gui_w48.c 2014-03-19 12:37:18.537826062 +0100 +--- src/gui_w48.c 2014-03-23 13:06:44.959148725 +0100 +*************** +*** 3708,3716 **** + DragQueryPoint(hDrop, &pt); + MapWindowPoints(s_hwnd, s_textArea, &pt, 1); + +- # ifdef FEAT_VISUAL + reset_VIsual(); +- # endif + + fnames = (char_u **)alloc(cFiles * sizeof(char_u *)); + +--- 3708,3714 ---- +*** ../vim-7.4.211/src/main.c 2014-01-14 12:57:00.000000000 +0100 +--- src/main.c 2014-03-23 13:07:21.771149289 +0100 +*************** +*** 1057,1065 **** + if (!cmdwin && !noexmode && SETJMP(x_jump_env)) + { + State = NORMAL; +- # ifdef FEAT_VISUAL + VIsual_active = FALSE; +- # endif + got_int = TRUE; + need_wait_return = FALSE; + global_busy = FALSE; +--- 1057,1063 ---- +*************** +*** 1096,1106 **** + check_timestamps(FALSE); + if (need_wait_return) /* if wait_return still needed ... */ + wait_return(FALSE); /* ... call it now */ +! if (need_start_insertmode && goto_im() +! #ifdef FEAT_VISUAL +! && !VIsual_active +! #endif +! ) + { + need_start_insertmode = FALSE; + stuffReadbuff((char_u *)"i"); /* start insert mode next */ +--- 1094,1100 ---- + check_timestamps(FALSE); + if (need_wait_return) /* if wait_return still needed ... */ + wait_return(FALSE); /* ... call it now */ +! if (need_start_insertmode && goto_im() && !VIsual_active) + { + need_start_insertmode = FALSE; + stuffReadbuff((char_u *)"i"); /* start insert mode next */ +*************** +*** 1202,1208 **** + diff_need_scrollbind = FALSE; + } + #endif +! #if defined(FEAT_FOLDING) && defined(FEAT_VISUAL) + /* Include a closed fold completely in the Visual area. */ + foldAdjustVisual(); + #endif +--- 1196,1202 ---- + diff_need_scrollbind = FALSE; + } + #endif +! #if defined(FEAT_FOLDING) + /* Include a closed fold completely in the Visual area. */ + foldAdjustVisual(); + #endif +*************** +*** 1228,1239 **** + update_topline(); + validate_cursor(); + +- #ifdef FEAT_VISUAL + if (VIsual_active) + update_curbuf(INVERTED);/* update inverted part */ +! else +! #endif +! if (must_redraw) + update_screen(0); + else if (redraw_cmdline || clear_cmdline) + showmode(); +--- 1222,1230 ---- + update_topline(); + validate_cursor(); + + if (VIsual_active) + update_curbuf(INVERTED);/* update inverted part */ +! else if (must_redraw) + update_screen(0); + else if (redraw_cmdline || clear_cmdline) + showmode(); +*** ../vim-7.4.211/src/mark.c 2013-11-03 00:20:46.000000000 +0100 +--- src/mark.c 2014-03-23 13:08:03.011149921 +0100 +*************** +*** 98,104 **** + return OK; + } + +- #ifdef FEAT_VISUAL + if (c == '<' || c == '>') + { + if (c == '<') +--- 98,103 ---- +*************** +*** 110,116 **** + curbuf->b_visual.vi_mode = 'v'; + return OK; + } +- #endif + + #ifndef EBCDIC + if (c > 'z') /* some islower() and isupper() cannot handle +--- 109,114 ---- +*************** +*** 340,348 **** + int *fnum; + { + pos_T *posp; +- #ifdef FEAT_VISUAL + pos_T *startp, *endp; +- #endif + static pos_T pos_copy; + + posp = NULL; +--- 338,344 ---- +*************** +*** 403,409 **** + curwin->w_cursor = pos; + listcmd_busy = slcb; + } +- #ifdef FEAT_VISUAL + else if (c == '<' || c == '>') /* start/end of visual area */ + { + startp = &buf->b_visual.vi_start; +--- 399,404 ---- +*************** +*** 428,434 **** + #endif + } + } +- #endif + else if (ASCII_ISLOWER(c)) /* normal named mark */ + { + posp = &(buf->b_namedm[c - 'a']); +--- 423,428 ---- +*************** +*** 757,766 **** + show_one_mark(']', arg, &curbuf->b_op_end, NULL, TRUE); + show_one_mark('^', arg, &curbuf->b_last_insert, NULL, TRUE); + show_one_mark('.', arg, &curbuf->b_last_change, NULL, TRUE); +- #ifdef FEAT_VISUAL + show_one_mark('<', arg, &curbuf->b_visual.vi_start, NULL, TRUE); + show_one_mark('>', arg, &curbuf->b_visual.vi_end, NULL, TRUE); +- #endif + show_one_mark(-1, arg, NULL, NULL, FALSE); + } + +--- 751,758 ---- +*************** +*** 892,901 **** + case '.': curbuf->b_last_change.lnum = 0; break; + case '[': curbuf->b_op_start.lnum = 0; break; + case ']': curbuf->b_op_end.lnum = 0; break; +- #ifdef FEAT_VISUAL + case '<': curbuf->b_visual.vi_start.lnum = 0; break; + case '>': curbuf->b_visual.vi_end.lnum = 0; break; +- #endif + case ' ': break; + default: EMSG2(_(e_invarg2), p); + return; +--- 884,891 ---- +*************** +*** 1085,1095 **** + one_adjust_nodel(&(curbuf->b_changelist[i].lnum)); + #endif + +- #ifdef FEAT_VISUAL + /* Visual area */ + one_adjust_nodel(&(curbuf->b_visual.vi_start.lnum)); + one_adjust_nodel(&(curbuf->b_visual.vi_end.lnum)); +- #endif + + #ifdef FEAT_QUICKFIX + /* quickfix marks */ +--- 1075,1083 ---- +*************** +*** 1136,1149 **** + if (win->w_tagstack[i].fmark.fnum == fnum) + one_adjust_nodel(&(win->w_tagstack[i].fmark.mark.lnum)); + +- #ifdef FEAT_VISUAL + /* the displayed Visual area */ + if (win->w_old_cursor_lnum != 0) + { + one_adjust_nodel(&(win->w_old_cursor_lnum)); + one_adjust_nodel(&(win->w_old_visual_lnum)); + } +- #endif + + /* topline and cursor position for windows with the same buffer + * other than the current window */ +--- 1124,1135 ---- +*************** +*** 1260,1270 **** + col_adjust(&(curbuf->b_changelist[i])); + #endif + +- #ifdef FEAT_VISUAL + /* Visual area */ + col_adjust(&(curbuf->b_visual.vi_start)); + col_adjust(&(curbuf->b_visual.vi_end)); +- #endif + + /* previous context mark */ + col_adjust(&(curwin->w_pcmark)); +--- 1246,1254 ---- +*** ../vim-7.4.211/src/menu.c 2011-04-11 15:17:21.000000000 +0200 +--- src/menu.c 2014-03-23 13:08:19.091150168 +0100 +*************** +*** 1640,1646 **** + idx = MENU_INDEX_INSERT; + else if (state & CMDLINE) + idx = MENU_INDEX_CMDLINE; +- #ifdef FEAT_VISUAL + else if (VIsual_active) + { + if (VIsual_select) +--- 1640,1645 ---- +*************** +*** 1648,1654 **** + else + idx = MENU_INDEX_VISUAL; + } +- #endif + else if (state == HITRETURN || state == ASKMORE) + idx = MENU_INDEX_CMDLINE; + else if (finish_op) +--- 1647,1652 ---- +*************** +*** 1811,1824 **** + static int + get_menu_mode() + { +- #ifdef FEAT_VISUAL + if (VIsual_active) + { + if (VIsual_select) + return MENU_INDEX_SELECT; + return MENU_INDEX_VISUAL; + } +- #endif + if (State & INSERT) + return MENU_INDEX_INSERT; + if ((State & CMDLINE) || State == ASKMORE || State == HITRETURN) +--- 1809,1820 ---- +*** ../vim-7.4.211/src/misc2.c 2014-02-23 23:38:58.824760280 +0100 +--- src/misc2.c 2014-03-23 13:08:56.927150748 +0100 +*************** +*** 31,39 **** + if (virtual_op != MAYBE) + return virtual_op; + return (ve_flags == VE_ALL +- # ifdef FEAT_VISUAL + || ((ve_flags & VE_BLOCK) && VIsual_active && VIsual_mode == Ctrl_V) +- # endif + || ((ve_flags & VE_INSERT) && (State & INSERT))); + } + +--- 31,37 ---- +*************** +*** 149,157 **** + + one_more = (State & INSERT) + || restart_edit != NUL +- #ifdef FEAT_VISUAL + || (VIsual_active && *p_sel != 'o') +- #endif + #ifdef FEAT_VIRTUALEDIT + || ((ve_flags & VE_ONEMORE) && wcol < MAXCOL) + #endif +--- 147,153 ---- +*************** +*** 570,578 **** + * - in Visual mode and 'selection' isn't "old" + * - 'virtualedit' is set */ + if ((State & INSERT) || restart_edit +- #ifdef FEAT_VISUAL + || (VIsual_active && *p_sel != 'o') +- #endif + #ifdef FEAT_VIRTUALEDIT + || (ve_flags & VE_ONEMORE) + #endif +--- 566,572 ---- +*************** +*** 627,635 **** + adjust_cursor_col() + { + if (curwin->w_cursor.col > 0 +- # ifdef FEAT_VISUAL + && (!VIsual_active || *p_sel == 'o') +- # endif + && gchar_cursor() == NUL) + --curwin->w_cursor.col; + } +--- 621,627 ---- +*************** +*** 3290,3306 **** + { + if (State & NORMAL) + { +- #ifdef FEAT_VISUAL + if (VIsual_active) + { + if (VIsual_select) + return SELECTMODE; + return VISUAL; + } +! else +! #endif +! if (finish_op) +! return OP_PENDING; + } + return State; + } +--- 3282,3295 ---- + { + if (State & NORMAL) + { + if (VIsual_active) + { + if (VIsual_select) + return SELECTMODE; + return VISUAL; + } +! else if (finish_op) +! return OP_PENDING; + } + return State; + } +*************** +*** 3738,3744 **** + } + if (finish_op) + return SHAPE_IDX_O; +- #ifdef FEAT_VISUAL + if (VIsual_active) + { + if (*p_sel == 'e') +--- 3727,3732 ---- +*************** +*** 3746,3752 **** + else + return SHAPE_IDX_V; + } +- #endif + return SHAPE_IDX_N; + } + #endif +--- 3734,3739 ---- +*** ../vim-7.4.211/src/move.c 2014-02-11 18:58:05.102320947 +0100 +--- src/move.c 2014-03-23 13:09:16.535151048 +0100 +*************** +*** 2857,2873 **** + win_T *old_curwin = curwin; + buf_T *old_curbuf = curbuf; + int restart_edit_save; +- # ifdef FEAT_VISUAL + int old_VIsual_select = VIsual_select; + int old_VIsual_active = VIsual_active; +- # endif + + /* + * loop through the cursorbound windows + */ +- # ifdef FEAT_VISUAL + VIsual_select = VIsual_active = 0; +- # endif + for (curwin = firstwin; curwin; curwin = curwin->w_next) + { + curbuf = curwin->w_buffer; +--- 2857,2869 ---- +*************** +*** 2916,2925 **** + /* + * reset current-window + */ +- # ifdef FEAT_VISUAL + VIsual_select = old_VIsual_select; + VIsual_active = old_VIsual_active; +- # endif + curwin = old_curwin; + curbuf = old_curbuf; + } +--- 2912,2919 ---- +*** ../vim-7.4.211/src/netbeans.c 2012-06-20 19:56:18.000000000 +0200 +--- src/netbeans.c 2014-03-23 13:09:29.163151241 +0100 +*************** +*** 2232,2242 **** + + nb_set_curbuf(buf->bufp); + +- #ifdef FEAT_VISUAL + /* Don't want Visual mode now. */ + if (VIsual_active) + end_visual_mode(); +- #endif + #ifdef NBDEBUG + s = args; + #endif +--- 2232,2240 ---- +*** ../vim-7.4.211/src/normal.c 2014-03-12 17:41:59.128838878 +0100 +--- src/normal.c 2014-03-23 15:07:40.435259900 +0100 +*************** +*** 14,20 **** + + #include "vim.h" + +- #ifdef FEAT_VISUAL + /* + * The Visual area is remembered for reselection. + */ +--- 14,19 ---- +*************** +*** 24,30 **** + static int VIsual_mode_orig = NUL; /* saved Visual mode */ + + static int restart_VIsual_select = 0; +- #endif + + #ifdef FEAT_EVAL + static void set_vcount_ca __ARGS((cmdarg_T *cap, int *set_prevcount)); +--- 23,28 ---- +*************** +*** 37,43 **** + static int find_command __ARGS((int cmdchar)); + static void op_colon __ARGS((oparg_T *oap)); + static void op_function __ARGS((oparg_T *oap)); +! #if defined(FEAT_MOUSE) && defined(FEAT_VISUAL) + static void find_start_of_word __ARGS((pos_T *)); + static void find_end_of_word __ARGS((pos_T *)); + static int get_mouse_class __ARGS((char_u *p)); +--- 35,41 ---- + static int find_command __ARGS((int cmdchar)); + static void op_colon __ARGS((oparg_T *oap)); + static void op_function __ARGS((oparg_T *oap)); +! #if defined(FEAT_MOUSE) + static void find_start_of_word __ARGS((pos_T *)); + static void find_end_of_word __ARGS((pos_T *)); + static int get_mouse_class __ARGS((char_u *p)); +*************** +*** 48,56 **** + static int checkclearopq __ARGS((oparg_T *oap)); + static void clearop __ARGS((oparg_T *oap)); + static void clearopbeep __ARGS((oparg_T *oap)); +- #ifdef FEAT_VISUAL + static void unshift_special __ARGS((cmdarg_T *cap)); +- #endif + #ifdef FEAT_CMDL_INFO + static void del_from_showcmd __ARGS((int)); + #endif +--- 46,52 ---- +*************** +*** 117,141 **** + #ifdef FEAT_VREPLACE + static void nv_vreplace __ARGS((cmdarg_T *cap)); + #endif +- #ifdef FEAT_VISUAL + static void v_swap_corners __ARGS((int cmdchar)); +- #endif + static void nv_replace __ARGS((cmdarg_T *cap)); + static void n_swapchar __ARGS((cmdarg_T *cap)); + static void nv_cursormark __ARGS((cmdarg_T *cap, int flag, pos_T *pos)); +- #ifdef FEAT_VISUAL + static void v_visop __ARGS((cmdarg_T *cap)); +- #endif + static void nv_subst __ARGS((cmdarg_T *cap)); + static void nv_abbrev __ARGS((cmdarg_T *cap)); + static void nv_optrans __ARGS((cmdarg_T *cap)); + static void nv_gomark __ARGS((cmdarg_T *cap)); + static void nv_pcmark __ARGS((cmdarg_T *cap)); + static void nv_regname __ARGS((cmdarg_T *cap)); +- #ifdef FEAT_VISUAL + static void nv_visual __ARGS((cmdarg_T *cap)); + static void n_start_visual_mode __ARGS((int c)); +- #endif + static void nv_window __ARGS((cmdarg_T *cap)); + static void nv_suspend __ARGS((cmdarg_T *cap)); + static void nv_g_cmd __ARGS((cmdarg_T *cap)); +--- 113,131 ---- +*************** +*** 155,165 **** + static void nv_wordcmd __ARGS((cmdarg_T *cap)); + static void nv_beginline __ARGS((cmdarg_T *cap)); + static void adjust_cursor __ARGS((oparg_T *oap)); +- #ifdef FEAT_VISUAL + static void adjust_for_sel __ARGS((cmdarg_T *cap)); + static int unadjust_for_sel __ARGS((void)); + static void nv_select __ARGS((cmdarg_T *cap)); +- #endif + static void nv_goto __ARGS((cmdarg_T *cap)); + static void nv_normal __ARGS((cmdarg_T *cap)); + static void nv_esc __ARGS((cmdarg_T *oap)); +--- 145,153 ---- +*************** +*** 248,271 **** + {Ctrl_N, nv_down, NV_STS, FALSE}, + {Ctrl_O, nv_ctrlo, 0, 0}, + {Ctrl_P, nv_up, NV_STS, FALSE}, +- #ifdef FEAT_VISUAL + {Ctrl_Q, nv_visual, 0, FALSE}, +- #else +- {Ctrl_Q, nv_ignore, 0, 0}, +- #endif + {Ctrl_R, nv_redo, 0, 0}, + {Ctrl_S, nv_ignore, 0, 0}, + {Ctrl_T, nv_tagpop, NV_NCW, 0}, + {Ctrl_U, nv_halfpage, 0, 0}, +- #ifdef FEAT_VISUAL + {Ctrl_V, nv_visual, 0, FALSE}, + {'V', nv_visual, 0, FALSE}, + {'v', nv_visual, 0, FALSE}, +- #else +- {Ctrl_V, nv_error, 0, 0}, +- {'V', nv_error, 0, 0}, +- {'v', nv_error, 0, 0}, +- #endif + {Ctrl_W, nv_window, 0, 0}, + {Ctrl_X, nv_addsub, 0, 0}, + {Ctrl_Y, nv_scroll_line, 0, FALSE}, +--- 236,249 ---- +*************** +*** 427,435 **** + {K_HELP, nv_help, NV_NCW, 0}, + {K_F1, nv_help, NV_NCW, 0}, + {K_XF1, nv_help, NV_NCW, 0}, +- #ifdef FEAT_VISUAL + {K_SELECT, nv_select, 0, 0}, +- #endif + #ifdef FEAT_GUI + {K_VER_SCROLLBAR, nv_ver_scrollbar, 0, 0}, + {K_HOR_SCROLLBAR, nv_hor_scrollbar, 0, 0}, +--- 405,411 ---- +*************** +*** 579,589 **** + #ifdef FEAT_CMDL_INFO + int need_flushbuf; /* need to call out_flush() */ + #endif +- #ifdef FEAT_VISUAL + pos_T old_pos; /* cursor position before command */ + int mapped_len; + static int old_mapped_len = 0; +- #endif + int idx; + #ifdef FEAT_EVAL + int set_prevcount = FALSE; +--- 555,563 ---- +*************** +*** 643,651 **** + } + #endif + +- #ifdef FEAT_VISUAL + mapped_len = typebuf_maplen(); +- #endif + + State = NORMAL_BUSY; + #ifdef USE_ON_FLY_SCROLL +--- 617,623 ---- +*************** +*** 666,672 **** + c = safe_vgetc(); + LANGMAP_ADJUST(c, TRUE); + +- #ifdef FEAT_VISUAL + /* + * If a mapping was started in Visual or Select mode, remember the length + * of the mapping. This is used below to not return to Insert mode for as +--- 638,643 ---- +*************** +*** 677,688 **** + else if (old_mapped_len + || (VIsual_active && mapped_len == 0 && typebuf_maplen() > 0)) + old_mapped_len = typebuf_maplen(); +- #endif + + if (c == NUL) + c = K_ZERO; + +- #ifdef FEAT_VISUAL + /* + * In Select mode, typed text replaces the selection. + */ +--- 648,657 ---- +*************** +*** 703,718 **** + msg_nowait = TRUE; /* don't delay going to insert mode */ + old_mapped_len = 0; /* do go to Insert mode */ + } +- #endif + + #ifdef FEAT_CMDL_INFO + need_flushbuf = add_to_showcmd(c); + #endif + + getcount: +- #ifdef FEAT_VISUAL + if (!(VIsual_active && VIsual_select)) +- #endif + { + /* + * Handle a count before a command and compute ca.count0. +--- 672,684 ---- +*************** +*** 856,862 **** + goto normal_end; + #endif + +- #ifdef FEAT_VISUAL + /* + * In Visual/Select mode, a few keys are handled in a special way. + */ +--- 822,827 ---- +*************** +*** 892,898 **** + } + } + } +- #endif + + #ifdef FEAT_RIGHTLEFT + if (curwin->w_p_rl && KeyTyped && !KeyStuffed +--- 857,862 ---- +*************** +*** 930,940 **** + && !Recording + && !Exec_reg) + || ((ca.cmdchar == 'a' || ca.cmdchar == 'i') +! && (oap->op_type != OP_NOP +! #ifdef FEAT_VISUAL +! || VIsual_active +! #endif +! )))) + { + int *cp; + int repl = FALSE; /* get character for replace mode */ +--- 894,900 ---- + && !Recording + && !Exec_reg) + || ((ca.cmdchar == 'a' || ca.cmdchar == 'i') +! && (oap->op_type != OP_NOP || VIsual_active)))) + { + int *cp; + int repl = FALSE; /* get character for replace mode */ +*************** +*** 1168,1174 **** + msg_col = 0; + } + +- #ifdef FEAT_VISUAL + old_pos = curwin->w_cursor; /* remember where cursor was */ + + /* When 'keymodel' contains "startsel" some keys start Select/Visual +--- 1128,1133 ---- +*************** +*** 1188,1194 **** + mod_mask &= ~MOD_MASK_SHIFT; + } + } +- #endif + + /* + * Execute the command! +--- 1147,1152 ---- +*************** +*** 1220,1231 **** + #endif + } + +- #ifdef FEAT_VISUAL + /* Get the length of mapped chars again after typing a count, second + * character or "z333<cr>". */ + if (old_mapped_len > 0) + old_mapped_len = typebuf_maplen(); +- #endif + + /* + * If an operation is pending, handle it... +--- 1178,1187 ---- +*************** +*** 1247,1257 **** + if ( ((p_smd + && msg_silent == 0 + && (restart_edit != 0 +- #ifdef FEAT_VISUAL + || (VIsual_active + && old_pos.lnum == curwin->w_cursor.lnum + && old_pos.col == curwin->w_cursor.col) +- #endif + ) + && (clear_cmdline + || redraw_cmdline) +--- 1203,1211 ---- +*************** +*** 1259,1267 **** + && !msg_nowait + && KeyTyped) + || (restart_edit != 0 +- #ifdef FEAT_VISUAL + && !VIsual_active +- #endif + && (msg_scroll + || emsg_on_display))) + && oap->regname == 0 +--- 1213,1219 ---- +*************** +*** 1368,1403 **** + * May switch from Visual to Select mode after CTRL-O command. + */ + if ( oap->op_type == OP_NOP +- #ifdef FEAT_VISUAL + && ((restart_edit != 0 && !VIsual_active && old_mapped_len == 0) + || restart_VIsual_select == 1) +- #else +- && restart_edit != 0 +- #endif + && !(ca.retval & CA_COMMAND_BUSY) + && stuff_empty() + && oap->regname == 0) + { +- #ifdef FEAT_VISUAL + if (restart_VIsual_select == 1) + { + VIsual_select = TRUE; + showmode(); + restart_VIsual_select = 0; + } +! #endif +! if (restart_edit != 0 +! #ifdef FEAT_VISUAL +! && !VIsual_active && old_mapped_len == 0 +! #endif +! ) + (void)edit(restart_edit, FALSE, 1L); + } + +- #ifdef FEAT_VISUAL + if (restart_VIsual_select == 2) + restart_VIsual_select = 1; +- #endif + + /* Save count before an operator for next time. */ + opcount = ca.opcount; +--- 1320,1343 ---- + * May switch from Visual to Select mode after CTRL-O command. + */ + if ( oap->op_type == OP_NOP + && ((restart_edit != 0 && !VIsual_active && old_mapped_len == 0) + || restart_VIsual_select == 1) + && !(ca.retval & CA_COMMAND_BUSY) + && stuff_empty() + && oap->regname == 0) + { + if (restart_VIsual_select == 1) + { + VIsual_select = TRUE; + showmode(); + restart_VIsual_select = 0; + } +! if (restart_edit != 0 && !VIsual_active && old_mapped_len == 0) + (void)edit(restart_edit, FALSE, 1L); + } + + if (restart_VIsual_select == 2) + restart_VIsual_select = 1; + + /* Save count before an operator for next time. */ + opcount = ca.opcount; +*************** +*** 1437,1451 **** + int empty_region_error; + int restart_edit_save; + +- #ifdef FEAT_VISUAL + /* The visual area is remembered for redo */ + static int redo_VIsual_mode = NUL; /* 'v', 'V', or Ctrl-V */ + static linenr_T redo_VIsual_line_count; /* number of lines */ + static colnr_T redo_VIsual_vcol; /* number of cols or end column */ + static long redo_VIsual_count; /* count for Visual operator */ +! # ifdef FEAT_VIRTUALEDIT + int include_line_break = FALSE; +- # endif + #endif + + #if defined(FEAT_CLIPBOARD) +--- 1377,1389 ---- + int empty_region_error; + int restart_edit_save; + + /* The visual area is remembered for redo */ + static int redo_VIsual_mode = NUL; /* 'v', 'V', or Ctrl-V */ + static linenr_T redo_VIsual_line_count; /* number of lines */ + static colnr_T redo_VIsual_vcol; /* number of cols or end column */ + static long redo_VIsual_count; /* count for Visual operator */ +! #ifdef FEAT_VIRTUALEDIT + int include_line_break = FALSE; + #endif + + #if defined(FEAT_CLIPBOARD) +*************** +*** 1459,1468 **** + if ((clip_star.available || clip_plus.available) + && oap->op_type != OP_NOP + && !gui_yank +- # ifdef FEAT_VISUAL + && VIsual_active + && !redo_VIsual_busy +- # endif + && oap->regname == 0) + clip_auto_select(); + #endif +--- 1397,1404 ---- +*************** +*** 1471,1483 **** + /* + * If an operation is pending, handle it... + */ +! if ((finish_op +! #ifdef FEAT_VISUAL +! || VIsual_active +! #endif +! ) && oap->op_type != OP_NOP) + { +- #ifdef FEAT_VISUAL + oap->is_VIsual = VIsual_active; + if (oap->motion_force == 'V') + oap->motion_type = MLINE; +--- 1407,1414 ---- + /* + * If an operation is pending, handle it... + */ +! if ((finish_op || VIsual_active) && oap->op_type != OP_NOP) + { + oap->is_VIsual = VIsual_active; + if (oap->motion_force == 'V') + oap->motion_type = MLINE; +*************** +*** 1501,1517 **** + VIsual_select = FALSE; + VIsual_reselect = FALSE; + } +- #endif + + /* Only redo yank when 'y' flag is in 'cpoptions'. */ + /* Never redo "zf" (define fold). */ + if ((vim_strchr(p_cpo, CPO_YANK) != NULL || oap->op_type != OP_YANK) +- #ifdef FEAT_VISUAL + && ((!VIsual_active || oap->motion_force) + /* Also redo Operator-pending Visual mode mappings */ + || (VIsual_active && cap->cmdchar == ':' + && oap->op_type != OP_COLON)) +- #endif + && cap->cmdchar != 'D' + #ifdef FEAT_FOLDING + && oap->op_type != OP_FOLD +--- 1432,1445 ---- +*************** +*** 1554,1560 **** + } + } + +- #ifdef FEAT_VISUAL + if (redo_VIsual_busy) + { + /* Redo of an operation on a Visual area. Use the same size from +--- 1482,1487 ---- +*************** +*** 1639,1645 **** + if (VIsual_mode == 'V') + oap->start.col = 0; + } +- #endif /* FEAT_VISUAL */ + + /* + * Set oap->start to the first position of the operated text, oap->end +--- 1566,1571 ---- +*************** +*** 1690,1696 **** + virtual_op = virtual_active(); + #endif + +- #ifdef FEAT_VISUAL + if (VIsual_active || redo_VIsual_busy) + { + if (VIsual_mode == Ctrl_V) /* block mode */ +--- 1616,1621 ---- +*************** +*** 1826,1834 **** + { + oap->motion_type = MCHAR; + if (VIsual_mode != Ctrl_V && *ml_get_pos(&(oap->end)) == NUL +! # ifdef FEAT_VIRTUALEDIT + && (include_line_break || !virtual_op) +! # endif + ) + { + oap->inclusive = FALSE; +--- 1751,1759 ---- + { + oap->motion_type = MCHAR; + if (VIsual_mode != Ctrl_V && *ml_get_pos(&(oap->end)) == NUL +! #ifdef FEAT_VIRTUALEDIT + && (include_line_break || !virtual_op) +! #endif + ) + { + oap->inclusive = FALSE; +*************** +*** 1840,1848 **** + { + ++oap->end.lnum; + oap->end.col = 0; +! # ifdef FEAT_VIRTUALEDIT + oap->end.coladd = 0; +! # endif + ++oap->line_count; + } + else +--- 1765,1773 ---- + { + ++oap->end.lnum; + oap->end.col = 0; +! #ifdef FEAT_VIRTUALEDIT + oap->end.coladd = 0; +! #endif + ++oap->line_count; + } + else +*************** +*** 1868,1877 **** + if (!gui_yank) + { + VIsual_active = FALSE; +! # ifdef FEAT_MOUSE + setmouse(); + mouse_dragging = 0; +! # endif + if (mode_displayed) + clear_cmdline = TRUE; /* unshow visual mode later */ + #ifdef FEAT_CMDL_INFO +--- 1793,1802 ---- + if (!gui_yank) + { + VIsual_active = FALSE; +! #ifdef FEAT_MOUSE + setmouse(); + mouse_dragging = 0; +! #endif + if (mode_displayed) + clear_cmdline = TRUE; /* unshow visual mode later */ + #ifdef FEAT_CMDL_INFO +*************** +*** 1886,1892 **** + redraw_curbuf_later(INVERTED); + } + } +- #endif + + #ifdef FEAT_MBYTE + /* Include the trailing byte of a multi-byte char. */ +--- 1811,1816 ---- +*************** +*** 1921,1936 **** + empty_region_error = (oap->empty + && vim_strchr(p_cpo, CPO_EMPTYREGION) != NULL); + +- #ifdef FEAT_VISUAL + /* Force a redraw when operating on an empty Visual region, when + * 'modifiable is off or creating a fold. */ + if (oap->is_VIsual && (oap->empty || !curbuf->b_p_ma +! # ifdef FEAT_FOLDING + || oap->op_type == OP_FOLD +! # endif + )) + redraw_curbuf_later(INVERTED); +- #endif + + /* + * If the end of an operator is in column one while oap->motion_type +--- 1845,1858 ---- + empty_region_error = (oap->empty + && vim_strchr(p_cpo, CPO_EMPTYREGION) != NULL); + + /* Force a redraw when operating on an empty Visual region, when + * 'modifiable is off or creating a fold. */ + if (oap->is_VIsual && (oap->empty || !curbuf->b_p_ma +! #ifdef FEAT_FOLDING + || oap->op_type == OP_FOLD +! #endif + )) + redraw_curbuf_later(INVERTED); + + /* + * If the end of an operator is in column one while oap->motion_type +*************** +*** 1943,1952 **** + && oap->inclusive == FALSE + && !(cap->retval & CA_NO_ADJ_OP_END) + && oap->end.col == 0 +- #ifdef FEAT_VISUAL + && (!oap->is_VIsual || *p_sel == 'o') + && !oap->block_mode +- #endif + && oap->line_count > 1) + { + oap->end_adjusted = TRUE; /* remember that we did this */ +--- 1865,1872 ---- +*************** +*** 1971,1981 **** + { + case OP_LSHIFT: + case OP_RSHIFT: +! op_shift(oap, TRUE, +! #ifdef FEAT_VISUAL +! oap->is_VIsual ? (int)cap->count1 : +! #endif +! 1); + auto_format(FALSE, TRUE); + break; + +--- 1891,1897 ---- + { + case OP_LSHIFT: + case OP_RSHIFT: +! op_shift(oap, TRUE, oap->is_VIsual ? (int)cap->count1 : 1); + auto_format(FALSE, TRUE); + break; + +*************** +*** 1988,2002 **** + beep_flush(); + else + { +! (void)do_join(oap->line_count, oap->op_type == OP_JOIN, TRUE, TRUE); + auto_format(FALSE, TRUE); + } + break; + + case OP_DELETE: +- #ifdef FEAT_VISUAL + VIsual_reselect = FALSE; /* don't reselect now */ +- #endif + if (empty_region_error) + { + vim_beep(); +--- 1904,1917 ---- + beep_flush(); + else + { +! (void)do_join(oap->line_count, oap->op_type == OP_JOIN, +! TRUE, TRUE); + auto_format(FALSE, TRUE); + } + break; + + case OP_DELETE: + VIsual_reselect = FALSE; /* don't reselect now */ + if (empty_region_error) + { + vim_beep(); +*************** +*** 2026,2034 **** + break; + + case OP_CHANGE: +- #ifdef FEAT_VISUAL + VIsual_reselect = FALSE; /* don't reselect now */ +- #endif + if (empty_region_error) + { + vim_beep(); +--- 1941,1947 ---- +*************** +*** 2126,2134 **** + + case OP_INSERT: + case OP_APPEND: +- #ifdef FEAT_VISUAL + VIsual_reselect = FALSE; /* don't reselect now */ +- #endif + #ifdef FEAT_VISUALEXTRA + if (empty_region_error) + { +--- 2039,2045 ---- +*************** +*** 2158,2166 **** + break; + + case OP_REPLACE: +- #ifdef FEAT_VISUAL + VIsual_reselect = FALSE; /* don't reselect now */ +- #endif + #ifdef FEAT_VISUALEXTRA + if (empty_region_error) + #endif +--- 2069,2075 ---- +*************** +*** 2220,2228 **** + { + curwin->w_cursor = old_cursor; + } +- #ifdef FEAT_VISUAL + oap->block_mode = FALSE; +- #endif + clearop(oap); + } + } +--- 2129,2135 ---- +*************** +*** 2235,2245 **** + oparg_T *oap; + { + stuffcharReadbuff(':'); +- #ifdef FEAT_VISUAL + if (oap->is_VIsual) + stuffReadbuff((char_u *)"'<,'>"); + else +- #endif + { + /* + * Make the range look nice, so it can be repeated. +--- 2142,2150 ---- +*************** +*** 2404,2417 **** + pos_T save_cursor; + #endif + win_T *old_curwin = curwin; +- #ifdef FEAT_VISUAL + static pos_T orig_cursor; + colnr_T leftcol, rightcol; + pos_T end_visual; + int diff; + int old_active = VIsual_active; + int old_mode = VIsual_mode; +- #endif + int regname; + + #if defined(FEAT_FOLDING) +--- 2309,2320 ---- +*************** +*** 2432,2446 **** + if (!gui.in_use) + #endif + { +- #ifdef FEAT_VISUAL + if (VIsual_active) + { + if (!mouse_has(MOUSE_VISUAL)) + return FALSE; + } +! else +! #endif +! if (State == NORMAL && !mouse_has(MOUSE_NORMAL)) + return FALSE; + } + +--- 2335,2346 ---- + if (!gui.in_use) + #endif + { + if (VIsual_active) + { + if (!mouse_has(MOUSE_VISUAL)) + return FALSE; + } +! else if (State == NORMAL && !mouse_has(MOUSE_NORMAL)) + return FALSE; + } + +*************** +*** 2509,2522 **** + } + } + +- #ifndef FEAT_VISUAL +- /* +- * ALT is only used for starting/extending Visual mode. +- */ +- if ((mod_mask & MOD_MASK_ALT)) +- return FALSE; +- #endif +- + /* + * CTRL right mouse button does CTRL-T + */ +--- 2409,2414 ---- +*************** +*** 2586,2592 **** + return FALSE; + } + +- #ifdef FEAT_VISUAL + /* + * If visual was active, yank the highlighted text and put it + * before the mouse pointer position. +--- 2478,2483 ---- +*************** +*** 2607,2613 **** + do_always = TRUE; /* ignore 'mouse' setting next time */ + return FALSE; + } +- #endif + /* + * The rest is below jump_to_mouse() + */ +--- 2498,2503 ---- +*************** +*** 2761,2767 **** + { + /* First set the cursor position before showing the popup + * menu. */ +- #ifdef FEAT_VISUAL + if (VIsual_active) + { + pos_T m_pos; +--- 2651,2656 ---- +*************** +*** 2800,2815 **** + } + else + jump_flags = MOUSE_MAY_STOP_VIS; +- #endif + } + if (jump_flags) + { + jump_flags = jump_to_mouse(jump_flags, NULL, which_button); +! update_curbuf( +! #ifdef FEAT_VISUAL +! VIsual_active ? INVERTED : +! #endif +! VALID); + setcursor(); + out_flush(); /* Update before showing popup menu */ + } +--- 2689,2699 ---- + } + else + jump_flags = MOUSE_MAY_STOP_VIS; + } + if (jump_flags) + { + jump_flags = jump_to_mouse(jump_flags, NULL, which_button); +! update_curbuf(VIsual_active ? INVERTED : VALID); + setcursor(); + out_flush(); /* Update before showing popup menu */ + } +*************** +*** 2832,2838 **** + } + } + +- #ifdef FEAT_VISUAL + if ((State & (NORMAL | INSERT)) + && !(mod_mask & (MOD_MASK_SHIFT | MOD_MASK_CTRL))) + { +--- 2716,2721 ---- +*************** +*** 2872,2878 **** + jump_flags |= MOUSE_MAY_VIS; + } + } +- #endif + + /* + * If an operator is pending, ignore all drags and releases until the +--- 2755,2760 ---- +*************** +*** 2941,2947 **** + } + #endif + +- #ifdef FEAT_VISUAL + /* Set global flag that we are extending the Visual area with mouse + * dragging; temporarily minimize 'scrolloff'. */ + if (VIsual_active && is_drag && p_so) +--- 2823,2828 ---- +*************** +*** 3040,3046 **** + */ + else if ((State & INSERT) && VIsual_active) + stuffcharReadbuff(Ctrl_O); +- #endif + + /* + * Middle mouse click: Put text before cursor. +--- 2921,2926 ---- +*************** +*** 3118,3128 **** + */ + else if ((mod_mask & MOD_MASK_SHIFT)) + { +! if (State & INSERT +! #ifdef FEAT_VISUAL +! || (VIsual_active && VIsual_select) +! #endif +! ) + stuffcharReadbuff(Ctrl_O); + if (which_button == MOUSE_LEFT) + stuffcharReadbuff('*'); +--- 2998,3004 ---- + */ + else if ((mod_mask & MOD_MASK_SHIFT)) + { +! if ((State & INSERT) || (VIsual_active && VIsual_select)) + stuffcharReadbuff(Ctrl_O); + if (which_button == MOUSE_LEFT) + stuffcharReadbuff('*'); +*************** +*** 3153,3159 **** + # endif + } + #endif +- #ifdef FEAT_VISUAL + else if ((mod_mask & MOD_MASK_MULTI_CLICK) && (State & (NORMAL | INSERT)) + && mouse_has(MOUSE_VISUAL)) + { +--- 3029,3034 ---- +*************** +*** 3267,3278 **** + || (VIsual_active && p_smd && msg_silent == 0 + && (!old_active || VIsual_mode != old_mode))) + redraw_cmdline = TRUE; +- #endif + + return moved; + } + +- #ifdef FEAT_VISUAL + /* + * Move "pos" back to the start of the word it's in. + */ +--- 3142,3151 ---- +*************** +*** 3372,3381 **** + return 1; + return c; + } +- #endif /* FEAT_VISUAL */ + #endif /* FEAT_MOUSE */ + +- #if defined(FEAT_VISUAL) || defined(PROTO) + /* + * Check if highlighting for visual mode is possible, give a warning message + * if not. +--- 3245,3252 ---- +*************** +*** 3468,3474 **** + VIsual_reselect = FALSE; + } + } +- #endif /* FEAT_VISUAL */ + + #if defined(FEAT_BEVAL) + static int find_is_eval_item __ARGS((char_u *ptr, int *colp, int *nbp, int dir)); +--- 3339,3344 ---- +*************** +*** 3802,3812 **** + checkclearopq(oap) + oparg_T *oap; + { +! if (oap->op_type == OP_NOP +! #ifdef FEAT_VISUAL +! && !VIsual_active +! #endif +! ) + return FALSE; + clearopbeep(oap); + return TRUE; +--- 3672,3678 ---- + checkclearopq(oap) + oparg_T *oap; + { +! if (oap->op_type == OP_NOP && !VIsual_active) + return FALSE; + clearopbeep(oap); + return TRUE; +*************** +*** 3830,3836 **** + beep_flush(); + } + +- #ifdef FEAT_VISUAL + /* + * Remove the shift modifier from a special key. + */ +--- 3696,3701 ---- +*************** +*** 3849,3866 **** + } + cap->cmdchar = simplify_key(cap->cmdchar, &mod_mask); + } +- #endif + + #if defined(FEAT_CMDL_INFO) || defined(PROTO) + /* + * Routines for displaying a partly typed command + */ + +! #ifdef FEAT_VISUAL /* need room for size of Visual area */ +! # define SHOWCMD_BUFLEN SHOWCMD_COLS + 1 + 30 +! #else +! # define SHOWCMD_BUFLEN SHOWCMD_COLS + 1 +! #endif + static char_u showcmd_buf[SHOWCMD_BUFLEN]; + static char_u old_showcmd_buf[SHOWCMD_BUFLEN]; /* For push_showcmd() */ + static int showcmd_is_clear = TRUE; +--- 3714,3726 ---- + } + cap->cmdchar = simplify_key(cap->cmdchar, &mod_mask); + } + + #if defined(FEAT_CMDL_INFO) || defined(PROTO) + /* + * Routines for displaying a partly typed command + */ + +! #define SHOWCMD_BUFLEN SHOWCMD_COLS + 1 + 30 + static char_u showcmd_buf[SHOWCMD_BUFLEN]; + static char_u old_showcmd_buf[SHOWCMD_BUFLEN]; /* For push_showcmd() */ + static int showcmd_is_clear = TRUE; +*************** +*** 3874,3880 **** + if (!p_sc) + return; + +- #ifdef FEAT_VISUAL + if (VIsual_active && !char_avail()) + { + int cursor_bot = lt(VIsual, curwin->w_cursor); +--- 3734,3739 ---- +*************** +*** 3960,3966 **** + showcmd_visual = TRUE; + } + else +- #endif + { + showcmd_buf[0] = NUL; + showcmd_visual = FALSE; +--- 3819,3824 ---- +*************** +*** 4203,4212 **** + int want_hor; + win_T *old_curwin = curwin; + buf_T *old_curbuf = curbuf; +- #ifdef FEAT_VISUAL + int old_VIsual_select = VIsual_select; + int old_VIsual_active = VIsual_active; +- #endif + colnr_T tgt_leftcol = curwin->w_leftcol; + long topline; + long y; +--- 4061,4068 ---- +*************** +*** 4223,4231 **** + /* + * loop through the scrollbound windows and scroll accordingly + */ +- #ifdef FEAT_VISUAL + VIsual_select = VIsual_active = 0; +- #endif + for (curwin = firstwin; curwin; curwin = curwin->w_next) + { + curbuf = curwin->w_buffer; +--- 4079,4085 ---- +*************** +*** 4280,4289 **** + /* + * reset current-window + */ +- #ifdef FEAT_VISUAL + VIsual_select = old_VIsual_select; + VIsual_active = old_VIsual_active; +- #endif + curwin = old_curwin; + curbuf = old_curbuf; + } +--- 4134,4141 ---- +*************** +*** 5239,5249 **** + + if (checkclearop(cap->oap)) + break; +- # ifdef FEAT_VISUAL + if (VIsual_active && get_visual_text(cap, &ptr, &len) + == FAIL) + return; +- # endif + if (ptr == NULL) + { + pos_T pos = curwin->w_cursor; +--- 5091,5099 ---- +*************** +*** 5411,5422 **** + /* + * Ignore 'Q' in Visual mode, just give a beep. + */ +- #ifdef FEAT_VISUAL + if (VIsual_active) + vim_beep(); +! else +! #endif +! if (!checkclearop(cap->oap)) + do_exmode(FALSE); + } + +--- 5261,5269 ---- + /* + * Ignore 'Q' in Visual mode, just give a beep. + */ + if (VIsual_active) + vim_beep(); +! else if (!checkclearop(cap->oap)) + do_exmode(FALSE); + } + +*************** +*** 5430,5440 **** + int old_p_im; + int cmd_result; + +- #ifdef FEAT_VISUAL + if (VIsual_active) + nv_operator(cap); + else +- #endif + { + if (cap->oap->op_type != OP_NOP) + { +--- 5277,5285 ---- +*************** +*** 5494,5508 **** + nv_ctrlg(cap) + cmdarg_T *cap; + { +- #ifdef FEAT_VISUAL + if (VIsual_active) /* toggle Selection/Visual mode */ + { + VIsual_select = !VIsual_select; + showmode(); + } +! else +! #endif +! if (!checkclearop(cap->oap)) + /* print full name if count given or :cd used */ + fileinfo((int)cap->count0, FALSE, TRUE); + } +--- 5339,5350 ---- + nv_ctrlg(cap) + cmdarg_T *cap; + { + if (VIsual_active) /* toggle Selection/Visual mode */ + { + VIsual_select = !VIsual_select; + showmode(); + } +! else if (!checkclearop(cap->oap)) + /* print full name if count given or :cd used */ + fileinfo((int)cap->count0, FALSE, TRUE); + } +*************** +*** 5514,5527 **** + nv_ctrlh(cap) + cmdarg_T *cap; + { +- #ifdef FEAT_VISUAL + if (VIsual_active && VIsual_select) + { + cap->cmdchar = 'x'; /* BS key behaves like 'x' in Select mode */ + v_visop(cap); + } + else +- #endif + nv_left(cap); + } + +--- 5356,5367 ---- +*************** +*** 5558,5564 **** + nv_ctrlo(cap) + cmdarg_T *cap; + { +- #ifdef FEAT_VISUAL + if (VIsual_active && VIsual_select) + { + VIsual_select = FALSE; +--- 5398,5403 ---- +*************** +*** 5566,5572 **** + restart_VIsual_select = 2; /* restart Select mode later */ + } + else +- #endif + { + cap->count1 = -cap->count1; + nv_pcmark(cap); +--- 5405,5410 ---- +*************** +*** 5675,5684 **** + */ + if (cmdchar == ']' || cmdchar == Ctrl_RSB || cmdchar == 'K') + { +- #ifdef FEAT_VISUAL + if (VIsual_active && get_visual_text(cap, &ptr, &n) == FAIL) + return; +- #endif + if (checkclearopq(cap->oap)) + return; + } +--- 5513,5520 ---- +*************** +*** 5872,5878 **** + vim_free(buf); + } + +- #if defined(FEAT_VISUAL) || defined(PROTO) + /* + * Get visually selected text, within one line only. + * Returns FAIL if more than one line selected. +--- 5708,5713 ---- +*************** +*** 5917,5923 **** + reset_VIsual_and_resel(); + return OK; + } +- #endif + + /* + * CTRL-T: backwards in tag stack +--- 5752,5757 ---- +*************** +*** 6040,6050 **** + cmdarg_T *cap; + { + long n; +! #ifdef FEAT_VISUAL +! int PAST_LINE; +! #else +! # define PAST_LINE 0 +! #endif + + if (mod_mask & (MOD_MASK_SHIFT | MOD_MASK_CTRL)) + { +--- 5874,5880 ---- + cmdarg_T *cap; + { + long n; +! int past_line; + + if (mod_mask & (MOD_MASK_SHIFT | MOD_MASK_CTRL)) + { +*************** +*** 6057,6081 **** + + cap->oap->motion_type = MCHAR; + cap->oap->inclusive = FALSE; +! #ifdef FEAT_VISUAL +! PAST_LINE = (VIsual_active && *p_sel != 'o'); + +! # ifdef FEAT_VIRTUALEDIT + /* +! * In virtual mode, there's no such thing as "PAST_LINE", as lines are +! * (theoretically) infinitely long. + */ + if (virtual_active()) +! PAST_LINE = 0; +! # endif + #endif + + for (n = cap->count1; n > 0; --n) + { +! if ((!PAST_LINE && oneright() == FAIL) +! #ifdef FEAT_VISUAL +! || (PAST_LINE && *ml_get_cursor() == NUL) +! #endif + ) + { + /* +--- 5887,5907 ---- + + cap->oap->motion_type = MCHAR; + cap->oap->inclusive = FALSE; +! past_line = (VIsual_active && *p_sel != 'o'); + +! #ifdef FEAT_VIRTUALEDIT + /* +! * In virtual edit mode, there's no such thing as "past_line", as lines +! * are (theoretically) infinitely long. + */ + if (virtual_active()) +! past_line = 0; + #endif + + for (n = cap->count1; n > 0; --n) + { +! if ((!past_line && oneright() == FAIL) +! || (past_line && *ml_get_cursor() == NUL) + ) + { + /* +*************** +*** 6123,6148 **** + } + break; + } +! #ifdef FEAT_VISUAL +! else if (PAST_LINE) + { + curwin->w_set_curswant = TRUE; +! # ifdef FEAT_VIRTUALEDIT + if (virtual_active()) + oneright(); + else +! # endif + { +! # ifdef FEAT_MBYTE + if (has_mbyte) + curwin->w_cursor.col += + (*mb_ptr2len)(ml_get_cursor()); + else +! # endif + ++curwin->w_cursor.col; + } + } +- #endif + } + #ifdef FEAT_FOLDING + if (n != cap->count1 && (fdo_flags & FDO_HOR) && KeyTyped +--- 5949,5972 ---- + } + break; + } +! else if (past_line) + { + curwin->w_set_curswant = TRUE; +! #ifdef FEAT_VIRTUALEDIT + if (virtual_active()) + oneright(); + else +! #endif + { +! #ifdef FEAT_MBYTE + if (has_mbyte) + curwin->w_cursor.col += + (*mb_ptr2len)(ml_get_cursor()); + else +! #endif + ++curwin->w_cursor.col; + } + } + } + #ifdef FEAT_FOLDING + if (n != cap->count1 && (fdo_flags & FDO_HOR) && KeyTyped +*************** +*** 6503,6511 **** + else + curwin->w_cursor.coladd = 0; + #endif +- #ifdef FEAT_VISUAL + adjust_for_sel(cap); +- #endif + #ifdef FEAT_FOLDING + if ((fdo_flags & FDO_HOR) && KeyTyped && cap->oap->op_type == OP_NOP) + foldOpenCursor(); +--- 6327,6333 ---- +*************** +*** 6754,6760 **** + int dir = (cap->cmdchar == ']' && cap->nchar == 'p') + ? FORWARD : BACKWARD; + int regname = cap->oap->regname; +- #ifdef FEAT_VISUAL + int was_visual = VIsual_active; + int line_count = curbuf->b_ml.ml_line_count; + pos_T start, end; +--- 6576,6581 ---- +*************** +*** 6766,6779 **** + end = equalpos(start,VIsual) ? curwin->w_cursor : VIsual; + curwin->w_cursor = (dir == BACKWARD ? start : end); + } +- #endif + # ifdef FEAT_CLIPBOARD + adjust_clip_reg(®name); + # endif + prep_redo_cmd(cap); + + do_put(regname, dir, cap->count1, PUT_FIXINDENT); +- #ifdef FEAT_VISUAL + if (was_visual) + { + VIsual = start; +--- 6587,6598 ---- +*************** +*** 6802,6808 **** + redraw_later(SOME_VALID); + } + } +- #endif + } + } + +--- 6621,6626 ---- +*************** +*** 6936,6944 **** + #ifdef FEAT_VIRTUALEDIT + curwin->w_cursor.coladd = 0; + #endif +- #ifdef FEAT_VISUAL + adjust_for_sel(cap); +- #endif + } + } + #ifdef FEAT_FOLDING +--- 6754,6760 ---- +*************** +*** 7027,7037 **** + nv_undo(cap) + cmdarg_T *cap; + { +! if (cap->oap->op_type == OP_LOWER +! #ifdef FEAT_VISUAL +! || VIsual_active +! #endif +! ) + { + /* translate "<Visual>u" to "<Visual>gu" and "guu" to "gugu" */ + cap->cmdchar = 'g'; +--- 6843,6849 ---- + nv_undo(cap) + cmdarg_T *cap; + { +! if (cap->oap->op_type == OP_LOWER || VIsual_active) + { + /* translate "<Visual>u" to "<Visual>gu" and "guu" to "gugu" */ + cap->cmdchar = 'g'; +*************** +*** 7089,7095 **** + return; + } + +- #ifdef FEAT_VISUAL + /* Visual mode "r" */ + if (VIsual_active) + { +--- 6901,6906 ---- +*************** +*** 7105,7111 **** + nv_operator(cap); + return; + } +- #endif + + #ifdef FEAT_VIRTUALEDIT + /* Break tabs, etc. */ +--- 6916,6921 ---- +*************** +*** 7273,7279 **** + } + } + +- #ifdef FEAT_VISUAL + /* + * 'o': Exchange start and end of Visual area. + * 'O': same, but in block mode exchange left and right corners. +--- 7083,7088 ---- +*************** +*** 7326,7332 **** + curwin->w_set_curswant = TRUE; + } + } +- #endif /* FEAT_VISUAL */ + + /* + * "R" (cap->arg is FALSE) and "gR" (cap->arg is TRUE). +--- 7135,7140 ---- +*************** +*** 7335,7341 **** + nv_Replace(cap) + cmdarg_T *cap; + { +- #ifdef FEAT_VISUAL + if (VIsual_active) /* "R" is replace lines */ + { + cap->cmdchar = 'c'; +--- 7143,7148 ---- +*************** +*** 7344,7352 **** + VIsual_mode = 'V'; + nv_operator(cap); + } +! else +! #endif +! if (!checkclearopq(cap->oap)) + { + if (!curbuf->b_p_ma) + EMSG(_(e_modifiable)); +--- 7151,7157 ---- + VIsual_mode = 'V'; + nv_operator(cap); + } +! else if (!checkclearopq(cap->oap)) + { + if (!curbuf->b_p_ma) + EMSG(_(e_modifiable)); +*************** +*** 7369,7384 **** + nv_vreplace(cap) + cmdarg_T *cap; + { +- # ifdef FEAT_VISUAL + if (VIsual_active) + { + cap->cmdchar = 'r'; + cap->nchar = cap->extra_char; + nv_replace(cap); /* Do same as "r" in Visual mode for now */ + } +! else +! # endif +! if (!checkclearopq(cap->oap)) + { + if (!curbuf->b_p_ma) + EMSG(_(e_modifiable)); +--- 7174,7186 ---- + nv_vreplace(cap) + cmdarg_T *cap; + { + if (VIsual_active) + { + cap->cmdchar = 'r'; + cap->nchar = cap->extra_char; + nv_replace(cap); /* Do same as "r" in Visual mode for now */ + } +! else if (!checkclearopq(cap->oap)) + { + if (!curbuf->b_p_ma) + EMSG(_(e_modifiable)); +*************** +*** 7525,7531 **** + curwin->w_set_curswant = TRUE; + } + +- #ifdef FEAT_VISUAL + /* + * Handle commands that are operators in Visual mode. + */ +--- 7327,7332 ---- +*************** +*** 7550,7556 **** + cap->cmdchar = *(vim_strchr(trans, cap->cmdchar) + 1); + nv_operator(cap); + } +- #endif + + /* + * "s" and "S" commands. +--- 7351,7356 ---- +*************** +*** 7559,7565 **** + nv_subst(cap) + cmdarg_T *cap; + { +- #ifdef FEAT_VISUAL + if (VIsual_active) /* "vs" and "vS" are the same as "vc" */ + { + if (cap->cmdchar == 'S') +--- 7359,7364 ---- +*************** +*** 7571,7577 **** + nv_operator(cap); + } + else +- #endif + nv_optrans(cap); + } + +--- 7370,7375 ---- +*************** +*** 7585,7596 **** + if (cap->cmdchar == K_DEL || cap->cmdchar == K_KDEL) + cap->cmdchar = 'x'; /* DEL key behaves like 'x' */ + +- #ifdef FEAT_VISUAL + /* in Visual mode these commands are operators */ + if (VIsual_active) + v_visop(cap); + else +- #endif + nv_optrans(cap); + } + +--- 7383,7392 ---- +*************** +*** 7758,7764 **** + clearopbeep(cap->oap); + } + +- #ifdef FEAT_VISUAL + /* + * Handle "v", "V" and "CTRL-V" commands. + * Also for "gh", "gH" and "g^H" commands: Always start Select mode, cap->arg +--- 7554,7559 ---- +*************** +*** 7950,7956 **** + } + } + +- #endif /* FEAT_VISUAL */ + + /* + * CTRL-W: Window commands +--- 7745,7750 ---- +*************** +*** 7975,7984 **** + cmdarg_T *cap; + { + clearop(cap->oap); +- #ifdef FEAT_VISUAL + if (VIsual_active) + end_visual_mode(); /* stop Visual mode */ +- #endif + do_cmdline_cmd((char_u *)"st"); + } + +--- 7769,7776 ---- +*************** +*** 7990,7998 **** + cmdarg_T *cap; + { + oparg_T *oap = cap->oap; +- #ifdef FEAT_VISUAL + pos_T tpos; +- #endif + int i; + int flag = FALSE; + +--- 7782,7788 ---- +*************** +*** 8025,8031 **** + do_cmdline_cmd((char_u *)"%s//~/&"); + break; + +- #ifdef FEAT_VISUAL + /* + * "gv": Reselect the previous Visual area. If Visual already active, + * exchange previous and current Visual area. +--- 7815,7820 ---- +*************** +*** 8126,8132 **** + cap->arg = TRUE; + nv_visual(cap); + break; +- #endif /* FEAT_VISUAL */ + + /* "gn", "gN" visually select next/previous search match + * "gn" selects next match +--- 7915,7920 ---- +*************** +*** 8134,8142 **** + */ + case 'N': + case 'n': +- #ifdef FEAT_VISUAL + if (!current_search(cap->count1, cap->nchar == 'n')) +- #endif + clearopbeep(oap); + break; + +--- 7922,7928 ---- +*************** +*** 8258,8266 **** + && vim_iswhite(ptr[curwin->w_cursor.col])) + --curwin->w_cursor.col; + curwin->w_set_curswant = TRUE; +- #ifdef FEAT_VISUAL + adjust_for_sel(cap); +- #endif + } + break; + +--- 8044,8050 ---- +*************** +*** 8657,8667 **** + cmdarg_T *cap; + { + /* In Visual mode and typing "gUU" triggers an operator */ +! if (cap->oap->op_type == OP_UPPER +! #ifdef FEAT_VISUAL +! || VIsual_active +! #endif +! ) + { + /* translate "gUU" to "gUgU" */ + cap->cmdchar = 'g'; +--- 8441,8447 ---- + cmdarg_T *cap; + { + /* In Visual mode and typing "gUU" triggers an operator */ +! if (cap->oap->op_type == OP_UPPER || VIsual_active) + { + /* translate "gUU" to "gUgU" */ + cap->cmdchar = 'g'; +*************** +*** 8683,8693 **** + nv_tilde(cap) + cmdarg_T *cap; + { +! if (!p_to +! #ifdef FEAT_VISUAL +! && !VIsual_active +! #endif +! && cap->oap->op_type != OP_TILDE) + n_swapchar(cap); + else + nv_operator(cap); +--- 8463,8469 ---- + nv_tilde(cap) + cmdarg_T *cap; + { +! if (!p_to && !VIsual_active && cap->oap->op_type != OP_TILDE) + n_swapchar(cap); + else + nv_operator(cap); +*************** +*** 8906,8914 **** + clearopbeep(cap->oap); + else + { +- #ifdef FEAT_VISUAL + adjust_for_sel(cap); +- #endif + #ifdef FEAT_FOLDING + if ((fdo_flags & FDO_HOR) && KeyTyped && cap->oap->op_type == OP_NOP) + foldOpenCursor(); +--- 8682,8688 ---- +*************** +*** 8931,8939 **** + * - 'virtualedit' is not "all" and not "onemore". + */ + if (curwin->w_cursor.col > 0 && gchar_cursor() == NUL +- #ifdef FEAT_VISUAL + && (!VIsual_active || *p_sel == 'o') +- #endif + #ifdef FEAT_VIRTUALEDIT + && !virtual_active() && (ve_flags & VE_ONEMORE) == 0 + #endif +--- 8705,8711 ---- +*************** +*** 8968,8974 **** + one-character line). */ + } + +- #ifdef FEAT_VISUAL + /* + * In exclusive Visual mode, may include the last character. + */ +--- 8740,8745 ---- +*************** +*** 8979,8989 **** + if (VIsual_active && cap->oap->inclusive && *p_sel == 'e' + && gchar_cursor() != NUL && lt(VIsual, curwin->w_cursor)) + { +! # ifdef FEAT_MBYTE + if (has_mbyte) + inc_cursor(); + else +! # endif + ++curwin->w_cursor.col; + cap->oap->inclusive = FALSE; + } +--- 8750,8760 ---- + if (VIsual_active && cap->oap->inclusive && *p_sel == 'e' + && gchar_cursor() != NUL && lt(VIsual, curwin->w_cursor)) + { +! #ifdef FEAT_MBYTE + if (has_mbyte) + inc_cursor(); + else +! #endif + ++curwin->w_cursor.col; + cap->oap->inclusive = FALSE; + } +*************** +*** 9044,9050 **** + } + } + +- #endif + + /* + * "G", "gg", CTRL-END, CTRL-HOME. +--- 8815,8820 ---- +*************** +*** 9095,9107 **** + if (cmdwin_type != 0) + cmdwin_result = Ctrl_C; + #endif +- #ifdef FEAT_VISUAL + if (VIsual_active) + { + end_visual_mode(); /* stop Visual */ + redraw_curbuf_later(INVERTED); + } +- #endif + /* CTRL-\ CTRL-G restarts Insert mode when 'insertmode' is set. */ + if (cap->nchar == Ctrl_G && p_im) + restart_edit = 'a'; +--- 8865,8875 ---- +*************** +*** 9132,9140 **** + #ifdef FEAT_CMDWIN + && cmdwin_type == 0 + #endif +- #ifdef FEAT_VISUAL + && !VIsual_active +- #endif + && no_reason) + MSG(_("Type :quit<Enter> to exit Vim")); + +--- 8900,8906 ---- +*************** +*** 9152,9158 **** + #endif + } + +- #ifdef FEAT_VISUAL + if (VIsual_active) + { + end_visual_mode(); /* stop Visual */ +--- 8918,8923 ---- +*************** +*** 9160,9169 **** + curwin->w_set_curswant = TRUE; + redraw_curbuf_later(INVERTED); + } +! else +! #endif +! if (no_reason) +! vim_beep(); + clearop(cap->oap); + + /* A CTRL-C is often used at the start of a menu. When 'insertmode' is +--- 8925,8932 ---- + curwin->w_set_curswant = TRUE; + redraw_curbuf_later(INVERTED); + } +! else if (no_reason) +! vim_beep(); + clearop(cap->oap); + + /* A CTRL-C is often used at the start of a menu. When 'insertmode' is +*************** +*** 9187,9206 **** + if (cap->cmdchar == K_INS || cap->cmdchar == K_KINS) + cap->cmdchar = 'i'; + +- #ifdef FEAT_VISUAL + /* in Visual mode "A" and "I" are an operator */ + if (VIsual_active && (cap->cmdchar == 'A' || cap->cmdchar == 'I')) + v_visop(cap); + + /* in Visual mode and after an operator "a" and "i" are for text objects */ +! else +! #endif +! if ((cap->cmdchar == 'a' || cap->cmdchar == 'i') +! && (cap->oap->op_type != OP_NOP +! #ifdef FEAT_VISUAL +! || VIsual_active +! #endif +! )) + { + #ifdef FEAT_TEXTOBJ + nv_object(cap); +--- 8950,8962 ---- + if (cap->cmdchar == K_INS || cap->cmdchar == K_KINS) + cap->cmdchar = 'i'; + + /* in Visual mode "A" and "I" are an operator */ + if (VIsual_active && (cap->cmdchar == 'A' || cap->cmdchar == 'I')) + v_visop(cap); + + /* in Visual mode and after an operator "a" and "i" are for text objects */ +! else if ((cap->cmdchar == 'a' || cap->cmdchar == 'i') +! && (cap->oap->op_type != OP_NOP || VIsual_active)) + { + #ifdef FEAT_TEXTOBJ + nv_object(cap); +*************** +*** 9467,9478 **** + nv_join(cap) + cmdarg_T *cap; + { +- #ifdef FEAT_VISUAL + if (VIsual_active) /* join the visual lines */ + nv_operator(cap); +! else +! #endif +! if (!checkclearop(cap->oap)) + { + if (cap->count0 <= 1) + cap->count0 = 2; /* default for join is two lines! */ +--- 9223,9231 ---- + nv_join(cap) + cmdarg_T *cap; + { + if (VIsual_active) /* join the visual lines */ + nv_operator(cap); +! else if (!checkclearop(cap->oap)) + { + if (cap->count0 <= 1) + cap->count0 = 2; /* default for join is two lines! */ +*************** +*** 9495,9506 **** + nv_put(cap) + cmdarg_T *cap; + { +- #ifdef FEAT_VISUAL + int regname = 0; + void *reg1 = NULL, *reg2 = NULL; + int empty = FALSE; + int was_visual = FALSE; +- #endif + int dir; + int flags = 0; + +--- 9248,9257 ---- +*************** +*** 9526,9532 **** + if (cap->cmdchar == 'g') + flags |= PUT_CURSEND; + +- #ifdef FEAT_VISUAL + if (VIsual_active) + { + /* Putting in Visual mode: The put text replaces the selected +--- 9277,9282 ---- +*************** +*** 9536,9549 **** + */ + was_visual = TRUE; + regname = cap->oap->regname; +! # ifdef FEAT_CLIPBOARD + adjust_clip_reg(®name); +! # endif + if (regname == 0 || regname == '"' + || VIM_ISDIGIT(regname) || regname == '-' +! # ifdef FEAT_CLIPBOARD + || (clip_unnamed && (regname == '*' || regname == '+')) +! # endif + + ) + { +--- 9286,9299 ---- + */ + was_visual = TRUE; + regname = cap->oap->regname; +! #ifdef FEAT_CLIPBOARD + adjust_clip_reg(®name); +! #endif + if (regname == 0 || regname == '"' + || VIM_ISDIGIT(regname) || regname == '-' +! #ifdef FEAT_CLIPBOARD + || (clip_unnamed && (regname == '*' || regname == '+')) +! #endif + + ) + { +*************** +*** 9591,9600 **** + /* May have been reset in do_put(). */ + VIsual_active = TRUE; + } +- #endif + do_put(cap->oap->regname, dir, cap->count1, flags); + +- #ifdef FEAT_VISUAL + /* If a register was saved, put it back now. */ + if (reg2 != NULL) + put_register(regname, reg2); +--- 9341,9348 ---- +*************** +*** 9621,9627 **** + coladvance((colnr_T)MAXCOL); + } + } +- #endif + auto_format(FALSE, TRUE); + } + } +--- 9369,9374 ---- +*************** +*** 9642,9652 **** + } + else + #endif +- #ifdef FEAT_VISUAL + if (VIsual_active) /* switch start and end of visual */ + v_swap_corners(cap->cmdchar); + else +- #endif + n_opencmd(cap); + } + +--- 9389,9397 ---- +*** ../vim-7.4.211/src/ops.c 2014-03-19 18:57:27.730175565 +0100 +--- src/ops.c 2014-03-23 15:08:16.095260447 +0100 +*************** +*** 57,65 **** + char_u **y_array; /* pointer to array of line pointers */ + linenr_T y_size; /* number of lines in y_array */ + char_u y_type; /* MLINE, MCHAR or MBLOCK */ +- #ifdef FEAT_VISUAL + colnr_T y_width; /* only set if y_type == MBLOCK */ +- #endif + } y_regs[NUM_REGISTERS]; + + static struct yankreg *y_current; /* ptr to current yankreg */ +--- 57,63 ---- +*************** +*** 107,123 **** + static int yank_copy_line __ARGS((struct block_def *bd, long y_idx)); + #ifdef FEAT_CLIPBOARD + static void copy_yank_reg __ARGS((struct yankreg *reg)); +- # if defined(FEAT_VISUAL) || defined(FEAT_EVAL) + static void may_set_selection __ARGS((void)); +- # endif + #endif + static void dis_msg __ARGS((char_u *p, int skip_esc)); + #if defined(FEAT_COMMENTS) || defined(PROTO) + static char_u *skip_comment __ARGS((char_u *line, int process, int include_space, int *is_comment)); + #endif +- #ifdef FEAT_VISUAL + static void block_prep __ARGS((oparg_T *oap, struct block_def *, linenr_T, int)); +- #endif + #if defined(FEAT_CLIPBOARD) || defined(FEAT_EVAL) + static void str_to_reg __ARGS((struct yankreg *y_ptr, int type, char_u *str, long len, long blocklen)); + #endif +--- 105,117 ---- +*************** +*** 187,193 **** + return i; + } + +- #if defined(FEAT_VISUAL) || defined(PROTO) + /* + * Return TRUE if operator "op" always works on whole lines. + */ +--- 181,186 ---- +*************** +*** 197,203 **** + { + return opchars[op][2]; + } +- #endif + + /* + * Get first operator command character. +--- 190,195 ---- +*************** +*** 232,249 **** + long i; + int first_char; + char_u *s; +- #ifdef FEAT_VISUAL + int block_col = 0; +- #endif + + if (u_save((linenr_T)(oap->start.lnum - 1), + (linenr_T)(oap->end.lnum + 1)) == FAIL) + return; + +- #ifdef FEAT_VISUAL + if (oap->block_mode) + block_col = curwin->w_cursor.col; +- #endif + + for (i = oap->line_count; --i >= 0; ) + { +--- 224,237 ---- +*************** +*** 272,286 **** + foldOpenCursor(); + #endif + +- #ifdef FEAT_VISUAL + if (oap->block_mode) + { + curwin->w_cursor.lnum = oap->start.lnum; + curwin->w_cursor.col = block_col; + } +! else +! #endif +! if (curs_top) /* put cursor on first line, for ">>" */ + { + curwin->w_cursor.lnum = oap->start.lnum; + beginline(BL_SOL | BL_FIX); /* shift_line() may have set cursor.col */ +--- 260,271 ---- + foldOpenCursor(); + #endif + + if (oap->block_mode) + { + curwin->w_cursor.lnum = oap->start.lnum; + curwin->w_cursor.col = block_col; + } +! else if (curs_top) /* put cursor on first line, for ">>" */ + { + curwin->w_cursor.lnum = oap->start.lnum; + beginline(BL_SOL | BL_FIX); /* shift_line() may have set cursor.col */ +*************** +*** 733,746 **** + * there is no change still need to remove the Visual highlighting. */ + if (last_changed != 0) + changed_lines(first_changed, 0, +- #ifdef FEAT_VISUAL + oap->is_VIsual ? start_lnum + oap->line_count : +- #endif + last_changed + 1, 0L); +- #ifdef FEAT_VISUAL + else if (oap->is_VIsual) + redraw_curbuf_later(INVERTED); +- #endif + + if (oap->line_count > p_report) + { +--- 718,727 ---- +*************** +*** 948,954 **** + } + #endif + +- #if defined(FEAT_VISUAL) || defined(PROTO) + /* + * Obtain the contents of a "normal" register. The register is made empty. + * The returned pointer has allocated memory, use put_register() later. +--- 929,934 ---- +*************** +*** 1016,1025 **** + *y_current = *(struct yankreg *)reg; + vim_free(reg); + +! # ifdef FEAT_CLIPBOARD + /* Send text written to clipboard register to the clipboard. */ + may_set_selection(); +! # endif + } + + void +--- 996,1005 ---- + *y_current = *(struct yankreg *)reg; + vim_free(reg); + +! #ifdef FEAT_CLIPBOARD + /* Send text written to clipboard register to the clipboard. */ + may_set_selection(); +! #endif + } + + void +*************** +*** 1034,1040 **** + vim_free(reg); + *y_current = tmp; + } +- #endif + + #if defined(FEAT_MOUSE) || defined(PROTO) + /* +--- 1014,1019 ---- +*************** +*** 1634,1643 **** + int n; + linenr_T lnum; + char_u *ptr; +- #ifdef FEAT_VISUAL + char_u *newp, *oldp; + struct block_def bd; +- #endif + linenr_T old_lcount = curbuf->b_ml.ml_line_count; + int did_yank = FALSE; + int orig_regname = oap->regname; +--- 1613,1620 ---- +*************** +*** 1670,1679 **** + * delete linewise. Don't do this for the change command or Visual mode. + */ + if ( oap->motion_type == MCHAR +- #ifdef FEAT_VISUAL + && !oap->is_VIsual + && !oap->block_mode +- #endif + && oap->line_count > 1 + && oap->motion_force == NUL + && oap->op_type == OP_DELETE) +--- 1647,1654 ---- +*************** +*** 1787,1793 **** + } + } + +- #ifdef FEAT_VISUAL + /* + * block mode delete + */ +--- 1762,1767 ---- +*************** +*** 1838,1846 **** + oap->end.lnum + 1, 0L); + oap->line_count = 0; /* no lines deleted */ + } +! else +! #endif +! if (oap->motion_type == MLINE) + { + if (oap->op_type == OP_CHANGE) + { +--- 1812,1818 ---- + oap->end.lnum + 1, 0L); + oap->line_count = 0; /* no lines deleted */ + } +! else if (oap->motion_type == MLINE) + { + if (oap->op_type == OP_CHANGE) + { +*************** +*** 1924,1936 **** + return FAIL; + + /* if 'cpoptions' contains '$', display '$' at end of change */ +! if ( vim_strchr(p_cpo, CPO_DOLLAR) != NULL + && oap->op_type == OP_CHANGE + && oap->end.lnum == curwin->w_cursor.lnum +! #ifdef FEAT_VISUAL +! && !oap->is_VIsual +! #endif +! ) + display_dollar(oap->end.col - !oap->inclusive); + + n = oap->end.col - oap->start.col + 1 - !oap->inclusive; +--- 1896,1905 ---- + return FAIL; + + /* if 'cpoptions' contains '$', display '$' at end of change */ +! if ( vim_strchr(p_cpo, CPO_DOLLAR) != NULL + && oap->op_type == OP_CHANGE + && oap->end.lnum == curwin->w_cursor.lnum +! && !oap->is_VIsual) + display_dollar(oap->end.col - !oap->inclusive); + + n = oap->end.col - oap->start.col + 1 - !oap->inclusive; +*************** +*** 1967,1977 **** + } + else + { +! (void)del_bytes((long)n, !virtual_op, oap->op_type == OP_DELETE +! #ifdef FEAT_VISUAL +! && !oap->is_VIsual +! #endif +! ); + } + } + else /* delete characters between lines */ +--- 1936,1943 ---- + } + else + { +! (void)del_bytes((long)n, !virtual_op, +! oap->op_type == OP_DELETE && !oap->is_VIsual); + } + } + else /* delete characters between lines */ +*************** +*** 2008,2018 **** + { + /* delete from start of line until op_end */ + curwin->w_cursor.col = 0; +! (void)del_bytes((long)n, !virtual_op, oap->op_type == OP_DELETE +! #ifdef FEAT_VISUAL +! && !oap->is_VIsual +! #endif +! ); + curwin->w_cursor = curpos; /* restore curwin->w_cursor */ + } + if (curwin->w_cursor.lnum < curbuf->b_ml.ml_line_count) +--- 1974,1981 ---- + { + /* delete from start of line until op_end */ + curwin->w_cursor.col = 0; +! (void)del_bytes((long)n, !virtual_op, +! oap->op_type == OP_DELETE && !oap->is_VIsual); + curwin->w_cursor = curpos; /* restore curwin->w_cursor */ + } + if (curwin->w_cursor.lnum < curbuf->b_ml.ml_line_count) +*************** +*** 2025,2038 **** + #ifdef FEAT_VIRTUALEDIT + setmarks: + #endif +- #ifdef FEAT_VISUAL + if (oap->block_mode) + { + curbuf->b_op_end.lnum = oap->end.lnum; + curbuf->b_op_end.col = oap->start.col; + } + else +- #endif + curbuf->b_op_end = oap->start; + curbuf->b_op_start = oap->start; + +--- 1988,1999 ---- +*************** +*** 2318,2326 **** + oparg_T *oap; + { + pos_T pos; +- #ifdef FEAT_VISUAL + struct block_def bd; +- #endif + int did_change = FALSE; + + if (u_save((linenr_T)(oap->start.lnum - 1), +--- 2279,2285 ---- +*************** +*** 2328,2334 **** + return; + + pos = oap->start; +- #ifdef FEAT_VISUAL + if (oap->block_mode) /* Visual block mode */ + { + for (; pos.lnum <= oap->end.lnum; ++pos.lnum) +--- 2287,2292 ---- +*************** +*** 2340,2346 **** + one_change = swapchars(oap->op_type, &pos, bd.textlen); + did_change |= one_change; + +! # ifdef FEAT_NETBEANS_INTG + if (netbeans_active() && one_change) + { + char_u *ptr = ml_get_buf(curbuf, pos.lnum, FALSE); +--- 2298,2304 ---- + one_change = swapchars(oap->op_type, &pos, bd.textlen); + did_change |= one_change; + +! #ifdef FEAT_NETBEANS_INTG + if (netbeans_active() && one_change) + { + char_u *ptr = ml_get_buf(curbuf, pos.lnum, FALSE); +*************** +*** 2350,2362 **** + netbeans_inserted(curbuf, pos.lnum, bd.textcol, + &ptr[bd.textcol], bd.textlen); + } +! # endif + } + if (did_change) + changed_lines(oap->start.lnum, 0, oap->end.lnum + 1, 0L); + } + else /* not block mode */ +- #endif + { + if (oap->motion_type == MLINE) + { +--- 2308,2319 ---- + netbeans_inserted(curbuf, pos.lnum, bd.textcol, + &ptr[bd.textcol], bd.textlen); + } +! #endif + } + if (did_change) + changed_lines(oap->start.lnum, 0, oap->end.lnum + 1, 0L); + } + else /* not block mode */ + { + if (oap->motion_type == MLINE) + { +*************** +*** 2412,2422 **** + } + } + +- #ifdef FEAT_VISUAL + if (!did_change && oap->is_VIsual) + /* No change: need to remove the Visual selection */ + redraw_curbuf_later(INVERTED); +- #endif + + /* + * Set '[ and '] marks. +--- 2369,2377 ---- +*************** +*** 3018,3027 **** + if ( oap->motion_type == MCHAR + && oap->start.col == 0 + && !oap->inclusive +- #ifdef FEAT_VISUAL + && (!oap->is_VIsual || *p_sel == 'o') + && !oap->block_mode +- #endif + && oap->end.col == 0 + && yanklines > 1) + { +--- 2973,2980 ---- +*************** +*** 3032,3040 **** + + y_current->y_size = yanklines; + y_current->y_type = yanktype; /* set the yank register type */ +- #ifdef FEAT_VISUAL + y_current->y_width = 0; +- #endif + y_current->y_array = (char_u **)lalloc_clear((long_u)(sizeof(char_u *) * + yanklines), TRUE); + +--- 2985,2991 ---- +*************** +*** 3047,3053 **** + y_idx = 0; + lnum = oap->start.lnum; + +- #ifdef FEAT_VISUAL + if (oap->block_mode) + { + /* Visual block mode */ +--- 2998,3003 ---- +*************** +*** 3057,3075 **** + if (curwin->w_curswant == MAXCOL && y_current->y_width > 0) + y_current->y_width--; + } +- #endif + + for ( ; lnum <= yankendlnum; lnum++, y_idx++) + { + switch (y_current->y_type) + { +- #ifdef FEAT_VISUAL + case MBLOCK: + block_prep(oap, &bd, lnum, FALSE); + if (yank_copy_line(&bd, y_idx) == FAIL) + goto fail; + break; +- #endif + + case MLINE: + if ((y_current->y_array[y_idx] = +--- 3007,3022 ---- +*************** +*** 3206,3214 **** + if (mess) /* Display message about yank? */ + { + if (yanktype == MCHAR +- #ifdef FEAT_VISUAL + && !oap->block_mode +- #endif + && yanklines == 1) + yanklines = 0; + /* Some versions of Vi use ">=" here, some don't... */ +--- 3153,3159 ---- +*************** +*** 3218,3234 **** + update_topline_redraw(); + if (yanklines == 1) + { +- #ifdef FEAT_VISUAL + if (oap->block_mode) + MSG(_("block of 1 line yanked")); + else +- #endif + MSG(_("1 line yanked")); + } +- #ifdef FEAT_VISUAL + else if (oap->block_mode) + smsg((char_u *)_("block of %ld lines yanked"), yanklines); +- #endif + else + smsg((char_u *)_("%ld lines yanked"), yanklines); + } +--- 3163,3175 ---- +*************** +*** 3239,3249 **** + */ + curbuf->b_op_start = oap->start; + curbuf->b_op_end = oap->end; +! if (yanktype == MLINE +! #ifdef FEAT_VISUAL +! && !oap->block_mode +! #endif +! ) + { + curbuf->b_op_start.col = 0; + curbuf->b_op_end.col = MAXCOL; +--- 3180,3186 ---- + */ + curbuf->b_op_start = oap->start; + curbuf->b_op_end = oap->end; +! if (yanktype == MLINE && !oap->block_mode) + { + curbuf->b_op_start.col = 0; + curbuf->b_op_end.col = MAXCOL; +*************** +*** 3380,3386 **** + long i; /* index in y_array[] */ + int y_type; + long y_size; +- #ifdef FEAT_VISUAL + int oldlen; + long y_width = 0; + colnr_T vcol; +--- 3317,3322 ---- +*************** +*** 3388,3394 **** + int incr = 0; + long j; + struct block_def bd; +- #endif + char_u **y_array = NULL; + long nr_lines = 0; + pos_T new_cursor; +--- 3324,3329 ---- +*************** +*** 3497,3510 **** + get_yank_register(regname, FALSE); + + y_type = y_current->y_type; +- #ifdef FEAT_VISUAL + y_width = y_current->y_width; +- #endif + y_size = y_current->y_size; + y_array = y_current->y_array; + } + +- #ifdef FEAT_VISUAL + if (y_type == MLINE) + { + if (flags & PUT_LINE_SPLIT) +--- 3432,3442 ---- +*************** +*** 3535,3541 **** + curbuf->b_op_start = curwin->w_cursor; /* default for '[ mark */ + curbuf->b_op_end = curwin->w_cursor; /* default for '] mark */ + } +- #endif + + if (flags & PUT_LINE) /* :put command or "p" in Visual line mode. */ + y_type = MLINE; +--- 3467,3472 ---- +*************** +*** 3547,3553 **** + goto end; + } + +- #ifdef FEAT_VISUAL + if (y_type == MBLOCK) + { + lnum = curwin->w_cursor.lnum + y_size + 1; +--- 3478,3483 ---- +*************** +*** 3556,3564 **** + if (u_save(curwin->w_cursor.lnum - 1, lnum) == FAIL) + goto end; + } +! else +! #endif +! if (y_type == MLINE) + { + lnum = curwin->w_cursor.lnum; + #ifdef FEAT_FOLDING +--- 3486,3492 ---- + if (u_save(curwin->w_cursor.lnum - 1, lnum) == FAIL) + goto end; + } +! else if (y_type == MLINE) + { + lnum = curwin->w_cursor.lnum; + #ifdef FEAT_FOLDING +*************** +*** 3610,3616 **** + lnum = curwin->w_cursor.lnum; + col = curwin->w_cursor.col; + +- #ifdef FEAT_VISUAL + /* + * Block mode + */ +--- 3538,3543 ---- +*************** +*** 3792,3798 **** + curwin->w_cursor.lnum = lnum; + } + else +- #endif + { + /* + * Character or Line mode +--- 3719,3724 ---- +*************** +*** 3866,3882 **** + curwin->w_cursor.col += (colnr_T)(totlen - 1); + } + } +- #ifdef FEAT_VISUAL + if (VIsual_active) + lnum++; +! #endif +! } while ( +! #ifdef FEAT_VISUAL +! VIsual_active && lnum <= curbuf->b_visual.vi_end.lnum +! #else +! FALSE /* stop after 1 paste */ +! #endif +! ); + + curbuf->b_op_end = curwin->w_cursor; + /* For "CTRL-O p" in Insert mode, put cursor after last char */ +--- 3792,3800 ---- + curwin->w_cursor.col += (colnr_T)(totlen - 1); + } + } + if (VIsual_active) + lnum++; +! } while (VIsual_active && lnum <= curbuf->b_visual.vi_end.lnum); + + curbuf->b_op_end = curwin->w_cursor; + /* For "CTRL-O p" in Insert mode, put cursor after last char */ +*************** +*** 4038,4046 **** + if (regname == '=') + vim_free(y_array); + +- #ifdef FEAT_VISUAL + VIsual_active = FALSE; +- #endif + + /* If the cursor is past the end of the line put it at the end. */ + adjust_cursor_eol(); +--- 3956,3962 ---- +*************** +*** 4729,4739 **** + return; + curwin->w_cursor = oap->start; + +- #ifdef FEAT_VISUAL + if (oap->is_VIsual) + /* When there is no change: need to remove the Visual selection */ + redraw_curbuf_later(INVERTED); +- #endif + + /* Set '[ mark at the start of the formatted area */ + curbuf->b_op_start = oap->start; +--- 4645,4653 ---- +*************** +*** 4765,4771 **** + saved_cursor.lnum = 0; + } + +- #ifdef FEAT_VISUAL + if (oap->is_VIsual) + { + win_T *wp; +--- 4679,4684 ---- +*************** +*** 4783,4789 **** + } + } + } +- #endif + } + + #if defined(FEAT_EVAL) || defined(PROTO) +--- 4696,4701 ---- +*************** +*** 4794,4804 **** + op_formatexpr(oap) + oparg_T *oap; + { +- # ifdef FEAT_VISUAL + if (oap->is_VIsual) + /* When there is no change: need to remove the Visual selection */ + redraw_curbuf_later(INVERTED); +- # endif + + if (fex_format(oap->start.lnum, oap->line_count, NUL) != 0) + /* As documented: when 'formatexpr' returns non-zero fall back to +--- 4706,4714 ---- +*************** +*** 5238,5244 **** + return FALSE; + } + +- #ifdef FEAT_VISUAL + /* + * prepare a few things for block mode yank/delete/tilde + * +--- 5148,5153 ---- +*************** +*** 5397,5403 **** + bdp->textcol = (colnr_T) (pstart - line); + bdp->textstart = pstart; + } +- #endif /* FEAT_VISUAL */ + + #ifdef FEAT_RIGHTLEFT + static void reverse_line __ARGS((char_u *s)); +--- 5306,5311 ---- +*************** +*** 5748,5766 **** + str = skipwhite(skiptowhite(str)); + if (STRNCMP(str, "CHAR", 4) == 0) + y_current->y_type = MCHAR; +- #ifdef FEAT_VISUAL + else if (STRNCMP(str, "BLOCK", 5) == 0) + y_current->y_type = MBLOCK; +- #endif + else + y_current->y_type = MLINE; + /* get the block width; if it's missing we get a zero, which is OK */ + str = skipwhite(skiptowhite(str)); +- #ifdef FEAT_VISUAL + y_current->y_width = getdigits(&str); +- #else +- (void)getdigits(&str); +- #endif + } + + while (!(eof = viminfo_readline(virp)) +--- 5656,5668 ---- +*************** +*** 5868,5878 **** + case MCHAR: + type = (char_u *)"CHAR"; + break; +- #ifdef FEAT_VISUAL + case MBLOCK: + type = (char_u *)"BLOCK"; + break; +- #endif + default: + sprintf((char *)IObuff, _("E574: Unknown register type %d"), + y_regs[i].y_type); +--- 5770,5778 ---- +*************** +*** 5886,5898 **** + fprintf(fp, "\"%c", c); + if (c == execreg_lastc) + fprintf(fp, "@"); +! fprintf(fp, "\t%s\t%d\n", type, +! #ifdef FEAT_VISUAL +! (int)y_regs[i].y_width +! #else +! 0 +! #endif +! ); + + /* If max_num_lines < 0, then we save ALL the lines in the register */ + if (max_num_lines > 0 && num_lines > max_num_lines) +--- 5786,5792 ---- + fprintf(fp, "\"%c", c); + if (c == execreg_lastc) + fprintf(fp, "@"); +! fprintf(fp, "\t%s\t%d\n", type, (int)y_regs[i].y_width); + + /* If max_num_lines < 0, then we save ALL the lines in the register */ + if (max_num_lines > 0 && num_lines > max_num_lines) +*************** +*** 6039,6048 **** + { + struct yankreg *old_y_previous, *old_y_current; + pos_T old_cursor; +- #ifdef FEAT_VISUAL + pos_T old_visual; + int old_visual_mode; +- #endif + colnr_T old_curswant; + int old_set_curswant; + pos_T old_op_start, old_op_end; +--- 5933,5940 ---- +*************** +*** 6063,6072 **** + old_set_curswant = curwin->w_set_curswant; + old_op_start = curbuf->b_op_start; + old_op_end = curbuf->b_op_end; +- #ifdef FEAT_VISUAL + old_visual = VIsual; + old_visual_mode = VIsual_mode; +- #endif + clear_oparg(&oa); + oa.regname = (cbd == &clip_plus ? '+' : '*'); + oa.op_type = OP_YANK; +--- 5955,5962 ---- +*************** +*** 6084,6093 **** + curwin->w_set_curswant = old_set_curswant; + curbuf->b_op_start = old_op_start; + curbuf->b_op_end = old_op_end; +- #ifdef FEAT_VISUAL + VIsual = old_visual; + VIsual_mode = old_visual_mode; +- #endif + } + else + { +--- 5974,5981 ---- +*************** +*** 6190,6196 **** + } + + +- # if defined(FEAT_VISUAL) || defined(FEAT_EVAL) + /* + * If we have written to a clipboard register, send the text to the clipboard. + */ +--- 6078,6083 ---- +*************** +*** 6208,6214 **** + clip_gen_set_selection(&clip_plus); + } + } +- # endif + + #endif /* FEAT_CLIPBOARD || PROTO */ + +--- 6095,6100 ---- +*************** +*** 6273,6282 **** + + if (y_current->y_array != NULL) + { +- #ifdef FEAT_VISUAL + if (reglen != NULL && y_current->y_type == MBLOCK) + *reglen = y_current->y_width; +- #endif + return y_current->y_type; + } + return MAUTO; +--- 6159,6166 ---- +*************** +*** 6454,6464 **** + get_yank_register(name, TRUE); + if (!y_append && !must_append) + free_yank_all(); +- #ifndef FEAT_VISUAL +- /* Just in case - make sure we don't use MBLOCK */ +- if (yank_type == MBLOCK) +- yank_type = MAUTO; +- #endif + str_to_reg(y_current, yank_type, str, len, block_len); + + # ifdef FEAT_CLIPBOARD +--- 6338,6343 ---- +*************** +*** 6496,6504 **** + int append = FALSE; /* append to last line in register */ + char_u *s; + char_u **pp; +- #ifdef FEAT_VISUAL + long maxlen; +- #endif + + if (y_ptr->y_array == NULL) /* NULL means empty register */ + y_ptr->y_size = 0; +--- 6375,6381 ---- +*************** +*** 6539,6547 **** + pp[lnum] = y_ptr->y_array[lnum]; + vim_free(y_ptr->y_array); + y_ptr->y_array = pp; +- #ifdef FEAT_VISUAL + maxlen = 0; +- #endif + + /* + * Find the end of each line and save it into the array. +--- 6416,6422 ---- +*************** +*** 6552,6561 **** + if (str[i] == '\n') + break; + i -= start; /* i is now length of line */ +- #ifdef FEAT_VISUAL + if (i > maxlen) + maxlen = i; +- #endif + if (append) + { + --lnum; +--- 6427,6434 ---- +*************** +*** 6585,6596 **** + } + y_ptr->y_type = type; + y_ptr->y_size = lnum; +- # ifdef FEAT_VISUAL + if (type == MBLOCK) + y_ptr->y_width = (blocklen < 0 ? maxlen - 1 : blocklen); + else + y_ptr->y_width = 0; +- # endif + } + #endif /* FEAT_CLIPBOARD || FEAT_EVAL || PROTO */ + +--- 6458,6467 ---- +*************** +*** 6684,6695 **** + long word_count_cursor = 0; + int eol_size; + long last_check = 100000L; +- #ifdef FEAT_VISUAL + long line_count_selected = 0; + pos_T min_pos, max_pos; + oparg_T oparg; + struct block_def bd; +- #endif + + /* + * Compute the length of the file in characters. +--- 6555,6564 ---- +*************** +*** 6705,6711 **** + else + eol_size = 1; + +- #ifdef FEAT_VISUAL + if (VIsual_active) + { + if (lt(VIsual, curwin->w_cursor)) +--- 6574,6579 ---- +*************** +*** 6749,6755 **** + } + line_count_selected = max_pos.lnum - min_pos.lnum + 1; + } +- #endif + + for (lnum = 1; lnum <= curbuf->b_ml.ml_line_count; ++lnum) + { +--- 6617,6622 ---- +*************** +*** 6762,6768 **** + last_check = byte_count + 100000L; + } + +- #ifdef FEAT_VISUAL + /* Do extra processing for VIsual mode. */ + if (VIsual_active + && lnum >= min_pos.lnum && lnum <= max_pos.lnum) +--- 6629,6634 ---- +*************** +*** 6773,6785 **** + switch (VIsual_mode) + { + case Ctrl_V: +! # ifdef FEAT_VIRTUALEDIT + virtual_op = virtual_active(); +! # endif + block_prep(&oparg, &bd, lnum, 0); +! # ifdef FEAT_VIRTUALEDIT + virtual_op = MAYBE; +! # endif + s = bd.textstart; + len = (long)bd.textlen; + break; +--- 6639,6651 ---- + switch (VIsual_mode) + { + case Ctrl_V: +! #ifdef FEAT_VIRTUALEDIT + virtual_op = virtual_active(); +! #endif + block_prep(&oparg, &bd, lnum, 0); +! #ifdef FEAT_VIRTUALEDIT + virtual_op = MAYBE; +! #endif + s = bd.textstart; + len = (long)bd.textlen; + break; +*************** +*** 6811,6817 **** + } + } + else +- #endif + { + /* In non-visual mode, check for the line the cursor is on */ + if (lnum == curwin->w_cursor.lnum) +--- 6677,6682 ---- +*************** +*** 6833,6839 **** + if (!curbuf->b_p_eol && curbuf->b_p_bin) + byte_count -= eol_size; + +- #ifdef FEAT_VISUAL + if (VIsual_active) + { + if (VIsual_mode == Ctrl_V && curwin->w_curswant < MAXCOL) +--- 6698,6703 ---- +*************** +*** 6864,6870 **** + byte_count_cursor, byte_count); + } + else +- #endif + { + p = ml_get_curline(); + validate_virtcol(); +--- 6728,6733 ---- +*** ../vim-7.4.211/src/option.c 2014-03-12 18:55:52.100906804 +0100 +--- src/option.c 2014-03-23 13:28:12.359168452 +0100 +*************** +*** 1629,1639 **** + #endif + SCRIPTID_INIT}, + {"keymodel", "km", P_STRING|P_VI_DEF|P_COMMA|P_NODUP, +- #ifdef FEAT_VISUAL + (char_u *)&p_km, PV_NONE, +- #else +- (char_u *)NULL, PV_NONE, +- #endif + {(char_u *)"", (char_u *)0L} SCRIPTID_INIT}, + {"keywordprg", "kp", P_STRING|P_EXPAND|P_VI_DEF|P_SECURE, + (char_u *)&p_kp, PV_KP, +--- 1629,1635 ---- +*************** +*** 2190,2208 **** + (char_u *)&p_secure, PV_NONE, + {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT}, + {"selection", "sel", P_STRING|P_VI_DEF, +- #ifdef FEAT_VISUAL + (char_u *)&p_sel, PV_NONE, +- #else +- (char_u *)NULL, PV_NONE, +- #endif + {(char_u *)"inclusive", (char_u *)0L} + SCRIPTID_INIT}, + {"selectmode", "slm", P_STRING|P_VI_DEF|P_COMMA|P_NODUP, +- #ifdef FEAT_VISUAL + (char_u *)&p_slm, PV_NONE, +- #else +- (char_u *)NULL, PV_NONE, +- #endif + {(char_u *)"", (char_u *)0L} SCRIPTID_INIT}, + {"sessionoptions", "ssop", P_STRING|P_VI_DEF|P_COMMA|P_NODUP, + #ifdef FEAT_SESSION +--- 2186,2196 ---- +*************** +*** 2979,2991 **** + static char *(p_wak_values[]) = {"yes", "menu", "no", NULL}; + #endif + static char *(p_mousem_values[]) = {"extend", "popup", "popup_setpos", "mac", NULL}; +- #ifdef FEAT_VISUAL + static char *(p_sel_values[]) = {"inclusive", "exclusive", "old", NULL}; + static char *(p_slm_values[]) = {"mouse", "key", "cmd", NULL}; +- #endif +- #ifdef FEAT_VISUAL + static char *(p_km_values[]) = {"startsel", "stopsel", NULL}; +- #endif + #ifdef FEAT_BROWSE + static char *(p_bsdir_values[]) = {"current", "last", "buffer", NULL}; + #endif +--- 2967,2975 ---- +*************** +*** 6578,6584 **** + } + #endif + +- #ifdef FEAT_VISUAL + /* 'selection' */ + else if (varp == &p_sel) + { +--- 6562,6567 ---- +*************** +*** 6593,6599 **** + if (check_opt_strings(p_slm, p_slm_values, TRUE) != OK) + errmsg = e_invarg; + } +- #endif + + #ifdef FEAT_BROWSE + /* 'browsedir' */ +--- 6576,6581 ---- +*************** +*** 6605,6611 **** + } + #endif + +- #ifdef FEAT_VISUAL + /* 'keymodel' */ + else if (varp == &p_km) + { +--- 6587,6592 ---- +*************** +*** 6617,6623 **** + km_startsel = (vim_strchr(p_km, 'a') != NULL); + } + } +- #endif + + /* 'mousemodel' */ + else if (varp == &p_mousem) +--- 6598,6603 ---- +*** ../vim-7.4.211/src/os_msdos.c 2013-05-06 04:06:04.000000000 +0200 +--- src/os_msdos.c 2014-03-23 13:28:24.855168644 +0100 +*************** +*** 2270,2278 **** + default: + case 'L': type = MLINE; break; + case 'C': type = MCHAR; break; +- #ifdef FEAT_VISUAL + case 'B': type = MBLOCK; break; +- #endif + } + } + +--- 2270,2276 ---- +*************** +*** 2799,2807 **** + default: + case MLINE: clip_sel_type = "L"; break; + case MCHAR: clip_sel_type = "C"; break; +- #ifdef FEAT_VISUAL + case MBLOCK: clip_sel_type = "B"; break; +- #endif + } + + movedata( +--- 2797,2803 ---- +*** ../vim-7.4.211/src/os_qnx.c 2011-09-21 19:48:08.000000000 +0200 +--- src/os_qnx.c 2014-03-23 13:28:38.815168858 +0100 +*************** +*** 78,86 **** + default: /* fallthrough to line type */ + case 'L': type = MLINE; break; + case 'C': type = MCHAR; break; +- #ifdef FEAT_VISUAL + case 'B': type = MBLOCK; break; +- #endif + } + is_type_set = TRUE; + } +--- 78,84 ---- +*************** +*** 143,151 **** + default: /* fallthrough to MLINE */ + case MLINE: *vim_clip = 'L'; break; + case MCHAR: *vim_clip = 'C'; break; +- #ifdef FEAT_VISUAL + case MBLOCK: *vim_clip = 'B'; break; +- #endif + } + + vim_strncpy(text_clip, str, len); +--- 141,147 ---- +*** ../vim-7.4.211/src/quickfix.c 2014-03-12 19:41:37.096948866 +0100 +--- src/quickfix.c 2014-03-23 13:28:50.907169043 +0100 +*************** +*** 2347,2355 **** + else + height = QF_WINHEIGHT; + +- #ifdef FEAT_VISUAL + reset_VIsual_and_resel(); /* stop Visual mode */ +- #endif + #ifdef FEAT_GUI + need_mouse_correct = TRUE; + #endif +--- 2347,2353 ---- +*** ../vim-7.4.211/src/regexp.c 2013-11-21 17:12:55.000000000 +0100 +--- src/regexp.c 2014-03-23 13:29:14.495169404 +0100 +*************** +*** 4179,4187 **** + - (*mb_head_off)(regline, reginput - 1), reg_buf); + return -1; + } +- + #endif +! #ifdef FEAT_VISUAL + static int reg_match_visual __ARGS((void)); + + /* +--- 4179,4186 ---- + - (*mb_head_off)(regline, reginput - 1), reg_buf); + return -1; + } + #endif +! + static int reg_match_visual __ARGS((void)); + + /* +*************** +*** 4258,4264 **** + } + return TRUE; + } +- #endif + + #define ADVANCE_REGINPUT() mb_ptr_adv(reginput) + +--- 4257,4262 ---- +*************** +*** 4440,4448 **** + break; + + case RE_VISUAL: +- #ifdef FEAT_VISUAL + if (!reg_match_visual()) +- #endif + status = RA_NOMATCH; + break; + +--- 4438,4444 ---- +*** ../vim-7.4.211/src/regexp_nfa.c 2013-11-28 14:20:11.000000000 +0100 +--- src/regexp_nfa.c 2014-03-23 13:29:31.367169663 +0100 +*************** +*** 6403,6416 **** + break; + + case NFA_VISUAL: +- #ifdef FEAT_VISUAL + result = reg_match_visual(); + if (result) + { + add_here = TRUE; + add_state = t->state->out; + } +- #endif + break; + + case NFA_MOPEN1: +--- 6403,6414 ---- +*** ../vim-7.4.211/src/screen.c 2013-12-11 15:51:54.000000000 +0100 +--- src/screen.c 2014-03-23 13:32:10.787172106 +0100 +*************** +*** 446,453 **** + #endif + } + +- #if defined(FEAT_RUBY) || defined(FEAT_PERL) || defined(FEAT_VISUAL) || \ +- (defined(FEAT_CLIPBOARD) && defined(FEAT_X11)) || defined(PROTO) + /* + * update all windows that are editing the current buffer + */ +--- 446,451 ---- +*************** +*** 458,464 **** + redraw_curbuf_later(type); + update_screen(type); + } +- #endif + + /* + * update_screen() +--- 456,461 ---- +*************** +*** 596,609 **** + && curwin->w_botfill == curwin->w_old_botfill + #endif + && curwin->w_topline == curwin->w_lines[0].wl_lnum) +- #ifdef FEAT_VISUAL + || (type == INVERTED + && VIsual_active + && curwin->w_old_cursor_lnum == curwin->w_cursor.lnum + && curwin->w_old_visual_mode == VIsual_mode + && (curwin->w_valid & VALID_VIRTCOL) + && curwin->w_old_curswant == curwin->w_curswant) +- #endif + )) + curwin->w_redr_type = type; + +--- 593,604 ---- +*************** +*** 1030,1039 **** + updating. 0 when no mid area updating. */ + int bot_start = 999;/* first row of the bot area that needs + updating. 999 when no bot area updating */ +- #ifdef FEAT_VISUAL + int scrolled_down = FALSE; /* TRUE when scrolled down when + w_topline got smaller a bit */ +- #endif + #ifdef FEAT_SEARCH_EXTRA + matchitem_T *cur; /* points to the match list */ + int top_to_mod = FALSE; /* redraw above mod_top */ +--- 1025,1032 ---- +*************** +*** 1354,1362 **** + /* Need to update rows that are new, stop at the + * first one that scrolled down. */ + top_end = i; +- #ifdef FEAT_VISUAL + scrolled_down = TRUE; +- #endif + + /* Move the entries that were scrolled, disable + * the entries for the lines to be redrawn. */ +--- 1347,1353 ---- +*************** +*** 1513,1519 **** + type = NOT_VALID; + } + +- #ifdef FEAT_VISUAL + /* check if we are updating or removing the inverted part */ + if ((VIsual_active && buf == curwin->w_buffer) + || (wp->w_old_cursor_lnum != 0 && type != NOT_VALID)) +--- 1504,1509 ---- +*************** +*** 1708,1714 **** + wp->w_old_visual_lnum = 0; + wp->w_old_visual_col = 0; + } +- #endif /* FEAT_VISUAL */ + + #if defined(FEAT_SYN_HL) || defined(FEAT_SEARCH_EXTRA) + /* reset got_int, otherwise regexp won't work */ +--- 1698,1703 ---- +*************** +*** 2670,2676 **** + * 6. set highlighting for the Visual area an other text. + * If all folded lines are in the Visual area, highlight the line. + */ +- #ifdef FEAT_VISUAL + if (VIsual_active && wp->w_buffer == curwin->w_buffer) + { + if (ltoreq(curwin->w_cursor, VIsual)) +--- 2659,2664 ---- +*************** +*** 2718,2724 **** + } + } + } +- #endif + + #ifdef FEAT_SYN_HL + /* Show 'cursorcolumn' in the fold line. */ +--- 2706,2711 ---- +*************** +*** 2876,2885 **** + int fromcol, tocol; /* start/end of inverting */ + int fromcol_prev = -2; /* start of inverting after cursor */ + int noinvcur = FALSE; /* don't invert the cursor */ +- #ifdef FEAT_VISUAL + pos_T *top, *bot; + int lnum_in_visual_area = FALSE; +- #endif + pos_T pos; + long v; + +--- 2863,2870 ---- +*************** +*** 3090,3096 **** + */ + fromcol = -10; + tocol = MAXCOL; +- #ifdef FEAT_VISUAL + if (VIsual_active && wp->w_buffer == curwin->w_buffer) + { + /* Visual is after curwin->w_cursor */ +--- 3075,3080 ---- +*************** +*** 3183,3191 **** + /* + * handle 'incsearch' and ":s///c" highlighting + */ +! else +! #endif /* FEAT_VISUAL */ +! if (highlight_match + && wp == curwin + && lnum >= curwin->w_cursor.lnum + && lnum <= curwin->w_cursor.lnum + search_match_lines) +--- 3167,3173 ---- + /* + * handle 'incsearch' and ":s///c" highlighting + */ +! else if (highlight_match + && wp == curwin + && lnum >= curwin->w_cursor.lnum + && lnum <= curwin->w_cursor.lnum + search_match_lines) +*************** +*** 3324,3330 **** + mb_ptr_adv(ptr); + } + +- #if defined(FEAT_SYN_HL) || defined(FEAT_VIRTUALEDIT) || defined(FEAT_VISUAL) + /* When: + * - 'cuc' is set, or + * - 'colorcolumn' is set, or +--- 3306,3311 ---- +*************** +*** 3333,3359 **** + * the end of the line may be before the start of the displayed part. + */ + if (vcol < v && ( +! # ifdef FEAT_SYN_HL +! wp->w_p_cuc +! || draw_color_col +! # if defined(FEAT_VIRTUALEDIT) || defined(FEAT_VISUAL) +! || +! # endif +! # endif +! # ifdef FEAT_VIRTUALEDIT +! virtual_active() +! # ifdef FEAT_VISUAL +! || +! # endif +! # endif +! # ifdef FEAT_VISUAL +! (VIsual_active && wp->w_buffer == curwin->w_buffer) +! # endif +! )) + { + vcol = v; + } +- #endif + + /* Handle a character that's not completely on the screen: Put ptr at + * that character but skip the first few screen characters. */ +--- 3314,3329 ---- + * the end of the line may be before the start of the displayed part. + */ + if (vcol < v && ( +! #ifdef FEAT_SYN_HL +! wp->w_p_cuc || draw_color_col || +! #endif +! #ifdef FEAT_VIRTUALEDIT +! virtual_active() || +! #endif +! (VIsual_active && wp->w_buffer == curwin->w_buffer))) + { + vcol = v; + } + + /* Handle a character that's not completely on the screen: Put ptr at + * that character but skip the first few screen characters. */ +*************** +*** 4500,4508 **** + && ((wp->w_p_list && lcs_eol > 0) + || ((fromcol >= 0 || fromcol_prev >= 0) + && tocol > vcol +- #ifdef FEAT_VISUAL + && VIsual_mode != Ctrl_V +- #endif + && ( + # ifdef FEAT_RIGHTLEFT + wp->w_p_rl ? (col >= 0) : +--- 4470,4476 ---- +*************** +*** 4854,4864 **** + #endif + if (lcs_eol == lcs_eol_one + && ((area_attr != 0 && vcol == fromcol +- #ifdef FEAT_VISUAL + && (VIsual_mode != Ctrl_V + || lnum == VIsual.lnum + || lnum == curwin->w_cursor.lnum) +- #endif + && c == NUL) + #ifdef FEAT_SEARCH_EXTRA + /* highlight 'hlsearch' match at end of line */ +--- 4822,4830 ---- +*************** +*** 9659,9668 **** + do_mode = ((p_smd && msg_silent == 0) + && ((State & INSERT) + || restart_edit +! #ifdef FEAT_VISUAL +! || VIsual_active +! #endif +! )); + if (do_mode || Recording) + { + /* +--- 9625,9631 ---- + do_mode = ((p_smd && msg_silent == 0) + && ((State & INSERT) + || restart_edit +! || VIsual_active)); + if (do_mode || Recording) + { + /* +*************** +*** 9790,9796 **** + if ((State & INSERT) && p_paste) + MSG_PUTS_ATTR(_(" (paste)"), attr); + +- #ifdef FEAT_VISUAL + if (VIsual_active) + { + char *p; +--- 9753,9758 ---- +*************** +*** 9810,9816 **** + } + MSG_PUTS_ATTR(_(p), attr); + } +- #endif + MSG_PUTS_ATTR(" --", attr); + } + +--- 9772,9777 ---- +*************** +*** 9839,9849 **** + msg_clr_cmdline(); + + #ifdef FEAT_CMDL_INFO +- # ifdef FEAT_VISUAL + /* In Visual mode the size of the selected area must be redrawn. */ + if (VIsual_active) + clear_showcmd(); +- # endif + + /* If the last window has no status line, the ruler is after the mode + * message and must be redrawn */ +--- 9800,9808 ---- +*** ../vim-7.4.211/src/search.c 2014-01-14 21:31:30.000000000 +0100 +--- src/search.c 2014-03-23 13:34:46.351174489 +0100 +*************** +*** 506,512 **** + #endif + + /* +! * lowest level search function. + * Search for 'count'th occurrence of pattern 'pat' in direction 'dir'. + * Start at position 'pos' and return the found position in 'pos'. + * +--- 506,512 ---- + #endif + + /* +! * Lowest level search function. + * Search for 'count'th occurrence of pattern 'pat' in direction 'dir'. + * Start at position 'pos' and return the found position in 'pos'. + * +*************** +*** 3198,3204 **** + cls_bigword = bigword; + clearpos(&start_pos); + +- #ifdef FEAT_VISUAL + /* Correct cursor when 'selection' is exclusive */ + if (VIsual_active && *p_sel == 'e' && lt(VIsual, curwin->w_cursor)) + dec_cursor(); +--- 3198,3203 ---- +*************** +*** 3208,3214 **** + * character, select the word and/or white space under the cursor. + */ + if (!VIsual_active || equalpos(curwin->w_cursor, VIsual)) +- #endif + { + /* + * Go to start of current word or white space. +--- 3207,3212 ---- +*************** +*** 3245,3251 **** + include_white = TRUE; + } + +- #ifdef FEAT_VISUAL + if (VIsual_active) + { + /* should do something when inclusive == FALSE ! */ +--- 3243,3248 ---- +*************** +*** 3253,3259 **** + redraw_curbuf_later(INVERTED); /* update the inversion */ + } + else +- #endif + { + oap->start = start_pos; + oap->motion_type = MCHAR; +--- 3250,3255 ---- +*************** +*** 3267,3273 **** + while (count > 0) + { + inclusive = TRUE; +- #ifdef FEAT_VISUAL + if (VIsual_active && lt(curwin->w_cursor, VIsual)) + { + /* +--- 3263,3268 ---- +*************** +*** 3288,3294 **** + } + } + else +- #endif + { + /* + * Move cursor forward one word and/or white area. +--- 3283,3288 ---- +*************** +*** 3334,3351 **** + back_in_line(); + if (cls() == 0 && curwin->w_cursor.col > 0) + { +- #ifdef FEAT_VISUAL + if (VIsual_active) + VIsual = curwin->w_cursor; + else +- #endif + oap->start = curwin->w_cursor; + } + } + curwin->w_cursor = pos; /* put cursor back at end */ + } + +- #ifdef FEAT_VISUAL + if (VIsual_active) + { + if (*p_sel == 'e' && inclusive && ltoreq(VIsual, curwin->w_cursor)) +--- 3328,3342 ---- +*************** +*** 3357,3363 **** + } + } + else +- #endif + oap->inclusive = inclusive; + + return OK; +--- 3348,3353 ---- +*************** +*** 3384,3390 **** + pos = start_pos; + findsent(FORWARD, 1L); /* Find start of next sentence. */ + +- #ifdef FEAT_VISUAL + /* + * When the Visual area is bigger than one character: Extend it. + */ +--- 3374,3379 ---- +*************** +*** 3471,3477 **** + } + return OK; + } +- #endif + + /* + * If the cursor started on a blank, check if it is just before the start +--- 3460,3465 ---- +*************** +*** 3521,3527 **** + find_first_blank(&start_pos); + } + +- #ifdef FEAT_VISUAL + if (VIsual_active) + { + /* Avoid getting stuck with "is" on a single space before a sentence. */ +--- 3509,3514 ---- +*************** +*** 3534,3540 **** + redraw_curbuf_later(INVERTED); /* update the inversion */ + } + else +- #endif + { + /* include a newline after the sentence, if there is one */ + if (incl(&curwin->w_cursor) == -1) +--- 3521,3526 ---- +*************** +*** 3574,3582 **** + /* + * If we start on '(', '{', ')', '}', etc., use the whole block inclusive. + */ +- #ifdef FEAT_VISUAL + if (!VIsual_active || equalpos(VIsual, curwin->w_cursor)) +- #endif + { + setpcmark(); + if (what == '{') /* ignore indent */ +--- 3560,3566 ---- +*************** +*** 3587,3593 **** + /* cursor on '(' or '{', move cursor just after it */ + ++curwin->w_cursor.col; + } +- #ifdef FEAT_VISUAL + else if (lt(VIsual, curwin->w_cursor)) + { + old_start = VIsual; +--- 3571,3576 ---- +*************** +*** 3595,3601 **** + } + else + old_end = VIsual; +- #endif + + /* + * Search backwards for unclosed '(', '{', etc.. +--- 3578,3583 ---- +*************** +*** 3641,3647 **** + if (decl(&curwin->w_cursor) != 0) + break; + } +- #ifdef FEAT_VISUAL + /* + * In Visual mode, when the resulting area is not bigger than what we + * started with, extend it to the next block, and then exclude again. +--- 3623,3628 ---- +*************** +*** 3666,3676 **** + curwin->w_cursor = *end_pos; + } + else +- #endif + break; + } + +- #ifdef FEAT_VISUAL + if (VIsual_active) + { + if (*p_sel == 'e') +--- 3647,3655 ---- +*************** +*** 3683,3689 **** + showmode(); + } + else +- #endif + { + oap->start = start_pos; + oap->motion_type = MCHAR; +--- 3662,3667 ---- +*************** +*** 3807,3823 **** + old_pos = curwin->w_cursor; + old_end = curwin->w_cursor; /* remember where we started */ + old_start = old_end; +- #ifdef FEAT_VISUAL + if (!VIsual_active || *p_sel == 'e') +- #endif + decl(&old_end); /* old_end is inclusive */ + + /* + * If we start on "<aaa>" select that block. + */ +- #ifdef FEAT_VISUAL + if (!VIsual_active || equalpos(VIsual, curwin->w_cursor)) +- #endif + { + setpcmark(); + +--- 3785,3797 ---- +*************** +*** 3843,3849 **** + old_end = curwin->w_cursor; + } + } +- #ifdef FEAT_VISUAL + else if (lt(VIsual, curwin->w_cursor)) + { + old_start = VIsual; +--- 3817,3822 ---- +*************** +*** 3851,3857 **** + } + else + old_end = VIsual; +- #endif + + again: + /* +--- 3824,3829 ---- +*************** +*** 3951,3957 **** + } + } + +- #ifdef FEAT_VISUAL + if (VIsual_active) + { + /* If the end is before the start there is no text between tags, select +--- 3923,3928 ---- +*************** +*** 3966,3972 **** + showmode(); + } + else +- #endif + { + oap->start = start_pos; + oap->motion_type = MCHAR; +--- 3937,3942 ---- +*************** +*** 4010,4016 **** + + start_lnum = curwin->w_cursor.lnum; + +- #ifdef FEAT_VISUAL + /* + * When visual area is more than one line: extend it. + */ +--- 3980,3985 ---- +*************** +*** 4064,4070 **** + curwin->w_cursor.col = 0; + return retval; + } +- #endif + + /* + * First move back to the start_lnum of the paragraph or white lines +--- 4033,4038 ---- +*************** +*** 4136,4142 **** + while (start_lnum > 1 && linewhite(start_lnum - 1)) + --start_lnum; + +- #ifdef FEAT_VISUAL + if (VIsual_active) + { + /* Problem: when doing "Vipipip" nothing happens in a single white +--- 4104,4109 ---- +*************** +*** 4149,4155 **** + showmode(); + } + else +- #endif + { + oap->start.lnum = start_lnum; + oap->start.col = 0; +--- 4116,4121 ---- +*************** +*** 4247,4253 **** + int col_end; + int col_start = curwin->w_cursor.col; + int inclusive = FALSE; +- #ifdef FEAT_VISUAL + int vis_empty = TRUE; /* Visual selection <= 1 char */ + int vis_bef_curs = FALSE; /* Visual starts before cursor */ + int inside_quotes = FALSE; /* Looks like "i'" done before */ +--- 4213,4218 ---- +*************** +*** 4331,4347 **** + } + } + else +- #endif + +! if (line[col_start] == quotechar +! #ifdef FEAT_VISUAL +! || !vis_empty +! #endif +! ) + { + int first_col = col_start; + +- #ifdef FEAT_VISUAL + if (!vis_empty) + { + if (vis_bef_curs) +--- 4296,4306 ---- + } + } + else + +! if (line[col_start] == quotechar || !vis_empty) + { + int first_col = col_start; + + if (!vis_empty) + { + if (vis_bef_curs) +*************** +*** 4349,4355 **** + else + first_col = find_prev_quote(line, col_start, quotechar, NULL); + } +! #endif + /* The cursor is on a quote, we don't know if it's the opening or + * closing quote. Search from the start of the line to find out. + * Also do this when there is a Visual area, a' may leave the cursor +--- 4308,4314 ---- + else + first_col = find_prev_quote(line, col_start, quotechar, NULL); + } +! + /* The cursor is on a quote, we don't know if it's the opening or + * closing quote. Search from the start of the line to find out. + * Also do this when there is a Visual area, a' may leave the cursor +*************** +*** 4406,4419 **** + + /* Set start position. After vi" another i" must include the ". + * For v2i" include the quotes. */ +! if (!include && count < 2 +! #ifdef FEAT_VISUAL +! && (vis_empty || !inside_quotes) +! #endif +! ) + ++col_start; + curwin->w_cursor.col = col_start; +- #ifdef FEAT_VISUAL + if (VIsual_active) + { + /* Set the start of the Visual area when the Visual area was empty, we +--- 4365,4373 ---- + + /* Set start position. After vi" another i" must include the ". + * For v2i" include the quotes. */ +! if (!include && count < 2 && (vis_empty || !inside_quotes)) + ++col_start; + curwin->w_cursor.col = col_start; + if (VIsual_active) + { + /* Set the start of the Visual area when the Visual area was empty, we +*************** +*** 4433,4439 **** + } + } + else +- #endif + { + oap->start = curwin->w_cursor; + oap->motion_type = MCHAR; +--- 4387,4392 ---- +*************** +*** 4441,4454 **** + + /* Set end position. */ + curwin->w_cursor.col = col_end; +! if ((include || count > 1 +! #ifdef FEAT_VISUAL +! /* After vi" another i" must include the ". */ + || (!vis_empty && inside_quotes) +- #endif + ) && inc_cursor() == 2) + inclusive = TRUE; +- #ifdef FEAT_VISUAL + if (VIsual_active) + { + if (vis_empty || vis_bef_curs) +--- 4394,4403 ---- + + /* Set end position. */ + curwin->w_cursor.col = col_end; +! if ((include || count > 1 /* After vi" another i" must include the ". */ + || (!vis_empty && inside_quotes) + ) && inc_cursor() == 2) + inclusive = TRUE; + if (VIsual_active) + { + if (vis_empty || vis_bef_curs) +*************** +*** 4480,4486 **** + } + } + else +- #endif + { + /* Set inclusive and other oap's flags. */ + oap->inclusive = inclusive; +--- 4429,4434 ---- +*************** +*** 4491,4497 **** + + #endif /* FEAT_TEXTOBJ */ + +- #if defined(FEAT_VISUAL) || defined(PROTO) + static int is_one_char __ARGS((char_u *pattern)); + + /* +--- 4439,4444 ---- +*************** +*** 4690,4696 **** + vim_regfree(regmatch.regprog); + return result; + } +- #endif /* FEAT_VISUAL */ + + #if defined(FEAT_LISP) || defined(FEAT_CINDENT) || defined(FEAT_TEXTOBJ) \ + || defined(PROTO) +--- 4637,4642 ---- +*** ../vim-7.4.211/src/spell.c 2014-03-08 16:13:39.123462070 +0100 +--- src/spell.c 2014-03-23 13:35:15.195174931 +0100 +*************** +*** 10191,10197 **** + if (no_spell_checking(curwin)) + return; + +- #ifdef FEAT_VISUAL + if (VIsual_active) + { + /* Use the Visually selected text as the bad word. But reject +--- 10191,10196 ---- +*************** +*** 10209,10218 **** + ++badlen; + end_visual_mode(); + } +! else +! #endif +! /* Find the start of the badly spelled word. */ +! if (spell_move_to(curwin, FORWARD, TRUE, TRUE, NULL) == 0 + || curwin->w_cursor.col > prev_cursor.col) + { + /* No bad word or it starts after the cursor: use the word under the +--- 10208,10215 ---- + ++badlen; + end_visual_mode(); + } +! /* Find the start of the badly spelled word. */ +! else if (spell_move_to(curwin, FORWARD, TRUE, TRUE, NULL) == 0 + || curwin->w_cursor.col > prev_cursor.col) + { + /* No bad word or it starts after the cursor: use the word under the +*** ../vim-7.4.211/src/syntax.c 2013-11-28 18:53:47.000000000 +0100 +--- src/syntax.c 2014-03-23 13:35:30.379175164 +0100 +*************** +*** 6837,6846 **** + CENT("SignColumn term=standout ctermbg=Grey ctermfg=DarkBlue", + "SignColumn term=standout ctermbg=Grey ctermfg=DarkBlue guibg=Grey guifg=DarkBlue"), + #endif +- #ifdef FEAT_VISUAL + CENT("Visual term=reverse", + "Visual term=reverse guibg=LightGrey"), +- #endif + #ifdef FEAT_DIFF + CENT("DiffAdd term=bold ctermbg=LightBlue", + "DiffAdd term=bold ctermbg=LightBlue guibg=LightBlue"), +--- 6837,6844 ---- +*************** +*** 6927,6936 **** + CENT("SignColumn term=standout ctermbg=DarkGrey ctermfg=Cyan", + "SignColumn term=standout ctermbg=DarkGrey ctermfg=Cyan guibg=Grey guifg=Cyan"), + #endif +- #ifdef FEAT_VISUAL + CENT("Visual term=reverse", + "Visual term=reverse guibg=DarkGrey"), +- #endif + #ifdef FEAT_DIFF + CENT("DiffAdd term=bold ctermbg=DarkBlue", + "DiffAdd term=bold ctermbg=DarkBlue guibg=DarkBlue"), +--- 6925,6932 ---- +*** ../vim-7.4.211/src/term.c 2014-03-19 14:01:53.153903819 +0100 +--- src/term.c 2014-03-23 13:35:43.519175365 +0100 +*************** +*** 3456,3467 **** + return; + } + +- # ifdef FEAT_VISUAL + if (VIsual_active) + checkfor = MOUSE_VISUAL; +! else +! # endif +! if (State == HITRETURN || State == ASKMORE || State == SETWSIZE) + checkfor = MOUSE_RETURN; + else if (State & INSERT) + checkfor = MOUSE_INSERT; +--- 3456,3464 ---- + return; + } + + if (VIsual_active) + checkfor = MOUSE_VISUAL; +! else if (State == HITRETURN || State == ASKMORE || State == SETWSIZE) + checkfor = MOUSE_RETURN; + else if (State & INSERT) + checkfor = MOUSE_INSERT; +*** ../vim-7.4.211/src/ui.c 2013-07-13 20:57:08.000000000 +0200 +--- src/ui.c 2014-03-23 13:36:15.459175855 +0100 +*************** +*** 2610,2622 **** + if (on_sep_line) + return IN_SEP_LINE; + #endif +- #ifdef FEAT_VISUAL + if (flags & MOUSE_MAY_STOP_VIS) + { + end_visual_mode(); + redraw_curbuf_later(INVERTED); /* delete the inversion */ + } +- #endif + #if defined(FEAT_CMDWIN) && defined(FEAT_CLIPBOARD) + /* Continue a modeless selection in another window. */ + if (cmdwin_type != 0 && row < W_WINROW(curwin)) +--- 2610,2620 ---- +*************** +*** 2686,2717 **** + } + #endif + +- #ifdef FEAT_VISUAL + /* Before jumping to another buffer, or moving the cursor for a left + * click, stop Visual mode. */ + if (VIsual_active + && (wp->w_buffer != curwin->w_buffer + || (!on_status_line +! # ifdef FEAT_VERTSPLIT + && !on_sep_line +! # endif +! # ifdef FEAT_FOLDING + && ( +! # ifdef FEAT_RIGHTLEFT + wp->w_p_rl ? col < W_WIDTH(wp) - wp->w_p_fdc : +! # endif + col >= wp->w_p_fdc +! # ifdef FEAT_CMDWIN + + (cmdwin_type == 0 && wp == curwin ? 0 : 1) +- # endif +- ) + # endif + && (flags & MOUSE_MAY_STOP_VIS)))) + { + end_visual_mode(); + redraw_curbuf_later(INVERTED); /* delete the inversion */ + } +- #endif + #ifdef FEAT_CMDWIN + if (cmdwin_type != 0 && wp != curwin) + { +--- 2684,2713 ---- + } + #endif + + /* Before jumping to another buffer, or moving the cursor for a left + * click, stop Visual mode. */ + if (VIsual_active + && (wp->w_buffer != curwin->w_buffer + || (!on_status_line +! #ifdef FEAT_VERTSPLIT + && !on_sep_line +! #endif +! #ifdef FEAT_FOLDING + && ( +! # ifdef FEAT_RIGHTLEFT + wp->w_p_rl ? col < W_WIDTH(wp) - wp->w_p_fdc : +! # endif + col >= wp->w_p_fdc +! # ifdef FEAT_CMDWIN + + (cmdwin_type == 0 && wp == curwin ? 0 : 1) + # endif ++ ) ++ #endif + && (flags & MOUSE_MAY_STOP_VIS)))) + { + end_visual_mode(); + redraw_curbuf_later(INVERTED); /* delete the inversion */ + } + #ifdef FEAT_CMDWIN + if (cmdwin_type != 0 && wp != curwin) + { +*************** +*** 2801,2814 **** + #endif + else /* keep_window_focus must be TRUE */ + { +- #ifdef FEAT_VISUAL + /* before moving the cursor for a left click, stop Visual mode */ + if (flags & MOUSE_MAY_STOP_VIS) + { + end_visual_mode(); + redraw_curbuf_later(INVERTED); /* delete the inversion */ + } +- #endif + + #if defined(FEAT_CMDWIN) && defined(FEAT_CLIPBOARD) + /* Continue a modeless selection in another window. */ +--- 2797,2808 ---- +*************** +*** 2933,2939 **** + if (mouse_comp_pos(curwin, &row, &col, &curwin->w_cursor.lnum)) + mouse_past_bottom = TRUE; + +- #ifdef FEAT_VISUAL + /* Start Visual mode before coladvance(), for when 'sel' != "old" */ + if ((flags & MOUSE_MAY_VIS) && !VIsual_active) + { +--- 2927,2932 ---- +*************** +*** 2947,2953 **** + if (p_smd && msg_silent == 0) + redraw_cmdline = TRUE; /* show visual mode later */ + } +- #endif + + curwin->w_curswant = col; + curwin->w_set_curswant = FALSE; /* May still have been TRUE */ +--- 2940,2945 ---- +*** ../vim-7.4.211/src/undo.c 2014-03-12 16:51:35.060792541 +0100 +--- src/undo.c 2014-03-23 13:37:05.435176620 +0100 +*************** +*** 532,540 **** + + /* save named marks and Visual marks for undo */ + mch_memmove(uhp->uh_namedm, curbuf->b_namedm, sizeof(pos_T) * NMARKS); +- #ifdef FEAT_VISUAL + uhp->uh_visual = curbuf->b_visual; +- #endif + + curbuf->b_u_newhead = uhp; + if (curbuf->b_u_oldhead == NULL) +--- 532,538 ---- +*************** +*** 1014,1029 **** + /* Assume NMARKS will stay the same. */ + for (i = 0; i < NMARKS; ++i) + serialize_pos(uhp->uh_namedm[i], fp); +- #ifdef FEAT_VISUAL + serialize_visualinfo(&uhp->uh_visual, fp); +- #else +- { +- visualinfo_T info; +- +- memset(&info, 0, sizeof(visualinfo_T)); +- serialize_visualinfo(&info, fp); +- } +- #endif + put_time(fp, uhp->uh_time); + + /* Optional fields. */ +--- 1012,1018 ---- +*************** +*** 1082,1095 **** + uhp->uh_flags = get2c(fp); + for (i = 0; i < NMARKS; ++i) + unserialize_pos(&uhp->uh_namedm[i], fp); +- #ifdef FEAT_VISUAL + unserialize_visualinfo(&uhp->uh_visual, fp); +- #else +- { +- visualinfo_T info; +- unserialize_visualinfo(&info, fp); +- } +- #endif + uhp->uh_time = get8ctime(fp); + + /* Optional fields. */ +--- 1071,1077 ---- +*************** +*** 2406,2414 **** + int old_flags; + int new_flags; + pos_T namedm[NMARKS]; +- #ifdef FEAT_VISUAL + visualinfo_T visualinfo; +- #endif + int empty_buffer; /* buffer became empty */ + u_header_T *curhead = curbuf->b_u_curhead; + +--- 2388,2394 ---- +*************** +*** 2430,2438 **** + * save marks before undo/redo + */ + mch_memmove(namedm, curbuf->b_namedm, sizeof(pos_T) * NMARKS); +- #ifdef FEAT_VISUAL + visualinfo = curbuf->b_visual; +- #endif + curbuf->b_op_start.lnum = curbuf->b_ml.ml_line_count; + curbuf->b_op_start.col = 0; + curbuf->b_op_end.lnum = 0; +--- 2410,2416 ---- +*************** +*** 2602,2614 **** + curbuf->b_namedm[i] = curhead->uh_namedm[i]; + curhead->uh_namedm[i] = namedm[i]; + } +- #ifdef FEAT_VISUAL + if (curhead->uh_visual.vi_start.lnum != 0) + { + curbuf->b_visual = curhead->uh_visual; + curhead->uh_visual = visualinfo; + } +- #endif + + /* + * If the cursor is only off by one line, put it at the same position as +--- 2580,2590 ---- +*** ../vim-7.4.211/src/version.c 2014-03-22 13:29:57.693846167 +0100 +--- src/version.c 2014-03-23 15:01:49.719254526 +0100 +*************** +*** 642,656 **** + #else + "-virtualedit", + #endif +- #ifdef FEAT_VISUAL + "+visual", +! # ifdef FEAT_VISUALEXTRA + "+visualextra", +- # else +- "-visualextra", +- # endif + #else +! "-visual", + #endif + #ifdef FEAT_VIMINFO + "+viminfo", +--- 642,652 ---- + #else + "-virtualedit", + #endif + "+visual", +! #ifdef FEAT_VISUALEXTRA + "+visualextra", + #else +! "-visualextra", + #endif + #ifdef FEAT_VIMINFO + "+viminfo", +*** ../vim-7.4.211/src/window.c 2014-01-10 15:53:09.000000000 +0100 +--- src/window.c 2014-03-23 13:38:17.767177729 +0100 +*************** +*** 130,138 **** + case Ctrl_S: + case 's': + CHECK_CMDWIN +- #ifdef FEAT_VISUAL + reset_VIsual_and_resel(); /* stop Visual mode */ +- #endif + #ifdef FEAT_QUICKFIX + /* When splitting the quickfix window open a new buffer in it, + * don't replicate the quickfix buffer. */ +--- 130,136 ---- +*************** +*** 150,158 **** + case Ctrl_V: + case 'v': + CHECK_CMDWIN +- # ifdef FEAT_VISUAL + reset_VIsual_and_resel(); /* stop Visual mode */ +- # endif + # ifdef FEAT_QUICKFIX + /* When splitting the quickfix window open a new buffer in it, + * don't replicate the quickfix buffer. */ +--- 148,154 ---- +*************** +*** 170,178 **** + case Ctrl_HAT: + case '^': + CHECK_CMDWIN +- #ifdef FEAT_VISUAL + reset_VIsual_and_resel(); /* stop Visual mode */ +- #endif + STRCPY(cbuf, "split #"); + if (Prenum) + vim_snprintf((char *)cbuf + 7, sizeof(cbuf) - 7, +--- 166,172 ---- +*************** +*** 184,192 **** + case Ctrl_N: + case 'n': + CHECK_CMDWIN +- #ifdef FEAT_VISUAL + reset_VIsual_and_resel(); /* stop Visual mode */ +- #endif + #ifdef FEAT_QUICKFIX + newwindow: + #endif +--- 178,184 ---- +*************** +*** 206,223 **** + /* quit current window */ + case Ctrl_Q: + case 'q': +- #ifdef FEAT_VISUAL + reset_VIsual_and_resel(); /* stop Visual mode */ +- #endif + do_cmdline_cmd((char_u *)"quit"); + break; + + /* close current window */ + case Ctrl_C: + case 'c': +- #ifdef FEAT_VISUAL + reset_VIsual_and_resel(); /* stop Visual mode */ +- #endif + do_cmdline_cmd((char_u *)"close"); + break; + +--- 198,211 ---- +*************** +*** 226,234 **** + case Ctrl_Z: + case 'z': + CHECK_CMDWIN +- #ifdef FEAT_VISUAL + reset_VIsual_and_resel(); /* stop Visual mode */ +- #endif + do_cmdline_cmd((char_u *)"pclose"); + break; + +--- 214,220 ---- +*************** +*** 248,256 **** + case Ctrl_O: + case 'o': + CHECK_CMDWIN +- #ifdef FEAT_VISUAL + reset_VIsual_and_resel(); /* stop Visual mode */ +- #endif + do_cmdline_cmd((char_u *)"only"); + break; + +--- 234,240 ---- +*************** +*** 399,416 **** + case Ctrl_R: + case 'r': + CHECK_CMDWIN +- #ifdef FEAT_VISUAL + reset_VIsual_and_resel(); /* stop Visual mode */ +- #endif + win_rotate(FALSE, (int)Prenum1); /* downwards */ + break; + + /* rotate windows upwards */ + case 'R': + CHECK_CMDWIN +- #ifdef FEAT_VISUAL + reset_VIsual_and_resel(); /* stop Visual mode */ +- #endif + win_rotate(TRUE, (int)Prenum1); /* upwards */ + break; + +--- 383,396 ---- +*************** +*** 499,507 **** + case ']': + case Ctrl_RSB: + CHECK_CMDWIN +- #ifdef FEAT_VISUAL + reset_VIsual_and_resel(); /* stop Visual mode */ +- #endif + if (Prenum) + postponed_split = Prenum; + else +--- 479,485 ---- +*************** +*** 612,620 **** + #endif + case ']': + case Ctrl_RSB: +- #ifdef FEAT_VISUAL + reset_VIsual_and_resel(); /* stop Visual mode */ +- #endif + if (Prenum) + postponed_split = Prenum; + else +--- 590,596 ---- +*************** +*** 3726,3734 **** + { + tabpage_T *tp = curtab; + +- #ifdef FEAT_VISUAL + reset_VIsual_and_resel(); /* stop Visual mode */ +- #endif + #ifdef FEAT_AUTOCMD + if (trigger_leave_autocmds) + { +--- 3702,3708 ---- +*************** +*** 4029,4040 **** + return; + #endif + +- #ifdef FEAT_VISUAL + if (wp->w_buffer != curbuf) + reset_VIsual_and_resel(); + else if (VIsual_active) + wp->w_cursor = curwin->w_cursor; +- #endif + + #ifdef FEAT_GUI + need_mouse_correct = TRUE; +--- 4003,4012 ---- +*************** +*** 6037,6043 **** + long count; + linenr_T *file_lnum; + { +- # ifdef FEAT_VISUAL + if (VIsual_active) + { + int len; +--- 6009,6014 ---- +*************** +*** 6048,6054 **** + return find_file_name_in_path(ptr, len, + FNAME_MESS|FNAME_EXP|FNAME_REL, count, curbuf->b_ffname); + } +- # endif + return file_name_at_cursor(FNAME_MESS|FNAME_HYP|FNAME_EXP|FNAME_REL, count, + file_lnum); + +--- 6019,6024 ---- +*** ../vim-7.4.211/src/feature.h 2014-03-12 17:56:42.960852421 +0100 +--- src/feature.h 2014-03-23 13:39:02.003178407 +0100 +*************** +*** 214,220 **** + * +visual Visual mode - now always included. + * +visualextra Extra features for Visual mode (mostly block operators). + */ +- #define FEAT_VISUAL + #ifdef FEAT_NORMAL + # define FEAT_VISUALEXTRA + #endif +--- 214,219 ---- +*************** +*** 1138,1150 **** + #ifdef FEAT_GUI + # ifndef FEAT_CLIPBOARD + # define FEAT_CLIPBOARD +- # ifndef FEAT_VISUAL +- # define FEAT_VISUAL +- # endif + # endif + #endif + +! #if defined(FEAT_NORMAL) && defined(FEAT_VISUAL) \ + && (defined(UNIX) || defined(VMS)) \ + && defined(WANT_X11) && defined(HAVE_X11) + # define FEAT_XCLIPBOARD +--- 1137,1146 ---- + #ifdef FEAT_GUI + # ifndef FEAT_CLIPBOARD + # define FEAT_CLIPBOARD + # endif + #endif + +! #if defined(FEAT_NORMAL) \ + && (defined(UNIX) || defined(VMS)) \ + && defined(WANT_X11) && defined(HAVE_X11) + # define FEAT_XCLIPBOARD +*** ../vim-7.4.211/src/globals.h 2014-02-22 23:03:48.712901208 +0100 +--- src/globals.h 2014-03-23 13:39:17.407178643 +0100 +*************** +*** 662,668 **** + /* set to TRUE when "-s" commandline argument + * used for ex */ + +- #ifdef FEAT_VISUAL + EXTERN pos_T VIsual; /* start position of active Visual selection */ + EXTERN int VIsual_active INIT(= FALSE); + /* whether Visual mode is active */ +--- 662,667 ---- +*************** +*** 677,683 **** + + EXTERN int redo_VIsual_busy INIT(= FALSE); + /* TRUE when redoing Visual */ +- #endif + + #ifdef FEAT_MOUSE + /* +--- 676,681 ---- +*************** +*** 1178,1188 **** + EXTERN int fill_diff INIT(= '-'); + #endif + +- #ifdef FEAT_VISUAL + /* Whether 'keymodel' contains "stopsel" and "startsel". */ + EXTERN int km_stopsel INIT(= FALSE); + EXTERN int km_startsel INIT(= FALSE); +- #endif + + #ifdef FEAT_CMDWIN + EXTERN int cedit_key INIT(= -1); /* key value of 'cedit' option */ +--- 1176,1184 ---- +*** ../vim-7.4.211/src/option.h 2014-03-12 18:55:52.104906804 +0100 +--- src/option.h 2014-03-23 13:39:30.991178851 +0100 +*************** +*** 572,580 **** + EXTERN char_u *p_isp; /* 'isprint' */ + EXTERN int p_js; /* 'joinspaces' */ + EXTERN char_u *p_kp; /* 'keywordprg' */ +- #ifdef FEAT_VISUAL + EXTERN char_u *p_km; /* 'keymodel' */ +- #endif + #ifdef FEAT_LANGMAP + EXTERN char_u *p_langmap; /* 'langmap'*/ + #endif +--- 572,578 ---- +*************** +*** 681,690 **** + #endif + EXTERN char_u *p_sections; /* 'sections' */ + EXTERN int p_secure; /* 'secure' */ +- #ifdef FEAT_VISUAL + EXTERN char_u *p_sel; /* 'selection' */ + EXTERN char_u *p_slm; /* 'selectmode' */ +- #endif + #ifdef FEAT_SESSION + EXTERN char_u *p_ssop; /* 'sessionoptions' */ + EXTERN unsigned ssop_flags; +--- 679,686 ---- +*** ../vim-7.4.211/src/os_win32.h 2013-09-25 19:13:32.000000000 +0200 +--- src/os_win32.h 2014-03-23 13:39:49.819179139 +0100 +*************** +*** 68,74 **** + #endif + + #define USE_FNAME_CASE /* adjust case of file names */ +! #if !defined(FEAT_CLIPBOARD) && defined(FEAT_VISUAL) && defined(FEAT_MOUSE) + # define FEAT_CLIPBOARD /* include clipboard support */ + #endif + #if defined(__DATE__) && defined(__TIME__) +--- 68,74 ---- + #endif + + #define USE_FNAME_CASE /* adjust case of file names */ +! #if !defined(FEAT_CLIPBOARD) && defined(FEAT_MOUSE) + # define FEAT_CLIPBOARD /* include clipboard support */ + #endif + #if defined(__DATE__) && defined(__TIME__) +*** ../vim-7.4.211/src/structs.h 2014-03-12 18:55:52.104906804 +0100 +--- src/structs.h 2014-03-23 13:40:19.175179589 +0100 +*************** +*** 346,354 **** + #endif + int uh_flags; /* see below */ + pos_T uh_namedm[NMARKS]; /* marks before undo/after redo */ +- #ifdef FEAT_VISUAL + visualinfo_T uh_visual; /* Visual areas before undo/after redo */ +- #endif + time_t uh_time; /* timestamp when the change was made */ + long uh_save_nr; /* set when the file was saved after the + changes in this block */ +--- 346,352 ---- +*************** +*** 1406,1417 **** + + pos_T b_namedm[NMARKS]; /* current named marks (mark.c) */ + +- #ifdef FEAT_VISUAL + /* These variables are set when VIsual_active becomes FALSE */ + visualinfo_T b_visual; +! # ifdef FEAT_EVAL + int b_visual_mode_eval; /* b_visual.vi_mode for visualmode() */ +- # endif + #endif + + pos_T b_last_cursor; /* cursor position when last unloading this +--- 1404,1413 ---- + + pos_T b_namedm[NMARKS]; /* current named marks (mark.c) */ + + /* These variables are set when VIsual_active becomes FALSE */ + visualinfo_T b_visual; +! #ifdef FEAT_EVAL + int b_visual_mode_eval; /* b_visual.vi_mode for visualmode() */ + #endif + + pos_T b_last_cursor; /* cursor position when last unloading this +*************** +*** 1980,1986 **** + time through cursupdate() to the + current virtual column */ + +- #ifdef FEAT_VISUAL + /* + * the next six are used to update the visual part + */ +--- 1976,1981 ---- +*************** +*** 1991,1997 **** + linenr_T w_old_visual_lnum; /* last known start of visual part */ + colnr_T w_old_visual_col; /* last known start of visual part */ + colnr_T w_old_curswant; /* last known value of Curswant */ +- #endif + + /* + * "w_topline", "w_leftcol" and "w_skipcol" specify the offsets for +--- 1986,1991 ---- +*************** +*** 2293,2302 **** + (inclusive) */ + int empty; /* op_start and op_end the same (only used by + do_change()) */ +- #ifdef FEAT_VISUAL + int is_VIsual; /* operator on Visual area */ + int block_mode; /* current operator is Visual block mode */ +- #endif + colnr_T start_vcol; /* start col for block mode operator */ + colnr_T end_vcol; /* end col for block mode operator */ + #ifdef FEAT_AUTOCMD +--- 2287,2294 ---- +*** ../vim-7.4.211/src/version.c 2014-03-22 13:29:57.693846167 +0100 +--- src/version.c 2014-03-23 15:01:49.719254526 +0100 +*************** +*** 740,741 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 212, + /**/ + +-- +If all you have is a hammer, everything looks like a nail. +When your hammer is C++, everything begins to look like a thumb. + -- Steve Hoflich, comp.lang.c++ + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.213 b/SOURCES/7.4.213 new file mode 100644 index 0000000..1d0f55c --- /dev/null +++ b/SOURCES/7.4.213 @@ -0,0 +1,211 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.213 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.213 +Problem: It's not possible to open a new buffer without creating a swap + file. +Solution: Add the ":noswapfile" modifier. (Christian Brabandt) +Files: runtime/doc/recover.txt, src/ex_cmds.h, src/ex_docmd.c, + src/memline.c, src/structs.h + + +*** ../vim-7.4.212/runtime/doc/recover.txt 2013-08-10 13:25:00.000000000 +0200 +--- runtime/doc/recover.txt 2014-03-23 16:01:59.655309841 +0100 +*************** +*** 81,87 **** + 'maxmemtot'. And when making a change to a read-only file, the swap file is + created anyway. + +! The 'swapfile' option can be reset to avoid creating a swapfile. + + + Detecting an existing swap file ~ +--- 81,94 ---- + 'maxmemtot'. And when making a change to a read-only file, the swap file is + created anyway. + +! The 'swapfile' option can be reset to avoid creating a swapfile. And the +! |:noswapfile| modifier can be used to not create a swapfile for a new buffer. +! +! :noswap[file] {command} *:noswap* *:noswapfile* +! Execute {command}. If it contains a command that loads a new +! buffer, it will be loaded without creating a swapfile and the +! 'swapfile' option will be reset. If a buffer already had a +! swapfile it is not removed and 'swapfile' is not reset. + + + Detecting an existing swap file ~ +*** ../vim-7.4.212/src/ex_cmds.h 2014-03-22 13:29:57.693846167 +0100 +--- src/ex_cmds.h 2014-03-23 15:36:42.399286592 +0100 +*************** +*** 655,660 **** +--- 655,662 ---- + EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EX(CMD_noremenu, "noremenu", ex_menu, + RANGE|NOTADR|ZEROR|BANG|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), ++ EX(CMD_noswapfile, "noswapfile", ex_wrongmodifier, ++ NEEDARG|EXTRA|NOTRLCOM), + EX(CMD_normal, "normal", ex_normal, + RANGE|BANG|EXTRA|NEEDARG|NOTRLCOM|USECTRLV|SBOXOK|CMDWIN), + EX(CMD_number, "number", ex_print, +*** ../vim-7.4.212/src/ex_docmd.c 2014-03-23 15:12:29.919264336 +0100 +--- src/ex_docmd.c 2014-03-23 15:44:42.335293946 +0100 +*************** +*** 1874,1891 **** + #endif + continue; + +! case 'n': if (!checkforcmd(&ea.cmd, "noautocmd", 3)) +! break; +! #ifdef FEAT_AUTOCMD +! if (cmdmod.save_ei == NULL) + { +! /* Set 'eventignore' to "all". Restore the +! * existing option value later. */ +! cmdmod.save_ei = vim_strsave(p_ei); +! set_string_option_direct((char_u *)"ei", -1, + (char_u *)"all", OPT_FREE, SID_NONE); +! } + #endif + continue; + + case 'r': if (!checkforcmd(&ea.cmd, "rightbelow", 6)) +--- 1874,1896 ---- + #endif + continue; + +! case 'n': if (checkforcmd(&ea.cmd, "noautocmd", 3)) + { +! #ifdef FEAT_AUTOCMD +! if (cmdmod.save_ei == NULL) +! { +! /* Set 'eventignore' to "all". Restore the +! * existing option value later. */ +! cmdmod.save_ei = vim_strsave(p_ei); +! set_string_option_direct((char_u *)"ei", -1, + (char_u *)"all", OPT_FREE, SID_NONE); +! } + #endif ++ continue; ++ } ++ if (!checkforcmd(&ea.cmd, "noswapfile", 6)) ++ break; ++ cmdmod.noswapfile = TRUE; + continue; + + case 'r': if (!checkforcmd(&ea.cmd, "rightbelow", 6)) +*************** +*** 2596,2601 **** +--- 2601,2608 ---- + case CMD_lua: + case CMD_match: + case CMD_mzscheme: ++ case CMD_noautocmd: ++ case CMD_noswapfile: + case CMD_perl: + case CMD_psearch: + case CMD_python: +*************** +*** 3099,3104 **** +--- 3106,3112 ---- + {"leftabove", 5, FALSE}, + {"lockmarks", 3, FALSE}, + {"noautocmd", 3, FALSE}, ++ {"noswapfile", 3, FALSE}, + {"rightbelow", 6, FALSE}, + {"sandbox", 3, FALSE}, + {"silent", 3, FALSE}, +*************** +*** 3611,3616 **** +--- 3619,3626 ---- + case CMD_keeppatterns: + case CMD_leftabove: + case CMD_lockmarks: ++ case CMD_noautocmd: ++ case CMD_noswapfile: + case CMD_rightbelow: + case CMD_sandbox: + case CMD_silent: +*** ../vim-7.4.212/src/memline.c 2014-02-11 15:23:27.942123631 +0100 +--- src/memline.c 2014-03-23 15:48:05.679297062 +0100 +*************** +*** 289,294 **** +--- 289,297 ---- + buf->b_ml.ml_chunksize = NULL; + #endif + ++ if (cmdmod.noswapfile) ++ buf->b_p_swf = FALSE; ++ + /* + * When 'updatecount' is non-zero swap file may be opened later. + */ +*************** +*** 606,612 **** + * When 'updatecount' is 0 and 'noswapfile' there is no swap file. + * For help files we will make a swap file now. + */ +! if (p_uc != 0) + ml_open_file(buf); /* create a swap file */ + return; + } +--- 609,615 ---- + * When 'updatecount' is 0 and 'noswapfile' there is no swap file. + * For help files we will make a swap file now. + */ +! if (p_uc != 0 && !cmdmod.noswapfile) + ml_open_file(buf); /* create a swap file */ + return; + } +*************** +*** 719,725 **** + char_u *dirp; + + mfp = buf->b_ml.ml_mfp; +! if (mfp == NULL || mfp->mf_fd >= 0 || !buf->b_p_swf) + return; /* nothing to do */ + + #ifdef FEAT_SPELL +--- 722,728 ---- + char_u *dirp; + + mfp = buf->b_ml.ml_mfp; +! if (mfp == NULL || mfp->mf_fd >= 0 || !buf->b_p_swf || cmdmod.noswapfile) + return; /* nothing to do */ + + #ifdef FEAT_SPELL +*** ../vim-7.4.212/src/structs.h 2014-03-23 15:12:29.943264337 +0100 +--- src/structs.h 2014-03-23 15:36:42.407286592 +0100 +*************** +*** 545,550 **** +--- 545,551 ---- + int keepjumps; /* TRUE when ":keepjumps" was used */ + int lockmarks; /* TRUE when ":lockmarks" was used */ + int keeppatterns; /* TRUE when ":keeppatterns" was used */ ++ int noswapfile; /* TRUE when ":noswapfile" was used */ + # ifdef FEAT_AUTOCMD + char_u *save_ei; /* saved value of 'eventignore' */ + # endif +*** ../vim-7.4.212/src/version.c 2014-03-23 15:12:29.943264337 +0100 +--- src/version.c 2014-03-23 16:02:16.519310100 +0100 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 213, + /**/ + +-- +Looking at Perl through Lisp glasses, Perl looks atrocious. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.214 b/SOURCES/7.4.214 new file mode 100644 index 0000000..bdce8be --- /dev/null +++ b/SOURCES/7.4.214 @@ -0,0 +1,50 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.214 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.214 +Problem: Compilation problems on HP_nonStop (Tandem). +Solution: Add #defines. (Joachim Schmitz) +Files: src/vim.h + + +*** ../vim-7.4.213/src/vim.h 2014-02-23 22:52:33.352764716 +0100 +--- src/vim.h 2014-03-24 17:25:40.328710672 +0100 +*************** +*** 77,82 **** +--- 77,86 ---- + # endif + # include <floss.h> + # define ROOT_UID 65535 ++ # define OLDXAW ++ # if (_TANDEM_ARCH_ == 2 && __H_Series_RVU >= 621) ++ # define SA_ONSTACK_COMPATIBILITY ++ # endif + #else + # define ROOT_UID 0 + #endif +*** ../vim-7.4.213/src/version.c 2014-03-23 16:03:56.171311627 +0100 +--- src/version.c 2014-03-24 17:26:50.976711754 +0100 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 214, + /**/ + +-- +ARTHUR: You are indeed brave Sir knight, but the fight is mine. +BLACK KNIGHT: Had enough? +ARTHUR: You stupid bastard. You havn't got any arms left. + "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.215 b/SOURCES/7.4.215 new file mode 100644 index 0000000..ff65a62 --- /dev/null +++ b/SOURCES/7.4.215 @@ -0,0 +1,87 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.215 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.215 +Problem: Inconsistency: ":sp foo" does not reload "foo", unless "foo" is + the current buffer. (Liang Li) +Solution: Do not reload the current buffer on a split command. +Files: runtime/doc/windows.txt, src/ex_docmd.c + + +*** ../vim-7.4.214/runtime/doc/windows.txt 2013-08-10 13:25:08.000000000 +0200 +--- runtime/doc/windows.txt 2014-03-25 12:34:51.989767212 +0100 +*************** +*** 132,144 **** + CTRL-W s *CTRL-W_s* + CTRL-W S *CTRL-W_S* + CTRL-W CTRL-S *CTRL-W_CTRL-S* +! :[N]sp[lit] [++opt] [+cmd] *:sp* *:split* + Split current window in two. The result is two viewports on +! the same file. Make new window N high (default is to use half +! the height of the current window). Reduces the current window +! height to create room (and others, if the 'equalalways' option +! is set, 'eadirection' isn't "hor", and one of them is higher +! than the current or the new window). + Note: CTRL-S does not work on all terminals and might block + further input, use CTRL-Q to get going again. + Also see |++opt| and |+cmd|. +--- 132,151 ---- + CTRL-W s *CTRL-W_s* + CTRL-W S *CTRL-W_S* + CTRL-W CTRL-S *CTRL-W_CTRL-S* +! :[N]sp[lit] [++opt] [+cmd] [file] *:sp* *:split* + Split current window in two. The result is two viewports on +! the same file. +! +! Make the new window N high (default is to use half the height +! of the current window). Reduces the current window height to +! create room (and others, if the 'equalalways' option is set, +! 'eadirection' isn't "hor", and one of them is higher than the +! current or the new window). +! +! If [file] is given it will be edited in the new window. If it +! is not loaded in any buffer, it will be read. Else the new +! window will use the already loaded buffer. +! + Note: CTRL-S does not work on all terminals and might block + further input, use CTRL-Q to get going again. + Also see |++opt| and |+cmd|. +*** ../vim-7.4.214/src/ex_docmd.c 2014-03-23 16:03:56.167311626 +0100 +--- src/ex_docmd.c 2014-03-25 12:57:13.737787771 +0100 +*************** +*** 7938,7943 **** +--- 7938,7945 ---- + ? ECMD_ONE : eap->do_ecmd_lnum, + (P_HID(curbuf) ? ECMD_HIDE : 0) + + (eap->forceit ? ECMD_FORCEIT : 0) ++ /* after a split we can use an existing buffer */ ++ + (old_curwin != NULL ? ECMD_OLDBUF : 0) + #ifdef FEAT_LISTCMDS + + (eap->cmdidx == CMD_badd ? ECMD_ADDBUF : 0 ) + #endif +*** ../vim-7.4.214/src/version.c 2014-03-24 19:43:56.604837795 +0100 +--- src/version.c 2014-03-25 12:30:13.137762939 +0100 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 215, + /**/ + +-- +BLACK KNIGHT: The Black Knight always triumphs. Have at you! + ARTHUR takes his last leg off. The BLACK KNIGHT's body lands upright. +BLACK KNIGHT: All right, we'll call it a draw. + "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.216 b/SOURCES/7.4.216 new file mode 100644 index 0000000..ebf78d1 --- /dev/null +++ b/SOURCES/7.4.216 @@ -0,0 +1,73 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.216 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.216 +Problem: Compiler warnings. (Tony Mechelynck) +Solution: Initialize variables, add #ifdef. +Files: src/term.c, src/os_unix.h + + +*** ../vim-7.4.215/src/term.c 2014-03-23 15:12:29.939264336 +0100 +--- src/term.c 2014-03-25 13:39:10.821826340 +0100 +*************** +*** 4185,4191 **** + { + #ifdef FEAT_MBYTE + int col; +! int row_char; + #endif + j = 0; + extra = 0; +--- 4185,4191 ---- + { + #ifdef FEAT_MBYTE + int col; +! int row_char = NUL; + #endif + j = 0; + extra = 0; +*** ../vim-7.4.215/src/os_unix.h 2014-03-12 16:51:35.060792541 +0100 +--- src/os_unix.h 2014-03-25 13:42:35.141829471 +0100 +*************** +*** 565,571 **** + # endif + #endif + +! #define HAVE_DUP /* have dup() */ + #define HAVE_ST_MODE /* have stat.st_mode */ + + /* We have three kinds of ACL support. */ +--- 565,573 ---- + # endif + #endif + +! #ifndef HAVE_DUP +! # define HAVE_DUP /* have dup() */ +! #endif + #define HAVE_ST_MODE /* have stat.st_mode */ + + /* We have three kinds of ACL support. */ +*** ../vim-7.4.215/src/version.c 2014-03-25 13:03:44.937793766 +0100 +--- src/version.c 2014-03-25 13:40:36.969827660 +0100 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 216, + /**/ + +-- +Hacker: Someone skilled in computer programming (good guy). +Cracker: A hacker that uses his skills to crack software (bad guy). + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.217 b/SOURCES/7.4.217 new file mode 100644 index 0000000..9af7857 --- /dev/null +++ b/SOURCES/7.4.217 @@ -0,0 +1,85 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.217 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.217 +Problem: When src/auto/configure was updated, "make clean" would run + configure pointlessly. +Solution: Do not run configure for "make clean" and "make distclean" when + the make program supports $MAKECMDGOALS. (Ken Takata) +Files: src/Makefile + + +*** ../vim-7.4.216/src/Makefile 2014-02-05 12:36:36.622026833 +0100 +--- src/Makefile 2014-03-25 15:31:10.629929307 +0100 +*************** +*** 546,551 **** +--- 546,552 ---- + # again. + #CC = cc + #CC = gcc ++ #CC = clang + + # COMPILER FLAGS - change as you please. Either before running {{{1 + # configure or afterwards. For examples see below. +*************** +*** 1666,1672 **** + ! grep -x -F 'ac_cv_env_CFLAGS_value=$(CFLAGS)' auto/config.cache > /dev/null; then \ + rm auto/config.cache; \ + fi +! GUI_INC_LOC="$(GUI_INC_LOC)" GUI_LIB_LOC="$(GUI_LIB_LOC)" \ + CC="$(CC)" CPPFLAGS="$(CPPFLAGS)" CFLAGS="$(CFLAGS)" \ + LDFLAGS="$(LDFLAGS)" $(CONF_SHELL) srcdir="$(srcdir)" \ + ./configure $(CONF_OPT_GUI) $(CONF_OPT_X) $(CONF_OPT_XSMP) \ +--- 1667,1674 ---- + ! grep -x -F 'ac_cv_env_CFLAGS_value=$(CFLAGS)' auto/config.cache > /dev/null; then \ + rm auto/config.cache; \ + fi +! if test "X$(MAKECMDGOALS)" != "Xclean" -a "X$(MAKECMDGOALS)" != "Xdistclean"; then \ +! GUI_INC_LOC="$(GUI_INC_LOC)" GUI_LIB_LOC="$(GUI_LIB_LOC)" \ + CC="$(CC)" CPPFLAGS="$(CPPFLAGS)" CFLAGS="$(CFLAGS)" \ + LDFLAGS="$(LDFLAGS)" $(CONF_SHELL) srcdir="$(srcdir)" \ + ./configure $(CONF_OPT_GUI) $(CONF_OPT_X) $(CONF_OPT_XSMP) \ +*************** +*** 1679,1685 **** + $(CONF_OPT_COMPBY) $(CONF_OPT_ACL) $(CONF_OPT_NETBEANS) \ + $(CONF_ARGS) $(CONF_OPT_MZSCHEME) $(CONF_OPT_PLTHOME) \ + $(CONF_OPT_LUA) $(CONF_OPT_LUA_PREFIX) \ +! $(CONF_OPT_SYSMOUSE) + + # Use "make reconfig" to rerun configure without cached values. + # When config.h changes, most things will be recompiled automatically. +--- 1681,1688 ---- + $(CONF_OPT_COMPBY) $(CONF_OPT_ACL) $(CONF_OPT_NETBEANS) \ + $(CONF_ARGS) $(CONF_OPT_MZSCHEME) $(CONF_OPT_PLTHOME) \ + $(CONF_OPT_LUA) $(CONF_OPT_LUA_PREFIX) \ +! $(CONF_OPT_SYSMOUSE); \ +! fi + + # Use "make reconfig" to rerun configure without cached values. + # When config.h changes, most things will be recompiled automatically. +*** ../vim-7.4.216/src/version.c 2014-03-25 13:46:22.841832960 +0100 +--- src/version.c 2014-03-25 15:32:30.813930536 +0100 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 217, + /**/ + +-- +CRONE: Who sent you? +ARTHUR: The Knights Who Say GNU! +CRONE: Aaaagh! (she looks around in rear) No! We have no licenses here. + "Monty Python and the Holy editor wars" PYTHON (MONTY) SOFTWARE LTD + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.218 b/SOURCES/7.4.218 new file mode 100644 index 0000000..b878cb7 --- /dev/null +++ b/SOURCES/7.4.218 @@ -0,0 +1,578 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.218 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.218 +Problem: It's not easy to remove duplicates from a list. +Solution: Add the uniq() function. (LCD) +Files: runtime/doc/change.txt, runtime/doc/eval.txt, + runtime/doc/usr_41.txt, runtime/doc/version7.txt, src/eval.c, + src/testdir/test55.in, src/testdir/test55.ok + + +*** ../vim-7.4.217/runtime/doc/change.txt 2013-09-22 15:23:38.000000000 +0200 +--- runtime/doc/change.txt 2014-03-25 17:32:29.510040841 +0100 +*************** +*** 1645,1651 **** + 7. Sorting text *sorting* + + Vim has a sorting function and a sorting command. The sorting function can be +! found here: |sort()|. + + *:sor* *:sort* + :[range]sor[t][!] [i][u][r][n][x][o] [/{pattern}/] +--- 1650,1656 ---- + 7. Sorting text *sorting* + + Vim has a sorting function and a sorting command. The sorting function can be +! found here: |sort()|, |uniq()|. + + *:sor* *:sort* + :[range]sor[t][!] [i][u][r][n][x][o] [/{pattern}/] +*** ../vim-7.4.217/runtime/doc/eval.txt 2014-02-23 23:38:58.820760280 +0100 +--- runtime/doc/eval.txt 2014-03-25 17:47:18.750054467 +0100 +*************** +*** 326,331 **** +--- 327,333 ---- + Changing the order of items in a list: > + :call sort(list) " sort a list alphabetically + :call reverse(list) " reverse the order of items ++ :call uniq(sort(list)) " sort and remove duplicates + + + For loop ~ +*************** +*** 1518,1523 **** +--- 1520,1526 ---- + startup. These are the files that Vim remembers marks for. + The length of the List is limited by the ' argument of the + 'viminfo' option (default is 100). ++ When the |viminfo| file is not used the List is empty. + Also see |:oldfiles| and |c_#<|. + The List can be modified, but this has no effect on what is + stored in the |viminfo| file later. If you use values other +*************** +*** 2003,2008 **** +--- 2006,2013 ---- + type( {name}) Number type of variable {name} + undofile( {name}) String undo file name for {name} + undotree() List undo file tree ++ uniq( {list} [, {func} [, {dict}]]) ++ List remove adjacent duplicates from a list + values( {dict}) List values in {dict} + virtcol( {expr}) Number screen column of cursor or mark + visualmode( [expr]) String last visual mode used +*************** +*** 5474,5493 **** + + + sort({list} [, {func} [, {dict}]]) *sort()* *E702* +! Sort the items in {list} in-place. Returns {list}. If you +! want a list to remain unmodified make a copy first: > + :let sortedlist = sort(copy(mylist)) + < Uses the string representation of each item to sort on. + Numbers sort after Strings, |Lists| after Numbers. + For sorting text in the current buffer use |:sort|. + When {func} is given and it is one then case is ignored. +- {dict} is for functions with the "dict" attribute. It will be +- used to set the local variable "self". |Dictionary-function| + When {func} is a |Funcref| or a function name, this function + is called to compare items. The function is invoked with two + items as argument and must return zero if they are equal, 1 or + bigger if the first one sorts after the second one, -1 or + smaller if the first one sorts before the second one. + Example: > + func MyCompare(i1, i2) + return a:i1 == a:i2 ? 0 : a:i1 > a:i2 ? 1 : -1 +--- 5491,5516 ---- + + + sort({list} [, {func} [, {dict}]]) *sort()* *E702* +! Sort the items in {list} in-place. Returns {list}. +! +! If you want a list to remain unmodified make a copy first: > + :let sortedlist = sort(copy(mylist)) + < Uses the string representation of each item to sort on. + Numbers sort after Strings, |Lists| after Numbers. + For sorting text in the current buffer use |:sort|. ++ + When {func} is given and it is one then case is ignored. + When {func} is a |Funcref| or a function name, this function + is called to compare items. The function is invoked with two + items as argument and must return zero if they are equal, 1 or + bigger if the first one sorts after the second one, -1 or + smaller if the first one sorts before the second one. ++ ++ {dict} is for functions with the "dict" attribute. It will be ++ used to set the local variable "self". |Dictionary-function| ++ ++ Also see |uniq()|. ++ + Example: > + func MyCompare(i1, i2) + return a:i1 == a:i2 ? 0 : a:i1 > a:i2 ? 1 : -1 +*************** +*** 6155,6160 **** +--- 6178,6191 ---- + blocks. Each item may again have an "alt" + item. + ++ uniq({list} [, {func} [, {dict}]]) *uniq()* *E882* ++ Remove second and succeeding copies of repeated adjacent ++ {list} items in-place. Returns {list}. If you want a list ++ to remain unmodified make a copy first: > ++ :let newlist = uniq(copy(mylist)) ++ < The default compare function uses the string representation of ++ each item. For the use of {func} and {dict} see |sort()|. ++ + values({dict}) *values()* + Return a |List| with all the values of {dict}. The |List| is + in arbitrary order. +*** ../vim-7.4.217/runtime/doc/usr_41.txt 2013-08-10 13:25:05.000000000 +0200 +--- runtime/doc/usr_41.txt 2014-03-25 17:32:29.518040841 +0100 +*************** +*** 1,4 **** +! *usr_41.txt* For Vim version 7.4. Last change: 2013 Feb 20 + + VIM USER MANUAL - by Bram Moolenaar + +--- 1,4 ---- +! *usr_41.txt* For Vim version 7.4. Last change: 2014 Jan 10 + + VIM USER MANUAL - by Bram Moolenaar + +*************** +*** 595,607 **** + matchlist() like matchstr() and also return submatches + stridx() first index of a short string in a long string + strridx() last index of a short string in a long string +! strlen() length of a string + substitute() substitute a pattern match with a string + submatch() get a specific match in ":s" and substitute() + strpart() get part of a string + expand() expand special keywords + iconv() convert text from one encoding to another + byteidx() byte index of a character in a string + repeat() repeat a string multiple times + eval() evaluate a string expression + +--- 595,611 ---- + matchlist() like matchstr() and also return submatches + stridx() first index of a short string in a long string + strridx() last index of a short string in a long string +! strlen() length of a string in bytes +! strchars() length of a string in characters +! strwidth() size of string when displayed +! strdisplaywidth() size of string when displayed, deals with tabs + substitute() substitute a pattern match with a string + submatch() get a specific match in ":s" and substitute() + strpart() get part of a string + expand() expand special keywords + iconv() convert text from one encoding to another + byteidx() byte index of a character in a string ++ byteidxcomp() like byteidx() but count composing characters + repeat() repeat a string multiple times + eval() evaluate a string expression + +*************** +*** 619,624 **** +--- 623,629 ---- + map() change each List item + sort() sort a List + reverse() reverse the order of a List ++ uniq() remove copies of repeated adjacent items + split() split a String into a List + join() join List items into a String + range() return a List with a sequence of numbers +*************** +*** 656,661 **** +--- 661,669 ---- + ceil() round up + floor() round down + trunc() remove value after decimal point ++ fmod() remainder of division ++ exp() exponential ++ log() natural logarithm (logarithm to base e) + log10() logarithm to base 10 + pow() value of x to the exponent y + sqrt() square root +*************** +*** 675,680 **** +--- 683,689 ---- + invert() bitwise invert + or() bitwise OR + xor() bitwise XOR ++ sha256() SHA-256 hash + + Variables: *var-functions* + type() type of a variable +*************** +*** 697,707 **** +--- 706,720 ---- + wincol() window column number of the cursor + winline() window line number of the cursor + cursor() position the cursor at a line/column ++ screencol() get screen column of the cursor ++ screenrow() get screen row of the cursor + getpos() get position of cursor, mark, etc. + setpos() set position of cursor, mark, etc. + byte2line() get line number at a specific byte count + line2byte() byte count at a specific line + diff_filler() get the number of filler lines above a line ++ screenattr() get attribute at a screen line/row ++ screenchar() get character code at a screen line/row + + Working with text in the current buffer: *text-functions* + getline() get a line or list of lines from the buffer +*************** +*** 883,896 **** +--- 896,917 ---- + libcall() call a function in an external library + libcallnr() idem, returning a number + ++ undofile() get the name of the undo file ++ undotree() return the state of the undo tree ++ + getreg() get contents of a register + getregtype() get type of a register + setreg() set contents and type of a register + ++ shiftwidth() effective value of 'shiftwidth' ++ + taglist() get list of matching tags + tagfiles() get a list of tags files + ++ luaeval() evaluate Lua expression + mzeval() evaluate |MzScheme| expression ++ py3eval() evaluate Python expression (|+python3|) ++ pyeval() evaluate Python expression (|+python|) + + ============================================================================== + *41.7* Defining a function +*** ../vim-7.4.217/runtime/doc/version7.txt 2013-08-10 14:23:06.000000000 +0200 +--- runtime/doc/version7.txt 2014-03-25 17:32:29.518040841 +0100 +*************** +*** 942,947 **** +--- 942,948 ---- + |tagfiles()| List with tags file names + |taglist()| get list of matching tags (Yegappan Lakshmanan) + |tr()| translate characters (Ron Aaron) ++ |uniq()| remove copies of repeated adjacent list items + |values()| get List of Dictionary values + |winnr()| takes an argument: what window to use + |winrestview()| restore the view of the current window +*** ../vim-7.4.217/src/eval.c 2014-03-23 15:12:29.915264336 +0100 +--- src/eval.c 2014-03-25 17:52:09.554058923 +0100 +*************** +*** 744,749 **** +--- 744,750 ---- + static void f_type __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_undofile __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_undotree __ARGS((typval_T *argvars, typval_T *rettv)); ++ static void f_uniq __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_values __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_virtcol __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_visualmode __ARGS((typval_T *argvars, typval_T *rettv)); +*************** +*** 8150,8155 **** +--- 8151,8157 ---- + {"type", 1, 1, f_type}, + {"undofile", 1, 1, f_undofile}, + {"undotree", 0, 0, f_undotree}, ++ {"uniq", 1, 3, f_uniq}, + {"values", 1, 1, f_values}, + {"virtcol", 1, 1, f_virtcol}, + {"visualmode", 0, 1, f_visualmode}, +*************** +*** 17023,17032 **** + static char_u *item_compare_func; + static dict_T *item_compare_selfdict; + static int item_compare_func_err; + #define ITEM_COMPARE_FAIL 999 + + /* +! * Compare functions for f_sort() below. + */ + static int + #ifdef __BORLANDC__ +--- 17025,17035 ---- + static char_u *item_compare_func; + static dict_T *item_compare_selfdict; + static int item_compare_func_err; ++ static void do_sort_uniq __ARGS((typval_T *argvars, typval_T *rettv, int sort)); + #define ITEM_COMPARE_FAIL 999 + + /* +! * Compare functions for f_sort() and f_uniq() below. + */ + static int + #ifdef __BORLANDC__ +*************** +*** 17100,17108 **** + * "sort({list})" function + */ + static void +! f_sort(argvars, rettv) + typval_T *argvars; + typval_T *rettv; + { + list_T *l; + listitem_T *li; +--- 17103,17112 ---- + * "sort({list})" function + */ + static void +! do_sort_uniq(argvars, rettv, sort) + typval_T *argvars; + typval_T *rettv; ++ int sort; + { + list_T *l; + listitem_T *li; +*************** +*** 17111,17122 **** + long i; + + if (argvars[0].v_type != VAR_LIST) +! EMSG2(_(e_listarg), "sort()"); + else + { + l = argvars[0].vval.v_list; + if (l == NULL || tv_check_lock(l->lv_lock, +! (char_u *)_("sort() argument"))) + return; + rettv->vval.v_list = l; + rettv->v_type = VAR_LIST; +--- 17115,17126 ---- + long i; + + if (argvars[0].v_type != VAR_LIST) +! EMSG2(_(e_listarg), sort ? "sort()" : "uniq()"); + else + { + l = argvars[0].vval.v_list; + if (l == NULL || tv_check_lock(l->lv_lock, +! (char_u *)(sort ? _("sort() argument") : _("uniq() argument")))) + return; + rettv->vval.v_list = l; + rettv->v_type = VAR_LIST; +*************** +*** 17163,17191 **** + ptrs = (listitem_T **)alloc((int)(len * sizeof(listitem_T *))); + if (ptrs == NULL) + return; +- i = 0; +- for (li = l->lv_first; li != NULL; li = li->li_next) +- ptrs[i++] = li; + +! item_compare_func_err = FALSE; +! /* test the compare function */ +! if (item_compare_func != NULL +! && item_compare2((void *)&ptrs[0], (void *)&ptrs[1]) + == ITEM_COMPARE_FAIL) +! EMSG(_("E702: Sort compare function failed")); + else + { +! /* Sort the array with item pointers. */ +! qsort((void *)ptrs, (size_t)len, sizeof(listitem_T *), +! item_compare_func == NULL ? item_compare : item_compare2); + + if (!item_compare_func_err) + { +! /* Clear the List and append the items in the sorted order. */ +! l->lv_first = l->lv_last = l->lv_idx_item = NULL; +! l->lv_len = 0; +! for (i = 0; i < len; ++i) +! list_append(l, ptrs[i]); + } + } + +--- 17167,17238 ---- + ptrs = (listitem_T **)alloc((int)(len * sizeof(listitem_T *))); + if (ptrs == NULL) + return; + +! i = 0; +! if (sort) +! { +! /* sort(): ptrs will be the list to sort */ +! for (li = l->lv_first; li != NULL; li = li->li_next) +! ptrs[i++] = li; +! +! item_compare_func_err = FALSE; +! /* test the compare function */ +! if (item_compare_func != NULL +! && item_compare2((void *)&ptrs[0], (void *)&ptrs[1]) + == ITEM_COMPARE_FAIL) +! EMSG(_("E702: Sort compare function failed")); +! else +! { +! /* Sort the array with item pointers. */ +! qsort((void *)ptrs, (size_t)len, sizeof(listitem_T *), +! item_compare_func == NULL ? item_compare : item_compare2); +! +! if (!item_compare_func_err) +! { +! /* Clear the List and append the items in sorted order. */ +! l->lv_first = l->lv_last = l->lv_idx_item = NULL; +! l->lv_len = 0; +! for (i = 0; i < len; ++i) +! list_append(l, ptrs[i]); +! } +! } +! } + else + { +! int (*item_compare_func_ptr)__ARGS((const void *, const void *)); +! +! /* f_uniq(): ptrs will be a stack of items to remove */ +! item_compare_func_err = FALSE; +! item_compare_func_ptr = item_compare_func +! ? item_compare2 : item_compare; +! +! for (li = l->lv_first; li != NULL && li->li_next != NULL; +! li = li->li_next) +! { +! if (item_compare_func_ptr((void *)&li, (void *)&li->li_next) +! == 0) +! ptrs[i++] = li; +! if (item_compare_func_err) +! { +! EMSG(_("E882: Uniq compare function failed")); +! break; +! } +! } + + if (!item_compare_func_err) + { +! while (--i >= 0) +! { +! li = ptrs[i]->li_next; +! ptrs[i]->li_next = li->li_next; +! if (li->li_next != NULL) +! li->li_next->li_prev = ptrs[i]; +! else +! l->lv_last = ptrs[i]; +! list_fix_watch(l, li); +! listitem_free(li); +! l->lv_len--; +! } + } + } + +*************** +*** 17194,17199 **** +--- 17241,17268 ---- + } + + /* ++ * "sort({list})" function ++ */ ++ static void ++ f_sort(argvars, rettv) ++ typval_T *argvars; ++ typval_T *rettv; ++ { ++ do_sort_uniq(argvars, rettv, TRUE); ++ } ++ ++ /* ++ * "uniq({list})" function ++ */ ++ static void ++ f_uniq(argvars, rettv) ++ typval_T *argvars; ++ typval_T *rettv; ++ { ++ do_sort_uniq(argvars, rettv, FALSE); ++ } ++ ++ /* + * "soundfold({word})" function + */ + static void +*** ../vim-7.4.217/src/testdir/test55.in 2014-01-14 15:24:24.000000000 +0100 +--- src/testdir/test55.in 2014-03-25 17:32:29.522040841 +0100 +*************** +*** 323,335 **** + : $put ='caught ' . v:exception + :endtry + :" +! :" reverse() and sort() +! :let l = ['-0', 'A11', 2, 'xaaa', 4, 'foo', 'foo6', [0, 1, 2], 'x8'] + :$put =string(reverse(l)) + :$put =string(reverse(reverse(l))) + :$put =string(sort(l)) + :$put =string(reverse(sort(l))) + :$put =string(sort(reverse(sort(l)))) + :" + :" splitting a string to a List + :$put =string(split(' aa bb ')) +--- 323,337 ---- + : $put ='caught ' . v:exception + :endtry + :" +! :" reverse(), sort(), uniq() +! :let l = ['-0', 'A11', 2, 2, 'xaaa', 4, 'foo', 'foo6', 'foo', [0, 1, 2], 'x8', [0, 1, 2], 1.5] +! :$put =string(uniq(copy(l))) + :$put =string(reverse(l)) + :$put =string(reverse(reverse(l))) + :$put =string(sort(l)) + :$put =string(reverse(sort(l))) + :$put =string(sort(reverse(sort(l)))) ++ :$put =string(uniq(sort(l))) + :" + :" splitting a string to a List + :$put =string(split(' aa bb ')) +*** ../vim-7.4.217/src/testdir/test55.ok 2014-01-14 15:24:24.000000000 +0100 +--- src/testdir/test55.ok 2014-03-25 17:32:29.522040841 +0100 +*************** +*** 94,104 **** + caught a:000[2] + caught a:000[3] + [1, 2, [3, 9, 5, 6], {'a': 12, '5': 8}] +! ['x8', [0, 1, 2], 'foo6', 'foo', 4, 'xaaa', 2, 'A11', '-0'] +! ['x8', [0, 1, 2], 'foo6', 'foo', 4, 'xaaa', 2, 'A11', '-0'] +! ['-0', 'A11', 'foo', 'foo6', 'x8', 'xaaa', 2, 4, [0, 1, 2]] +! [[0, 1, 2], 4, 2, 'xaaa', 'x8', 'foo6', 'foo', 'A11', '-0'] +! ['-0', 'A11', 'foo', 'foo6', 'x8', 'xaaa', 2, 4, [0, 1, 2]] + ['aa', 'bb'] + ['aa', 'bb'] + ['', 'aa', 'bb', ''] +--- 94,106 ---- + caught a:000[2] + caught a:000[3] + [1, 2, [3, 9, 5, 6], {'a': 12, '5': 8}] +! ['-0', 'A11', 2, 'xaaa', 4, 'foo', 'foo6', 'foo', [0, 1, 2], 'x8', [0, 1, 2], 1.5] +! [1.5, [0, 1, 2], 'x8', [0, 1, 2], 'foo', 'foo6', 'foo', 4, 'xaaa', 2, 2, 'A11', '-0'] +! [1.5, [0, 1, 2], 'x8', [0, 1, 2], 'foo', 'foo6', 'foo', 4, 'xaaa', 2, 2, 'A11', '-0'] +! ['-0', 'A11', 'foo', 'foo', 'foo6', 'x8', 'xaaa', 1.5, 2, 2, 4, [0, 1, 2], [0, 1, 2]] +! [[0, 1, 2], [0, 1, 2], 4, 2, 2, 1.5, 'xaaa', 'x8', 'foo6', 'foo', 'foo', 'A11', '-0'] +! ['-0', 'A11', 'foo', 'foo', 'foo6', 'x8', 'xaaa', 1.5, 2, 2, 4, [0, 1, 2], [0, 1, 2]] +! ['-0', 'A11', 'foo', 'foo6', 'x8', 'xaaa', 1.5, 2, 4, [0, 1, 2]] + ['aa', 'bb'] + ['aa', 'bb'] + ['', 'aa', 'bb', ''] +*** ../vim-7.4.217/src/version.c 2014-03-25 18:05:45.242071421 +0100 +--- src/version.c 2014-03-25 17:34:51.918043023 +0100 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 218, + /**/ + +-- +Never under any circumstances take a sleeping pill +and a laxative on the same night. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.219 b/SOURCES/7.4.219 new file mode 100644 index 0000000..69a5177 --- /dev/null +++ b/SOURCES/7.4.219 @@ -0,0 +1,100 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.219 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.219 +Problem: When 'relativenumber' or 'cursorline' are set the window is + redrawn much to often. (Patrick Hemmer, Dominique Pelle) +Solution: Check the VALID_CROW flag instead of VALID_WROW. +Files: src/move.c + + +*** ../vim-7.4.218/src/move.c 2014-03-23 15:12:29.927264336 +0100 +--- src/move.c 2014-03-27 11:59:28.524382473 +0100 +*************** +*** 772,777 **** +--- 772,791 ---- + } + } + ++ /* Redraw when w_cline_row changes and 'relativenumber' or 'cursorline' is ++ * set. */ ++ if ((curwin->w_p_rnu ++ #ifdef FEAT_SYN_HL ++ || curwin->w_p_cul ++ #endif ++ ) ++ && (curwin->w_valid & VALID_CROW) == 0 ++ # ifdef FEAT_INS_EXPAND ++ && !pum_visible() ++ # endif ++ ) ++ redraw_later(SOME_VALID); ++ + wp->w_valid |= VALID_CROW|VALID_CHEIGHT; + + /* validate botline too, if update_screen doesn't do it */ +*************** +*** 1172,1193 **** + if (prev_skipcol != curwin->w_skipcol) + redraw_later(NOT_VALID); + +- /* Redraw when w_row changes and 'relativenumber' is set */ +- if (((curwin->w_valid & VALID_WROW) == 0 && (curwin->w_p_rnu + #ifdef FEAT_SYN_HL +! /* or when w_row changes and 'cursorline' is set. */ +! || curwin->w_p_cul +! #endif +! )) +! #ifdef FEAT_SYN_HL +! /* or when w_virtcol changes and 'cursorcolumn' is set */ +! || (curwin->w_p_cuc && (curwin->w_valid & VALID_VIRTCOL) == 0) +! #endif +! ) + # ifdef FEAT_INS_EXPAND +! if (!pum_visible()) + # endif +! redraw_later(SOME_VALID); + + curwin->w_valid |= VALID_WCOL|VALID_WROW|VALID_VIRTCOL; + } +--- 1186,1200 ---- + if (prev_skipcol != curwin->w_skipcol) + redraw_later(NOT_VALID); + + #ifdef FEAT_SYN_HL +! /* Redraw when w_virtcol changes and 'cursorcolumn' is set */ +! if (curwin->w_p_cuc && (curwin->w_valid & VALID_VIRTCOL) == 0 + # ifdef FEAT_INS_EXPAND +! && !pum_visible() + # endif +! ) +! redraw_later(SOME_VALID); +! #endif + + curwin->w_valid |= VALID_WCOL|VALID_WROW|VALID_VIRTCOL; + } +*** ../vim-7.4.218/src/version.c 2014-03-25 18:23:27.062087691 +0100 +--- src/version.c 2014-03-27 12:11:15.276393302 +0100 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 219, + /**/ + +-- +The only way the average employee can speak to an executive is by taking a +second job as a golf caddie. + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.220 b/SOURCES/7.4.220 new file mode 100644 index 0000000..6df81d8 --- /dev/null +++ b/SOURCES/7.4.220 @@ -0,0 +1,106 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.220 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.220 +Problem: Test 105 does not work in a shadow dir. (James McCoy) +Solution: Omit "src/" from the checked path. +Files: src/testdir/test105.in, src/testdir/test105.ok + + +*** ../vim-7.4.219/src/testdir/test105.in 2014-02-23 23:38:58.812760280 +0100 +--- src/testdir/test105.in 2014-03-27 12:31:45.052412146 +0100 +*************** +*** 7,13 **** + :set shellslash + :let tab="\t" + :command -nargs=1 Put :let expr=<q-args> | $put =expr.tab.strtrans(string(eval(expr))) +! :let $HOME=fnamemodify('.', ':p:h:h:h') + :Put fnamemodify('.', ':p' )[-1:] + :Put fnamemodify('.', ':p:h' )[-1:] + :Put fnamemodify('test.out', ':p' )[-1:] +--- 7,13 ---- + :set shellslash + :let tab="\t" + :command -nargs=1 Put :let expr=<q-args> | $put =expr.tab.strtrans(string(eval(expr))) +! :let $HOME=fnamemodify('.', ':p:h:h') + :Put fnamemodify('.', ':p' )[-1:] + :Put fnamemodify('.', ':p:h' )[-1:] + :Put fnamemodify('test.out', ':p' )[-1:] +*************** +*** 23,29 **** + :Put fnamemodify('abc.fb2.tar.gz', ':r' ) + :Put fnamemodify('abc.fb2.tar.gz', ':r:r' ) + :Put fnamemodify('abc.fb2.tar.gz', ':r:r:r' ) +! :Put substitute(fnamemodify('abc.fb2.tar.gz', ':p:r:r'), '.*\(src/testdir/.*\)', '\1', '') + :Put fnamemodify('abc.fb2.tar.gz', ':e' ) + :Put fnamemodify('abc.fb2.tar.gz', ':e:e' ) + :Put fnamemodify('abc.fb2.tar.gz', ':e:e:e' ) +--- 23,29 ---- + :Put fnamemodify('abc.fb2.tar.gz', ':r' ) + :Put fnamemodify('abc.fb2.tar.gz', ':r:r' ) + :Put fnamemodify('abc.fb2.tar.gz', ':r:r:r' ) +! :Put substitute(fnamemodify('abc.fb2.tar.gz', ':p:r:r'), '.*\(testdir/.*\)', '\1', '') + :Put fnamemodify('abc.fb2.tar.gz', ':e' ) + :Put fnamemodify('abc.fb2.tar.gz', ':e:e' ) + :Put fnamemodify('abc.fb2.tar.gz', ':e:e:e' ) +*** ../vim-7.4.219/src/testdir/test105.ok 2014-02-23 23:38:58.812760280 +0100 +--- src/testdir/test105.ok 2014-03-27 12:31:40.732412080 +0100 +*************** +*** 3,10 **** + fnamemodify('test.out', ':p' )[-1:] 't' + fnamemodify('test.out', ':.' ) 'test.out' + fnamemodify('../testdir/a', ':.' ) 'a' +! fnamemodify('test.out', ':~' ) '~/src/testdir/test.out' +! fnamemodify('../testdir/a', ':~' ) '~/src/testdir/a' + fnamemodify('../testdir/a', ':t' ) 'a' + fnamemodify('.', ':p:t' ) '' + fnamemodify('test.out', ':p:t' ) 'test.out' +--- 3,10 ---- + fnamemodify('test.out', ':p' )[-1:] 't' + fnamemodify('test.out', ':.' ) 'test.out' + fnamemodify('../testdir/a', ':.' ) 'a' +! fnamemodify('test.out', ':~' ) '~/testdir/test.out' +! fnamemodify('../testdir/a', ':~' ) '~/testdir/a' + fnamemodify('../testdir/a', ':t' ) 'a' + fnamemodify('.', ':p:t' ) '' + fnamemodify('test.out', ':p:t' ) 'test.out' +*************** +*** 13,19 **** + fnamemodify('abc.fb2.tar.gz', ':r' ) 'abc.fb2.tar' + fnamemodify('abc.fb2.tar.gz', ':r:r' ) 'abc.fb2' + fnamemodify('abc.fb2.tar.gz', ':r:r:r' ) 'abc' +! substitute(fnamemodify('abc.fb2.tar.gz', ':p:r:r'), '.*\(src/testdir/.*\)', '\1', '') 'src/testdir/abc.fb2' + fnamemodify('abc.fb2.tar.gz', ':e' ) 'gz' + fnamemodify('abc.fb2.tar.gz', ':e:e' ) 'tar.gz' + fnamemodify('abc.fb2.tar.gz', ':e:e:e' ) 'fb2.tar.gz' +--- 13,19 ---- + fnamemodify('abc.fb2.tar.gz', ':r' ) 'abc.fb2.tar' + fnamemodify('abc.fb2.tar.gz', ':r:r' ) 'abc.fb2' + fnamemodify('abc.fb2.tar.gz', ':r:r:r' ) 'abc' +! substitute(fnamemodify('abc.fb2.tar.gz', ':p:r:r'), '.*\(testdir/.*\)', '\1', '') 'testdir/abc.fb2' + fnamemodify('abc.fb2.tar.gz', ':e' ) 'gz' + fnamemodify('abc.fb2.tar.gz', ':e:e' ) 'tar.gz' + fnamemodify('abc.fb2.tar.gz', ':e:e:e' ) 'fb2.tar.gz' +*** ../vim-7.4.219/src/version.c 2014-03-27 12:11:43.888393741 +0100 +--- src/version.c 2014-03-27 12:32:56.320413238 +0100 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 220, + /**/ + +-- +If the Universe is constantly expanding, why can't I ever find a parking space? + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.221 b/SOURCES/7.4.221 new file mode 100644 index 0000000..4162a24 --- /dev/null +++ b/SOURCES/7.4.221 @@ -0,0 +1,62 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.221 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.221 +Problem: Quickfix doesn't resize on ":copen 20". (issue 199) +Solution: Resize the window when requested. (Christian Brabandt) +Files: src/quickfix.c + + +*** ../vim-7.4.220/src/quickfix.c 2014-03-23 15:12:29.931264336 +0100 +--- src/quickfix.c 2014-03-27 16:56:25.316655478 +0100 +*************** +*** 2358,2364 **** +--- 2358,2379 ---- + win = qf_find_win(qi); + + if (win != NULL && cmdmod.tab == 0) ++ { + win_goto(win); ++ if (eap->addr_count != 0) ++ { ++ #ifdef FEAT_VERTSPLIT ++ if (cmdmod.split & WSP_VERT) ++ { ++ if (height != W_WIDTH(win)) ++ win_setwidth(height); ++ } ++ else ++ #endif ++ if (height != win->w_height) ++ win_setheight(height); ++ } ++ } + else + { + qf_buf = qf_find_buf(qi); +*** ../vim-7.4.220/src/version.c 2014-03-27 12:40:26.188420131 +0100 +--- src/version.c 2014-03-27 16:54:38.864653847 +0100 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 221, + /**/ + +-- +The fastest way to get an engineer to solve a problem is to declare that the +problem is unsolvable. No engineer can walk away from an unsolvable problem +until it's solved. + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.222 b/SOURCES/7.4.222 new file mode 100644 index 0000000..79f04f6 --- /dev/null +++ b/SOURCES/7.4.222 @@ -0,0 +1,83 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.222 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.222 +Problem: The Ruby directory is constructed from parts. +Solution: Use 'rubyarchhdrdir' if it exists. (James McCoy) +Files: src/configure.in, src/auto/configure + + +*** ../vim-7.4.221/src/configure.in 2014-02-23 22:52:33.356764716 +0100 +--- src/configure.in 2014-03-27 17:13:09.624670867 +0100 +*************** +*** 1692,1700 **** + if test "X$rubyhdrdir" != "X"; then + AC_MSG_RESULT($rubyhdrdir) + RUBY_CFLAGS="-I$rubyhdrdir" +! rubyarch=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['arch']]"` +! if test -d "$rubyhdrdir/$rubyarch"; then +! RUBY_CFLAGS="$RUBY_CFLAGS -I$rubyhdrdir/$rubyarch" + fi + rubyversion=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['ruby_version']].gsub(/\./, '')[[0,2]]"` + if test "X$rubyversion" = "X"; then +--- 1692,1700 ---- + if test "X$rubyhdrdir" != "X"; then + AC_MSG_RESULT($rubyhdrdir) + RUBY_CFLAGS="-I$rubyhdrdir" +! rubyarchdir=`$vi_cv_path_ruby -r rbconfig -e "print ($ruby_rbconfig::CONFIG.has_key? 'rubyarchhdrdir') ? $ruby_rbconfig::CONFIG[['rubyarchhdrdir']] : '$rubyhdrdir/'+$ruby_rbconfig::CONFIG[['arch']]"` +! if test -d "$rubyarchdir"; then +! RUBY_CFLAGS="$RUBY_CFLAGS -I$rubyarchdir" + fi + rubyversion=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['ruby_version']].gsub(/\./, '')[[0,2]]"` + if test "X$rubyversion" = "X"; then +*** ../vim-7.4.221/src/auto/configure 2014-02-23 22:52:33.364764715 +0100 +--- src/auto/configure 2014-03-27 17:14:25.256672026 +0100 +*************** +*** 6777,6785 **** + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $rubyhdrdir" >&5 + $as_echo "$rubyhdrdir" >&6; } + RUBY_CFLAGS="-I$rubyhdrdir" +! rubyarch=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG['arch']"` +! if test -d "$rubyhdrdir/$rubyarch"; then +! RUBY_CFLAGS="$RUBY_CFLAGS -I$rubyhdrdir/$rubyarch" + fi + rubyversion=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG['ruby_version'].gsub(/\./, '')[0,2]"` + if test "X$rubyversion" = "X"; then +--- 6777,6785 ---- + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $rubyhdrdir" >&5 + $as_echo "$rubyhdrdir" >&6; } + RUBY_CFLAGS="-I$rubyhdrdir" +! rubyarchdir=`$vi_cv_path_ruby -r rbconfig -e "print ($ruby_rbconfig::CONFIG.has_key? 'rubyarchhdrdir') ? $ruby_rbconfig::CONFIG['rubyarchhdrdir'] : '$rubyhdrdir/'+$ruby_rbconfig::CONFIG['arch']"` +! if test -d "$rubyarchdir"; then +! RUBY_CFLAGS="$RUBY_CFLAGS -I$rubyarchdir" + fi + rubyversion=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG['ruby_version'].gsub(/\./, '')[0,2]"` + if test "X$rubyversion" = "X"; then +*** ../vim-7.4.221/src/version.c 2014-03-27 17:02:22.084660944 +0100 +--- src/version.c 2014-03-27 17:13:29.220671167 +0100 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 222, + /**/ + +-- +Engineers are always delighted to share wisdom, even in areas in which they +have no experience whatsoever. Their logic provides them with inherent +insight into any field of expertise. This can be a problem when dealing with +the illogical people who believe that knowledge can only be derived through +experience. + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.223 b/SOURCES/7.4.223 new file mode 100644 index 0000000..c7e447a --- /dev/null +++ b/SOURCES/7.4.223 @@ -0,0 +1,6557 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.223 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.223 +Problem: Still using an older autoconf version. +Solution: Switch to autoconf 2.69. +Files: src/Makefile, src/configure.in, src/auto/configure + + +*** ../vim-7.4.222/src/Makefile 2014-03-25 15:34:44.993932592 +0100 +--- src/Makefile 2014-03-27 17:37:32.864693288 +0100 +*************** +*** 586,591 **** +--- 586,594 ---- + # as root: sysctl -w vm.max_proc_mmap=30000 + #EXTRA_LIBS = /usr/local/lib/libefence.a + ++ # Autoconf binary. ++ AUTOCONF = autoconf ++ + # PURIFY - remove the # to use the "purify" program (hoi Nia++!) + #PURIFY = purify + +*************** +*** 1713,1719 **** + # - Uses ">config.log" instead of "./config.log". + autoconf: + if test ! -f configure.save; then mv configure configure.save; fi +! autoconf + sed -e 's+>config.log+>auto/config.log+' -e 's+\./config.log+auto/config.log+' configure > auto/configure + chmod 755 auto/configure + mv -f configure.save configure +--- 1716,1722 ---- + # - Uses ">config.log" instead of "./config.log". + autoconf: + if test ! -f configure.save; then mv configure configure.save; fi +! $(AUTOCONF) + sed -e 's+>config.log+>auto/config.log+' -e 's+\./config.log+auto/config.log+' configure > auto/configure + chmod 755 auto/configure + mv -f configure.save configure +*** ../vim-7.4.222/src/configure.in 2014-03-27 17:19:05.860676325 +0100 +--- src/configure.in 2014-03-27 17:31:39.412687872 +0100 +*************** +*** 1397,1403 **** + ldflags_save=$LDFLAGS + dnl -ldl must go first to make this work on Archlinux (Roland Puntaier) + LDFLAGS="-ldl $LDFLAGS" +! AC_RUN_IFELSE([ + #include <dlfcn.h> + /* If this program fails, then RTLD_GLOBAL is needed. + * RTLD_GLOBAL will be used and then it is not possible to +--- 1397,1403 ---- + ldflags_save=$LDFLAGS + dnl -ldl must go first to make this work on Archlinux (Roland Puntaier) + LDFLAGS="-ldl $LDFLAGS" +! AC_RUN_IFELSE([AC_LANG_SOURCE([ + #include <dlfcn.h> + /* If this program fails, then RTLD_GLOBAL is needed. + * RTLD_GLOBAL will be used and then it is not possible to +*************** +*** 1430,1436 **** + if (no_rtl_global_needed_for("${python_INSTSONAME}", "${vi_cv_path_python_pfx}")) + not_needed = 1; + return !not_needed; +! }], + [AC_MSG_RESULT(yes);AC_DEFINE(PY_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)]) + + CFLAGS=$cflags_save +--- 1430,1436 ---- + if (no_rtl_global_needed_for("${python_INSTSONAME}", "${vi_cv_path_python_pfx}")) + not_needed = 1; + return !not_needed; +! }])], + [AC_MSG_RESULT(yes);AC_DEFINE(PY_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)]) + + CFLAGS=$cflags_save +*************** +*** 1442,1448 **** + ldflags_save=$LDFLAGS + dnl -ldl must go first to make this work on Archlinux (Roland Puntaier) + LDFLAGS="-ldl $LDFLAGS" +! AC_RUN_IFELSE([ + #include <dlfcn.h> + #include <wchar.h> + /* If this program fails, then RTLD_GLOBAL is needed. +--- 1442,1448 ---- + ldflags_save=$LDFLAGS + dnl -ldl must go first to make this work on Archlinux (Roland Puntaier) + LDFLAGS="-ldl $LDFLAGS" +! AC_RUN_IFELSE([AC_LANG_SOURCE([ + #include <dlfcn.h> + #include <wchar.h> + /* If this program fails, then RTLD_GLOBAL is needed. +*************** +*** 1476,1482 **** + if (no_rtl_global_needed_for("${python3_INSTSONAME}", L"${vi_cv_path_python3_pfx}")) + not_needed = 1; + return !not_needed; +! }], + [AC_MSG_RESULT(yes);AC_DEFINE(PY3_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)]) + + CFLAGS=$cflags_save +--- 1476,1482 ---- + if (no_rtl_global_needed_for("${python3_INSTSONAME}", L"${vi_cv_path_python3_pfx}")) + not_needed = 1; + return !not_needed; +! }])], + [AC_MSG_RESULT(yes);AC_DEFINE(PY3_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)]) + + CFLAGS=$cflags_save +*************** +*** 2737,2743 **** + + AC_CACHE_CHECK([whether toupper is broken], [vim_cv_toupper_broken], + [ +! AC_RUN_IFELSE([[ + #include "confdefs.h" + #include <ctype.h> + #if STDC_HEADERS +--- 2737,2743 ---- + + AC_CACHE_CHECK([whether toupper is broken], [vim_cv_toupper_broken], + [ +! AC_RUN_IFELSE([AC_LANG_SOURCE([[ + #include "confdefs.h" + #include <ctype.h> + #if STDC_HEADERS +*************** +*** 2745,2751 **** + # include <stddef.h> + #endif + main() { exit(toupper('A') == 'A' && tolower('z') == 'z'); } +! ]],[ + vim_cv_toupper_broken=yes + ],[ + vim_cv_toupper_broken=no +--- 2745,2751 ---- + # include <stddef.h> + #endif + main() { exit(toupper('A') == 'A' && tolower('z') == 'z'); } +! ]])],[ + vim_cv_toupper_broken=yes + ],[ + vim_cv_toupper_broken=no +*************** +*** 2993,2999 **** + + AC_CACHE_CHECK([whether we talk terminfo], [vim_cv_terminfo], + [ +! AC_RUN_IFELSE([[ + #include "confdefs.h" + #ifdef HAVE_TERMCAP_H + # include <termcap.h> +--- 2993,2999 ---- + + AC_CACHE_CHECK([whether we talk terminfo], [vim_cv_terminfo], + [ +! AC_RUN_IFELSE([AC_LANG_SOURCE([[ + #include "confdefs.h" + #ifdef HAVE_TERMCAP_H + # include <termcap.h> +*************** +*** 3007,3013 **** + #endif + main() + {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(!strcmp(s==0 ? "" : s, "1")); } +! ]],[ + vim_cv_terminfo=no + ],[ + vim_cv_terminfo=yes +--- 3007,3013 ---- + #endif + main() + {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(!strcmp(s==0 ? "" : s, "1")); } +! ]])],[ + vim_cv_terminfo=no + ],[ + vim_cv_terminfo=yes +*************** +*** 3023,3029 **** + if test "x$olibs" != "x$LIBS"; then + AC_CACHE_CHECK([what tgetent() returns for an unknown terminal], [vim_cv_tgent], + [ +! AC_RUN_IFELSE([[ + #include "confdefs.h" + #ifdef HAVE_TERMCAP_H + # include <termcap.h> +--- 3023,3029 ---- + if test "x$olibs" != "x$LIBS"; then + AC_CACHE_CHECK([what tgetent() returns for an unknown terminal], [vim_cv_tgent], + [ +! AC_RUN_IFELSE([AC_LANG_SOURCE([[ + #include "confdefs.h" + #ifdef HAVE_TERMCAP_H + # include <termcap.h> +*************** +*** 3034,3040 **** + #endif + main() + {char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist"); exit(res != 0); } +! ]],[ + vim_cv_tgent=zero + ],[ + vim_cv_tgent=non-zero +--- 3034,3040 ---- + #endif + main() + {char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist"); exit(res != 0); } +! ]])],[ + vim_cv_tgent=zero + ],[ + vim_cv_tgent=non-zero +*************** +*** 3158,3164 **** + rm -f conftest_grp + AC_CACHE_CHECK([default tty permissions/group], [vim_cv_tty_group], + [ +! AC_RUN_IFELSE([[ + #include "confdefs.h" + #include <sys/types.h> + #if STDC_HEADERS +--- 3158,3164 ---- + rm -f conftest_grp + AC_CACHE_CHECK([default tty permissions/group], [vim_cv_tty_group], + [ +! AC_RUN_IFELSE([AC_LANG_SOURCE([[ + #include "confdefs.h" + #include <sys/types.h> + #if STDC_HEADERS +*************** +*** 3194,3200 **** + fclose(fp); + exit(0); + } +! ]],[ + if test -f conftest_grp; then + vim_cv_tty_group=`cat conftest_grp` + if test "x$vim_cv_tty_mode" = "x" ; then +--- 3194,3200 ---- + fclose(fp); + exit(0); + } +! ]])],[ + if test -f conftest_grp; then + vim_cv_tty_group=`cat conftest_grp` + if test "x$vim_cv_tty_mode" = "x" ; then +*************** +*** 3252,3258 **** + dnl system("sh -c pwd") + AC_CACHE_CHECK([getcwd implementation is broken], [vim_cv_getcwd_broken], + [ +! AC_RUN_IFELSE([[ + #include "confdefs.h" + #ifdef HAVE_UNISTD_H + #include <unistd.h> +--- 3252,3258 ---- + dnl system("sh -c pwd") + AC_CACHE_CHECK([getcwd implementation is broken], [vim_cv_getcwd_broken], + [ +! AC_RUN_IFELSE([AC_LANG_SOURCE([[ + #include "confdefs.h" + #ifdef HAVE_UNISTD_H + #include <unistd.h> +*************** +*** 3265,3271 **** + environ = dagger; + return getcwd(buffer, 500) ? 0 : 1; + } +! ]],[ + vim_cv_getcwd_broken=no + ],[ + vim_cv_getcwd_broken=yes +--- 3265,3271 ---- + environ = dagger; + return getcwd(buffer, 500) ? 0 : 1; + } +! ]])],[ + vim_cv_getcwd_broken=no + ],[ + vim_cv_getcwd_broken=yes +*************** +*** 3308,3314 **** + + AC_CACHE_CHECK([whether stat() ignores a trailing slash], [vim_cv_stat_ignores_slash], + [ +! AC_RUN_IFELSE([[ + #include "confdefs.h" + #if STDC_HEADERS + # include <stdlib.h> +--- 3308,3314 ---- + + AC_CACHE_CHECK([whether stat() ignores a trailing slash], [vim_cv_stat_ignores_slash], + [ +! AC_RUN_IFELSE([AC_LANG_SOURCE([[ + #include "confdefs.h" + #if STDC_HEADERS + # include <stdlib.h> +*************** +*** 3317,3323 **** + #include <sys/types.h> + #include <sys/stat.h> + main() {struct stat st; exit(stat("configure/", &st) != 0); } +! ]],[ + vim_cv_stat_ignores_slash=yes + ],[ + vim_cv_stat_ignores_slash=no +--- 3317,3323 ---- + #include <sys/types.h> + #include <sys/stat.h> + main() {struct stat st; exit(stat("configure/", &st) != 0); } +! ]])],[ + vim_cv_stat_ignores_slash=yes + ],[ + vim_cv_stat_ignores_slash=no +*************** +*** 3631,3637 **** + + AC_CACHE_CHECK([whether memmove handles overlaps],[vim_cv_memmove_handles_overlap], + [ +! AC_RUN_IFELSE([[#define mch_memmove(s,d,l) memmove(d,s,l) $bcopy_test_prog]], + [ + vim_cv_memmove_handles_overlap=yes + ],[ +--- 3631,3637 ---- + + AC_CACHE_CHECK([whether memmove handles overlaps],[vim_cv_memmove_handles_overlap], + [ +! AC_RUN_IFELSE([AC_LANG_SOURCE([[#define mch_memmove(s,d,l) memmove(d,s,l) $bcopy_test_prog]])], + [ + vim_cv_memmove_handles_overlap=yes + ],[ +*************** +*** 3646,3652 **** + else + AC_CACHE_CHECK([whether bcopy handles overlaps],[vim_cv_bcopy_handles_overlap], + [ +! AC_RUN_IFELSE([[#define mch_bcopy(s,d,l) bcopy(d,s,l) $bcopy_test_prog]], + [ + vim_cv_bcopy_handles_overlap=yes + ],[ +--- 3646,3652 ---- + else + AC_CACHE_CHECK([whether bcopy handles overlaps],[vim_cv_bcopy_handles_overlap], + [ +! AC_RUN_IFELSE([AC_LANG_SOURCE([[#define mch_bcopy(s,d,l) bcopy(d,s,l) $bcopy_test_prog]])], + [ + vim_cv_bcopy_handles_overlap=yes + ],[ +*************** +*** 3661,3667 **** + else + AC_CACHE_CHECK([whether memcpy handles overlaps],[vim_cv_memcpy_handles_overlap], + [ +! AC_RUN_IFELSE([[#define mch_memcpy(s,d,l) memcpy(d,s,l) $bcopy_test_prog]], + [ + vim_cv_memcpy_handles_overlap=yes + ],[ +--- 3661,3667 ---- + else + AC_CACHE_CHECK([whether memcpy handles overlaps],[vim_cv_memcpy_handles_overlap], + [ +! AC_RUN_IFELSE([AC_LANG_SOURCE([[#define mch_memcpy(s,d,l) memcpy(d,s,l) $bcopy_test_prog]])], + [ + vim_cv_memcpy_handles_overlap=yes + ],[ +*** ../vim-7.4.222/src/auto/configure 2014-03-27 17:19:05.868676325 +0100 +--- src/auto/configure 2014-03-27 17:35:39.660691553 +0100 +*************** +*** 1,11 **** + #! /bin/sh + # Guess values for system-dependent variables and create Makefiles. +! # Generated by GNU Autoconf 2.65. + # + # +! # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, +! # 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +! # Inc. + # + # + # This configure script is free software; the Free Software Foundation +--- 1,9 ---- + #! /bin/sh + # Guess values for system-dependent variables and create Makefiles. +! # Generated by GNU Autoconf 2.69. + # + # +! # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. + # + # + # This configure script is free software; the Free Software Foundation +*************** +*** 89,94 **** +--- 87,93 ---- + IFS=" "" $as_nl" + + # Find who we are. Look in the path if we contain no directory separator. ++ as_myself= + case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +*************** +*** 133,138 **** +--- 132,162 ---- + # CDPATH. + (unset CDPATH) >/dev/null 2>&1 && unset CDPATH + ++ # Use a proper internal environment variable to ensure we don't fall ++ # into an infinite loop, continuously re-executing ourselves. ++ if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then ++ _as_can_reexec=no; export _as_can_reexec; ++ # We cannot yet assume a decent shell, so we have to provide a ++ # neutralization value for shells without unset; and this also ++ # works around shells that cannot unset nonexistent variables. ++ # Preserve -v and -x to the replacement shell. ++ BASH_ENV=/dev/null ++ ENV=/dev/null ++ (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV ++ case $- in # (((( ++ *v*x* | *x*v* ) as_opts=-vx ;; ++ *v* ) as_opts=-v ;; ++ *x* ) as_opts=-x ;; ++ * ) as_opts= ;; ++ esac ++ exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} ++ # Admittedly, this is quite paranoid, since all the known shells bail ++ # out after a failed `exec'. ++ $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 ++ as_fn_exit 255 ++ fi ++ # We don't want this to propagate to other subprocesses. ++ { _as_can_reexec=; unset _as_can_reexec;} + if test "x$CONFIG_SHELL" = x; then + as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : + emulate sh +*************** +*** 166,172 **** + else + exitcode=1; echo positional parameters were not saved. + fi +! test x\$exitcode = x0 || exit 1" + as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO + as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO + eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && +--- 190,197 ---- + else + exitcode=1; echo positional parameters were not saved. + fi +! test x\$exitcode = x0 || exit 1 +! test -x / || exit 1" + as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO + as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO + eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && +*************** +*** 211,224 **** + + + if test "x$CONFIG_SHELL" != x; then : +! # We cannot yet assume a decent shell, so we have to provide a +! # neutralization value for shells without unset; and this also +! # works around shells that cannot unset nonexistent variables. +! BASH_ENV=/dev/null +! ENV=/dev/null +! (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +! export CONFIG_SHELL +! exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} + fi + + if test x$as_have_required = xno; then : +--- 236,260 ---- + + + if test "x$CONFIG_SHELL" != x; then : +! export CONFIG_SHELL +! # We cannot yet assume a decent shell, so we have to provide a +! # neutralization value for shells without unset; and this also +! # works around shells that cannot unset nonexistent variables. +! # Preserve -v and -x to the replacement shell. +! BASH_ENV=/dev/null +! ENV=/dev/null +! (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +! case $- in # (((( +! *v*x* | *x*v* ) as_opts=-vx ;; +! *v* ) as_opts=-v ;; +! *x* ) as_opts=-x ;; +! * ) as_opts= ;; +! esac +! exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +! # Admittedly, this is quite paranoid, since all the known shells bail +! # out after a failed `exec'. +! $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +! exit 255 + fi + + if test x$as_have_required = xno; then : +*************** +*** 316,325 **** + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" +! } || test -d "$as_dir" || as_fn_error "cannot create directory $as_dir" + + + } # as_fn_mkdir_p + # as_fn_append VAR VALUE + # ---------------------- + # Append the text in VALUE to the end of the definition contained in VAR. Take +--- 352,369 ---- + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" +! } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + + } # as_fn_mkdir_p ++ ++ # as_fn_executable_p FILE ++ # ----------------------- ++ # Test if FILE is an executable regular file. ++ as_fn_executable_p () ++ { ++ test -f "$1" && test -x "$1" ++ } # as_fn_executable_p + # as_fn_append VAR VALUE + # ---------------------- + # Append the text in VALUE to the end of the definition contained in VAR. Take +*************** +*** 356,374 **** + fi # as_fn_arith + + +! # as_fn_error ERROR [LINENO LOG_FD] +! # --------------------------------- + # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are + # provided, also output the error to LOG_FD, referencing LINENO. Then exit the +! # script with status $?, using 1 if that was 0. + as_fn_error () + { +! as_status=$?; test $as_status -eq 0 && as_status=1 +! if test "$3"; then +! as_lineno=${as_lineno-"$2"} as_lineno_stack=as_lineno_stack=$as_lineno_stack +! $as_echo "$as_me:${as_lineno-$LINENO}: error: $1" >&$3 + fi +! $as_echo "$as_me: error: $1" >&2 + as_fn_exit $as_status + } # as_fn_error + +--- 400,418 ---- + fi # as_fn_arith + + +! # as_fn_error STATUS ERROR [LINENO LOG_FD] +! # ---------------------------------------- + # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are + # provided, also output the error to LOG_FD, referencing LINENO. Then exit the +! # script with STATUS, using 1 if that was 0. + as_fn_error () + { +! as_status=$1; test $as_status -eq 0 && as_status=1 +! if test "$4"; then +! as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack +! $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi +! $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status + } # as_fn_error + +*************** +*** 441,446 **** +--- 485,494 ---- + chmod +x "$as_me.lineno" || + { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + ++ # If we had to re-execute with $CONFIG_SHELL, we're ensured to have ++ # already done that, so ensure we don't try to do so again and fall ++ # in an infinite loop. This has already happened in practice. ++ _as_can_reexec=no; export _as_can_reexec + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). +*************** +*** 475,490 **** + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. +! # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || +! as_ln_s='cp -p' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else +! as_ln_s='cp -p' + fi + else +! as_ln_s='cp -p' + fi + rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file + rmdir conf$$.dir 2>/dev/null +--- 523,538 ---- + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. +! # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || +! as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else +! as_ln_s='cp -pR' + fi + else +! as_ln_s='cp -pR' + fi + rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file + rmdir conf$$.dir 2>/dev/null +*************** +*** 496,523 **** + as_mkdir_p=false + fi + +! if test -x / >/dev/null 2>&1; then +! as_test_x='test -x' +! else +! if ls -dL / >/dev/null 2>&1; then +! as_ls_L_option=L +! else +! as_ls_L_option= +! fi +! as_test_x=' +! eval sh -c '\'' +! if test -d "$1"; then +! test -d "$1/."; +! else +! case $1 in #( +! -*)set "./$1";; +! esac; +! case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( +! ???[sx]*):;;*)false;;esac;fi +! '\'' sh +! ' +! fi +! as_executable_p=$as_test_x + + # Sed expression to map a string onto a valid CPP name. + as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" +--- 544,551 ---- + as_mkdir_p=false + fi + +! as_test_x='test -x' +! as_executable_p=as_fn_executable_p + + # Sed expression to map a string onto a valid CPP name. + as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" +*************** +*** 530,536 **** + exec 6>&1 + + # Name of the host. +! # hostname on some systems (SVR3.2, Linux) returns a bogus exit status, + # so uname gets run too. + ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +--- 558,564 ---- + exec 6>&1 + + # Name of the host. +! # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, + # so uname gets run too. + ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +*************** +*** 872,879 **** + fi + + case $ac_option in +! *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; +! *) ac_optarg=yes ;; + esac + + # Accept the important Cygnus configure options, so we can diagnose typos. +--- 900,908 ---- + fi + + case $ac_option in +! *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; +! *=) ac_optarg= ;; +! *) ac_optarg=yes ;; + esac + + # Accept the important Cygnus configure options, so we can diagnose typos. +*************** +*** 918,924 **** + ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && +! as_fn_error "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in +--- 947,953 ---- + ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && +! as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in +*************** +*** 944,950 **** + ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && +! as_fn_error "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in +--- 973,979 ---- + ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && +! as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in +*************** +*** 1148,1154 **** + ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && +! as_fn_error "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in +--- 1177,1183 ---- + ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && +! as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in +*************** +*** 1164,1170 **** + ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && +! as_fn_error "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in +--- 1193,1199 ---- + ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && +! as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in +*************** +*** 1194,1201 **** + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + +! -*) as_fn_error "unrecognized option: \`$ac_option' +! Try \`$0 --help' for more information." + ;; + + *=*) +--- 1223,1230 ---- + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + +! -*) as_fn_error $? "unrecognized option: \`$ac_option' +! Try \`$0 --help' for more information" + ;; + + *=*) +*************** +*** 1203,1209 **** + # Reject names that are not valid shell variable names. + case $ac_envvar in #( + '' | [0-9]* | *[!_$as_cr_alnum]* ) +! as_fn_error "invalid variable name: \`$ac_envvar'" ;; + esac + eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; +--- 1232,1238 ---- + # Reject names that are not valid shell variable names. + case $ac_envvar in #( + '' | [0-9]* | *[!_$as_cr_alnum]* ) +! as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; + esac + eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; +*************** +*** 1213,1219 **** + $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 +! : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} + ;; + + esac +--- 1242,1248 ---- + $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 +! : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" + ;; + + esac +*************** +*** 1221,1233 **** + + if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` +! as_fn_error "missing argument to $ac_option" + fi + + if test -n "$ac_unrecognized_opts"; then + case $enable_option_checking in + no) ;; +! fatal) as_fn_error "unrecognized options: $ac_unrecognized_opts" ;; + *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + esac + fi +--- 1250,1262 ---- + + if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` +! as_fn_error $? "missing argument to $ac_option" + fi + + if test -n "$ac_unrecognized_opts"; then + case $enable_option_checking in + no) ;; +! fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; + *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + esac + fi +*************** +*** 1250,1256 **** + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac +! as_fn_error "expected an absolute directory name for --$ac_var: $ac_val" + done + + # There might be people who depend on the old broken behavior: `$host' +--- 1279,1285 ---- + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac +! as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" + done + + # There might be people who depend on the old broken behavior: `$host' +*************** +*** 1264,1271 **** + if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe +- $as_echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. +- If a cross compiler is detected then cross compile mode will be used." >&2 + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +--- 1293,1298 ---- +*************** +*** 1280,1288 **** + ac_pwd=`pwd` && test -n "$ac_pwd" && + ac_ls_di=`ls -di .` && + ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || +! as_fn_error "working directory cannot be determined" + test "X$ac_ls_di" = "X$ac_pwd_ls_di" || +! as_fn_error "pwd does not report name of working directory" + + + # Find the source files, if location was not specified. +--- 1307,1315 ---- + ac_pwd=`pwd` && test -n "$ac_pwd" && + ac_ls_di=`ls -di .` && + ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || +! as_fn_error $? "working directory cannot be determined" + test "X$ac_ls_di" = "X$ac_pwd_ls_di" || +! as_fn_error $? "pwd does not report name of working directory" + + + # Find the source files, if location was not specified. +*************** +*** 1321,1331 **** + fi + if test ! -r "$srcdir/$ac_unique_file"; then + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." +! as_fn_error "cannot find sources ($ac_unique_file) in $srcdir" + fi + ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" + ac_abs_confdir=`( +! cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error "$ac_msg" + pwd)` + # When building in place, set srcdir=. + if test "$ac_abs_confdir" = "$ac_pwd"; then +--- 1348,1358 ---- + fi + if test ! -r "$srcdir/$ac_unique_file"; then + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." +! as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" + fi + ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" + ac_abs_confdir=`( +! cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" + pwd)` + # When building in place, set srcdir=. + if test "$ac_abs_confdir" = "$ac_pwd"; then +*************** +*** 1365,1371 **** + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit +! -q, --quiet, --silent do not print \`checking...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files +--- 1392,1398 ---- + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit +! -q, --quiet, --silent do not print \`checking ...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files +*************** +*** 1563,1571 **** + if $ac_init_version; then + cat <<\_ACEOF + configure +! generated by GNU Autoconf 2.65 + +! Copyright (C) 2009 Free Software Foundation, Inc. + This configure script is free software; the Free Software Foundation + gives unlimited permission to copy, distribute and modify it. + _ACEOF +--- 1590,1598 ---- + if $ac_init_version; then + cat <<\_ACEOF + configure +! generated by GNU Autoconf 2.69 + +! Copyright (C) 2012 Free Software Foundation, Inc. + This configure script is free software; the Free Software Foundation + gives unlimited permission to copy, distribute and modify it. + _ACEOF +*************** +*** 1609,1615 **** + + ac_retval=1 + fi +! eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + as_fn_set_status $ac_retval + + } # ac_fn_c_try_compile +--- 1636,1642 ---- + + ac_retval=1 + fi +! eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + + } # ac_fn_c_try_compile +*************** +*** 1635,1641 **** + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 +! test $ac_status = 0; } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then : +--- 1662,1668 ---- + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 +! test $ac_status = 0; } > conftest.i && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then : +*************** +*** 1646,1652 **** + + ac_retval=1 + fi +! eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + as_fn_set_status $ac_retval + + } # ac_fn_c_try_cpp +--- 1673,1679 ---- + + ac_retval=1 + fi +! eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + + } # ac_fn_c_try_cpp +*************** +*** 1678,1684 **** + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || +! $as_test_x conftest$ac_exeext + }; then : + ac_retval=0 + else +--- 1705,1711 ---- + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || +! test -x conftest$ac_exeext + }; then : + ac_retval=0 + else +*************** +*** 1692,1698 **** + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo +! eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + as_fn_set_status $ac_retval + + } # ac_fn_c_try_link +--- 1719,1725 ---- + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo +! eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + + } # ac_fn_c_try_link +*************** +*** 1734,1740 **** + ac_retval=$ac_status + fi + rm -rf conftest.dSYM conftest_ipa8_conftest.oo +! eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + as_fn_set_status $ac_retval + + } # ac_fn_c_try_run +--- 1761,1767 ---- + ac_retval=$ac_status + fi + rm -rf conftest.dSYM conftest_ipa8_conftest.oo +! eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + + } # ac_fn_c_try_run +*************** +*** 1747,1756 **** + ac_fn_c_check_header_mongrel () + { + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack +! if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 + $as_echo_n "checking for $2... " >&6; } +! if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : + $as_echo_n "(cached) " >&6 + fi + eval ac_res=\$$3 +--- 1774,1783 ---- + ac_fn_c_check_header_mongrel () + { + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack +! if eval \${$3+:} false; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 + $as_echo_n "checking for $2... " >&6; } +! if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 + fi + eval ac_res=\$$3 +*************** +*** 1786,1792 **** + else + ac_header_preproc=no + fi +! rm -f conftest.err conftest.$ac_ext + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 + $as_echo "$ac_header_preproc" >&6; } + +--- 1813,1819 ---- + else + ac_header_preproc=no + fi +! rm -f conftest.err conftest.i conftest.$ac_ext + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 + $as_echo "$ac_header_preproc" >&6; } + +*************** +*** 1813,1819 **** + esac + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 + $as_echo_n "checking for $2... " >&6; } +! if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : + $as_echo_n "(cached) " >&6 + else + eval "$3=\$ac_header_compiler" +--- 1840,1846 ---- + esac + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 + $as_echo_n "checking for $2... " >&6; } +! if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 + else + eval "$3=\$ac_header_compiler" +*************** +*** 1822,1828 **** + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 + $as_echo "$ac_res" >&6; } + fi +! eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + + } # ac_fn_c_check_header_mongrel + +--- 1849,1855 ---- + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 + $as_echo "$ac_res" >&6; } + fi +! eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + + } # ac_fn_c_check_header_mongrel + +*************** +*** 1835,1841 **** + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 + $as_echo_n "checking for $2... " >&6; } +! if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : + $as_echo_n "(cached) " >&6 + else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +--- 1862,1868 ---- + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 + $as_echo_n "checking for $2... " >&6; } +! if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 + else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +*************** +*** 1853,1859 **** + eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 + $as_echo "$ac_res" >&6; } +! eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + + } # ac_fn_c_check_header_compile + +--- 1880,1886 ---- + eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 + $as_echo "$ac_res" >&6; } +! eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + + } # ac_fn_c_check_header_compile + +*************** +*** 1865,1871 **** + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 + $as_echo_n "checking for $2... " >&6; } +! if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : + $as_echo_n "(cached) " >&6 + else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +--- 1892,1898 ---- + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 + $as_echo_n "checking for $2... " >&6; } +! if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 + else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +*************** +*** 1920,1926 **** + eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 + $as_echo "$ac_res" >&6; } +! eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + + } # ac_fn_c_check_func + +--- 1947,1953 ---- + eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 + $as_echo "$ac_res" >&6; } +! eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + + } # ac_fn_c_check_func + +*************** +*** 1933,1939 **** + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 + $as_echo_n "checking for $2... " >&6; } +! if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : + $as_echo_n "(cached) " >&6 + else + eval "$3=no" +--- 1960,1966 ---- + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 + $as_echo_n "checking for $2... " >&6; } +! if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 + else + eval "$3=no" +*************** +*** 1974,1980 **** + eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 + $as_echo "$ac_res" >&6; } +! eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + + } # ac_fn_c_check_type + +--- 2001,2007 ---- + eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 + $as_echo "$ac_res" >&6; } +! eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + + } # ac_fn_c_check_type + +*************** +*** 1987,1993 **** + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for uint$2_t" >&5 + $as_echo_n "checking for uint$2_t... " >&6; } +! if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : + $as_echo_n "(cached) " >&6 + else + eval "$3=no" +--- 2014,2020 ---- + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for uint$2_t" >&5 + $as_echo_n "checking for uint$2_t... " >&6; } +! if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 + else + eval "$3=no" +*************** +*** 2002,2008 **** + main () + { + static int test_array [1 - 2 * !((($ac_type) -1 >> ($2 / 2 - 1)) >> ($2 / 2 - 1) == 3)]; +! test_array [0] = 0 + + ; + return 0; +--- 2029,2036 ---- + main () + { + static int test_array [1 - 2 * !((($ac_type) -1 >> ($2 / 2 - 1)) >> ($2 / 2 - 1) == 3)]; +! test_array [0] = 0; +! return test_array [0]; + + ; + return 0; +*************** +*** 2017,2024 **** + esac + fi + rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +! eval as_val=\$$3 +! if test "x$as_val" = x""no; then : + + else + break +--- 2045,2051 ---- + esac + fi + rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +! if eval test \"x\$"$3"\" = x"no"; then : + + else + break +*************** +*** 2028,2034 **** + eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 + $as_echo "$ac_res" >&6; } +! eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + + } # ac_fn_c_find_uintX_t + +--- 2055,2061 ---- + eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 + $as_echo "$ac_res" >&6; } +! eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + + } # ac_fn_c_find_uintX_t + +*************** +*** 2049,2055 **** + main () + { + static int test_array [1 - 2 * !(($2) >= 0)]; +! test_array [0] = 0 + + ; + return 0; +--- 2076,2083 ---- + main () + { + static int test_array [1 - 2 * !(($2) >= 0)]; +! test_array [0] = 0; +! return test_array [0]; + + ; + return 0; +*************** +*** 2065,2071 **** + main () + { + static int test_array [1 - 2 * !(($2) <= $ac_mid)]; +! test_array [0] = 0 + + ; + return 0; +--- 2093,2100 ---- + main () + { + static int test_array [1 - 2 * !(($2) <= $ac_mid)]; +! test_array [0] = 0; +! return test_array [0]; + + ; + return 0; +*************** +*** 2091,2097 **** + main () + { + static int test_array [1 - 2 * !(($2) < 0)]; +! test_array [0] = 0 + + ; + return 0; +--- 2120,2127 ---- + main () + { + static int test_array [1 - 2 * !(($2) < 0)]; +! test_array [0] = 0; +! return test_array [0]; + + ; + return 0; +*************** +*** 2107,2113 **** + main () + { + static int test_array [1 - 2 * !(($2) >= $ac_mid)]; +! test_array [0] = 0 + + ; + return 0; +--- 2137,2144 ---- + main () + { + static int test_array [1 - 2 * !(($2) >= $ac_mid)]; +! test_array [0] = 0; +! return test_array [0]; + + ; + return 0; +*************** +*** 2141,2147 **** + main () + { + static int test_array [1 - 2 * !(($2) <= $ac_mid)]; +! test_array [0] = 0 + + ; + return 0; +--- 2172,2179 ---- + main () + { + static int test_array [1 - 2 * !(($2) <= $ac_mid)]; +! test_array [0] = 0; +! return test_array [0]; + + ; + return 0; +*************** +*** 2205,2211 **** + rm -f conftest.val + + fi +! eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + as_fn_set_status $ac_retval + + } # ac_fn_c_compute_int +--- 2237,2243 ---- + rm -f conftest.val + + fi +! eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + + } # ac_fn_c_compute_int +*************** +*** 2214,2220 **** + running configure, to aid debugging if configure makes a mistake. + + It was created by $as_me, which was +! generated by GNU Autoconf 2.65. Invocation command line was + + $ $0 $@ + +--- 2246,2252 ---- + running configure, to aid debugging if configure makes a mistake. + + It was created by $as_me, which was +! generated by GNU Autoconf 2.69. Invocation command line was + + $ $0 $@ + +*************** +*** 2324,2334 **** + { + echo + +! cat <<\_ASBOX +! ## ---------------- ## + ## Cache variables. ## +! ## ---------------- ## +! _ASBOX + echo + # The following way of writing the cache mishandles newlines in values, + ( +--- 2356,2364 ---- + { + echo + +! $as_echo "## ---------------- ## + ## Cache variables. ## +! ## ---------------- ##" + echo + # The following way of writing the cache mishandles newlines in values, + ( +*************** +*** 2362,2372 **** + ) + echo + +! cat <<\_ASBOX +! ## ----------------- ## + ## Output variables. ## +! ## ----------------- ## +! _ASBOX + echo + for ac_var in $ac_subst_vars + do +--- 2392,2400 ---- + ) + echo + +! $as_echo "## ----------------- ## + ## Output variables. ## +! ## ----------------- ##" + echo + for ac_var in $ac_subst_vars + do +*************** +*** 2379,2389 **** + echo + + if test -n "$ac_subst_files"; then +! cat <<\_ASBOX +! ## ------------------- ## + ## File substitutions. ## +! ## ------------------- ## +! _ASBOX + echo + for ac_var in $ac_subst_files + do +--- 2407,2415 ---- + echo + + if test -n "$ac_subst_files"; then +! $as_echo "## ------------------- ## + ## File substitutions. ## +! ## ------------------- ##" + echo + for ac_var in $ac_subst_files + do +*************** +*** 2397,2407 **** + fi + + if test -s confdefs.h; then +! cat <<\_ASBOX +! ## ----------- ## + ## confdefs.h. ## +! ## ----------- ## +! _ASBOX + echo + cat confdefs.h + echo +--- 2423,2431 ---- + fi + + if test -s confdefs.h; then +! $as_echo "## ----------- ## + ## confdefs.h. ## +! ## ----------- ##" + echo + cat confdefs.h + echo +*************** +*** 2456,2462 **** + ac_site_file1=NONE + ac_site_file2=NONE + if test -n "$CONFIG_SITE"; then +! ac_site_file1=$CONFIG_SITE + elif test "x$prefix" != xNONE; then + ac_site_file1=$prefix/share/config.site + ac_site_file2=$prefix/etc/config.site +--- 2480,2491 ---- + ac_site_file1=NONE + ac_site_file2=NONE + if test -n "$CONFIG_SITE"; then +! # We do not want a PATH search for config.site. +! case $CONFIG_SITE in #(( +! -*) ac_site_file1=./$CONFIG_SITE;; +! */*) ac_site_file1=$CONFIG_SITE;; +! *) ac_site_file1=./$CONFIG_SITE;; +! esac + elif test "x$prefix" != xNONE; then + ac_site_file1=$prefix/share/config.site + ac_site_file2=$prefix/etc/config.site +*************** +*** 2471,2477 **** + { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 + $as_echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 +! . "$ac_site_file" + fi + done + +--- 2500,2510 ---- + { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 + $as_echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 +! . "$ac_site_file" \ +! || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +! $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +! as_fn_error $? "failed to load site script $ac_site_file +! See \`config.log' for more details" "$LINENO" 5; } + fi + done + +*************** +*** 2547,2553 **** + $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 + $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} +! as_fn_error "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 + fi + ## -------------------- ## + ## Main body of script. ## +--- 2580,2586 ---- + $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 + $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} +! as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 + fi + ## -------------------- ## + ## Main body of script. ## +*************** +*** 2569,2575 **** + $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } + set x ${MAKE-make} + ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +! if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then : + $as_echo_n "(cached) " >&6 + else + cat >conftest.make <<\_ACEOF +--- 2602,2608 ---- + $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } + set x ${MAKE-make} + ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +! if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : + $as_echo_n "(cached) " >&6 + else + cat >conftest.make <<\_ACEOF +*************** +*** 2577,2583 **** + all: + @echo '@@@%%%=$(MAKE)=@@@%%%' + _ACEOF +! # GNU make sometimes prints "make[1]: Entering...", which would confuse us. + case `${MAKE-make} -f conftest.make 2>/dev/null` in + *@@@%%%=?*=@@@%%%*) + eval ac_cv_prog_make_${ac_make}_set=yes;; +--- 2610,2616 ---- + all: + @echo '@@@%%%=$(MAKE)=@@@%%%' + _ACEOF +! # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. + case `${MAKE-make} -f conftest.make 2>/dev/null` in + *@@@%%%=?*=@@@%%%*) + eval ac_cv_prog_make_${ac_make}_set=yes;; +*************** +*** 2607,2613 **** + set dummy ${ac_tool_prefix}gcc; ac_word=$2 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +! if test "${ac_cv_prog_CC+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + if test -n "$CC"; then +--- 2640,2646 ---- + set dummy ${ac_tool_prefix}gcc; ac_word=$2 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +! if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 + else + if test -n "$CC"; then +*************** +*** 2619,2625 **** + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +! if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 +--- 2652,2658 ---- + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +! if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 +*************** +*** 2647,2653 **** + set dummy gcc; ac_word=$2 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +! if test "${ac_cv_prog_ac_ct_CC+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + if test -n "$ac_ct_CC"; then +--- 2680,2686 ---- + set dummy gcc; ac_word=$2 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +! if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 + else + if test -n "$ac_ct_CC"; then +*************** +*** 2659,2665 **** + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +! if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CC="gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 +--- 2692,2698 ---- + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +! if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 +*************** +*** 2700,2706 **** + set dummy ${ac_tool_prefix}cc; ac_word=$2 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +! if test "${ac_cv_prog_CC+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + if test -n "$CC"; then +--- 2733,2739 ---- + set dummy ${ac_tool_prefix}cc; ac_word=$2 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +! if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 + else + if test -n "$CC"; then +*************** +*** 2712,2718 **** + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +! if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 +--- 2745,2751 ---- + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +! if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 +*************** +*** 2740,2746 **** + set dummy cc; ac_word=$2 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +! if test "${ac_cv_prog_CC+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + if test -n "$CC"; then +--- 2773,2779 ---- + set dummy cc; ac_word=$2 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +! if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 + else + if test -n "$CC"; then +*************** +*** 2753,2759 **** + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +! if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue +--- 2786,2792 ---- + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +! if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue +*************** +*** 2799,2805 **** + set dummy $ac_tool_prefix$ac_prog; ac_word=$2 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +! if test "${ac_cv_prog_CC+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + if test -n "$CC"; then +--- 2832,2838 ---- + set dummy $ac_tool_prefix$ac_prog; ac_word=$2 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +! if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 + else + if test -n "$CC"; then +*************** +*** 2811,2817 **** + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +! if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 +--- 2844,2850 ---- + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +! if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 +*************** +*** 2843,2849 **** + set dummy $ac_prog; ac_word=$2 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +! if test "${ac_cv_prog_ac_ct_CC+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + if test -n "$ac_ct_CC"; then +--- 2876,2882 ---- + set dummy $ac_prog; ac_word=$2 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +! if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 + else + if test -n "$ac_ct_CC"; then +*************** +*** 2855,2861 **** + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +! if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CC="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 +--- 2888,2894 ---- + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +! if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 +*************** +*** 2897,2904 **** + + test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 + $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +! as_fn_error "no acceptable C compiler found in \$PATH +! See \`config.log' for more details." "$LINENO" 5; } + + # Provide some information about the compiler. + $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +--- 2930,2937 ---- + + test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 + $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +! as_fn_error $? "no acceptable C compiler found in \$PATH +! See \`config.log' for more details" "$LINENO" 5; } + + # Provide some information about the compiler. + $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +*************** +*** 3012,3020 **** + + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 + $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +! { as_fn_set_status 77 +! as_fn_error "C compiler cannot create executables +! See \`config.log' for more details." "$LINENO" 5; }; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 + $as_echo "yes" >&6; } +--- 3045,3052 ---- + + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 + $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +! as_fn_error 77 "C compiler cannot create executables +! See \`config.log' for more details" "$LINENO" 5; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 + $as_echo "yes" >&6; } +*************** +*** 3056,3063 **** + else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 + $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +! as_fn_error "cannot compute suffix of executables: cannot compile and link +! See \`config.log' for more details." "$LINENO" 5; } + fi + rm -f conftest conftest$ac_cv_exeext + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +--- 3088,3095 ---- + else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 + $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +! as_fn_error $? "cannot compute suffix of executables: cannot compile and link +! See \`config.log' for more details" "$LINENO" 5; } + fi + rm -f conftest conftest$ac_cv_exeext + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +*************** +*** 3114,3122 **** + else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 + $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +! as_fn_error "cannot run C compiled programs. + If you meant to cross compile, use \`--host'. +! See \`config.log' for more details." "$LINENO" 5; } + fi + fi + fi +--- 3146,3154 ---- + else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 + $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +! as_fn_error $? "cannot run C compiled programs. + If you meant to cross compile, use \`--host'. +! See \`config.log' for more details" "$LINENO" 5; } + fi + fi + fi +*************** +*** 3127,3133 **** + ac_clean_files=$ac_clean_files_save + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 + $as_echo_n "checking for suffix of object files... " >&6; } +! if test "${ac_cv_objext+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +--- 3159,3165 ---- + ac_clean_files=$ac_clean_files_save + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 + $as_echo_n "checking for suffix of object files... " >&6; } +! if ${ac_cv_objext+:} false; then : + $as_echo_n "(cached) " >&6 + else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +*************** +*** 3167,3174 **** + + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 + $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +! as_fn_error "cannot compute suffix of object files: cannot compile +! See \`config.log' for more details." "$LINENO" 5; } + fi + rm -f conftest.$ac_cv_objext conftest.$ac_ext + fi +--- 3199,3206 ---- + + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 + $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +! as_fn_error $? "cannot compute suffix of object files: cannot compile +! See \`config.log' for more details" "$LINENO" 5; } + fi + rm -f conftest.$ac_cv_objext conftest.$ac_ext + fi +*************** +*** 3178,3184 **** + ac_objext=$OBJEXT + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 + $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } +! if test "${ac_cv_c_compiler_gnu+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +--- 3210,3216 ---- + ac_objext=$OBJEXT + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 + $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } +! if ${ac_cv_c_compiler_gnu+:} false; then : + $as_echo_n "(cached) " >&6 + else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +*************** +*** 3215,3221 **** + ac_save_CFLAGS=$CFLAGS + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 + $as_echo_n "checking whether $CC accepts -g... " >&6; } +! if test "${ac_cv_prog_cc_g+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + ac_save_c_werror_flag=$ac_c_werror_flag +--- 3247,3253 ---- + ac_save_CFLAGS=$CFLAGS + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 + $as_echo_n "checking whether $CC accepts -g... " >&6; } +! if ${ac_cv_prog_cc_g+:} false; then : + $as_echo_n "(cached) " >&6 + else + ac_save_c_werror_flag=$ac_c_werror_flag +*************** +*** 3293,3299 **** + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 + $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } +! if test "${ac_cv_prog_cc_c89+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + ac_cv_prog_cc_c89=no +--- 3325,3331 ---- + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 + $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } +! if ${ac_cv_prog_cc_c89+:} false; then : + $as_echo_n "(cached) " >&6 + else + ac_cv_prog_cc_c89=no +*************** +*** 3302,3309 **** + /* end confdefs.h. */ + #include <stdarg.h> + #include <stdio.h> +! #include <sys/types.h> +! #include <sys/stat.h> + /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ + struct buf { int x; }; + FILE * (*rcsopen) (struct buf *, struct stat *, int); +--- 3334,3340 ---- + /* end confdefs.h. */ + #include <stdarg.h> + #include <stdio.h> +! struct stat; + /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ + struct buf { int x; }; + FILE * (*rcsopen) (struct buf *, struct stat *, int); +*************** +*** 3399,3405 **** + CPP= + fi + if test -z "$CPP"; then +! if test "${ac_cv_prog_CPP+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + # Double quotes because CPP needs to be expanded +--- 3430,3436 ---- + CPP= + fi + if test -z "$CPP"; then +! if ${ac_cv_prog_CPP+:} false; then : + $as_echo_n "(cached) " >&6 + else + # Double quotes because CPP needs to be expanded +*************** +*** 3429,3435 **** + # Broken: fails on valid input. + continue + fi +! rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. +--- 3460,3466 ---- + # Broken: fails on valid input. + continue + fi +! rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. +*************** +*** 3445,3455 **** + ac_preproc_ok=: + break + fi +! rm -f conftest.err conftest.$ac_ext + + done + # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +! rm -f conftest.err conftest.$ac_ext + if $ac_preproc_ok; then : + break + fi +--- 3476,3486 ---- + ac_preproc_ok=: + break + fi +! rm -f conftest.err conftest.i conftest.$ac_ext + + done + # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +! rm -f conftest.i conftest.err conftest.$ac_ext + if $ac_preproc_ok; then : + break + fi +*************** +*** 3488,3494 **** + # Broken: fails on valid input. + continue + fi +! rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. +--- 3519,3525 ---- + # Broken: fails on valid input. + continue + fi +! rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. +*************** +*** 3504,3521 **** + ac_preproc_ok=: + break + fi +! rm -f conftest.err conftest.$ac_ext + + done + # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +! rm -f conftest.err conftest.$ac_ext + if $ac_preproc_ok; then : + + else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 + $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +! as_fn_error "C preprocessor \"$CPP\" fails sanity check +! See \`config.log' for more details." "$LINENO" 5; } + fi + + ac_ext=c +--- 3535,3552 ---- + ac_preproc_ok=: + break + fi +! rm -f conftest.err conftest.i conftest.$ac_ext + + done + # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +! rm -f conftest.i conftest.err conftest.$ac_ext + if $ac_preproc_ok; then : + + else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 + $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +! as_fn_error $? "C preprocessor \"$CPP\" fails sanity check +! See \`config.log' for more details" "$LINENO" 5; } + fi + + ac_ext=c +*************** +*** 3527,3533 **** + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 + $as_echo_n "checking for grep that handles long lines and -e... " >&6; } +! if test "${ac_cv_path_GREP+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + if test -z "$GREP"; then +--- 3558,3564 ---- + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 + $as_echo_n "checking for grep that handles long lines and -e... " >&6; } +! if ${ac_cv_path_GREP+:} false; then : + $as_echo_n "(cached) " >&6 + else + if test -z "$GREP"; then +*************** +*** 3541,3547 **** + for ac_prog in grep ggrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" +! { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue + # Check for GNU ac_path_GREP and select it if it is found. + # Check for GNU $ac_path_GREP + case `"$ac_path_GREP" --version 2>&1` in +--- 3572,3578 ---- + for ac_prog in grep ggrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" +! as_fn_executable_p "$ac_path_GREP" || continue + # Check for GNU ac_path_GREP and select it if it is found. + # Check for GNU $ac_path_GREP + case `"$ac_path_GREP" --version 2>&1` in +*************** +*** 3576,3582 **** + done + IFS=$as_save_IFS + if test -z "$ac_cv_path_GREP"; then +! as_fn_error "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi + else + ac_cv_path_GREP=$GREP +--- 3607,3613 ---- + done + IFS=$as_save_IFS + if test -z "$ac_cv_path_GREP"; then +! as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi + else + ac_cv_path_GREP=$GREP +*************** +*** 3590,3596 **** + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 + $as_echo_n "checking for egrep... " >&6; } +! if test "${ac_cv_path_EGREP+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 +--- 3621,3627 ---- + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 + $as_echo_n "checking for egrep... " >&6; } +! if ${ac_cv_path_EGREP+:} false; then : + $as_echo_n "(cached) " >&6 + else + if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 +*************** +*** 3607,3613 **** + for ac_prog in egrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" +! { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue + # Check for GNU ac_path_EGREP and select it if it is found. + # Check for GNU $ac_path_EGREP + case `"$ac_path_EGREP" --version 2>&1` in +--- 3638,3644 ---- + for ac_prog in egrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" +! as_fn_executable_p "$ac_path_EGREP" || continue + # Check for GNU ac_path_EGREP and select it if it is found. + # Check for GNU $ac_path_EGREP + case `"$ac_path_EGREP" --version 2>&1` in +*************** +*** 3642,3648 **** + done + IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP"; then +! as_fn_error "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi + else + ac_cv_path_EGREP=$EGREP +--- 3673,3679 ---- + done + IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP"; then +! as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi + else + ac_cv_path_EGREP=$EGREP +*************** +*** 3666,3672 **** + rm -f conftest* + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing strerror" >&5 + $as_echo_n "checking for library containing strerror... " >&6; } +! if test "${ac_cv_search_strerror+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + ac_func_search_save_LIBS=$LIBS +--- 3697,3703 ---- + rm -f conftest* + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing strerror" >&5 + $as_echo_n "checking for library containing strerror... " >&6; } +! if ${ac_cv_search_strerror+:} false; then : + $as_echo_n "(cached) " >&6 + else + ac_func_search_save_LIBS=$LIBS +*************** +*** 3700,3710 **** + fi + rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext +! if test "${ac_cv_search_strerror+set}" = set; then : + break + fi + done +! if test "${ac_cv_search_strerror+set}" = set; then : + + else + ac_cv_search_strerror=no +--- 3731,3741 ---- + fi + rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext +! if ${ac_cv_search_strerror+:} false; then : + break + fi + done +! if ${ac_cv_search_strerror+:} false; then : + + else + ac_cv_search_strerror=no +*************** +*** 3725,3731 **** + set dummy $ac_prog; ac_word=$2 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +! if test "${ac_cv_prog_AWK+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + if test -n "$AWK"; then +--- 3756,3762 ---- + set dummy $ac_prog; ac_word=$2 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +! if ${ac_cv_prog_AWK+:} false; then : + $as_echo_n "(cached) " >&6 + else + if test -n "$AWK"; then +*************** +*** 3737,3743 **** + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +! if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_AWK="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 +--- 3768,3774 ---- + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +! if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AWK="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 +*************** +*** 3765,3771 **** + set dummy strip; ac_word=$2 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +! if test "${ac_cv_prog_STRIP+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + if test -n "$STRIP"; then +--- 3796,3802 ---- + set dummy strip; ac_word=$2 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +! if ${ac_cv_prog_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 + else + if test -n "$STRIP"; then +*************** +*** 3777,3783 **** + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +! if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_STRIP="strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 +--- 3808,3814 ---- + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +! if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 +*************** +*** 3804,3810 **** + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 + $as_echo_n "checking for ANSI C header files... " >&6; } +! if test "${ac_cv_header_stdc+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +--- 3835,3841 ---- + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 + $as_echo_n "checking for ANSI C header files... " >&6; } +! if ${ac_cv_header_stdc+:} false; then : + $as_echo_n "(cached) " >&6 + else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +*************** +*** 3916,3922 **** + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sys/wait.h that is POSIX.1 compatible" >&5 + $as_echo_n "checking for sys/wait.h that is POSIX.1 compatible... " >&6; } +! if test "${ac_cv_header_sys_wait_h+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +--- 3947,3953 ---- + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sys/wait.h that is POSIX.1 compatible" >&5 + $as_echo_n "checking for sys/wait.h that is POSIX.1 compatible... " >&6; } +! if ${ac_cv_header_sys_wait_h+:} false; then : + $as_echo_n "(cached) " >&6 + else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +*************** +*** 4107,4113 **** + set dummy xcode-select; ac_word=$2 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +! if test "${ac_cv_path_XCODE_SELECT+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + case $XCODE_SELECT in +--- 4138,4144 ---- + set dummy xcode-select; ac_word=$2 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +! if ${ac_cv_path_XCODE_SELECT+:} false; then : + $as_echo_n "(cached) " >&6 + else + case $XCODE_SELECT in +*************** +*** 4121,4127 **** + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +! if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_XCODE_SELECT="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 +--- 4152,4158 ---- + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +! if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_XCODE_SELECT="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 +*************** +*** 4230,4237 **** + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` + ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default + " +! eval as_val=\$$as_ac_Header +! if test "x$as_val" = x""yes; then : + cat >>confdefs.h <<_ACEOF + #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 + _ACEOF +--- 4261,4267 ---- + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` + ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default + " +! if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF + #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 + _ACEOF +*************** +*** 4242,4248 **** + + + ac_fn_c_check_header_mongrel "$LINENO" "Carbon/Carbon.h" "ac_cv_header_Carbon_Carbon_h" "$ac_includes_default" +! if test "x$ac_cv_header_Carbon_Carbon_h" = x""yes; then : + CARBON=yes + fi + +--- 4272,4278 ---- + + + ac_fn_c_check_header_mongrel "$LINENO" "Carbon/Carbon.h" "ac_cv_header_Carbon_Carbon_h" "$ac_includes_default" +! if test "x$ac_cv_header_Carbon_Carbon_h" = xyes; then : + CARBON=yes + fi + +*************** +*** 4266,4272 **** + for ac_header in AvailabilityMacros.h + do : + ac_fn_c_check_header_mongrel "$LINENO" "AvailabilityMacros.h" "ac_cv_header_AvailabilityMacros_h" "$ac_includes_default" +! if test "x$ac_cv_header_AvailabilityMacros_h" = x""yes; then : + cat >>confdefs.h <<_ACEOF + #define HAVE_AVAILABILITYMACROS_H 1 + _ACEOF +--- 4296,4302 ---- + for ac_header in AvailabilityMacros.h + do : + ac_fn_c_check_header_mongrel "$LINENO" "AvailabilityMacros.h" "ac_cv_header_AvailabilityMacros_h" "$ac_includes_default" +! if test "x$ac_cv_header_AvailabilityMacros_h" = xyes; then : + cat >>confdefs.h <<_ACEOF + #define HAVE_AVAILABILITYMACROS_H 1 + _ACEOF +*************** +*** 4296,4302 **** + have_local_include=yes + have_local_lib=yes + ;; +! *) as_fn_error "must pass path argument to --with-local-dir" "$LINENO" 5 ;; + esac + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $local_dir" >&5 + $as_echo "$local_dir" >&6; } +--- 4326,4332 ---- + have_local_include=yes + have_local_lib=yes + ;; +! *) as_fn_error $? "must pass path argument to --with-local-dir" "$LINENO" 5 ;; + esac + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $local_dir" >&5 + $as_echo "$local_dir" >&6; } +*************** +*** 4505,4511 **** + $as_echo "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for is_selinux_enabled in -lselinux" >&5 + $as_echo_n "checking for is_selinux_enabled in -lselinux... " >&6; } +! if test "${ac_cv_lib_selinux_is_selinux_enabled+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + ac_check_lib_save_LIBS=$LIBS +--- 4535,4541 ---- + $as_echo "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for is_selinux_enabled in -lselinux" >&5 + $as_echo_n "checking for is_selinux_enabled in -lselinux... " >&6; } +! if ${ac_cv_lib_selinux_is_selinux_enabled+:} false; then : + $as_echo_n "(cached) " >&6 + else + ac_check_lib_save_LIBS=$LIBS +*************** +*** 4539,4545 **** + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_selinux_is_selinux_enabled" >&5 + $as_echo "$ac_cv_lib_selinux_is_selinux_enabled" >&6; } +! if test "x$ac_cv_lib_selinux_is_selinux_enabled" = x""yes; then : + LIBS="$LIBS -lselinux" + $as_echo "#define HAVE_SELINUX 1" >>confdefs.h + +--- 4569,4575 ---- + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_selinux_is_selinux_enabled" >&5 + $as_echo "$ac_cv_lib_selinux_is_selinux_enabled" >&6; } +! if test "x$ac_cv_lib_selinux_is_selinux_enabled" = xyes; then : + LIBS="$LIBS -lselinux" + $as_echo "#define HAVE_SELINUX 1" >>confdefs.h + +*************** +*** 4701,4707 **** + set dummy luajit; ac_word=$2 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +! if test "${ac_cv_path_vi_cv_path_luajit+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + case $vi_cv_path_luajit in +--- 4731,4737 ---- + set dummy luajit; ac_word=$2 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +! if ${ac_cv_path_vi_cv_path_luajit+:} false; then : + $as_echo_n "(cached) " >&6 + else + case $vi_cv_path_luajit in +*************** +*** 4715,4721 **** + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +! if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_vi_cv_path_luajit="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 +--- 4745,4751 ---- + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +! if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_vi_cv_path_luajit="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 +*************** +*** 4740,4746 **** + if test "X$vi_cv_path_luajit" != "X"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking LuaJIT version" >&5 + $as_echo_n "checking LuaJIT version... " >&6; } +! if test "${vi_cv_version_luajit+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + vi_cv_version_luajit=`${vi_cv_path_luajit} -v 2>&1 | sed 's/LuaJIT \([0-9.]*\)\.[0-9]\(-[a-z0-9]*\)* .*/\1/'` +--- 4770,4776 ---- + if test "X$vi_cv_path_luajit" != "X"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking LuaJIT version" >&5 + $as_echo_n "checking LuaJIT version... " >&6; } +! if ${vi_cv_version_luajit+:} false; then : + $as_echo_n "(cached) " >&6 + else + vi_cv_version_luajit=`${vi_cv_path_luajit} -v 2>&1 | sed 's/LuaJIT \([0-9.]*\)\.[0-9]\(-[a-z0-9]*\)* .*/\1/'` +*************** +*** 4749,4755 **** + $as_echo "$vi_cv_version_luajit" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking Lua version of LuaJIT" >&5 + $as_echo_n "checking Lua version of LuaJIT... " >&6; } +! if test "${vi_cv_version_lua_luajit+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + vi_cv_version_lua_luajit=`${vi_cv_path_luajit} -e "print(_VERSION)" | sed 's/.* //'` +--- 4779,4785 ---- + $as_echo "$vi_cv_version_luajit" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking Lua version of LuaJIT" >&5 + $as_echo_n "checking Lua version of LuaJIT... " >&6; } +! if ${vi_cv_version_lua_luajit+:} false; then : + $as_echo_n "(cached) " >&6 + else + vi_cv_version_lua_luajit=`${vi_cv_path_luajit} -e "print(_VERSION)" | sed 's/.* //'` +*************** +*** 4764,4770 **** + set dummy lua; ac_word=$2 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +! if test "${ac_cv_path_vi_cv_path_plain_lua+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + case $vi_cv_path_plain_lua in +--- 4794,4800 ---- + set dummy lua; ac_word=$2 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +! if ${ac_cv_path_vi_cv_path_plain_lua+:} false; then : + $as_echo_n "(cached) " >&6 + else + case $vi_cv_path_plain_lua in +*************** +*** 4778,4784 **** + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +! if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_vi_cv_path_plain_lua="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 +--- 4808,4814 ---- + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +! if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_vi_cv_path_plain_lua="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 +*************** +*** 4803,4809 **** + if test "X$vi_cv_path_plain_lua" != "X"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking Lua version" >&5 + $as_echo_n "checking Lua version... " >&6; } +! if test "${vi_cv_version_plain_lua+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + vi_cv_version_plain_lua=`${vi_cv_path_plain_lua} -e "print(_VERSION)" | sed 's/.* //'` +--- 4833,4839 ---- + if test "X$vi_cv_path_plain_lua" != "X"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking Lua version" >&5 + $as_echo_n "checking Lua version... " >&6; } +! if ${vi_cv_version_plain_lua+:} false; then : + $as_echo_n "(cached) " >&6 + else + vi_cv_version_plain_lua=`${vi_cv_path_plain_lua} -e "print(_VERSION)" | sed 's/.* //'` +*************** +*** 4963,4969 **** + fi + fi + if test "$fail_if_missing" = "yes" -a "$lua_ok" != "yes"; then +! as_fn_error "could not configure lua" "$LINENO" 5 + fi + + +--- 4993,4999 ---- + fi + fi + if test "$fail_if_missing" = "yes" -a "$lua_ok" != "yes"; then +! as_fn_error $? "could not configure lua" "$LINENO" 5 + fi + + +*************** +*** 5017,5023 **** + set dummy mzscheme; ac_word=$2 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +! if test "${ac_cv_path_vi_cv_path_mzscheme+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + case $vi_cv_path_mzscheme in +--- 5047,5053 ---- + set dummy mzscheme; ac_word=$2 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +! if ${ac_cv_path_vi_cv_path_mzscheme+:} false; then : + $as_echo_n "(cached) " >&6 + else + case $vi_cv_path_mzscheme in +*************** +*** 5031,5037 **** + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +! if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_vi_cv_path_mzscheme="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 +--- 5061,5067 ---- + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +! if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_vi_cv_path_mzscheme="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 +*************** +*** 5064,5070 **** + if test "X$vi_cv_path_mzscheme" != "X"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking MzScheme install prefix" >&5 + $as_echo_n "checking MzScheme install prefix... " >&6; } +! if test "${vi_cv_path_mzscheme_pfx+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + echo "(display (simplify-path \ +--- 5094,5100 ---- + if test "X$vi_cv_path_mzscheme" != "X"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking MzScheme install prefix" >&5 + $as_echo_n "checking MzScheme install prefix... " >&6; } +! if ${vi_cv_path_mzscheme_pfx+:} false; then : + $as_echo_n "(cached) " >&6 + else + echo "(display (simplify-path \ +*************** +*** 5226,5232 **** + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ffi_type_void in -lffi" >&5 + $as_echo_n "checking for ffi_type_void in -lffi... " >&6; } +! if test "${ac_cv_lib_ffi_ffi_type_void+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + ac_check_lib_save_LIBS=$LIBS +--- 5256,5262 ---- + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ffi_type_void in -lffi" >&5 + $as_echo_n "checking for ffi_type_void in -lffi... " >&6; } +! if ${ac_cv_lib_ffi_ffi_type_void+:} false; then : + $as_echo_n "(cached) " >&6 + else + ac_check_lib_save_LIBS=$LIBS +*************** +*** 5260,5266 **** + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ffi_ffi_type_void" >&5 + $as_echo "$ac_cv_lib_ffi_ffi_type_void" >&6; } +! if test "x$ac_cv_lib_ffi_ffi_type_void" = x""yes; then : + MZSCHEME_LIBS="$MZSCHEME_LIBS -lffi" + fi + +--- 5290,5296 ---- + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ffi_ffi_type_void" >&5 + $as_echo "$ac_cv_lib_ffi_ffi_type_void" >&6; } +! if test "x$ac_cv_lib_ffi_ffi_type_void" = xyes; then : + MZSCHEME_LIBS="$MZSCHEME_LIBS -lffi" + fi + +*************** +*** 5336,5342 **** + set dummy perl; ac_word=$2 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +! if test "${ac_cv_path_vi_cv_path_perl+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + case $vi_cv_path_perl in +--- 5366,5372 ---- + set dummy perl; ac_word=$2 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +! if ${ac_cv_path_vi_cv_path_perl+:} false; then : + $as_echo_n "(cached) " >&6 + else + case $vi_cv_path_perl in +*************** +*** 5350,5356 **** + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +! if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_vi_cv_path_perl="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 +--- 5380,5386 ---- + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +! if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_vi_cv_path_perl="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 +*************** +*** 5498,5504 **** + fi + + if test "$fail_if_missing" = "yes" -a "$perl_ok" != "yes"; then +! as_fn_error "could not configure perl" "$LINENO" 5 + fi + fi + +--- 5528,5534 ---- + fi + + if test "$fail_if_missing" = "yes" -a "$perl_ok" != "yes"; then +! as_fn_error $? "could not configure perl" "$LINENO" 5 + fi + fi + +*************** +*** 5526,5532 **** + set dummy $ac_prog; ac_word=$2 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +! if test "${ac_cv_path_vi_cv_path_python+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + case $vi_cv_path_python in +--- 5556,5562 ---- + set dummy $ac_prog; ac_word=$2 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +! if ${ac_cv_path_vi_cv_path_python+:} false; then : + $as_echo_n "(cached) " >&6 + else + case $vi_cv_path_python in +*************** +*** 5540,5546 **** + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +! if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_vi_cv_path_python="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 +--- 5570,5576 ---- + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +! if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_vi_cv_path_python="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 +*************** +*** 5569,5575 **** + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking Python version" >&5 + $as_echo_n "checking Python version... " >&6; } +! if test "${vi_cv_var_python_version+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + vi_cv_var_python_version=` +--- 5599,5605 ---- + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking Python version" >&5 + $as_echo_n "checking Python version... " >&6; } +! if ${vi_cv_var_python_version+:} false; then : + $as_echo_n "(cached) " >&6 + else + vi_cv_var_python_version=` +*************** +*** 5589,5595 **** + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking Python's install prefix" >&5 + $as_echo_n "checking Python's install prefix... " >&6; } +! if test "${vi_cv_path_python_pfx+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + vi_cv_path_python_pfx=` +--- 5619,5625 ---- + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking Python's install prefix" >&5 + $as_echo_n "checking Python's install prefix... " >&6; } +! if ${vi_cv_path_python_pfx+:} false; then : + $as_echo_n "(cached) " >&6 + else + vi_cv_path_python_pfx=` +*************** +*** 5601,5607 **** + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking Python's execution prefix" >&5 + $as_echo_n "checking Python's execution prefix... " >&6; } +! if test "${vi_cv_path_python_epfx+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + vi_cv_path_python_epfx=` +--- 5631,5637 ---- + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking Python's execution prefix" >&5 + $as_echo_n "checking Python's execution prefix... " >&6; } +! if ${vi_cv_path_python_epfx+:} false; then : + $as_echo_n "(cached) " >&6 + else + vi_cv_path_python_epfx=` +*************** +*** 5612,5618 **** + $as_echo "$vi_cv_path_python_epfx" >&6; } + + +! if test "${vi_cv_path_pythonpath+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + vi_cv_path_pythonpath=` +--- 5642,5648 ---- + $as_echo "$vi_cv_path_python_epfx" >&6; } + + +! if ${vi_cv_path_pythonpath+:} false; then : + $as_echo_n "(cached) " >&6 + else + vi_cv_path_pythonpath=` +*************** +*** 5632,5638 **** + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking Python's configuration directory" >&5 + $as_echo_n "checking Python's configuration directory... " >&6; } +! if test "${vi_cv_path_python_conf+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + +--- 5662,5668 ---- + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking Python's configuration directory" >&5 + $as_echo_n "checking Python's configuration directory... " >&6; } +! if ${vi_cv_path_python_conf+:} false; then : + $as_echo_n "(cached) " >&6 + else + +*************** +*** 5662,5668 **** + $as_echo "can't find it!" >&6; } + else + +! if test "${vi_cv_path_python_plibs+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + +--- 5692,5698 ---- + $as_echo "can't find it!" >&6; } + else + +! if ${vi_cv_path_python_plibs+:} false; then : + $as_echo_n "(cached) " >&6 + else + +*************** +*** 5803,5809 **** + fi + + if test "$fail_if_missing" = "yes" -a "$python_ok" != "yes"; then +! as_fn_error "could not configure python" "$LINENO" 5 + fi + fi + +--- 5833,5839 ---- + fi + + if test "$fail_if_missing" = "yes" -a "$python_ok" != "yes"; then +! as_fn_error $? "could not configure python" "$LINENO" 5 + fi + fi + +*************** +*** 5833,5839 **** + set dummy $ac_prog; ac_word=$2 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +! if test "${ac_cv_path_vi_cv_path_python3+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + case $vi_cv_path_python3 in +--- 5863,5869 ---- + set dummy $ac_prog; ac_word=$2 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +! if ${ac_cv_path_vi_cv_path_python3+:} false; then : + $as_echo_n "(cached) " >&6 + else + case $vi_cv_path_python3 in +*************** +*** 5847,5853 **** + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +! if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_vi_cv_path_python3="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 +--- 5877,5883 ---- + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +! if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_vi_cv_path_python3="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 +*************** +*** 5876,5882 **** + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking Python version" >&5 + $as_echo_n "checking Python version... " >&6; } +! if test "${vi_cv_var_python3_version+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + vi_cv_var_python3_version=` +--- 5906,5912 ---- + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking Python version" >&5 + $as_echo_n "checking Python version... " >&6; } +! if ${vi_cv_var_python3_version+:} false; then : + $as_echo_n "(cached) " >&6 + else + vi_cv_var_python3_version=` +*************** +*** 5896,5902 **** + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking Python's abiflags" >&5 + $as_echo_n "checking Python's abiflags... " >&6; } +! if test "${vi_cv_var_python3_abiflags+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + +--- 5926,5932 ---- + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking Python's abiflags" >&5 + $as_echo_n "checking Python's abiflags... " >&6; } +! if ${vi_cv_var_python3_abiflags+:} false; then : + $as_echo_n "(cached) " >&6 + else + +*************** +*** 5913,5919 **** + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking Python's install prefix" >&5 + $as_echo_n "checking Python's install prefix... " >&6; } +! if test "${vi_cv_path_python3_pfx+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + vi_cv_path_python3_pfx=` +--- 5943,5949 ---- + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking Python's install prefix" >&5 + $as_echo_n "checking Python's install prefix... " >&6; } +! if ${vi_cv_path_python3_pfx+:} false; then : + $as_echo_n "(cached) " >&6 + else + vi_cv_path_python3_pfx=` +*************** +*** 5925,5931 **** + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking Python's execution prefix" >&5 + $as_echo_n "checking Python's execution prefix... " >&6; } +! if test "${vi_cv_path_python3_epfx+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + vi_cv_path_python3_epfx=` +--- 5955,5961 ---- + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking Python's execution prefix" >&5 + $as_echo_n "checking Python's execution prefix... " >&6; } +! if ${vi_cv_path_python3_epfx+:} false; then : + $as_echo_n "(cached) " >&6 + else + vi_cv_path_python3_epfx=` +*************** +*** 5936,5942 **** + $as_echo "$vi_cv_path_python3_epfx" >&6; } + + +! if test "${vi_cv_path_python3path+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + vi_cv_path_python3path=` +--- 5966,5972 ---- + $as_echo "$vi_cv_path_python3_epfx" >&6; } + + +! if ${vi_cv_path_python3path+:} false; then : + $as_echo_n "(cached) " >&6 + else + vi_cv_path_python3path=` +*************** +*** 5956,5962 **** + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking Python's configuration directory" >&5 + $as_echo_n "checking Python's configuration directory... " >&6; } +! if test "${vi_cv_path_python3_conf+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + +--- 5986,5992 ---- + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking Python's configuration directory" >&5 + $as_echo_n "checking Python's configuration directory... " >&6; } +! if ${vi_cv_path_python3_conf+:} false; then : + $as_echo_n "(cached) " >&6 + else + +*************** +*** 5987,5993 **** + $as_echo "can't find it!" >&6; } + else + +! if test "${vi_cv_path_python3_plibs+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + +--- 6017,6023 ---- + $as_echo "can't find it!" >&6; } + else + +! if ${vi_cv_path_python3_plibs+:} false; then : + $as_echo_n "(cached) " >&6 + else + +*************** +*** 6114,6120 **** + fi + fi + if test "$fail_if_missing" = "yes" -a "$python3_ok" != "yes"; then +! as_fn_error "could not configure python3" "$LINENO" 5 + fi + fi + +--- 6144,6150 ---- + fi + fi + if test "$fail_if_missing" = "yes" -a "$python3_ok" != "yes"; then +! as_fn_error $? "could not configure python3" "$LINENO" 5 + fi + fi + +*************** +*** 6138,6145 **** + if test "$cross_compiling" = yes; then : + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 + $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +! as_fn_error "cannot run test program while cross compiling +! See \`config.log' for more details." "$LINENO" 5; } + else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ +--- 6168,6175 ---- + if test "$cross_compiling" = yes; then : + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 + $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +! as_fn_error $? "cannot run test program while cross compiling +! See \`config.log' for more details" "$LINENO" 5; } + else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ +*************** +*** 6203,6210 **** + if test "$cross_compiling" = yes; then : + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 + $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +! as_fn_error "cannot run test program while cross compiling +! See \`config.log' for more details." "$LINENO" 5; } + else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ +--- 6233,6240 ---- + if test "$cross_compiling" = yes; then : + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 + $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +! as_fn_error $? "cannot run test program while cross compiling +! See \`config.log' for more details" "$LINENO" 5; } + else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ +*************** +*** 6378,6384 **** + set dummy $tclsh_name; ac_word=$2 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +! if test "${ac_cv_path_vi_cv_path_tcl+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + case $vi_cv_path_tcl in +--- 6408,6414 ---- + set dummy $tclsh_name; ac_word=$2 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +! if ${ac_cv_path_vi_cv_path_tcl+:} false; then : + $as_echo_n "(cached) " >&6 + else + case $vi_cv_path_tcl in +*************** +*** 6392,6398 **** + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +! if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_vi_cv_path_tcl="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 +--- 6422,6428 ---- + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +! if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_vi_cv_path_tcl="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 +*************** +*** 6422,6428 **** + set dummy $tclsh_name; ac_word=$2 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +! if test "${ac_cv_path_vi_cv_path_tcl+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + case $vi_cv_path_tcl in +--- 6452,6458 ---- + set dummy $tclsh_name; ac_word=$2 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +! if ${ac_cv_path_vi_cv_path_tcl+:} false; then : + $as_echo_n "(cached) " >&6 + else + case $vi_cv_path_tcl in +*************** +*** 6436,6442 **** + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +! if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_vi_cv_path_tcl="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 +--- 6466,6472 ---- + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +! if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_vi_cv_path_tcl="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 +*************** +*** 6465,6471 **** + set dummy $tclsh_name; ac_word=$2 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +! if test "${ac_cv_path_vi_cv_path_tcl+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + case $vi_cv_path_tcl in +--- 6495,6501 ---- + set dummy $tclsh_name; ac_word=$2 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +! if ${ac_cv_path_vi_cv_path_tcl+:} false; then : + $as_echo_n "(cached) " >&6 + else + case $vi_cv_path_tcl in +*************** +*** 6479,6485 **** + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +! if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_vi_cv_path_tcl="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 +--- 6509,6515 ---- + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +! if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_vi_cv_path_tcl="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 +*************** +*** 6508,6514 **** + set dummy $tclsh_name; ac_word=$2 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +! if test "${ac_cv_path_vi_cv_path_tcl+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + case $vi_cv_path_tcl in +--- 6538,6544 ---- + set dummy $tclsh_name; ac_word=$2 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +! if ${ac_cv_path_vi_cv_path_tcl+:} false; then : + $as_echo_n "(cached) " >&6 + else + case $vi_cv_path_tcl in +*************** +*** 6522,6528 **** + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +! if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_vi_cv_path_tcl="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 +--- 6552,6558 ---- + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +! if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_vi_cv_path_tcl="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 +*************** +*** 6551,6557 **** + set dummy $tclsh_name; ac_word=$2 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +! if test "${ac_cv_path_vi_cv_path_tcl+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + case $vi_cv_path_tcl in +--- 6581,6587 ---- + set dummy $tclsh_name; ac_word=$2 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +! if ${ac_cv_path_vi_cv_path_tcl+:} false; then : + $as_echo_n "(cached) " >&6 + else + case $vi_cv_path_tcl in +*************** +*** 6565,6571 **** + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +! if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_vi_cv_path_tcl="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 +--- 6595,6601 ---- + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +! if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_vi_cv_path_tcl="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 +*************** +*** 6682,6688 **** + fi + fi + if test "$fail_if_missing" = "yes" -a -z "$TCL_SRC"; then +! as_fn_error "could not configure Tcl" "$LINENO" 5 + fi + fi + +--- 6712,6718 ---- + fi + fi + if test "$fail_if_missing" = "yes" -a -z "$TCL_SRC"; then +! as_fn_error $? "could not configure Tcl" "$LINENO" 5 + fi + fi + +*************** +*** 6720,6726 **** + set dummy $RUBY_CMD; ac_word=$2 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +! if test "${ac_cv_path_vi_cv_path_ruby+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + case $vi_cv_path_ruby in +--- 6750,6756 ---- + set dummy $RUBY_CMD; ac_word=$2 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +! if ${ac_cv_path_vi_cv_path_ruby+:} false; then : + $as_echo_n "(cached) " >&6 + else + case $vi_cv_path_ruby in +*************** +*** 6734,6740 **** + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +! if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_vi_cv_path_ruby="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 +--- 6764,6770 ---- + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +! if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_vi_cv_path_ruby="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 +*************** +*** 6836,6842 **** + fi + + if test "$fail_if_missing" = "yes" -a -z "$RUBY_OBJ"; then +! as_fn_error "could not configure Ruby" "$LINENO" 5 + fi + fi + +--- 6866,6872 ---- + fi + + if test "$fail_if_missing" = "yes" -a -z "$RUBY_OBJ"; then +! as_fn_error $? "could not configure Ruby" "$LINENO" 5 + fi + fi + +*************** +*** 6898,6904 **** + $as_echo "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for socket in -lsocket" >&5 + $as_echo_n "checking for socket in -lsocket... " >&6; } +! if test "${ac_cv_lib_socket_socket+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + ac_check_lib_save_LIBS=$LIBS +--- 6928,6934 ---- + $as_echo "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for socket in -lsocket" >&5 + $as_echo_n "checking for socket in -lsocket... " >&6; } +! if ${ac_cv_lib_socket_socket+:} false; then : + $as_echo_n "(cached) " >&6 + else + ac_check_lib_save_LIBS=$LIBS +*************** +*** 6932,6938 **** + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_socket" >&5 + $as_echo "$ac_cv_lib_socket_socket" >&6; } +! if test "x$ac_cv_lib_socket_socket" = x""yes; then : + cat >>confdefs.h <<_ACEOF + #define HAVE_LIBSOCKET 1 + _ACEOF +--- 6962,6968 ---- + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_socket" >&5 + $as_echo "$ac_cv_lib_socket_socket" >&6; } +! if test "x$ac_cv_lib_socket_socket" = xyes; then : + cat >>confdefs.h <<_ACEOF + #define HAVE_LIBSOCKET 1 + _ACEOF +*************** +*** 6943,6949 **** + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lnsl" >&5 + $as_echo_n "checking for gethostbyname in -lnsl... " >&6; } +! if test "${ac_cv_lib_nsl_gethostbyname+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + ac_check_lib_save_LIBS=$LIBS +--- 6973,6979 ---- + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lnsl" >&5 + $as_echo_n "checking for gethostbyname in -lnsl... " >&6; } +! if ${ac_cv_lib_nsl_gethostbyname+:} false; then : + $as_echo_n "(cached) " >&6 + else + ac_check_lib_save_LIBS=$LIBS +*************** +*** 6977,6983 **** + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_gethostbyname" >&5 + $as_echo "$ac_cv_lib_nsl_gethostbyname" >&6; } +! if test "x$ac_cv_lib_nsl_gethostbyname" = x""yes; then : + cat >>confdefs.h <<_ACEOF + #define HAVE_LIBNSL 1 + _ACEOF +--- 7007,7013 ---- + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_gethostbyname" >&5 + $as_echo "$ac_cv_lib_nsl_gethostbyname" >&6; } +! if test "x$ac_cv_lib_nsl_gethostbyname" = xyes; then : + cat >>confdefs.h <<_ACEOF + #define HAVE_LIBNSL 1 + _ACEOF +*************** +*** 7127,7133 **** + set dummy xmkmf; ac_word=$2 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +! if test "${ac_cv_path_xmkmfpath+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + case $xmkmfpath in +--- 7157,7163 ---- + set dummy xmkmf; ac_word=$2 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +! if ${ac_cv_path_xmkmfpath+:} false; then : + $as_echo_n "(cached) " >&6 + else + case $xmkmfpath in +*************** +*** 7141,7147 **** + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +! if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_xmkmfpath="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 +--- 7171,7177 ---- + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +! if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_xmkmfpath="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 +*************** +*** 7179,7186 **** + have_x=disabled + else + case $x_includes,$x_libraries in #( +! *\'*) as_fn_error "cannot use X directory names containing '" "$LINENO" 5;; #( +! *,NONE | NONE,*) if test "${ac_cv_have_x+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + # One or both of the vars are not set, and there is no cached value. +--- 7209,7216 ---- + have_x=disabled + else + case $x_includes,$x_libraries in #( +! *\'*) as_fn_error $? "cannot use X directory names containing '" "$LINENO" 5;; #( +! *,NONE | NONE,*) if ${ac_cv_have_x+:} false; then : + $as_echo_n "(cached) " >&6 + else + # One or both of the vars are not set, and there is no cached value. +*************** +*** 7197,7203 **** + @echo libdir='${LIBDIR}' + _ACEOF + if (export CC; ${XMKMF-xmkmf}) >/dev/null 2>/dev/null && test -f Makefile; then +! # GNU make sometimes prints "make[1]: Entering...", which would confuse us. + for ac_var in incroot usrlibdir libdir; do + eval "ac_im_$ac_var=\`\${MAKE-make} $ac_var 2>/dev/null | sed -n 's/^$ac_var=//p'\`" + done +--- 7227,7233 ---- + @echo libdir='${LIBDIR}' + _ACEOF + if (export CC; ${XMKMF-xmkmf}) >/dev/null 2>/dev/null && test -f Makefile; then +! # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. + for ac_var in incroot usrlibdir libdir; do + eval "ac_im_$ac_var=\`\${MAKE-make} $ac_var 2>/dev/null | sed -n 's/^$ac_var=//p'\`" + done +*************** +*** 7283,7289 **** + fi + done + fi +! rm -f conftest.err conftest.$ac_ext + fi # $ac_x_includes = no + + if test "$ac_x_libraries" = no; then +--- 7313,7319 ---- + fi + done + fi +! rm -f conftest.err conftest.i conftest.$ac_ext + fi # $ac_x_includes = no + + if test "$ac_x_libraries" = no; then +*************** +*** 7457,7463 **** + else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dnet_ntoa in -ldnet" >&5 + $as_echo_n "checking for dnet_ntoa in -ldnet... " >&6; } +! if test "${ac_cv_lib_dnet_dnet_ntoa+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + ac_check_lib_save_LIBS=$LIBS +--- 7487,7493 ---- + else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dnet_ntoa in -ldnet" >&5 + $as_echo_n "checking for dnet_ntoa in -ldnet... " >&6; } +! if ${ac_cv_lib_dnet_dnet_ntoa+:} false; then : + $as_echo_n "(cached) " >&6 + else + ac_check_lib_save_LIBS=$LIBS +*************** +*** 7491,7504 **** + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dnet_dnet_ntoa" >&5 + $as_echo "$ac_cv_lib_dnet_dnet_ntoa" >&6; } +! if test "x$ac_cv_lib_dnet_dnet_ntoa" = x""yes; then : + X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet" + fi + + if test $ac_cv_lib_dnet_dnet_ntoa = no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dnet_ntoa in -ldnet_stub" >&5 + $as_echo_n "checking for dnet_ntoa in -ldnet_stub... " >&6; } +! if test "${ac_cv_lib_dnet_stub_dnet_ntoa+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + ac_check_lib_save_LIBS=$LIBS +--- 7521,7534 ---- + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dnet_dnet_ntoa" >&5 + $as_echo "$ac_cv_lib_dnet_dnet_ntoa" >&6; } +! if test "x$ac_cv_lib_dnet_dnet_ntoa" = xyes; then : + X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet" + fi + + if test $ac_cv_lib_dnet_dnet_ntoa = no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dnet_ntoa in -ldnet_stub" >&5 + $as_echo_n "checking for dnet_ntoa in -ldnet_stub... " >&6; } +! if ${ac_cv_lib_dnet_stub_dnet_ntoa+:} false; then : + $as_echo_n "(cached) " >&6 + else + ac_check_lib_save_LIBS=$LIBS +*************** +*** 7532,7538 **** + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dnet_stub_dnet_ntoa" >&5 + $as_echo "$ac_cv_lib_dnet_stub_dnet_ntoa" >&6; } +! if test "x$ac_cv_lib_dnet_stub_dnet_ntoa" = x""yes; then : + X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub" + fi + +--- 7562,7568 ---- + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dnet_stub_dnet_ntoa" >&5 + $as_echo "$ac_cv_lib_dnet_stub_dnet_ntoa" >&6; } +! if test "x$ac_cv_lib_dnet_stub_dnet_ntoa" = xyes; then : + X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub" + fi + +*************** +*** 7551,7564 **** + # The functions gethostbyname, getservbyname, and inet_addr are + # in -lbsd on LynxOS 3.0.1/i386, according to Lars Hecking. + ac_fn_c_check_func "$LINENO" "gethostbyname" "ac_cv_func_gethostbyname" +! if test "x$ac_cv_func_gethostbyname" = x""yes; then : + + fi + + if test $ac_cv_func_gethostbyname = no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lnsl" >&5 + $as_echo_n "checking for gethostbyname in -lnsl... " >&6; } +! if test "${ac_cv_lib_nsl_gethostbyname+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + ac_check_lib_save_LIBS=$LIBS +--- 7581,7594 ---- + # The functions gethostbyname, getservbyname, and inet_addr are + # in -lbsd on LynxOS 3.0.1/i386, according to Lars Hecking. + ac_fn_c_check_func "$LINENO" "gethostbyname" "ac_cv_func_gethostbyname" +! if test "x$ac_cv_func_gethostbyname" = xyes; then : + + fi + + if test $ac_cv_func_gethostbyname = no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lnsl" >&5 + $as_echo_n "checking for gethostbyname in -lnsl... " >&6; } +! if ${ac_cv_lib_nsl_gethostbyname+:} false; then : + $as_echo_n "(cached) " >&6 + else + ac_check_lib_save_LIBS=$LIBS +*************** +*** 7592,7605 **** + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_gethostbyname" >&5 + $as_echo "$ac_cv_lib_nsl_gethostbyname" >&6; } +! if test "x$ac_cv_lib_nsl_gethostbyname" = x""yes; then : + X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl" + fi + + if test $ac_cv_lib_nsl_gethostbyname = no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lbsd" >&5 + $as_echo_n "checking for gethostbyname in -lbsd... " >&6; } +! if test "${ac_cv_lib_bsd_gethostbyname+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + ac_check_lib_save_LIBS=$LIBS +--- 7622,7635 ---- + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_gethostbyname" >&5 + $as_echo "$ac_cv_lib_nsl_gethostbyname" >&6; } +! if test "x$ac_cv_lib_nsl_gethostbyname" = xyes; then : + X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl" + fi + + if test $ac_cv_lib_nsl_gethostbyname = no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lbsd" >&5 + $as_echo_n "checking for gethostbyname in -lbsd... " >&6; } +! if ${ac_cv_lib_bsd_gethostbyname+:} false; then : + $as_echo_n "(cached) " >&6 + else + ac_check_lib_save_LIBS=$LIBS +*************** +*** 7633,7639 **** + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bsd_gethostbyname" >&5 + $as_echo "$ac_cv_lib_bsd_gethostbyname" >&6; } +! if test "x$ac_cv_lib_bsd_gethostbyname" = x""yes; then : + X_EXTRA_LIBS="$X_EXTRA_LIBS -lbsd" + fi + +--- 7663,7669 ---- + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bsd_gethostbyname" >&5 + $as_echo "$ac_cv_lib_bsd_gethostbyname" >&6; } +! if test "x$ac_cv_lib_bsd_gethostbyname" = xyes; then : + X_EXTRA_LIBS="$X_EXTRA_LIBS -lbsd" + fi + +*************** +*** 7648,7661 **** + # must be given before -lnsl if both are needed. We assume that + # if connect needs -lnsl, so does gethostbyname. + ac_fn_c_check_func "$LINENO" "connect" "ac_cv_func_connect" +! if test "x$ac_cv_func_connect" = x""yes; then : + + fi + + if test $ac_cv_func_connect = no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for connect in -lsocket" >&5 + $as_echo_n "checking for connect in -lsocket... " >&6; } +! if test "${ac_cv_lib_socket_connect+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + ac_check_lib_save_LIBS=$LIBS +--- 7678,7691 ---- + # must be given before -lnsl if both are needed. We assume that + # if connect needs -lnsl, so does gethostbyname. + ac_fn_c_check_func "$LINENO" "connect" "ac_cv_func_connect" +! if test "x$ac_cv_func_connect" = xyes; then : + + fi + + if test $ac_cv_func_connect = no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for connect in -lsocket" >&5 + $as_echo_n "checking for connect in -lsocket... " >&6; } +! if ${ac_cv_lib_socket_connect+:} false; then : + $as_echo_n "(cached) " >&6 + else + ac_check_lib_save_LIBS=$LIBS +*************** +*** 7689,7695 **** + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_connect" >&5 + $as_echo "$ac_cv_lib_socket_connect" >&6; } +! if test "x$ac_cv_lib_socket_connect" = x""yes; then : + X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS" + fi + +--- 7719,7725 ---- + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_connect" >&5 + $as_echo "$ac_cv_lib_socket_connect" >&6; } +! if test "x$ac_cv_lib_socket_connect" = xyes; then : + X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS" + fi + +*************** +*** 7697,7710 **** + + # Guillermo Gomez says -lposix is necessary on A/UX. + ac_fn_c_check_func "$LINENO" "remove" "ac_cv_func_remove" +! if test "x$ac_cv_func_remove" = x""yes; then : + + fi + + if test $ac_cv_func_remove = no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for remove in -lposix" >&5 + $as_echo_n "checking for remove in -lposix... " >&6; } +! if test "${ac_cv_lib_posix_remove+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + ac_check_lib_save_LIBS=$LIBS +--- 7727,7740 ---- + + # Guillermo Gomez says -lposix is necessary on A/UX. + ac_fn_c_check_func "$LINENO" "remove" "ac_cv_func_remove" +! if test "x$ac_cv_func_remove" = xyes; then : + + fi + + if test $ac_cv_func_remove = no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for remove in -lposix" >&5 + $as_echo_n "checking for remove in -lposix... " >&6; } +! if ${ac_cv_lib_posix_remove+:} false; then : + $as_echo_n "(cached) " >&6 + else + ac_check_lib_save_LIBS=$LIBS +*************** +*** 7738,7744 **** + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_posix_remove" >&5 + $as_echo "$ac_cv_lib_posix_remove" >&6; } +! if test "x$ac_cv_lib_posix_remove" = x""yes; then : + X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix" + fi + +--- 7768,7774 ---- + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_posix_remove" >&5 + $as_echo "$ac_cv_lib_posix_remove" >&6; } +! if test "x$ac_cv_lib_posix_remove" = xyes; then : + X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix" + fi + +*************** +*** 7746,7759 **** + + # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay. + ac_fn_c_check_func "$LINENO" "shmat" "ac_cv_func_shmat" +! if test "x$ac_cv_func_shmat" = x""yes; then : + + fi + + if test $ac_cv_func_shmat = no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shmat in -lipc" >&5 + $as_echo_n "checking for shmat in -lipc... " >&6; } +! if test "${ac_cv_lib_ipc_shmat+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + ac_check_lib_save_LIBS=$LIBS +--- 7776,7789 ---- + + # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay. + ac_fn_c_check_func "$LINENO" "shmat" "ac_cv_func_shmat" +! if test "x$ac_cv_func_shmat" = xyes; then : + + fi + + if test $ac_cv_func_shmat = no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shmat in -lipc" >&5 + $as_echo_n "checking for shmat in -lipc... " >&6; } +! if ${ac_cv_lib_ipc_shmat+:} false; then : + $as_echo_n "(cached) " >&6 + else + ac_check_lib_save_LIBS=$LIBS +*************** +*** 7787,7793 **** + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ipc_shmat" >&5 + $as_echo "$ac_cv_lib_ipc_shmat" >&6; } +! if test "x$ac_cv_lib_ipc_shmat" = x""yes; then : + X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc" + fi + +--- 7817,7823 ---- + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ipc_shmat" >&5 + $as_echo "$ac_cv_lib_ipc_shmat" >&6; } +! if test "x$ac_cv_lib_ipc_shmat" = xyes; then : + X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc" + fi + +*************** +*** 7805,7811 **** + # John Interrante, Karl Berry + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for IceConnectionNumber in -lICE" >&5 + $as_echo_n "checking for IceConnectionNumber in -lICE... " >&6; } +! if test "${ac_cv_lib_ICE_IceConnectionNumber+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + ac_check_lib_save_LIBS=$LIBS +--- 7835,7841 ---- + # John Interrante, Karl Berry + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for IceConnectionNumber in -lICE" >&5 + $as_echo_n "checking for IceConnectionNumber in -lICE... " >&6; } +! if ${ac_cv_lib_ICE_IceConnectionNumber+:} false; then : + $as_echo_n "(cached) " >&6 + else + ac_check_lib_save_LIBS=$LIBS +*************** +*** 7839,7845 **** + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ICE_IceConnectionNumber" >&5 + $as_echo "$ac_cv_lib_ICE_IceConnectionNumber" >&6; } +! if test "x$ac_cv_lib_ICE_IceConnectionNumber" = x""yes; then : + X_PRE_LIBS="$X_PRE_LIBS -lSM -lICE" + fi + +--- 7869,7875 ---- + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ICE_IceConnectionNumber" >&5 + $as_echo "$ac_cv_lib_ICE_IceConnectionNumber" >&6; } +! if test "x$ac_cv_lib_ICE_IceConnectionNumber" = xyes; then : + X_PRE_LIBS="$X_PRE_LIBS -lSM -lICE" + fi + +*************** +*** 7917,7923 **** + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _XdmcpAuthDoIt in -lXdmcp" >&5 + $as_echo_n "checking for _XdmcpAuthDoIt in -lXdmcp... " >&6; } +! if test "${ac_cv_lib_Xdmcp__XdmcpAuthDoIt+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + ac_check_lib_save_LIBS=$LIBS +--- 7947,7953 ---- + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _XdmcpAuthDoIt in -lXdmcp" >&5 + $as_echo_n "checking for _XdmcpAuthDoIt in -lXdmcp... " >&6; } +! if ${ac_cv_lib_Xdmcp__XdmcpAuthDoIt+:} false; then : + $as_echo_n "(cached) " >&6 + else + ac_check_lib_save_LIBS=$LIBS +*************** +*** 7951,7964 **** + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_Xdmcp__XdmcpAuthDoIt" >&5 + $as_echo "$ac_cv_lib_Xdmcp__XdmcpAuthDoIt" >&6; } +! if test "x$ac_cv_lib_Xdmcp__XdmcpAuthDoIt" = x""yes; then : + X_EXTRA_LIBS="$X_EXTRA_LIBS -lXdmcp" + fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for IceOpenConnection in -lICE" >&5 + $as_echo_n "checking for IceOpenConnection in -lICE... " >&6; } +! if test "${ac_cv_lib_ICE_IceOpenConnection+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + ac_check_lib_save_LIBS=$LIBS +--- 7981,7994 ---- + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_Xdmcp__XdmcpAuthDoIt" >&5 + $as_echo "$ac_cv_lib_Xdmcp__XdmcpAuthDoIt" >&6; } +! if test "x$ac_cv_lib_Xdmcp__XdmcpAuthDoIt" = xyes; then : + X_EXTRA_LIBS="$X_EXTRA_LIBS -lXdmcp" + fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for IceOpenConnection in -lICE" >&5 + $as_echo_n "checking for IceOpenConnection in -lICE... " >&6; } +! if ${ac_cv_lib_ICE_IceOpenConnection+:} false; then : + $as_echo_n "(cached) " >&6 + else + ac_check_lib_save_LIBS=$LIBS +*************** +*** 7992,7998 **** + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ICE_IceOpenConnection" >&5 + $as_echo "$ac_cv_lib_ICE_IceOpenConnection" >&6; } +! if test "x$ac_cv_lib_ICE_IceOpenConnection" = x""yes; then : + X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE" + fi + +--- 8022,8028 ---- + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ICE_IceOpenConnection" >&5 + $as_echo "$ac_cv_lib_ICE_IceOpenConnection" >&6; } +! if test "x$ac_cv_lib_ICE_IceOpenConnection" = xyes; then : + X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE" + fi + +*************** +*** 8000,8006 **** + LDFLAGS="$X_LIBS $ac_save_LDFLAGS" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XpmCreatePixmapFromData in -lXpm" >&5 + $as_echo_n "checking for XpmCreatePixmapFromData in -lXpm... " >&6; } +! if test "${ac_cv_lib_Xpm_XpmCreatePixmapFromData+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + ac_check_lib_save_LIBS=$LIBS +--- 8030,8036 ---- + LDFLAGS="$X_LIBS $ac_save_LDFLAGS" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XpmCreatePixmapFromData in -lXpm" >&5 + $as_echo_n "checking for XpmCreatePixmapFromData in -lXpm... " >&6; } +! if ${ac_cv_lib_Xpm_XpmCreatePixmapFromData+:} false; then : + $as_echo_n "(cached) " >&6 + else + ac_check_lib_save_LIBS=$LIBS +*************** +*** 8034,8040 **** + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_Xpm_XpmCreatePixmapFromData" >&5 + $as_echo "$ac_cv_lib_Xpm_XpmCreatePixmapFromData" >&6; } +! if test "x$ac_cv_lib_Xpm_XpmCreatePixmapFromData" = x""yes; then : + X_PRE_LIBS="$X_PRE_LIBS -lXpm" + fi + +--- 8064,8070 ---- + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_Xpm_XpmCreatePixmapFromData" >&5 + $as_echo "$ac_cv_lib_Xpm_XpmCreatePixmapFromData" >&6; } +! if test "x$ac_cv_lib_Xpm_XpmCreatePixmapFromData" = xyes; then : + X_PRE_LIBS="$X_PRE_LIBS -lXpm" + fi + +*************** +*** 8092,8102 **** + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of wchar_t is 2 bytes" >&5 + $as_echo_n "checking size of wchar_t is 2 bytes... " >&6; } +! if test "${ac_cv_small_wchar_t+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + if test "$cross_compiling" = yes; then : +! as_fn_error "failed to compile test program" "$LINENO" 5 + else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ +--- 8122,8132 ---- + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of wchar_t is 2 bytes" >&5 + $as_echo_n "checking size of wchar_t is 2 bytes... " >&6; } +! if ${ac_cv_small_wchar_t+:} false; then : + $as_echo_n "(cached) " >&6 + else + if test "$cross_compiling" = yes; then : +! as_fn_error $? "failed to compile test program" "$LINENO" 5 + else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ +*************** +*** 8395,8401 **** + set dummy pkg-config; ac_word=$2 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +! if test "${ac_cv_path_PKG_CONFIG+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + case $PKG_CONFIG in +--- 8425,8431 ---- + set dummy pkg-config; ac_word=$2 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +! if ${ac_cv_path_PKG_CONFIG+:} false; then : + $as_echo_n "(cached) " >&6 + else + case $PKG_CONFIG in +*************** +*** 8409,8415 **** + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +! if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 +--- 8439,8445 ---- + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +! if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 +*************** +*** 8634,8640 **** + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 + $as_echo "not found" >&6; } + if test "x" = xfail; then +! as_fn_error "Could not find libgnomeui-2.0 via pkg-config" "$LINENO" 5 + fi + fi + } +--- 8664,8670 ---- + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 + $as_echo "not found" >&6; } + if test "x" = xfail; then +! as_fn_error $? "Could not find libgnomeui-2.0 via pkg-config" "$LINENO" 5 + fi + fi + } +*************** +*** 8827,8833 **** + LDFLAGS="$X_LIBS $LDFLAGS" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XShapeQueryExtension in -lXext" >&5 + $as_echo_n "checking for XShapeQueryExtension in -lXext... " >&6; } +! if test "${ac_cv_lib_Xext_XShapeQueryExtension+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + ac_check_lib_save_LIBS=$LIBS +--- 8857,8863 ---- + LDFLAGS="$X_LIBS $LDFLAGS" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XShapeQueryExtension in -lXext" >&5 + $as_echo_n "checking for XShapeQueryExtension in -lXext... " >&6; } +! if ${ac_cv_lib_Xext_XShapeQueryExtension+:} false; then : + $as_echo_n "(cached) " >&6 + else + ac_check_lib_save_LIBS=$LIBS +*************** +*** 8861,8873 **** + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_Xext_XShapeQueryExtension" >&5 + $as_echo "$ac_cv_lib_Xext_XShapeQueryExtension" >&6; } +! if test "x$ac_cv_lib_Xext_XShapeQueryExtension" = x""yes; then : + GUI_X_LIBS="-lXext" + fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wslen in -lw" >&5 + $as_echo_n "checking for wslen in -lw... " >&6; } +! if test "${ac_cv_lib_w_wslen+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + ac_check_lib_save_LIBS=$LIBS +--- 8891,8903 ---- + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_Xext_XShapeQueryExtension" >&5 + $as_echo "$ac_cv_lib_Xext_XShapeQueryExtension" >&6; } +! if test "x$ac_cv_lib_Xext_XShapeQueryExtension" = xyes; then : + GUI_X_LIBS="-lXext" + fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wslen in -lw" >&5 + $as_echo_n "checking for wslen in -lw... " >&6; } +! if ${ac_cv_lib_w_wslen+:} false; then : + $as_echo_n "(cached) " >&6 + else + ac_check_lib_save_LIBS=$LIBS +*************** +*** 8901,8913 **** + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_w_wslen" >&5 + $as_echo "$ac_cv_lib_w_wslen" >&6; } +! if test "x$ac_cv_lib_w_wslen" = x""yes; then : + X_EXTRA_LIBS="$X_EXTRA_LIBS -lw" + fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlsym in -ldl" >&5 + $as_echo_n "checking for dlsym in -ldl... " >&6; } +! if test "${ac_cv_lib_dl_dlsym+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + ac_check_lib_save_LIBS=$LIBS +--- 8931,8943 ---- + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_w_wslen" >&5 + $as_echo "$ac_cv_lib_w_wslen" >&6; } +! if test "x$ac_cv_lib_w_wslen" = xyes; then : + X_EXTRA_LIBS="$X_EXTRA_LIBS -lw" + fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlsym in -ldl" >&5 + $as_echo_n "checking for dlsym in -ldl... " >&6; } +! if ${ac_cv_lib_dl_dlsym+:} false; then : + $as_echo_n "(cached) " >&6 + else + ac_check_lib_save_LIBS=$LIBS +*************** +*** 8941,8953 **** + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlsym" >&5 + $as_echo "$ac_cv_lib_dl_dlsym" >&6; } +! if test "x$ac_cv_lib_dl_dlsym" = x""yes; then : + X_EXTRA_LIBS="$X_EXTRA_LIBS -ldl" + fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XmuCreateStippledPixmap in -lXmu" >&5 + $as_echo_n "checking for XmuCreateStippledPixmap in -lXmu... " >&6; } +! if test "${ac_cv_lib_Xmu_XmuCreateStippledPixmap+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + ac_check_lib_save_LIBS=$LIBS +--- 8971,8983 ---- + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlsym" >&5 + $as_echo "$ac_cv_lib_dl_dlsym" >&6; } +! if test "x$ac_cv_lib_dl_dlsym" = xyes; then : + X_EXTRA_LIBS="$X_EXTRA_LIBS -ldl" + fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XmuCreateStippledPixmap in -lXmu" >&5 + $as_echo_n "checking for XmuCreateStippledPixmap in -lXmu... " >&6; } +! if ${ac_cv_lib_Xmu_XmuCreateStippledPixmap+:} false; then : + $as_echo_n "(cached) " >&6 + else + ac_check_lib_save_LIBS=$LIBS +*************** +*** 8981,8994 **** + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_Xmu_XmuCreateStippledPixmap" >&5 + $as_echo "$ac_cv_lib_Xmu_XmuCreateStippledPixmap" >&6; } +! if test "x$ac_cv_lib_Xmu_XmuCreateStippledPixmap" = x""yes; then : + GUI_X_LIBS="-lXmu $GUI_X_LIBS" + fi + + if test -z "$SKIP_MOTIF"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XpEndJob in -lXp" >&5 + $as_echo_n "checking for XpEndJob in -lXp... " >&6; } +! if test "${ac_cv_lib_Xp_XpEndJob+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + ac_check_lib_save_LIBS=$LIBS +--- 9011,9024 ---- + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_Xmu_XmuCreateStippledPixmap" >&5 + $as_echo "$ac_cv_lib_Xmu_XmuCreateStippledPixmap" >&6; } +! if test "x$ac_cv_lib_Xmu_XmuCreateStippledPixmap" = xyes; then : + GUI_X_LIBS="-lXmu $GUI_X_LIBS" + fi + + if test -z "$SKIP_MOTIF"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XpEndJob in -lXp" >&5 + $as_echo_n "checking for XpEndJob in -lXp... " >&6; } +! if ${ac_cv_lib_Xp_XpEndJob+:} false; then : + $as_echo_n "(cached) " >&6 + else + ac_check_lib_save_LIBS=$LIBS +*************** +*** 9022,9028 **** + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_Xp_XpEndJob" >&5 + $as_echo "$ac_cv_lib_Xp_XpEndJob" >&6; } +! if test "x$ac_cv_lib_Xp_XpEndJob" = x""yes; then : + GUI_X_LIBS="-lXp $GUI_X_LIBS" + fi + +--- 9052,9058 ---- + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_Xp_XpEndJob" >&5 + $as_echo "$ac_cv_lib_Xp_XpEndJob" >&6; } +! if test "x$ac_cv_lib_Xp_XpEndJob" = xyes; then : + GUI_X_LIBS="-lXp $GUI_X_LIBS" + fi + +*************** +*** 9061,9067 **** + for ac_header in X11/SM/SMlib.h + do : + ac_fn_c_check_header_mongrel "$LINENO" "X11/SM/SMlib.h" "ac_cv_header_X11_SM_SMlib_h" "$ac_includes_default" +! if test "x$ac_cv_header_X11_SM_SMlib_h" = x""yes; then : + cat >>confdefs.h <<_ACEOF + #define HAVE_X11_SM_SMLIB_H 1 + _ACEOF +--- 9091,9097 ---- + for ac_header in X11/SM/SMlib.h + do : + ac_fn_c_check_header_mongrel "$LINENO" "X11/SM/SMlib.h" "ac_cv_header_X11_SM_SMlib_h" "$ac_includes_default" +! if test "x$ac_cv_header_X11_SM_SMlib_h" = xyes; then : + cat >>confdefs.h <<_ACEOF + #define HAVE_X11_SM_SMLIB_H 1 + _ACEOF +*************** +*** 9081,9088 **** + do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` + ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +! eval as_val=\$$as_ac_Header +! if test "x$as_val" = x""yes; then : + cat >>confdefs.h <<_ACEOF + #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 + _ACEOF +--- 9111,9117 ---- + do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` + ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +! if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF + #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 + _ACEOF +*************** +*** 9164,9171 **** + do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` + ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +! eval as_val=\$$as_ac_Header +! if test "x$as_val" = x""yes; then : + cat >>confdefs.h <<_ACEOF + #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 + _ACEOF +--- 9193,9199 ---- + do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` + ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +! if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF + #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 + _ACEOF +*************** +*** 9233,9239 **** + + + if test "$enable_workshop" = "yes" -a -n "$SKIP_MOTIF"; then +! as_fn_error "cannot use workshop without Motif" "$LINENO" 5 + fi + + if test "$enable_xim" = "yes"; then +--- 9261,9267 ---- + + + if test "$enable_workshop" = "yes" -a -n "$SKIP_MOTIF"; then +! as_fn_error $? "cannot use workshop without Motif" "$LINENO" 5 + fi + + if test "$enable_xim" = "yes"; then +*************** +*** 9287,9299 **** + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether toupper is broken" >&5 + $as_echo_n "checking whether toupper is broken... " >&6; } +! if test "${vim_cv_toupper_broken+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + + if test "$cross_compiling" = yes; then : + +! as_fn_error "cross-compiling: please set 'vim_cv_toupper_broken'" "$LINENO" 5 + + else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +--- 9315,9327 ---- + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether toupper is broken" >&5 + $as_echo_n "checking whether toupper is broken... " >&6; } +! if ${vim_cv_toupper_broken+:} false; then : + $as_echo_n "(cached) " >&6 + else + + if test "$cross_compiling" = yes; then : + +! as_fn_error $? "cross-compiling: please set 'vim_cv_toupper_broken'" "$LINENO" 5 + + else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +*************** +*** 9377,9383 **** + rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + + ac_fn_c_check_header_mongrel "$LINENO" "elf.h" "ac_cv_header_elf_h" "$ac_includes_default" +! if test "x$ac_cv_header_elf_h" = x""yes; then : + HAS_ELF=1 + fi + +--- 9405,9411 ---- + rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + + ac_fn_c_check_header_mongrel "$LINENO" "elf.h" "ac_cv_header_elf_h" "$ac_includes_default" +! if test "x$ac_cv_header_elf_h" = xyes; then : + HAS_ELF=1 + fi + +*************** +*** 9385,9391 **** + if test "$HAS_ELF" = 1; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lelf" >&5 + $as_echo_n "checking for main in -lelf... " >&6; } +! if test "${ac_cv_lib_elf_main+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + ac_check_lib_save_LIBS=$LIBS +--- 9413,9419 ---- + if test "$HAS_ELF" = 1; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lelf" >&5 + $as_echo_n "checking for main in -lelf... " >&6; } +! if ${ac_cv_lib_elf_main+:} false; then : + $as_echo_n "(cached) " >&6 + else + ac_check_lib_save_LIBS=$LIBS +*************** +*** 9413,9419 **** + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_elf_main" >&5 + $as_echo "$ac_cv_lib_elf_main" >&6; } +! if test "x$ac_cv_lib_elf_main" = x""yes; then : + cat >>confdefs.h <<_ACEOF + #define HAVE_LIBELF 1 + _ACEOF +--- 9441,9447 ---- + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_elf_main" >&5 + $as_echo "$ac_cv_lib_elf_main" >&6; } +! if test "x$ac_cv_lib_elf_main" = xyes; then : + cat >>confdefs.h <<_ACEOF + #define HAVE_LIBELF 1 + _ACEOF +*************** +*** 9429,9435 **** + as_ac_Header=`$as_echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh` + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_hdr that defines DIR" >&5 + $as_echo_n "checking for $ac_hdr that defines DIR... " >&6; } +! if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then : + $as_echo_n "(cached) " >&6 + else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +--- 9457,9463 ---- + as_ac_Header=`$as_echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh` + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_hdr that defines DIR" >&5 + $as_echo_n "checking for $ac_hdr that defines DIR... " >&6; } +! if eval \${$as_ac_Header+:} false; then : + $as_echo_n "(cached) " >&6 + else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +*************** +*** 9456,9463 **** + eval ac_res=\$$as_ac_Header + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 + $as_echo "$ac_res" >&6; } +! eval as_val=\$$as_ac_Header +! if test "x$as_val" = x""yes; then : + cat >>confdefs.h <<_ACEOF + #define `$as_echo "HAVE_$ac_hdr" | $as_tr_cpp` 1 + _ACEOF +--- 9484,9490 ---- + eval ac_res=\$$as_ac_Header + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 + $as_echo "$ac_res" >&6; } +! if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF + #define `$as_echo "HAVE_$ac_hdr" | $as_tr_cpp` 1 + _ACEOF +*************** +*** 9470,9476 **** + if test $ac_header_dirent = dirent.h; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 + $as_echo_n "checking for library containing opendir... " >&6; } +! if test "${ac_cv_search_opendir+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + ac_func_search_save_LIBS=$LIBS +--- 9497,9503 ---- + if test $ac_header_dirent = dirent.h; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 + $as_echo_n "checking for library containing opendir... " >&6; } +! if ${ac_cv_search_opendir+:} false; then : + $as_echo_n "(cached) " >&6 + else + ac_func_search_save_LIBS=$LIBS +*************** +*** 9504,9514 **** + fi + rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext +! if test "${ac_cv_search_opendir+set}" = set; then : + break + fi + done +! if test "${ac_cv_search_opendir+set}" = set; then : + + else + ac_cv_search_opendir=no +--- 9531,9541 ---- + fi + rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext +! if ${ac_cv_search_opendir+:} false; then : + break + fi + done +! if ${ac_cv_search_opendir+:} false; then : + + else + ac_cv_search_opendir=no +*************** +*** 9527,9533 **** + else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 + $as_echo_n "checking for library containing opendir... " >&6; } +! if test "${ac_cv_search_opendir+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + ac_func_search_save_LIBS=$LIBS +--- 9554,9560 ---- + else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 + $as_echo_n "checking for library containing opendir... " >&6; } +! if ${ac_cv_search_opendir+:} false; then : + $as_echo_n "(cached) " >&6 + else + ac_func_search_save_LIBS=$LIBS +*************** +*** 9561,9571 **** + fi + rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext +! if test "${ac_cv_search_opendir+set}" = set; then : + break + fi + done +! if test "${ac_cv_search_opendir+set}" = set; then : + + else + ac_cv_search_opendir=no +--- 9588,9598 ---- + fi + rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext +! if ${ac_cv_search_opendir+:} false; then : + break + fi + done +! if ${ac_cv_search_opendir+:} false; then : + + else + ac_cv_search_opendir=no +*************** +*** 9625,9632 **** + do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` + ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +! eval as_val=\$$as_ac_Header +! if test "x$as_val" = x""yes; then : + cat >>confdefs.h <<_ACEOF + #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 + _ACEOF +--- 9652,9658 ---- + do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` + ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +! if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF + #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 + _ACEOF +*************** +*** 9642,9648 **** + # include <sys/stream.h> + #endif + " +! if test "x$ac_cv_header_sys_ptem_h" = x""yes; then : + cat >>confdefs.h <<_ACEOF + #define HAVE_SYS_PTEM_H 1 + _ACEOF +--- 9668,9674 ---- + # include <sys/stream.h> + #endif + " +! if test "x$ac_cv_header_sys_ptem_h" = xyes; then : + cat >>confdefs.h <<_ACEOF + #define HAVE_SYS_PTEM_H 1 + _ACEOF +*************** +*** 9658,9664 **** + # include <sys/param.h> + #endif + " +! if test "x$ac_cv_header_sys_sysctl_h" = x""yes; then : + cat >>confdefs.h <<_ACEOF + #define HAVE_SYS_SYSCTL_H 1 + _ACEOF +--- 9684,9690 ---- + # include <sys/param.h> + #endif + " +! if test "x$ac_cv_header_sys_sysctl_h" = xyes; then : + cat >>confdefs.h <<_ACEOF + #define HAVE_SYS_SYSCTL_H 1 + _ACEOF +*************** +*** 9698,9704 **** + for ac_header in strings.h + do : + ac_fn_c_check_header_mongrel "$LINENO" "strings.h" "ac_cv_header_strings_h" "$ac_includes_default" +! if test "x$ac_cv_header_strings_h" = x""yes; then : + cat >>confdefs.h <<_ACEOF + #define HAVE_STRINGS_H 1 + _ACEOF +--- 9724,9730 ---- + for ac_header in strings.h + do : + ac_fn_c_check_header_mongrel "$LINENO" "strings.h" "ac_cv_header_strings_h" "$ac_includes_default" +! if test "x$ac_cv_header_strings_h" = xyes; then : + cat >>confdefs.h <<_ACEOF + #define HAVE_STRINGS_H 1 + _ACEOF +*************** +*** 9757,9763 **** + if test $ac_cv_c_compiler_gnu = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC needs -traditional" >&5 + $as_echo_n "checking whether $CC needs -traditional... " >&6; } +! if test "${ac_cv_prog_gcc_traditional+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + ac_pattern="Autoconf.*'x'" +--- 9783,9789 ---- + if test $ac_cv_c_compiler_gnu = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC needs -traditional" >&5 + $as_echo_n "checking whether $CC needs -traditional... " >&6; } +! if ${ac_cv_prog_gcc_traditional+:} false; then : + $as_echo_n "(cached) " >&6 + else + ac_pattern="Autoconf.*'x'" +*************** +*** 9798,9804 **** + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 + $as_echo_n "checking for an ANSI C-conforming const... " >&6; } +! if test "${ac_cv_c_const+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +--- 9824,9830 ---- + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 + $as_echo_n "checking for an ANSI C-conforming const... " >&6; } +! if ${ac_cv_c_const+:} false; then : + $as_echo_n "(cached) " >&6 + else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +*************** +*** 9807,9817 **** + int + main () + { +! /* FIXME: Include the comments suggested by Paul. */ + #ifndef __cplusplus +! /* Ultrix mips cc rejects this. */ + typedef int charset[2]; +! const charset cs; + /* SunOS 4.1.1 cc rejects this. */ + char const *const *pcpcc; + char **ppc; +--- 9833,9843 ---- + int + main () + { +! + #ifndef __cplusplus +! /* Ultrix mips cc rejects this sort of thing. */ + typedef int charset[2]; +! const charset cs = { 0, 0 }; + /* SunOS 4.1.1 cc rejects this. */ + char const *const *pcpcc; + char **ppc; +*************** +*** 9828,9835 **** + ++pcpcc; + ppc = (char**) pcpcc; + pcpcc = (char const *const *) ppc; +! { /* SCO 3.2v4 cc rejects this. */ +! char *t; + char const *s = 0 ? (char *) 0 : (char const *) 0; + + *t++ = 0; +--- 9854,9862 ---- + ++pcpcc; + ppc = (char**) pcpcc; + pcpcc = (char const *const *) ppc; +! { /* SCO 3.2v4 cc rejects this sort of thing. */ +! char tx; +! char *t = &tx; + char const *s = 0 ? (char *) 0 : (char const *) 0; + + *t++ = 0; +*************** +*** 9845,9854 **** + iptr p = 0; + ++p; + } +! { /* AIX XL C 1.02.0.0 rejects this saying + "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ +! struct s { int j; const int *ap[3]; }; +! struct s *b; b->j = 5; + } + { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ + const int foo = 10; +--- 9872,9881 ---- + iptr p = 0; + ++p; + } +! { /* AIX XL C 1.02.0.0 rejects this sort of thing, saying + "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ +! struct s { int j; const int *ap[3]; } bx; +! struct s *b = &bx; b->j = 5; + } + { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ + const int foo = 10; +*************** +*** 9878,9884 **** + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working volatile" >&5 + $as_echo_n "checking for working volatile... " >&6; } +! if test "${ac_cv_c_volatile+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +--- 9905,9911 ---- + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working volatile" >&5 + $as_echo_n "checking for working volatile... " >&6; } +! if ${ac_cv_c_volatile+:} false; then : + $as_echo_n "(cached) " >&6 + else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +*************** +*** 9911,9917 **** + fi + + ac_fn_c_check_type "$LINENO" "mode_t" "ac_cv_type_mode_t" "$ac_includes_default" +! if test "x$ac_cv_type_mode_t" = x""yes; then : + + else + +--- 9938,9944 ---- + fi + + ac_fn_c_check_type "$LINENO" "mode_t" "ac_cv_type_mode_t" "$ac_includes_default" +! if test "x$ac_cv_type_mode_t" = xyes; then : + + else + +*************** +*** 9922,9928 **** + fi + + ac_fn_c_check_type "$LINENO" "off_t" "ac_cv_type_off_t" "$ac_includes_default" +! if test "x$ac_cv_type_off_t" = x""yes; then : + + else + +--- 9949,9955 ---- + fi + + ac_fn_c_check_type "$LINENO" "off_t" "ac_cv_type_off_t" "$ac_includes_default" +! if test "x$ac_cv_type_off_t" = xyes; then : + + else + +*************** +*** 9933,9939 **** + fi + + ac_fn_c_check_type "$LINENO" "pid_t" "ac_cv_type_pid_t" "$ac_includes_default" +! if test "x$ac_cv_type_pid_t" = x""yes; then : + + else + +--- 9960,9966 ---- + fi + + ac_fn_c_check_type "$LINENO" "pid_t" "ac_cv_type_pid_t" "$ac_includes_default" +! if test "x$ac_cv_type_pid_t" = xyes; then : + + else + +*************** +*** 9944,9950 **** + fi + + ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" +! if test "x$ac_cv_type_size_t" = x""yes; then : + + else + +--- 9971,9977 ---- + fi + + ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" +! if test "x$ac_cv_type_size_t" = xyes; then : + + else + +*************** +*** 9956,9962 **** + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for uid_t in sys/types.h" >&5 + $as_echo_n "checking for uid_t in sys/types.h... " >&6; } +! if test "${ac_cv_type_uid_t+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +--- 9983,9989 ---- + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for uid_t in sys/types.h" >&5 + $as_echo_n "checking for uid_t in sys/types.h... " >&6; } +! if ${ac_cv_type_uid_t+:} false; then : + $as_echo_n "(cached) " >&6 + else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +*************** +*** 10001,10007 **** + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether time.h and sys/time.h may both be included" >&5 + $as_echo_n "checking whether time.h and sys/time.h may both be included... " >&6; } +! if test "${ac_cv_header_time+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +--- 10028,10034 ---- + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether time.h and sys/time.h may both be included" >&5 + $as_echo_n "checking whether time.h and sys/time.h may both be included... " >&6; } +! if ${ac_cv_header_time+:} false; then : + $as_echo_n "(cached) " >&6 + else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +*************** +*** 10035,10041 **** + fi + + ac_fn_c_check_type "$LINENO" "ino_t" "ac_cv_type_ino_t" "$ac_includes_default" +! if test "x$ac_cv_type_ino_t" = x""yes; then : + + else + +--- 10062,10068 ---- + fi + + ac_fn_c_check_type "$LINENO" "ino_t" "ac_cv_type_ino_t" "$ac_includes_default" +! if test "x$ac_cv_type_ino_t" = xyes; then : + + else + +*************** +*** 10046,10052 **** + fi + + ac_fn_c_check_type "$LINENO" "dev_t" "ac_cv_type_dev_t" "$ac_includes_default" +! if test "x$ac_cv_type_dev_t" = x""yes; then : + + else + +--- 10073,10079 ---- + fi + + ac_fn_c_check_type "$LINENO" "dev_t" "ac_cv_type_dev_t" "$ac_includes_default" +! if test "x$ac_cv_type_dev_t" = xyes; then : + + else + +*************** +*** 10058,10064 **** + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5 + $as_echo_n "checking whether byte ordering is bigendian... " >&6; } +! if test "${ac_cv_c_bigendian+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + ac_cv_c_bigendian=unknown +--- 10085,10091 ---- + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5 + $as_echo_n "checking whether byte ordering is bigendian... " >&6; } +! if ${ac_cv_c_bigendian+:} false; then : + $as_echo_n "(cached) " >&6 + else + ac_cv_c_bigendian=unknown +*************** +*** 10276,10282 **** + + ;; #( + *) +! as_fn_error "unknown endianness + presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5 ;; + esac + +--- 10303,10309 ---- + + ;; #( + *) +! as_fn_error $? "unknown endianness + presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5 ;; + esac + +*************** +*** 10412,10418 **** + { $as_echo "$as_me:${as_lineno-$LINENO}: result: OK" >&5 + $as_echo "OK" >&6; } + else +! as_fn_error "FAILED" "$LINENO" 5 + fi + rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +--- 10439,10445 ---- + { $as_echo "$as_me:${as_lineno-$LINENO}: result: OK" >&5 + $as_echo "OK" >&6; } + else +! as_fn_error $? "FAILED" "$LINENO" 5 + fi + rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +*************** +*** 10428,10434 **** + as_ac_Lib=`$as_echo "ac_cv_lib_${libname}''_tgetent" | $as_tr_sh` + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tgetent in -l${libname}" >&5 + $as_echo_n "checking for tgetent in -l${libname}... " >&6; } +! if { as_var=$as_ac_Lib; eval "test \"\${$as_var+set}\" = set"; }; then : + $as_echo_n "(cached) " >&6 + else + ac_check_lib_save_LIBS=$LIBS +--- 10455,10461 ---- + as_ac_Lib=`$as_echo "ac_cv_lib_${libname}''_tgetent" | $as_tr_sh` + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tgetent in -l${libname}" >&5 + $as_echo_n "checking for tgetent in -l${libname}... " >&6; } +! if eval \${$as_ac_Lib+:} false; then : + $as_echo_n "(cached) " >&6 + else + ac_check_lib_save_LIBS=$LIBS +*************** +*** 10463,10470 **** + eval ac_res=\$$as_ac_Lib + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 + $as_echo "$ac_res" >&6; } +! eval as_val=\$$as_ac_Lib +! if test "x$as_val" = x""yes; then : + cat >>confdefs.h <<_ACEOF + #define `$as_echo "HAVE_LIB${libname}" | $as_tr_cpp` 1 + _ACEOF +--- 10490,10496 ---- + eval ac_res=\$$as_ac_Lib + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 + $as_echo "$ac_res" >&6; } +! if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF + #define `$as_echo "HAVE_LIB${libname}" | $as_tr_cpp` 1 + _ACEOF +*************** +*** 10530,10536 **** + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 + $as_echo "yes" >&6; } + else +! as_fn_error "NOT FOUND! + You need to install a terminal library; for example ncurses. + Or specify the name of the library with --with-tlib." "$LINENO" 5 + fi +--- 10556,10562 ---- + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 + $as_echo "yes" >&6; } + else +! as_fn_error $? "NOT FOUND! + You need to install a terminal library; for example ncurses. + Or specify the name of the library with --with-tlib." "$LINENO" 5 + fi +*************** +*** 10540,10552 **** + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we talk terminfo" >&5 + $as_echo_n "checking whether we talk terminfo... " >&6; } +! if test "${vim_cv_terminfo+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + + if test "$cross_compiling" = yes; then : + +! as_fn_error "cross-compiling: please set 'vim_cv_terminfo'" "$LINENO" 5 + + else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +--- 10566,10578 ---- + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we talk terminfo" >&5 + $as_echo_n "checking whether we talk terminfo... " >&6; } +! if ${vim_cv_terminfo+:} false; then : + $as_echo_n "(cached) " >&6 + else + + if test "$cross_compiling" = yes; then : + +! as_fn_error $? "cross-compiling: please set 'vim_cv_terminfo'" "$LINENO" 5 + + else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +*************** +*** 10593,10605 **** + if test "x$olibs" != "x$LIBS"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking what tgetent() returns for an unknown terminal" >&5 + $as_echo_n "checking what tgetent() returns for an unknown terminal... " >&6; } +! if test "${vim_cv_tgent+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + + if test "$cross_compiling" = yes; then : + +! as_fn_error "failed to compile test program." "$LINENO" 5 + + else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +--- 10619,10631 ---- + if test "x$olibs" != "x$LIBS"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking what tgetent() returns for an unknown terminal" >&5 + $as_echo_n "checking what tgetent() returns for an unknown terminal... " >&6; } +! if ${vim_cv_tgent+:} false; then : + $as_echo_n "(cached) " >&6 + else + + if test "$cross_compiling" = yes; then : + +! as_fn_error $? "failed to compile test program." "$LINENO" 5 + + else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +*************** +*** 10894,10906 **** + rm -f conftest_grp + { $as_echo "$as_me:${as_lineno-$LINENO}: checking default tty permissions/group" >&5 + $as_echo_n "checking default tty permissions/group... " >&6; } +! if test "${vim_cv_tty_group+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + + if test "$cross_compiling" = yes; then : + +! as_fn_error "cross-compiling: please set 'vim_cv_tty_group' and 'vim_cv_tty_mode'" "$LINENO" 5 + + else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +--- 10920,10932 ---- + rm -f conftest_grp + { $as_echo "$as_me:${as_lineno-$LINENO}: checking default tty permissions/group" >&5 + $as_echo_n "checking default tty permissions/group... " >&6; } +! if ${vim_cv_tty_group+:} false; then : + $as_echo_n "(cached) " >&6 + else + + if test "$cross_compiling" = yes; then : + +! as_fn_error $? "cross-compiling: please set 'vim_cv_tty_group' and 'vim_cv_tty_mode'" "$LINENO" 5 + + else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +*************** +*** 10981,10987 **** + _ACEOF + + if test "x$vim_cv_tty_mode" = "x" ; then +! as_fn_error "It seems you're cross compiling and have 'vim_cv_tty_group' set, please also set the environment variable 'vim_cv_tty_mode' to the correct mode (probably 0620)" "$LINENO" 5 + else + $as_echo "#define PTYMODE 0620" >>confdefs.h + +--- 11007,11013 ---- + _ACEOF + + if test "x$vim_cv_tty_mode" = "x" ; then +! as_fn_error $? "It seems you're cross compiling and have 'vim_cv_tty_group' set, please also set the environment variable 'vim_cv_tty_mode' to the correct mode (probably 0620)" "$LINENO" 5 + else + $as_echo "#define PTYMODE 0620" >>confdefs.h + +*************** +*** 10991,10997 **** + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking return type of signal handlers" >&5 + $as_echo_n "checking return type of signal handlers... " >&6; } +! if test "${ac_cv_type_signal+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +--- 11017,11023 ---- + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking return type of signal handlers" >&5 + $as_echo_n "checking return type of signal handlers... " >&6; } +! if ${ac_cv_type_signal+:} false; then : + $as_echo_n "(cached) " >&6 + else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +*************** +*** 11064,11076 **** + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking getcwd implementation is broken" >&5 + $as_echo_n "checking getcwd implementation is broken... " >&6; } +! if test "${vim_cv_getcwd_broken+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + + if test "$cross_compiling" = yes; then : + +! as_fn_error "cross-compiling: please set 'vim_cv_getcwd_broken'" "$LINENO" 5 + + else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +--- 11090,11102 ---- + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking getcwd implementation is broken" >&5 + $as_echo_n "checking getcwd implementation is broken... " >&6; } +! if ${vim_cv_getcwd_broken+:} false; then : + $as_echo_n "(cached) " >&6 + else + + if test "$cross_compiling" = yes; then : + +! as_fn_error $? "cross-compiling: please set 'vim_cv_getcwd_broken'" "$LINENO" 5 + + else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +*************** +*** 11123,11130 **** + do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` + ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +! eval as_val=\$$as_ac_var +! if test "x$as_val" = x""yes; then : + cat >>confdefs.h <<_ACEOF + #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 + _ACEOF +--- 11149,11155 ---- + do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` + ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +! if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF + #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 + _ACEOF +*************** +*** 11134,11140 **** + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGEFILE_SOURCE value needed for large files" >&5 + $as_echo_n "checking for _LARGEFILE_SOURCE value needed for large files... " >&6; } +! if test "${ac_cv_sys_largefile_source+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + while :; do +--- 11159,11165 ---- + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGEFILE_SOURCE value needed for large files" >&5 + $as_echo_n "checking for _LARGEFILE_SOURCE value needed for large files... " >&6; } +! if ${ac_cv_sys_largefile_source+:} false; then : + $as_echo_n "(cached) " >&6 + else + while :; do +*************** +*** 11210,11216 **** + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5 + $as_echo_n "checking for special C compiler options needed for large files... " >&6; } +! if test "${ac_cv_sys_largefile_CC+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + ac_cv_sys_largefile_CC=no +--- 11235,11241 ---- + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5 + $as_echo_n "checking for special C compiler options needed for large files... " >&6; } +! if ${ac_cv_sys_largefile_CC+:} false; then : + $as_echo_n "(cached) " >&6 + else + ac_cv_sys_largefile_CC=no +*************** +*** 11261,11267 **** + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5 + $as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; } +! if test "${ac_cv_sys_file_offset_bits+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + while :; do +--- 11286,11292 ---- + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5 + $as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; } +! if ${ac_cv_sys_file_offset_bits+:} false; then : + $as_echo_n "(cached) " >&6 + else + while :; do +*************** +*** 11330,11336 **** + if test $ac_cv_sys_file_offset_bits = unknown; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5 + $as_echo_n "checking for _LARGE_FILES value needed for large files... " >&6; } +! if test "${ac_cv_sys_large_files+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + while :; do +--- 11355,11361 ---- + if test $ac_cv_sys_file_offset_bits = unknown; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5 + $as_echo_n "checking for _LARGE_FILES value needed for large files... " >&6; } +! if ${ac_cv_sys_large_files+:} false; then : + $as_echo_n "(cached) " >&6 + else + while :; do +*************** +*** 11397,11402 **** +--- 11422,11429 ---- + esac + rm -rf conftest* + fi ++ ++ + fi + + +*************** +*** 11430,11442 **** + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stat() ignores a trailing slash" >&5 + $as_echo_n "checking whether stat() ignores a trailing slash... " >&6; } +! if test "${vim_cv_stat_ignores_slash+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + + if test "$cross_compiling" = yes; then : + +! as_fn_error "cross-compiling: please set 'vim_cv_stat_ignores_slash'" "$LINENO" 5 + + else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +--- 11457,11469 ---- + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stat() ignores a trailing slash" >&5 + $as_echo_n "checking whether stat() ignores a trailing slash... " >&6; } +! if ${vim_cv_stat_ignores_slash+:} false; then : + $as_echo_n "(cached) " >&6 + else + + if test "$cross_compiling" = yes; then : + +! as_fn_error $? "cross-compiling: please set 'vim_cv_stat_ignores_slash'" "$LINENO" 5 + + else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +*************** +*** 11560,11566 **** + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for strtod in -lm" >&5 + $as_echo_n "checking for strtod in -lm... " >&6; } +! if test "${ac_cv_lib_m_strtod+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + ac_check_lib_save_LIBS=$LIBS +--- 11587,11593 ---- + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for strtod in -lm" >&5 + $as_echo_n "checking for strtod in -lm... " >&6; } +! if ${ac_cv_lib_m_strtod+:} false; then : + $as_echo_n "(cached) " >&6 + else + ac_check_lib_save_LIBS=$LIBS +*************** +*** 11594,11600 **** + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_strtod" >&5 + $as_echo "$ac_cv_lib_m_strtod" >&6; } +! if test "x$ac_cv_lib_m_strtod" = x""yes; then : + cat >>confdefs.h <<_ACEOF + #define HAVE_LIBM 1 + _ACEOF +--- 11621,11627 ---- + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_strtod" >&5 + $as_echo "$ac_cv_lib_m_strtod" >&6; } +! if test "x$ac_cv_lib_m_strtod" = xyes; then : + cat >>confdefs.h <<_ACEOF + #define HAVE_LIBM 1 + _ACEOF +*************** +*** 11660,11666 **** + $as_echo "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for acl_get_file in -lposix1e" >&5 + $as_echo_n "checking for acl_get_file in -lposix1e... " >&6; } +! if test "${ac_cv_lib_posix1e_acl_get_file+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + ac_check_lib_save_LIBS=$LIBS +--- 11687,11693 ---- + $as_echo "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for acl_get_file in -lposix1e" >&5 + $as_echo_n "checking for acl_get_file in -lposix1e... " >&6; } +! if ${ac_cv_lib_posix1e_acl_get_file+:} false; then : + $as_echo_n "(cached) " >&6 + else + ac_check_lib_save_LIBS=$LIBS +*************** +*** 11694,11705 **** + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_posix1e_acl_get_file" >&5 + $as_echo "$ac_cv_lib_posix1e_acl_get_file" >&6; } +! if test "x$ac_cv_lib_posix1e_acl_get_file" = x""yes; then : + LIBS="$LIBS -lposix1e" + else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for acl_get_file in -lacl" >&5 + $as_echo_n "checking for acl_get_file in -lacl... " >&6; } +! if test "${ac_cv_lib_acl_acl_get_file+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + ac_check_lib_save_LIBS=$LIBS +--- 11721,11732 ---- + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_posix1e_acl_get_file" >&5 + $as_echo "$ac_cv_lib_posix1e_acl_get_file" >&6; } +! if test "x$ac_cv_lib_posix1e_acl_get_file" = xyes; then : + LIBS="$LIBS -lposix1e" + else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for acl_get_file in -lacl" >&5 + $as_echo_n "checking for acl_get_file in -lacl... " >&6; } +! if ${ac_cv_lib_acl_acl_get_file+:} false; then : + $as_echo_n "(cached) " >&6 + else + ac_check_lib_save_LIBS=$LIBS +*************** +*** 11733,11743 **** + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_acl_acl_get_file" >&5 + $as_echo "$ac_cv_lib_acl_acl_get_file" >&6; } +! if test "x$ac_cv_lib_acl_acl_get_file" = x""yes; then : + LIBS="$LIBS -lacl" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgetxattr in -lattr" >&5 + $as_echo_n "checking for fgetxattr in -lattr... " >&6; } +! if test "${ac_cv_lib_attr_fgetxattr+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + ac_check_lib_save_LIBS=$LIBS +--- 11760,11770 ---- + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_acl_acl_get_file" >&5 + $as_echo "$ac_cv_lib_acl_acl_get_file" >&6; } +! if test "x$ac_cv_lib_acl_acl_get_file" = xyes; then : + LIBS="$LIBS -lacl" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgetxattr in -lattr" >&5 + $as_echo_n "checking for fgetxattr in -lattr... " >&6; } +! if ${ac_cv_lib_attr_fgetxattr+:} false; then : + $as_echo_n "(cached) " >&6 + else + ac_check_lib_save_LIBS=$LIBS +*************** +*** 11771,11777 **** + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_attr_fgetxattr" >&5 + $as_echo "$ac_cv_lib_attr_fgetxattr" >&6; } +! if test "x$ac_cv_lib_attr_fgetxattr" = x""yes; then : + LIBS="$LIBS -lattr" + fi + +--- 11798,11804 ---- + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_attr_fgetxattr" >&5 + $as_echo "$ac_cv_lib_attr_fgetxattr" >&6; } +! if test "x$ac_cv_lib_attr_fgetxattr" = xyes; then : + LIBS="$LIBS -lattr" + fi + +*************** +*** 11813,11819 **** + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for acl_get in -lsec" >&5 + $as_echo_n "checking for acl_get in -lsec... " >&6; } +! if test "${ac_cv_lib_sec_acl_get+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + ac_check_lib_save_LIBS=$LIBS +--- 11840,11846 ---- + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for acl_get in -lsec" >&5 + $as_echo_n "checking for acl_get in -lsec... " >&6; } +! if ${ac_cv_lib_sec_acl_get+:} false; then : + $as_echo_n "(cached) " >&6 + else + ac_check_lib_save_LIBS=$LIBS +*************** +*** 11847,11853 **** + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sec_acl_get" >&5 + $as_echo "$ac_cv_lib_sec_acl_get" >&6; } +! if test "x$ac_cv_lib_sec_acl_get" = x""yes; then : + LIBS="$LIBS -lsec"; $as_echo "#define HAVE_SOLARIS_ZFS_ACL 1" >>confdefs.h + + else +--- 11874,11880 ---- + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sec_acl_get" >&5 + $as_echo "$ac_cv_lib_sec_acl_get" >&6; } +! if test "x$ac_cv_lib_sec_acl_get" = xyes; then : + LIBS="$LIBS -lsec"; $as_echo "#define HAVE_SOLARIS_ZFS_ACL 1" >>confdefs.h + + else +*************** +*** 11943,11949 **** + $as_echo "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gpm" >&5 + $as_echo_n "checking for gpm... " >&6; } +! if test "${vi_cv_have_gpm+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + olibs="$LIBS" ; LIBS="-lgpm" +--- 11970,11976 ---- + $as_echo "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gpm" >&5 + $as_echo_n "checking for gpm... " >&6; } +! if ${vi_cv_have_gpm+:} false; then : + $as_echo_n "(cached) " >&6 + else + olibs="$LIBS" ; LIBS="-lgpm" +*************** +*** 11996,12002 **** + $as_echo "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysmouse" >&5 + $as_echo_n "checking for sysmouse... " >&6; } +! if test "${vi_cv_have_sysmouse+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +--- 12023,12029 ---- + $as_echo "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysmouse" >&5 + $as_echo_n "checking for sysmouse... " >&6; } +! if ${vi_cv_have_sysmouse+:} false; then : + $as_echo_n "(cached) " >&6 + else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +*************** +*** 12202,12208 **** + # This bug is HP SR number 8606223364. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of int" >&5 + $as_echo_n "checking size of int... " >&6; } +! if test "${ac_cv_sizeof_int+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (int))" "ac_cv_sizeof_int" "$ac_includes_default"; then : +--- 12229,12235 ---- + # This bug is HP SR number 8606223364. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of int" >&5 + $as_echo_n "checking size of int... " >&6; } +! if ${ac_cv_sizeof_int+:} false; then : + $as_echo_n "(cached) " >&6 + else + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (int))" "ac_cv_sizeof_int" "$ac_includes_default"; then : +*************** +*** 12211,12219 **** + if test "$ac_cv_type_int" = yes; then + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 + $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +! { as_fn_set_status 77 +! as_fn_error "cannot compute sizeof (int) +! See \`config.log' for more details." "$LINENO" 5; }; } + else + ac_cv_sizeof_int=0 + fi +--- 12238,12245 ---- + if test "$ac_cv_type_int" = yes; then + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 + $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +! as_fn_error 77 "cannot compute sizeof (int) +! See \`config.log' for more details" "$LINENO" 5; } + else + ac_cv_sizeof_int=0 + fi +*************** +*** 12236,12242 **** + # This bug is HP SR number 8606223364. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long" >&5 + $as_echo_n "checking size of long... " >&6; } +! if test "${ac_cv_sizeof_long+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long))" "ac_cv_sizeof_long" "$ac_includes_default"; then : +--- 12262,12268 ---- + # This bug is HP SR number 8606223364. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long" >&5 + $as_echo_n "checking size of long... " >&6; } +! if ${ac_cv_sizeof_long+:} false; then : + $as_echo_n "(cached) " >&6 + else + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long))" "ac_cv_sizeof_long" "$ac_includes_default"; then : +*************** +*** 12245,12253 **** + if test "$ac_cv_type_long" = yes; then + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 + $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +! { as_fn_set_status 77 +! as_fn_error "cannot compute sizeof (long) +! See \`config.log' for more details." "$LINENO" 5; }; } + else + ac_cv_sizeof_long=0 + fi +--- 12271,12278 ---- + if test "$ac_cv_type_long" = yes; then + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 + $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +! as_fn_error 77 "cannot compute sizeof (long) +! See \`config.log' for more details" "$LINENO" 5; } + else + ac_cv_sizeof_long=0 + fi +*************** +*** 12270,12276 **** + # This bug is HP SR number 8606223364. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of time_t" >&5 + $as_echo_n "checking size of time_t... " >&6; } +! if test "${ac_cv_sizeof_time_t+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (time_t))" "ac_cv_sizeof_time_t" "$ac_includes_default"; then : +--- 12295,12301 ---- + # This bug is HP SR number 8606223364. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of time_t" >&5 + $as_echo_n "checking size of time_t... " >&6; } +! if ${ac_cv_sizeof_time_t+:} false; then : + $as_echo_n "(cached) " >&6 + else + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (time_t))" "ac_cv_sizeof_time_t" "$ac_includes_default"; then : +*************** +*** 12279,12287 **** + if test "$ac_cv_type_time_t" = yes; then + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 + $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +! { as_fn_set_status 77 +! as_fn_error "cannot compute sizeof (time_t) +! See \`config.log' for more details." "$LINENO" 5; }; } + else + ac_cv_sizeof_time_t=0 + fi +--- 12304,12311 ---- + if test "$ac_cv_type_time_t" = yes; then + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 + $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +! as_fn_error 77 "cannot compute sizeof (time_t) +! See \`config.log' for more details" "$LINENO" 5; } + else + ac_cv_sizeof_time_t=0 + fi +*************** +*** 12304,12310 **** + # This bug is HP SR number 8606223364. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of off_t" >&5 + $as_echo_n "checking size of off_t... " >&6; } +! if test "${ac_cv_sizeof_off_t+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (off_t))" "ac_cv_sizeof_off_t" "$ac_includes_default"; then : +--- 12328,12334 ---- + # This bug is HP SR number 8606223364. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of off_t" >&5 + $as_echo_n "checking size of off_t... " >&6; } +! if ${ac_cv_sizeof_off_t+:} false; then : + $as_echo_n "(cached) " >&6 + else + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (off_t))" "ac_cv_sizeof_off_t" "$ac_includes_default"; then : +*************** +*** 12313,12321 **** + if test "$ac_cv_type_off_t" = yes; then + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 + $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +! { as_fn_set_status 77 +! as_fn_error "cannot compute sizeof (off_t) +! See \`config.log' for more details." "$LINENO" 5; }; } + else + ac_cv_sizeof_off_t=0 + fi +--- 12337,12344 ---- + if test "$ac_cv_type_off_t" = yes; then + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 + $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +! as_fn_error 77 "cannot compute sizeof (off_t) +! See \`config.log' for more details" "$LINENO" 5; } + else + ac_cv_sizeof_off_t=0 + fi +*************** +*** 12368,12374 **** + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 + $as_echo "ok" >&6; } + else +! as_fn_error "WRONG! uint32_t not defined correctly." "$LINENO" 5 + fi + rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +--- 12391,12397 ---- + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 + $as_echo "ok" >&6; } + else +! as_fn_error $? "WRONG! uint32_t not defined correctly." "$LINENO" 5 + fi + rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +*************** +*** 12400,12412 **** + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether memmove handles overlaps" >&5 + $as_echo_n "checking whether memmove handles overlaps... " >&6; } +! if test "${vim_cv_memmove_handles_overlap+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + + if test "$cross_compiling" = yes; then : + +! as_fn_error "cross-compiling: please set 'vim_cv_memmove_handles_overlap'" "$LINENO" 5 + + else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +--- 12423,12435 ---- + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether memmove handles overlaps" >&5 + $as_echo_n "checking whether memmove handles overlaps... " >&6; } +! if ${vim_cv_memmove_handles_overlap+:} false; then : + $as_echo_n "(cached) " >&6 + else + + if test "$cross_compiling" = yes; then : + +! as_fn_error $? "cross-compiling: please set 'vim_cv_memmove_handles_overlap'" "$LINENO" 5 + + else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +*************** +*** 12437,12449 **** + else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether bcopy handles overlaps" >&5 + $as_echo_n "checking whether bcopy handles overlaps... " >&6; } +! if test "${vim_cv_bcopy_handles_overlap+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + + if test "$cross_compiling" = yes; then : + +! as_fn_error "cross-compiling: please set 'vim_cv_bcopy_handles_overlap'" "$LINENO" 5 + + else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +--- 12460,12472 ---- + else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether bcopy handles overlaps" >&5 + $as_echo_n "checking whether bcopy handles overlaps... " >&6; } +! if ${vim_cv_bcopy_handles_overlap+:} false; then : + $as_echo_n "(cached) " >&6 + else + + if test "$cross_compiling" = yes; then : + +! as_fn_error $? "cross-compiling: please set 'vim_cv_bcopy_handles_overlap'" "$LINENO" 5 + + else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +*************** +*** 12474,12486 **** + else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether memcpy handles overlaps" >&5 + $as_echo_n "checking whether memcpy handles overlaps... " >&6; } +! if test "${vim_cv_memcpy_handles_overlap+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + + if test "$cross_compiling" = yes; then : + +! as_fn_error "cross-compiling: please set 'vim_cv_memcpy_handles_overlap'" "$LINENO" 5 + + else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +--- 12497,12509 ---- + else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether memcpy handles overlaps" >&5 + $as_echo_n "checking whether memcpy handles overlaps... " >&6; } +! if ${vim_cv_memcpy_handles_overlap+:} false; then : + $as_echo_n "(cached) " >&6 + else + + if test "$cross_compiling" = yes; then : + +! as_fn_error $? "cross-compiling: please set 'vim_cv_memcpy_handles_overlap'" "$LINENO" 5 + + else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +*************** +*** 12575,12581 **** + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _xpg4_setrunelocale in -lxpg4" >&5 + $as_echo_n "checking for _xpg4_setrunelocale in -lxpg4... " >&6; } +! if test "${ac_cv_lib_xpg4__xpg4_setrunelocale+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + ac_check_lib_save_LIBS=$LIBS +--- 12598,12604 ---- + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _xpg4_setrunelocale in -lxpg4" >&5 + $as_echo_n "checking for _xpg4_setrunelocale in -lxpg4... " >&6; } +! if ${ac_cv_lib_xpg4__xpg4_setrunelocale+:} false; then : + $as_echo_n "(cached) " >&6 + else + ac_check_lib_save_LIBS=$LIBS +*************** +*** 12609,12615 **** + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_xpg4__xpg4_setrunelocale" >&5 + $as_echo "$ac_cv_lib_xpg4__xpg4_setrunelocale" >&6; } +! if test "x$ac_cv_lib_xpg4__xpg4_setrunelocale" = x""yes; then : + LIBS="$LIBS -lxpg4" + fi + +--- 12632,12638 ---- + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_xpg4__xpg4_setrunelocale" >&5 + $as_echo "$ac_cv_lib_xpg4__xpg4_setrunelocale" >&6; } +! if test "x$ac_cv_lib_xpg4__xpg4_setrunelocale" = xyes; then : + LIBS="$LIBS -lxpg4" + fi + +*************** +*** 12671,12677 **** + set dummy msgfmt; ac_word=$2 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +! if test "${ac_cv_prog_MSGFMT+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + if test -n "$MSGFMT"; then +--- 12694,12700 ---- + set dummy msgfmt; ac_word=$2 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +! if ${ac_cv_prog_MSGFMT+:} false; then : + $as_echo_n "(cached) " >&6 + else + if test -n "$MSGFMT"; then +*************** +*** 12683,12689 **** + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +! if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_MSGFMT="msgfmt" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 +--- 12706,12712 ---- + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +! if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_MSGFMT="msgfmt" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 +*************** +*** 12764,12770 **** + for ac_func in bind_textdomain_codeset + do : + ac_fn_c_check_func "$LINENO" "bind_textdomain_codeset" "ac_cv_func_bind_textdomain_codeset" +! if test "x$ac_cv_func_bind_textdomain_codeset" = x""yes; then : + cat >>confdefs.h <<_ACEOF + #define HAVE_BIND_TEXTDOMAIN_CODESET 1 + _ACEOF +--- 12787,12793 ---- + for ac_func in bind_textdomain_codeset + do : + ac_fn_c_check_func "$LINENO" "bind_textdomain_codeset" "ac_cv_func_bind_textdomain_codeset" +! if test "x$ac_cv_func_bind_textdomain_codeset" = xyes; then : + cat >>confdefs.h <<_ACEOF + #define HAVE_BIND_TEXTDOMAIN_CODESET 1 + _ACEOF +*************** +*** 12807,12817 **** + fi + + ac_fn_c_check_header_mongrel "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default" +! if test "x$ac_cv_header_dlfcn_h" = x""yes; then : + DLL=dlfcn.h + else + ac_fn_c_check_header_mongrel "$LINENO" "dl.h" "ac_cv_header_dl_h" "$ac_includes_default" +! if test "x$ac_cv_header_dl_h" = x""yes; then : + DLL=dl.h + fi + +--- 12830,12840 ---- + fi + + ac_fn_c_check_header_mongrel "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default" +! if test "x$ac_cv_header_dlfcn_h" = xyes; then : + DLL=dlfcn.h + else + ac_fn_c_check_header_mongrel "$LINENO" "dl.h" "ac_cv_header_dl_h" "$ac_includes_default" +! if test "x$ac_cv_header_dl_h" = xyes; then : + DLL=dl.h + fi + +*************** +*** 13008,13014 **** + for ac_header in setjmp.h + do : + ac_fn_c_check_header_mongrel "$LINENO" "setjmp.h" "ac_cv_header_setjmp_h" "$ac_includes_default" +! if test "x$ac_cv_header_setjmp_h" = x""yes; then : + cat >>confdefs.h <<_ACEOF + #define HAVE_SETJMP_H 1 + _ACEOF +--- 13031,13037 ---- + for ac_header in setjmp.h + do : + ac_fn_c_check_header_mongrel "$LINENO" "setjmp.h" "ac_cv_header_setjmp_h" "$ac_includes_default" +! if test "x$ac_cv_header_setjmp_h" = xyes; then : + cat >>confdefs.h <<_ACEOF + #define HAVE_SETJMP_H 1 + _ACEOF +*************** +*** 13159,13168 **** + :end' >>confcache + if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then +! test "x$cache_file" != "x/dev/null" && + { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 + $as_echo "$as_me: updating cache $cache_file" >&6;} +! cat confcache >$cache_file + else + { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 + $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} +--- 13182,13202 ---- + :end' >>confcache + if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then +! if test "x$cache_file" != "x/dev/null"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 + $as_echo "$as_me: updating cache $cache_file" >&6;} +! if test ! -f "$cache_file" || test -h "$cache_file"; then +! cat confcache >"$cache_file" +! else +! case $cache_file in #( +! */* | ?:*) +! mv -f confcache "$cache_file"$$ && +! mv -f "$cache_file"$$ "$cache_file" ;; #( +! *) +! mv -f confcache "$cache_file" ;; +! esac +! fi +! fi + else + { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 + $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} +*************** +*** 13178,13183 **** +--- 13212,13218 ---- + + ac_libobjs= + ac_ltlibobjs= ++ U= + for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' +*************** +*** 13194,13200 **** + + + +! : ${CONFIG_STATUS=./config.status} + ac_write_fail=0 + ac_clean_files_save=$ac_clean_files + ac_clean_files="$ac_clean_files $CONFIG_STATUS" +--- 13229,13235 ---- + + + +! : "${CONFIG_STATUS=./config.status}" + ac_write_fail=0 + ac_clean_files_save=$ac_clean_files + ac_clean_files="$ac_clean_files $CONFIG_STATUS" +*************** +*** 13295,13300 **** +--- 13330,13336 ---- + IFS=" "" $as_nl" + + # Find who we are. Look in the path if we contain no directory separator. ++ as_myself= + case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +*************** +*** 13340,13358 **** + (unset CDPATH) >/dev/null 2>&1 && unset CDPATH + + +! # as_fn_error ERROR [LINENO LOG_FD] +! # --------------------------------- + # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are + # provided, also output the error to LOG_FD, referencing LINENO. Then exit the +! # script with status $?, using 1 if that was 0. + as_fn_error () + { +! as_status=$?; test $as_status -eq 0 && as_status=1 +! if test "$3"; then +! as_lineno=${as_lineno-"$2"} as_lineno_stack=as_lineno_stack=$as_lineno_stack +! $as_echo "$as_me:${as_lineno-$LINENO}: error: $1" >&$3 + fi +! $as_echo "$as_me: error: $1" >&2 + as_fn_exit $as_status + } # as_fn_error + +--- 13376,13394 ---- + (unset CDPATH) >/dev/null 2>&1 && unset CDPATH + + +! # as_fn_error STATUS ERROR [LINENO LOG_FD] +! # ---------------------------------------- + # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are + # provided, also output the error to LOG_FD, referencing LINENO. Then exit the +! # script with STATUS, using 1 if that was 0. + as_fn_error () + { +! as_status=$1; test $as_status -eq 0 && as_status=1 +! if test "$4"; then +! as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack +! $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi +! $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status + } # as_fn_error + +*************** +*** 13490,13505 **** + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. +! # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || +! as_ln_s='cp -p' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else +! as_ln_s='cp -p' + fi + else +! as_ln_s='cp -p' + fi + rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file + rmdir conf$$.dir 2>/dev/null +--- 13526,13541 ---- + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. +! # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || +! as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else +! as_ln_s='cp -pR' + fi + else +! as_ln_s='cp -pR' + fi + rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file + rmdir conf$$.dir 2>/dev/null +*************** +*** 13548,13554 **** + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" +! } || test -d "$as_dir" || as_fn_error "cannot create directory $as_dir" + + + } # as_fn_mkdir_p +--- 13584,13590 ---- + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" +! } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + + } # as_fn_mkdir_p +*************** +*** 13559,13586 **** + as_mkdir_p=false + fi + +! if test -x / >/dev/null 2>&1; then +! as_test_x='test -x' +! else +! if ls -dL / >/dev/null 2>&1; then +! as_ls_L_option=L +! else +! as_ls_L_option= +! fi +! as_test_x=' +! eval sh -c '\'' +! if test -d "$1"; then +! test -d "$1/."; +! else +! case $1 in #( +! -*)set "./$1";; +! esac; +! case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( +! ???[sx]*):;;*)false;;esac;fi +! '\'' sh +! ' +! fi +! as_executable_p=$as_test_x + + # Sed expression to map a string onto a valid CPP name. + as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" +--- 13595,13610 ---- + as_mkdir_p=false + fi + +! +! # as_fn_executable_p FILE +! # ----------------------- +! # Test if FILE is an executable regular file. +! as_fn_executable_p () +! { +! test -f "$1" && test -x "$1" +! } # as_fn_executable_p +! as_test_x='test -x' +! as_executable_p=as_fn_executable_p + + # Sed expression to map a string onto a valid CPP name. + as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" +*************** +*** 13602,13608 **** + # values after options handling. + ac_log=" + This file was extended by $as_me, which was +! generated by GNU Autoconf 2.65. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS +--- 13626,13632 ---- + # values after options handling. + ac_log=" + This file was extended by $as_me, which was +! generated by GNU Autoconf 2.69. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS +*************** +*** 13664,13673 **** + ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" + ac_cs_version="\\ + config.status +! configured by $0, generated by GNU Autoconf 2.65, + with options \\"\$ac_cs_config\\" + +! Copyright (C) 2009 Free Software Foundation, Inc. + This config.status script is free software; the Free Software Foundation + gives unlimited permission to copy, distribute and modify it." + +--- 13688,13697 ---- + ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" + ac_cs_version="\\ + config.status +! configured by $0, generated by GNU Autoconf 2.69, + with options \\"\$ac_cs_config\\" + +! Copyright (C) 2012 Free Software Foundation, Inc. + This config.status script is free software; the Free Software Foundation + gives unlimited permission to copy, distribute and modify it." + +*************** +*** 13683,13693 **** + while test $# != 0 + do + case $1 in +! --*=*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 +--- 13707,13722 ---- + while test $# != 0 + do + case $1 in +! --*=?*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; ++ --*=) ++ ac_option=`expr "X$1" : 'X\([^=]*\)='` ++ ac_optarg= ++ ac_shift=: ++ ;; + *) + ac_option=$1 + ac_optarg=$2 +*************** +*** 13709,13714 **** +--- 13738,13744 ---- + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; ++ '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; +*************** +*** 13721,13727 **** + ac_need_defaults=false;; + --he | --h) + # Conflict between --help and --header +! as_fn_error "ambiguous option: \`$1' + Try \`$0 --help' for more information.";; + --help | --hel | -h ) + $as_echo "$ac_cs_usage"; exit ;; +--- 13751,13757 ---- + ac_need_defaults=false;; + --he | --h) + # Conflict between --help and --header +! as_fn_error $? "ambiguous option: \`$1' + Try \`$0 --help' for more information.";; + --help | --hel | -h ) + $as_echo "$ac_cs_usage"; exit ;; +*************** +*** 13730,13736 **** + ac_cs_silent=: ;; + + # This is an error. +! -*) as_fn_error "unrecognized option: \`$1' + Try \`$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" +--- 13760,13766 ---- + ac_cs_silent=: ;; + + # This is an error. +! -*) as_fn_error $? "unrecognized option: \`$1' + Try \`$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" +*************** +*** 13750,13756 **** + _ACEOF + cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + if \$ac_cs_recheck; then +! set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + shift + \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 + CONFIG_SHELL='$SHELL' +--- 13780,13786 ---- + _ACEOF + cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + if \$ac_cs_recheck; then +! set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + shift + \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 + CONFIG_SHELL='$SHELL' +*************** +*** 13782,13788 **** + "auto/config.h") CONFIG_HEADERS="$CONFIG_HEADERS auto/config.h:config.h.in" ;; + "auto/config.mk") CONFIG_FILES="$CONFIG_FILES auto/config.mk:config.mk.in" ;; + +! *) as_fn_error "invalid argument: \`$ac_config_target'" "$LINENO" 5;; + esac + done + +--- 13812,13818 ---- + "auto/config.h") CONFIG_HEADERS="$CONFIG_HEADERS auto/config.h:config.h.in" ;; + "auto/config.mk") CONFIG_FILES="$CONFIG_FILES auto/config.mk:config.mk.in" ;; + +! *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; + esac + done + +*************** +*** 13804,13812 **** + # after its creation but before its name has been assigned to `$tmp'. + $debug || + { +! tmp= + trap 'exit_status=$? +! { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status + ' 0 + trap 'as_fn_exit 1' 1 2 13 15 + } +--- 13834,13843 ---- + # after its creation but before its name has been assigned to `$tmp'. + $debug || + { +! tmp= ac_tmp= + trap 'exit_status=$? +! : "${ac_tmp:=$tmp}" +! { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status + ' 0 + trap 'as_fn_exit 1' 1 2 13 15 + } +*************** +*** 13814,13825 **** + + { + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && +! test -n "$tmp" && test -d "$tmp" + } || + { + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +! } || as_fn_error "cannot create a temporary directory in ." "$LINENO" 5 + + # Set up the scripts for CONFIG_FILES section. + # No need to generate them if there are no CONFIG_FILES. +--- 13845,13857 ---- + + { + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && +! test -d "$tmp" + } || + { + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +! } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 +! ac_tmp=$tmp + + # Set up the scripts for CONFIG_FILES section. + # No need to generate them if there are no CONFIG_FILES. +*************** +*** 13836,13847 **** + fi + ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null` + if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then +! ac_cs_awk_cr='\r' + else + ac_cs_awk_cr=$ac_cr + fi + +! echo 'BEGIN {' >"$tmp/subs1.awk" && + _ACEOF + + +--- 13868,13879 ---- + fi + ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null` + if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then +! ac_cs_awk_cr='\\r' + else + ac_cs_awk_cr=$ac_cr + fi + +! echo 'BEGIN {' >"$ac_tmp/subs1.awk" && + _ACEOF + + +*************** +*** 13850,13867 **** + echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && + echo "_ACEOF" + } >conf$$subs.sh || +! as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5 +! ac_delim_num=`echo "$ac_subst_vars" | grep -c '$'` + ac_delim='%!_!# ' + for ac_last_try in false false false false false :; do + . ./conf$$subs.sh || +! as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5 + + ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` + if test $ac_delim_n = $ac_delim_num; then + break + elif $ac_last_try; then +! as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +--- 13882,13899 ---- + echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && + echo "_ACEOF" + } >conf$$subs.sh || +! as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 +! ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` + ac_delim='%!_!# ' + for ac_last_try in false false false false false :; do + . ./conf$$subs.sh || +! as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + + ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` + if test $ac_delim_n = $ac_delim_num; then + break + elif $ac_last_try; then +! as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +*************** +*** 13869,13875 **** + rm -f conf$$subs.sh + + cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +! cat >>"\$tmp/subs1.awk" <<\\_ACAWK && + _ACEOF + sed -n ' + h +--- 13901,13907 ---- + rm -f conf$$subs.sh + + cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +! cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && + _ACEOF + sed -n ' + h +*************** +*** 13917,13923 **** + rm -f conf$$subs.awk + cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + _ACAWK +! cat >>"\$tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + +--- 13949,13955 ---- + rm -f conf$$subs.awk + cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + _ACAWK +! cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + +*************** +*** 13949,13969 **** + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" + else + cat +! fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \ +! || as_fn_error "could not setup config files machinery" "$LINENO" 5 + _ACEOF + +! # VPATH may cause trouble with some makes, so we remove $(srcdir), +! # ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and + # trailing colons and then remove the whole line if VPATH becomes empty + # (actually we leave an empty line to preserve line numbers). + if test "x$srcdir" = x.; then +! ac_vpsub='/^[ ]*VPATH[ ]*=/{ +! s/:*\$(srcdir):*/:/ +! s/:*\${srcdir}:*/:/ +! s/:*@srcdir@:*/:/ +! s/^\([^=]*=[ ]*\):*/\1/ + s/:*$// + s/^[^=]*=[ ]*$// + }' + fi +--- 13981,14009 ---- + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" + else + cat +! fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ +! || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 + _ACEOF + +! # VPATH may cause trouble with some makes, so we remove sole $(srcdir), +! # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and + # trailing colons and then remove the whole line if VPATH becomes empty + # (actually we leave an empty line to preserve line numbers). + if test "x$srcdir" = x.; then +! ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ +! h +! s/// +! s/^/:/ +! s/[ ]*$/:/ +! s/:\$(srcdir):/:/g +! s/:\${srcdir}:/:/g +! s/:@srcdir@:/:/g +! s/^:*// + s/:*$// ++ x ++ s/\(=[ ]*\).*/\1/ ++ G ++ s/\n// + s/^[^=]*=[ ]*$// + }' + fi +*************** +*** 13975,13981 **** + # No need to generate them if there are no CONFIG_HEADERS. + # This happens for instance with `./config.status Makefile'. + if test -n "$CONFIG_HEADERS"; then +! cat >"$tmp/defines.awk" <<\_ACAWK || + BEGIN { + _ACEOF + +--- 14015,14021 ---- + # No need to generate them if there are no CONFIG_HEADERS. + # This happens for instance with `./config.status Makefile'. + if test -n "$CONFIG_HEADERS"; then +! cat >"$ac_tmp/defines.awk" <<\_ACAWK || + BEGIN { + _ACEOF + +*************** +*** 13987,13997 **** + # handling of long lines. + ac_delim='%!_!# ' + for ac_last_try in false false :; do +! ac_t=`sed -n "/$ac_delim/p" confdefs.h` +! if test -z "$ac_t"; then + break + elif $ac_last_try; then +! as_fn_error "could not make $CONFIG_HEADERS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +--- 14027,14037 ---- + # handling of long lines. + ac_delim='%!_!# ' + for ac_last_try in false false :; do +! ac_tt=`sed -n "/$ac_delim/p" confdefs.h` +! if test -z "$ac_tt"; then + break + elif $ac_last_try; then +! as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +*************** +*** 14076,14082 **** + _ACAWK + _ACEOF + cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +! as_fn_error "could not setup config headers machinery" "$LINENO" 5 + fi # test -n "$CONFIG_HEADERS" + + +--- 14116,14122 ---- + _ACAWK + _ACEOF + cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +! as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 + fi # test -n "$CONFIG_HEADERS" + + +*************** +*** 14089,14095 **** + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; +! :L* | :C*:*) as_fn_error "invalid tag \`$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac +--- 14129,14135 ---- + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; +! :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac +*************** +*** 14108,14114 **** + for ac_f + do + case $ac_f in +! -) ac_f="$tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. +--- 14148,14154 ---- + for ac_f + do + case $ac_f in +! -) ac_f="$ac_tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. +*************** +*** 14117,14123 **** + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || +! as_fn_error "cannot find input file: \`$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" +--- 14157,14163 ---- + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || +! as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" +*************** +*** 14143,14150 **** + esac + + case $ac_tag in +! *:-:* | *:-) cat >"$tmp/stdin" \ +! || as_fn_error "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac +--- 14183,14190 ---- + esac + + case $ac_tag in +! *:-:* | *:-) cat >"$ac_tmp/stdin" \ +! || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac +*************** +*** 14269,14291 **** + s&@abs_top_builddir@&$ac_abs_top_builddir&;t t + $ac_datarootdir_hack + " +! eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \ +! || as_fn_error "could not create $ac_file" "$LINENO" 5 + + test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && +! { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && +! { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' +! which seems to be undefined. Please make sure it is defined." >&5 + $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +! which seems to be undefined. Please make sure it is defined." >&2;} + +! rm -f "$tmp/stdin" + case $ac_file in +! -) cat "$tmp/out" && rm -f "$tmp/out";; +! *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";; + esac \ +! || as_fn_error "could not create $ac_file" "$LINENO" 5 + ;; + :H) + # +--- 14309,14332 ---- + s&@abs_top_builddir@&$ac_abs_top_builddir&;t t + $ac_datarootdir_hack + " +! eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ +! >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + + test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && +! { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && +! { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ +! "$ac_tmp/out"`; test -z "$ac_out"; } && + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' +! which seems to be undefined. Please make sure it is defined" >&5 + $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +! which seems to be undefined. Please make sure it is defined" >&2;} + +! rm -f "$ac_tmp/stdin" + case $ac_file in +! -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; +! *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; + esac \ +! || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + ;; + :H) + # +*************** +*** 14294,14314 **** + if test x"$ac_file" != x-; then + { + $as_echo "/* $configure_input */" \ +! && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" +! } >"$tmp/config.h" \ +! || as_fn_error "could not create $ac_file" "$LINENO" 5 +! if diff "$ac_file" "$tmp/config.h" >/dev/null 2>&1; then + { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 + $as_echo "$as_me: $ac_file is unchanged" >&6;} + else + rm -f "$ac_file" +! mv "$tmp/config.h" "$ac_file" \ +! || as_fn_error "could not create $ac_file" "$LINENO" 5 + fi + else + $as_echo "/* $configure_input */" \ +! && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" \ +! || as_fn_error "could not create -" "$LINENO" 5 + fi + ;; + +--- 14335,14355 ---- + if test x"$ac_file" != x-; then + { + $as_echo "/* $configure_input */" \ +! && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" +! } >"$ac_tmp/config.h" \ +! || as_fn_error $? "could not create $ac_file" "$LINENO" 5 +! if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then + { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 + $as_echo "$as_me: $ac_file is unchanged" >&6;} + else + rm -f "$ac_file" +! mv "$ac_tmp/config.h" "$ac_file" \ +! || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + fi + else + $as_echo "/* $configure_input */" \ +! && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ +! || as_fn_error $? "could not create -" "$LINENO" 5 + fi + ;; + +*************** +*** 14323,14329 **** + ac_clean_files=$ac_clean_files_save + + test $ac_write_fail = 0 || +! as_fn_error "write failure creating $CONFIG_STATUS" "$LINENO" 5 + + + # configure is writing to config.log, and then calls config.status. +--- 14364,14370 ---- + ac_clean_files=$ac_clean_files_save + + test $ac_write_fail = 0 || +! as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 + + + # configure is writing to config.log, and then calls config.status. +*************** +*** 14344,14350 **** + exec 5>>auto/config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. +! $ac_cs_success || as_fn_exit $? + fi + if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +--- 14385,14391 ---- + exec 5>>auto/config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. +! $ac_cs_success || as_fn_exit 1 + fi + if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +*** ../vim-7.4.222/src/version.c 2014-03-27 17:19:05.868676325 +0100 +--- src/version.c 2014-03-27 17:37:52.608693590 +0100 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 223, + /**/ + +-- +For humans, honesty is a matter of degree. Engineers are always honest in +matters of technology and human relationships. That's why it's a good idea +to keep engineers away from customers, romantic interests, and other people +who can't handle the truth. + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.224 b/SOURCES/7.4.224 new file mode 100644 index 0000000..977cd82 --- /dev/null +++ b/SOURCES/7.4.224 @@ -0,0 +1,210 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.224 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.224 +Problem: /usr/bin/grep on Solaris does not support -F. +Solution: Add configure check to find a good grep. (Danek Duvall) +Files: src/configure.in, src/auto/configure + + +*** ../vim-7.4.223/src/configure.in 2014-03-27 17:40:53.384696360 +0100 +--- src/configure.in 2014-03-27 18:49:24.900759361 +0100 +*************** +*** 14,19 **** +--- 14,20 ---- + AC_PROG_CC dnl required by almost everything + AC_PROG_CPP dnl required by header file checks + AC_PROGRAM_EGREP dnl required by AC_EGREP_CPP ++ AC_PROG_FGREP dnl finds working grep -F + AC_ISC_POSIX dnl required by AC_C_CROSS + AC_PROG_AWK dnl required for "make html" in ../doc + +*************** +*** 936,942 **** + PERL_CFLAGS=`echo "$perlcppflags" | sed -e 's/-pipe //' -e 's/-W[[^ ]]*//'` + fi + if test "X$perlldflags" != "X"; then +! if test "X`echo \"$LDFLAGS\" | grep -F -e \"$perlldflags\"`" = "X"; then + LDFLAGS="$perlldflags $LDFLAGS" + fi + fi +--- 937,943 ---- + PERL_CFLAGS=`echo "$perlcppflags" | sed -e 's/-pipe //' -e 's/-W[[^ ]]*//'` + fi + if test "X$perlldflags" != "X"; then +! if test "X`echo \"$LDFLAGS\" | $FGREP -e \"$perlldflags\"`" = "X"; then + LDFLAGS="$perlldflags $LDFLAGS" + fi + fi +*************** +*** 1727,1733 **** + dnl configure, so strip these flags first (if present) + rubyldflags=`echo "$rubyldflags" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'` + if test "X$rubyldflags" != "X"; then +! if test "X`echo \"$LDFLAGS\" | grep -F -e \"$rubyldflags\"`" = "X"; then + LDFLAGS="$rubyldflags $LDFLAGS" + fi + fi +--- 1728,1734 ---- + dnl configure, so strip these flags first (if present) + rubyldflags=`echo "$rubyldflags" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'` + if test "X$rubyldflags" != "X"; then +! if test "X`echo \"$LDFLAGS\" | $FGREP -e \"$rubyldflags\"`" = "X"; then + LDFLAGS="$rubyldflags $LDFLAGS" + fi + fi +*** ../vim-7.4.223/src/auto/configure 2014-03-27 17:40:53.396696361 +0100 +--- src/auto/configure 2014-03-27 18:49:34.356759506 +0100 +*************** +*** 719,724 **** +--- 719,725 ---- + CPP_MM + STRIP + AWK ++ FGREP + EGREP + GREP + CPP +*************** +*** 3695,3701 **** + + fi + rm -f conftest* +! { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing strerror" >&5 + $as_echo_n "checking for library containing strerror... " >&6; } + if ${ac_cv_search_strerror+:} false; then : + $as_echo_n "(cached) " >&6 +--- 3696,3768 ---- + + fi + rm -f conftest* +! { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 +! $as_echo_n "checking for fgrep... " >&6; } +! if ${ac_cv_path_FGREP+:} false; then : +! $as_echo_n "(cached) " >&6 +! else +! if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 +! then ac_cv_path_FGREP="$GREP -F" +! else +! if test -z "$FGREP"; then +! ac_path_FGREP_found=false +! # Loop through the user's path and test for each of PROGNAME-LIST +! as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +! for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +! do +! IFS=$as_save_IFS +! test -z "$as_dir" && as_dir=. +! for ac_prog in fgrep; do +! for ac_exec_ext in '' $ac_executable_extensions; do +! ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" +! as_fn_executable_p "$ac_path_FGREP" || continue +! # Check for GNU ac_path_FGREP and select it if it is found. +! # Check for GNU $ac_path_FGREP +! case `"$ac_path_FGREP" --version 2>&1` in +! *GNU*) +! ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; +! *) +! ac_count=0 +! $as_echo_n 0123456789 >"conftest.in" +! while : +! do +! cat "conftest.in" "conftest.in" >"conftest.tmp" +! mv "conftest.tmp" "conftest.in" +! cp "conftest.in" "conftest.nl" +! $as_echo 'FGREP' >> "conftest.nl" +! "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break +! diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break +! as_fn_arith $ac_count + 1 && ac_count=$as_val +! if test $ac_count -gt ${ac_path_FGREP_max-0}; then +! # Best one so far, save it but keep looking for a better one +! ac_cv_path_FGREP="$ac_path_FGREP" +! ac_path_FGREP_max=$ac_count +! fi +! # 10*(2^10) chars as input seems more than enough +! test $ac_count -gt 10 && break +! done +! rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +! esac +! +! $ac_path_FGREP_found && break 3 +! done +! done +! done +! IFS=$as_save_IFS +! if test -z "$ac_cv_path_FGREP"; then +! as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 +! fi +! else +! ac_cv_path_FGREP=$FGREP +! fi +! +! fi +! fi +! { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 +! $as_echo "$ac_cv_path_FGREP" >&6; } +! FGREP="$ac_cv_path_FGREP" +! +! { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing strerror" >&5 + $as_echo_n "checking for library containing strerror... " >&6; } + if ${ac_cv_search_strerror+:} false; then : + $as_echo_n "(cached) " >&6 +*************** +*** 5480,5486 **** + PERL_CFLAGS=`echo "$perlcppflags" | sed -e 's/-pipe //' -e 's/-W[^ ]*//'` + fi + if test "X$perlldflags" != "X"; then +! if test "X`echo \"$LDFLAGS\" | grep -F -e \"$perlldflags\"`" = "X"; then + LDFLAGS="$perlldflags $LDFLAGS" + fi + fi +--- 5547,5553 ---- + PERL_CFLAGS=`echo "$perlcppflags" | sed -e 's/-pipe //' -e 's/-W[^ ]*//'` + fi + if test "X$perlldflags" != "X"; then +! if test "X`echo \"$LDFLAGS\" | $FGREP -e \"$perlldflags\"`" = "X"; then + LDFLAGS="$perlldflags $LDFLAGS" + fi + fi +*************** +*** 6838,6844 **** + if test "X$rubyldflags" != "X"; then + rubyldflags=`echo "$rubyldflags" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'` + if test "X$rubyldflags" != "X"; then +! if test "X`echo \"$LDFLAGS\" | grep -F -e \"$rubyldflags\"`" = "X"; then + LDFLAGS="$rubyldflags $LDFLAGS" + fi + fi +--- 6905,6911 ---- + if test "X$rubyldflags" != "X"; then + rubyldflags=`echo "$rubyldflags" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'` + if test "X$rubyldflags" != "X"; then +! if test "X`echo \"$LDFLAGS\" | $FGREP -e \"$rubyldflags\"`" = "X"; then + LDFLAGS="$rubyldflags $LDFLAGS" + fi + fi +*** ../vim-7.4.223/src/version.c 2014-03-27 17:40:53.396696361 +0100 +--- src/version.c 2014-03-27 18:48:59.488758971 +0100 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 224, + /**/ + +-- +Female engineers become irresistible at the age of consent and remain that +way until about thirty minutes after their clinical death. Longer if it's a +warm day. + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.225 b/SOURCES/7.4.225 new file mode 100644 index 0000000..ba2207b --- /dev/null +++ b/SOURCES/7.4.225 @@ -0,0 +1,83 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.225 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.225 +Problem: Dynamic Ruby doesn't work on Solaris. +Solution: Always use the stubs. (Danek Duvall, Yukihiro Nakadaira) +Files: src/if_ruby.c + + +*** ../vim-7.4.224/src/if_ruby.c 2014-02-23 22:52:33.352764716 +0100 +--- src/if_ruby.c 2014-03-27 18:56:37.428765988 +0100 +*************** +*** 88,95 **** + # define rb_int2big rb_int2big_stub + #endif + +! #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 20 \ +! && VIM_SIZEOF_INT < VIM_SIZEOF_LONG + /* Ruby 2.0 defines a number of static functions which use rb_fix2int and + * rb_num2int if VIM_SIZEOF_INT < VIM_SIZEOF_LONG (64bit) */ + # define rb_fix2int rb_fix2int_stub +--- 88,94 ---- + # define rb_int2big rb_int2big_stub + #endif + +! #if defined(DYNAMIC_RUBY_VER) && VIM_SIZEOF_INT < VIM_SIZEOF_LONG + /* Ruby 2.0 defines a number of static functions which use rb_fix2int and + * rb_num2int if VIM_SIZEOF_INT < VIM_SIZEOF_LONG (64bit) */ + # define rb_fix2int rb_fix2int_stub +*************** +*** 203,210 **** + # define rb_inspect dll_rb_inspect + # define rb_int2inum dll_rb_int2inum + # if VIM_SIZEOF_INT < VIM_SIZEOF_LONG /* 64 bits only */ +- # define rb_fix2int dll_rb_fix2int +- # define rb_num2int dll_rb_num2int + # define rb_num2uint dll_rb_num2uint + # endif + # define rb_lastline_get dll_rb_lastline_get +--- 202,207 ---- +*************** +*** 392,399 **** + { + return dll_rb_int2big(x); + } +! # if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 20 \ +! && VIM_SIZEOF_INT < VIM_SIZEOF_LONG + long rb_fix2int_stub(VALUE x) + { + return dll_rb_fix2int(x); +--- 389,395 ---- + { + return dll_rb_int2big(x); + } +! # if defined(DYNAMIC_RUBY_VER) && VIM_SIZEOF_INT < VIM_SIZEOF_LONG + long rb_fix2int_stub(VALUE x) + { + return dll_rb_fix2int(x); +*** ../vim-7.4.224/src/version.c 2014-03-27 18:51:06.612760919 +0100 +--- src/version.c 2014-03-27 18:55:21.412764824 +0100 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 225, + /**/ + +-- +Engineers are widely recognized as superior marriage material: intelligent, +dependable, employed, honest, and handy around the house. + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.226 b/SOURCES/7.4.226 new file mode 100644 index 0000000..7c00c3d --- /dev/null +++ b/SOURCES/7.4.226 @@ -0,0 +1,136 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.226 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.226 (after 7.4.219) +Problem: Cursurline highlighting not redrawn when scrolling. (John + Marriott) +Solution: Check for required redraw in two places. +Files: src/move.c + + +*** ../vim-7.4.225/src/move.c 2014-03-27 12:11:43.888393741 +0100 +--- src/move.c 2014-03-28 21:45:56.958245561 +0100 +*************** +*** 20,25 **** +--- 20,26 ---- + #include "vim.h" + + static void comp_botline __ARGS((win_T *wp)); ++ static void redraw_for_cursorline __ARGS((win_T *wp)); + static int scrolljump_value __ARGS((void)); + static int check_top_offset __ARGS((void)); + static void curs_rows __ARGS((win_T *wp, int do_botline)); +*************** +*** 106,111 **** +--- 107,113 ---- + #ifdef FEAT_FOLDING + wp->w_cline_folded = folded; + #endif ++ redraw_for_cursorline(wp); + wp->w_valid |= (VALID_CROW|VALID_CHEIGHT); + } + if (done + n > wp->w_height) +*************** +*** 124,129 **** +--- 126,152 ---- + } + + /* ++ * Redraw when w_cline_row changes and 'relativenumber' or 'cursorline' is ++ * set. ++ */ ++ static void ++ redraw_for_cursorline(wp) ++ win_T *wp; ++ { ++ if ((wp->w_p_rnu ++ #ifdef FEAT_SYN_HL ++ || wp->w_p_cul ++ #endif ++ ) ++ && (wp->w_valid & VALID_CROW) == 0 ++ # ifdef FEAT_INS_EXPAND ++ && !pum_visible() ++ # endif ++ ) ++ redraw_win_later(wp, SOME_VALID); ++ } ++ ++ /* + * Update curwin->w_topline and redraw if necessary. + * Used to update the screen before printing a message. + */ +*************** +*** 772,791 **** + } + } + +! /* Redraw when w_cline_row changes and 'relativenumber' or 'cursorline' is +! * set. */ +! if ((curwin->w_p_rnu +! #ifdef FEAT_SYN_HL +! || curwin->w_p_cul +! #endif +! ) +! && (curwin->w_valid & VALID_CROW) == 0 +! # ifdef FEAT_INS_EXPAND +! && !pum_visible() +! # endif +! ) +! redraw_later(SOME_VALID); +! + wp->w_valid |= VALID_CROW|VALID_CHEIGHT; + + /* validate botline too, if update_screen doesn't do it */ +--- 795,801 ---- + } + } + +! redraw_for_cursorline(curwin); + wp->w_valid |= VALID_CROW|VALID_CHEIGHT; + + /* validate botline too, if update_screen doesn't do it */ +*************** +*** 2504,2511 **** + } + comp_botline(curwin); + curwin->w_cursor.lnum = curwin->w_botline - 1; +! curwin->w_valid &= ~(VALID_WCOL|VALID_CHEIGHT| +! VALID_WROW|VALID_CROW); + } + else + { +--- 2514,2521 ---- + } + comp_botline(curwin); + curwin->w_cursor.lnum = curwin->w_botline - 1; +! curwin->w_valid &= +! ~(VALID_WCOL|VALID_CHEIGHT|VALID_WROW|VALID_CROW); + } + else + { +*** ../vim-7.4.225/src/version.c 2014-03-27 19:08:52.008777244 +0100 +--- src/version.c 2014-03-28 21:48:45.330248141 +0100 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 226, + /**/ + +-- +Bad fashion can discourage normal people from interacting with the engineer +and talking about the cute things their children do. + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.227 b/SOURCES/7.4.227 new file mode 100644 index 0000000..a7204bc --- /dev/null +++ b/SOURCES/7.4.227 @@ -0,0 +1,87 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.227 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.227 (after 7.4.225) +Problem: Can't build with Ruby 1.8. +Solution: Do include a check for the Ruby version. (Ken Takata) +Files: src/if_ruby.c + + +*** ../vim-7.4.226/src/if_ruby.c 2014-03-27 19:08:52.004777244 +0100 +--- src/if_ruby.c 2014-03-28 21:54:06.414253061 +0100 +*************** +*** 88,95 **** + # define rb_int2big rb_int2big_stub + #endif + +! #if defined(DYNAMIC_RUBY_VER) && VIM_SIZEOF_INT < VIM_SIZEOF_LONG +! /* Ruby 2.0 defines a number of static functions which use rb_fix2int and + * rb_num2int if VIM_SIZEOF_INT < VIM_SIZEOF_LONG (64bit) */ + # define rb_fix2int rb_fix2int_stub + # define rb_num2int rb_num2int_stub +--- 88,96 ---- + # define rb_int2big rb_int2big_stub + #endif + +! #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 19 \ +! && VIM_SIZEOF_INT < VIM_SIZEOF_LONG +! /* Ruby 1.9 defines a number of static functions which use rb_fix2int and + * rb_num2int if VIM_SIZEOF_INT < VIM_SIZEOF_LONG (64bit) */ + # define rb_fix2int rb_fix2int_stub + # define rb_num2int rb_num2int_stub +*************** +*** 202,207 **** +--- 203,212 ---- + # define rb_inspect dll_rb_inspect + # define rb_int2inum dll_rb_int2inum + # if VIM_SIZEOF_INT < VIM_SIZEOF_LONG /* 64 bits only */ ++ # if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER <= 18 ++ # define rb_fix2int dll_rb_fix2int ++ # define rb_num2int dll_rb_num2int ++ # endif + # define rb_num2uint dll_rb_num2uint + # endif + # define rb_lastline_get dll_rb_lastline_get +*************** +*** 389,395 **** + { + return dll_rb_int2big(x); + } +! # if defined(DYNAMIC_RUBY_VER) && VIM_SIZEOF_INT < VIM_SIZEOF_LONG + long rb_fix2int_stub(VALUE x) + { + return dll_rb_fix2int(x); +--- 394,401 ---- + { + return dll_rb_int2big(x); + } +! # if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 19 \ +! && VIM_SIZEOF_INT < VIM_SIZEOF_LONG + long rb_fix2int_stub(VALUE x) + { + return dll_rb_fix2int(x); +*** ../vim-7.4.226/src/version.c 2014-03-28 21:49:26.854248777 +0100 +--- src/version.c 2014-03-28 21:53:51.546252833 +0100 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 227, + /**/ + +-- +No engineer can take a shower without wondering if some sort of Teflon coating +would make showering unnecessary. + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.228 b/SOURCES/7.4.228 new file mode 100644 index 0000000..0ce909c --- /dev/null +++ b/SOURCES/7.4.228 @@ -0,0 +1,189 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.228 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.228 +Problem: Compiler warnings when building with Python 3.2. +Solution: Make type cast depend on Python version. (Ken Takata) +Files: src/if_py_both.h, src/if_python.c, src/if_python3.c + + +*** ../vim-7.4.227/src/if_py_both.h 2014-03-08 16:13:39.115462069 +0100 +--- src/if_py_both.h 2014-03-30 15:58:40.948518929 +0200 +*************** +*** 2328,2334 **** + { + Py_ssize_t start, stop, step, slicelen; + +! if (PySlice_GetIndicesEx((PySliceObject *)idx, ListLength(self), + &start, &stop, &step, &slicelen) < 0) + return NULL; + return ListSlice(self, start, step, slicelen); +--- 2328,2334 ---- + { + Py_ssize_t start, stop, step, slicelen; + +! if (PySlice_GetIndicesEx((PySliceObject_T *)idx, ListLength(self), + &start, &stop, &step, &slicelen) < 0) + return NULL; + return ListSlice(self, start, step, slicelen); +*************** +*** 2618,2624 **** + { + Py_ssize_t start, stop, step, slicelen; + +! if (PySlice_GetIndicesEx((PySliceObject *)idx, ListLength(self), + &start, &stop, &step, &slicelen) < 0) + return -1; + return ListAssSlice(self, start, step, slicelen, +--- 2618,2624 ---- + { + Py_ssize_t start, stop, step, slicelen; + +! if (PySlice_GetIndicesEx((PySliceObject_T *)idx, ListLength(self), + &start, &stop, &step, &slicelen) < 0) + return -1; + return ListAssSlice(self, start, step, slicelen, +*** ../vim-7.4.227/src/if_python.c 2014-02-23 22:52:33.368764715 +0100 +--- src/if_python.c 2014-03-30 15:58:35.768518850 +0200 +*************** +*** 803,808 **** +--- 803,810 ---- + # define PY_STRSAVE(s) ((char_u *) py_memsave(s, STRLEN(s) + 1)) + #endif + ++ typedef PySliceObject PySliceObject_T; ++ + /* + * Include the code shared with if_python3.c + */ +*** ../vim-7.4.227/src/if_python3.c 2014-01-14 19:35:49.000000000 +0100 +--- src/if_python3.c 2014-03-30 15:59:24.752519600 +0200 +*************** +*** 100,105 **** +--- 100,115 ---- + #define PyIntArgFunc ssizeargfunc + #define PyIntObjArgProc ssizeobjargproc + ++ /* ++ * PySlice_GetIndicesEx(): first argument type changed from PySliceObject ++ * to PyObject in Python 3.2 or later. ++ */ ++ #if PY_VERSION_HEX >= 0x030200f0 ++ typedef PyObject PySliceObject_T; ++ #else ++ typedef PySliceObject PySliceObject_T; ++ #endif ++ + #if defined(DYNAMIC_PYTHON3) || defined(PROTO) + + # ifndef WIN3264 +*************** +*** 294,300 **** + static PyObject* (*py3_PyTuple_GetItem)(PyObject *, Py_ssize_t); + static int (*py3_PyMapping_Check)(PyObject *); + static PyObject* (*py3_PyMapping_Keys)(PyObject *); +! static int (*py3_PySlice_GetIndicesEx)(PySliceObject *r, Py_ssize_t length, + Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step, + Py_ssize_t *slicelen); + static PyObject* (*py3_PyErr_NoMemory)(void); +--- 304,310 ---- + static PyObject* (*py3_PyTuple_GetItem)(PyObject *, Py_ssize_t); + static int (*py3_PyMapping_Check)(PyObject *); + static PyObject* (*py3_PyMapping_Keys)(PyObject *); +! static int (*py3_PySlice_GetIndicesEx)(PySliceObject_T *r, Py_ssize_t length, + Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step, + Py_ssize_t *slicelen); + static PyObject* (*py3_PyErr_NoMemory)(void); +*************** +*** 1190,1196 **** + if (CheckBuffer((BufferObject *) self)) + return NULL; + +! if (PySlice_GetIndicesEx((PySliceObject *)idx, + (Py_ssize_t)((BufferObject *)(self))->buf->b_ml.ml_line_count, + &start, &stop, + &step, &slicelen) < 0) +--- 1200,1206 ---- + if (CheckBuffer((BufferObject *) self)) + return NULL; + +! if (PySlice_GetIndicesEx((PySliceObject_T *)idx, + (Py_ssize_t)((BufferObject *)(self))->buf->b_ml.ml_line_count, + &start, &stop, + &step, &slicelen) < 0) +*************** +*** 1222,1228 **** + if (CheckBuffer((BufferObject *) self)) + return -1; + +! if (PySlice_GetIndicesEx((PySliceObject *)idx, + (Py_ssize_t)((BufferObject *)(self))->buf->b_ml.ml_line_count, + &start, &stop, + &step, &slicelen) < 0) +--- 1232,1238 ---- + if (CheckBuffer((BufferObject *) self)) + return -1; + +! if (PySlice_GetIndicesEx((PySliceObject_T *)idx, + (Py_ssize_t)((BufferObject *)(self))->buf->b_ml.ml_line_count, + &start, &stop, + &step, &slicelen) < 0) +*************** +*** 1306,1312 **** + { + Py_ssize_t start, stop, step, slicelen; + +! if (PySlice_GetIndicesEx((PySliceObject *)idx, + ((RangeObject *)(self))->end-((RangeObject *)(self))->start+1, + &start, &stop, + &step, &slicelen) < 0) +--- 1316,1322 ---- + { + Py_ssize_t start, stop, step, slicelen; + +! if (PySlice_GetIndicesEx((PySliceObject_T *)idx, + ((RangeObject *)(self))->end-((RangeObject *)(self))->start+1, + &start, &stop, + &step, &slicelen) < 0) +*************** +*** 1333,1339 **** + { + Py_ssize_t start, stop, step, slicelen; + +! if (PySlice_GetIndicesEx((PySliceObject *)idx, + ((RangeObject *)(self))->end-((RangeObject *)(self))->start+1, + &start, &stop, + &step, &slicelen) < 0) +--- 1343,1349 ---- + { + Py_ssize_t start, stop, step, slicelen; + +! if (PySlice_GetIndicesEx((PySliceObject_T *)idx, + ((RangeObject *)(self))->end-((RangeObject *)(self))->start+1, + &start, &stop, + &step, &slicelen) < 0) +*** ../vim-7.4.227/src/version.c 2014-03-28 21:58:17.878256914 +0100 +--- src/version.c 2014-03-30 15:52:27.784513211 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 228, + /**/ + +-- +The average life of an organization chart is six months. You can safely +ignore any order from your boss that would take six months to complete. + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.229 b/SOURCES/7.4.229 new file mode 100644 index 0000000..e77a98c --- /dev/null +++ b/SOURCES/7.4.229 @@ -0,0 +1,141 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.229 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.229 +Problem: Using ":let" for listing variables and the second one is a curly + braces expression may fail. +Solution: Check for an "=" in a better way. (ZyX) +Files: src/eval.c, src/testdir/test104.in, src/testdir/test104.ok + + +*** ../vim-7.4.228/src/eval.c 2014-03-25 18:23:27.062087691 +0100 +--- src/eval.c 2014-03-30 16:46:24.464562806 +0200 +*************** +*** 1856,1863 **** + return; + if (argend > arg && argend[-1] == '.') /* for var.='str' */ + --argend; +! expr = vim_strchr(argend, '='); +! if (expr == NULL) + { + /* + * ":let" without "=": list variables +--- 1856,1864 ---- + return; + if (argend > arg && argend[-1] == '.') /* for var.='str' */ + --argend; +! expr = skipwhite(argend); +! if (*expr != '=' && !(vim_strchr((char_u *)"+-.", *expr) != NULL +! && expr[1] == '=')) + { + /* + * ":let" without "=": list variables +*************** +*** 1886,1897 **** + { + op[0] = '='; + op[1] = NUL; +! if (expr > argend) + { +! if (vim_strchr((char_u *)"+-.", expr[-1]) != NULL) +! op[0] = expr[-1]; /* +=, -= or .= */ + } +! expr = skipwhite(expr + 1); + + if (eap->skip) + ++emsg_skip; +--- 1887,1900 ---- + { + op[0] = '='; + op[1] = NUL; +! if (*expr != '=') + { +! if (vim_strchr((char_u *)"+-.", *expr) != NULL) +! op[0] = *expr; /* +=, -= or .= */ +! expr = skipwhite(expr + 2); + } +! else +! expr = skipwhite(expr + 1); + + if (eap->skip) + ++emsg_skip; +*** ../vim-7.4.228/src/testdir/test104.in 2014-02-05 22:25:29.982568243 +0100 +--- src/testdir/test104.in 2014-03-30 16:44:39.432561197 +0200 +*************** +*** 1,4 **** +! Tests for autoload. vim: set ft=vim ts=8 : + + STARTTEST + :so small.vim +--- 1,4 ---- +! Tests for :let. vim: set ft=vim ts=8 : + + STARTTEST + :so small.vim +*************** +*** 10,15 **** +--- 10,29 ---- + :catch + : $put ='FAIL: ' . v:exception + :endtry ++ :let a = 1 ++ :let b = 2 ++ :for letargs in ['a b', '{0 == 1 ? "a" : "b"}', '{0 == 1 ? "a" : "b"} a', 'a {0 == 1 ? "a" : "b"}'] ++ : try ++ : redir => messages ++ : execute 'let' letargs ++ : redir END ++ : $put ='OK:' ++ : $put =split(substitute(messages, '\n', '\0 ', 'g'), '\n') ++ : catch ++ : $put ='FAIL: ' . v:exception ++ : redir END ++ : endtry ++ :endfor + :/^Results/,$wq! test.out + ENDTEST + +*** ../vim-7.4.228/src/testdir/test104.ok 2014-02-05 22:25:29.982568243 +0100 +--- src/testdir/test104.ok 2014-03-30 16:44:39.432561197 +0200 +*************** +*** 1,2 **** +--- 1,13 ---- + Results of test104: + OK: function('tr') ++ OK: ++ a #1 ++ b #2 ++ OK: ++ b #2 ++ OK: ++ b #2 ++ a #1 ++ OK: ++ a #1 ++ b #2 +*** ../vim-7.4.228/src/version.c 2014-03-30 16:11:37.180530823 +0200 +--- src/version.c 2014-03-30 16:46:39.660563039 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 229, + /**/ + +-- +You have heard the saying that if you put a thousand monkeys in a room with a +thousand typewriters and waited long enough, eventually you would have a room +full of dead monkeys. + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.230 b/SOURCES/7.4.230 new file mode 100644 index 0000000..933de67 --- /dev/null +++ b/SOURCES/7.4.230 @@ -0,0 +1,53 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.230 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.230 +Problem: Error when using ":options". +Solution: Fix the entry for 'lispwords'. (Kenichi Ito) +Files: runtime/optwin.vim + + +*** ../vim-7.4.229/runtime/optwin.vim 2014-03-12 18:55:52.100906804 +0100 +--- runtime/optwin.vim 2014-04-01 12:25:09.825159207 +0200 +*************** +*** 855,861 **** + call append("$", "\t(local to buffer)") + call <SID>BinOptionL("lisp") + call append("$", "lispwords\twords that change how lisp indenting works") +! call <SID>OptionL("lw", &lw) + endif + + +--- 855,861 ---- + call append("$", "\t(local to buffer)") + call <SID>BinOptionL("lisp") + call append("$", "lispwords\twords that change how lisp indenting works") +! call <SID>OptionL("lw") + endif + + +*** ../vim-7.4.229/src/version.c 2014-03-30 16:49:06.412565288 +0200 +--- src/version.c 2014-04-01 12:23:07.629160888 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 230, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +9. All your daydreaming is preoccupied with getting a faster connection to the + net: 28.8...ISDN...cable modem...T1...T3. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.231 b/SOURCES/7.4.231 new file mode 100644 index 0000000..eb66144 --- /dev/null +++ b/SOURCES/7.4.231 @@ -0,0 +1,267 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.231 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.231 +Problem: An error in ":options" is not caught by the tests. +Solution: Add a test for ":options". Set $VIMRUNTIME for the tests so that + it uses the current runtime files instead of the installed ones. +Files: src/Makefile, src/testdir/Makefile, src/testdir/test_options.in, + src/testdir/test_options.ok, src/testdir/Make_amiga.mak, + src/testdir/Make_dos.mak, src/testdir/Make_ming.mak, + src/testdir/Make_os2.mak, src/testdir/Make_vms.mms + + +*** ../vim-7.4.230/src/Makefile 2014-03-27 17:40:53.384696360 +0100 +--- src/Makefile 2014-04-01 13:49:14.025089820 +0200 +*************** +*** 1867,1873 **** + -if test $(VIMTARGET) != vim -a ! -r vim; then \ + ln -s $(VIMTARGET) vim; \ + fi +! cd testdir; $(MAKE) -f Makefile $(GUI_TESTTARGET) VIMPROG=../$(VIMTARGET) $(GUI_TESTARG) + $(MAKE) -f Makefile unittest + + unittesttargets: +--- 1867,1873 ---- + -if test $(VIMTARGET) != vim -a ! -r vim; then \ + ln -s $(VIMTARGET) vim; \ + fi +! cd testdir; $(MAKE) -f Makefile $(GUI_TESTTARGET) VIMPROG=../$(VIMTARGET) $(GUI_TESTARG) SCRIPTSOURCE=../$(SCRIPTSOURCE) + $(MAKE) -f Makefile unittest + + unittesttargets: +*************** +*** 1880,1885 **** +--- 1880,1886 ---- + + # Run individual test, assuming that Vim was already compiled. + test1 test2 test3 test4 test5 test6 test7 test8 test9 \ ++ test_options \ + test10 test11 test12 test13 test14 test15 test16 test17 test18 test19 \ + test20 test21 test22 test23 test24 test25 test26 test27 test28 test29 \ + test30 test31 test32 test33 test34 test35 test36 test37 test38 test39 \ +*************** +*** 1890,1896 **** + test80 test81 test82 test83 test84 test85 test86 test87 test88 test89 \ + test90 test91 test92 test93 test94 test95 test96 test97 test98 test99 \ + test100 test101 test102 test103 test104 test105 test106 test107: +! cd testdir; rm $@.out; $(MAKE) -f Makefile $@.out VIMPROG=../$(VIMTARGET) + + testclean: + cd testdir; $(MAKE) -f Makefile clean +--- 1891,1897 ---- + test80 test81 test82 test83 test84 test85 test86 test87 test88 test89 \ + test90 test91 test92 test93 test94 test95 test96 test97 test98 test99 \ + test100 test101 test102 test103 test104 test105 test106 test107: +! cd testdir; rm $@.out; $(MAKE) -f Makefile $@.out VIMPROG=../$(VIMTARGET) $(GUI_TESTARG) SCRIPTSOURCE=../$(SCRIPTSOURCE) + + testclean: + cd testdir; $(MAKE) -f Makefile clean +*** ../vim-7.4.230/src/testdir/Makefile 2014-03-12 19:41:37.100948866 +0100 +--- src/testdir/Makefile 2014-04-01 13:48:07.593090734 +0200 +*************** +*** 3,8 **** +--- 3,9 ---- + # + + VIMPROG = ../vim ++ SCRIPTSOURCE = ../../runtime + + # Uncomment this line to use valgrind for memory leaks and extra warnings. + # The output goes into a file "valgrind.testN" +*************** +*** 31,37 **** + test89.out test90.out test91.out test92.out test93.out \ + test94.out test95.out test96.out test97.out test98.out \ + test99.out test100.out test101.out test102.out test103.out \ +! test104.out test105.out test106.out + + SCRIPTS_GUI = test16.out + +--- 32,39 ---- + test89.out test90.out test91.out test92.out test93.out \ + test94.out test95.out test96.out test97.out test98.out \ + test99.out test100.out test101.out test102.out test103.out \ +! test104.out test105.out test106.out \ +! test_options.out + + SCRIPTS_GUI = test16.out + +*************** +*** 53,59 **** + + RM_ON_RUN = test.out X* viminfo + RM_ON_START = tiny.vim small.vim mbyte.vim mzscheme.vim lua.vim test.ok +! RUN_VIM = $(VALGRIND) $(VIMPROG) -u unix.vim -U NONE --noplugin -s dotest.in + + clean: + -rm -rf *.out *.failed *.rej *.orig test.log $(RM_ON_RUN) $(RM_ON_START) valgrind.* +--- 55,61 ---- + + RM_ON_RUN = test.out X* viminfo + RM_ON_START = tiny.vim small.vim mbyte.vim mzscheme.vim lua.vim test.ok +! RUN_VIM = export VIMRUNTIME=$(SCRIPTSOURCE); $(VALGRIND) $(VIMPROG) -u unix.vim -U NONE --noplugin -s dotest.in + + clean: + -rm -rf *.out *.failed *.rej *.orig test.log $(RM_ON_RUN) $(RM_ON_START) valgrind.* +*** ../vim-7.4.230/src/testdir/test_options.in 2014-04-01 14:07:21.057074867 +0200 +--- src/testdir/test_options.in 2014-04-01 13:19:34.073114305 +0200 +*************** +*** 0 **** +--- 1,17 ---- ++ Test for ":options". ++ ++ STARTTEST ++ :so small.vim ++ :let caught = 'ok' ++ :try ++ :options ++ :catch ++ :let caught = v:throwpoint . "\n" . v:exception ++ :endtry ++ :buf 1 ++ :$put =caught ++ :/^result/,$w! test.out ++ :qa! ++ ENDTEST ++ ++ result +*** ../vim-7.4.230/src/testdir/test_options.ok 2014-04-01 14:07:21.065074867 +0200 +--- src/testdir/test_options.ok 2014-04-01 13:04:45.041126534 +0200 +*************** +*** 0 **** +--- 1,2 ---- ++ result ++ ok +*** ../vim-7.4.230/src/testdir/Make_amiga.mak 2014-03-12 19:41:37.096948866 +0100 +--- src/testdir/Make_amiga.mak 2014-04-01 13:13:31.561119292 +0200 +*************** +*** 35,41 **** + test89.out test90.out test91.out test92.out test93.out \ + test94.out test95.out test96.out test97.out test98.out \ + test99.out test100.out test101.out test102.out test103.out \ +! test104.out test105.out test106.out + + .SUFFIXES: .in .out + +--- 35,42 ---- + test89.out test90.out test91.out test92.out test93.out \ + test94.out test95.out test96.out test97.out test98.out \ + test99.out test100.out test101.out test102.out test103.out \ +! test104.out test105.out test106.out \ +! test_options.out + + .SUFFIXES: .in .out + +*************** +*** 158,160 **** +--- 159,162 ---- + test104.out: test104.in + test105.out: test105.in + test106.out: test106.in ++ test_options.out: test_options.in +*** ../vim-7.4.230/src/testdir/Make_dos.mak 2014-03-12 19:41:37.096948866 +0100 +--- src/testdir/Make_dos.mak 2014-04-01 13:14:07.909118792 +0200 +*************** +*** 34,40 **** + test89.out test90.out test91.out test92.out test93.out \ + test94.out test95.out test96.out test98.out test99.out \ + test100.out test101.out test102.out test103.out test104.out \ +! test105.out test106.out + + SCRIPTS32 = test50.out test70.out + +--- 34,41 ---- + test89.out test90.out test91.out test92.out test93.out \ + test94.out test95.out test96.out test98.out test99.out \ + test100.out test101.out test102.out test103.out test104.out \ +! test105.out test106.out \ +! test_options.out + + SCRIPTS32 = test50.out test70.out + +*** ../vim-7.4.230/src/testdir/Make_ming.mak 2014-03-12 19:41:37.096948866 +0100 +--- src/testdir/Make_ming.mak 2014-04-01 13:14:23.889118572 +0200 +*************** +*** 54,60 **** + test89.out test90.out test91.out test92.out test93.out \ + test94.out test95.out test96.out test98.out test99.out \ + test100.out test101.out test102.out test103.out test104.out \ +! test105.out test106.out + + SCRIPTS32 = test50.out test70.out + +--- 54,61 ---- + test89.out test90.out test91.out test92.out test93.out \ + test94.out test95.out test96.out test98.out test99.out \ + test100.out test101.out test102.out test103.out test104.out \ +! test105.out test106.out \ +! test_options.out + + SCRIPTS32 = test50.out test70.out + +*** ../vim-7.4.230/src/testdir/Make_os2.mak 2014-03-12 19:41:37.096948866 +0100 +--- src/testdir/Make_os2.mak 2014-04-01 13:14:34.377118428 +0200 +*************** +*** 36,42 **** + test89.out test90.out test91.out test92.out test93.out \ + test94.out test95.out test96.out test98.out test99.out \ + test100.out test101.out test102.out test103.out test104.out \ +! test105.out test106.out + + .SUFFIXES: .in .out + +--- 36,43 ---- + test89.out test90.out test91.out test92.out test93.out \ + test94.out test95.out test96.out test98.out test99.out \ + test100.out test101.out test102.out test103.out test104.out \ +! test105.out test106.out \ +! test_options.out + + .SUFFIXES: .in .out + +*** ../vim-7.4.230/src/testdir/Make_vms.mms 2014-03-12 19:41:37.096948866 +0100 +--- src/testdir/Make_vms.mms 2014-04-01 13:14:47.821118243 +0200 +*************** +*** 95,101 **** + test90.out test91.out test92.out test93.out test94.out \ + test95.out test96.out test98.out test99.out \ + test100.out test101.out test103.out test104.out \ +! test105.out test106.out + + # Known problems: + # test17: ? +--- 95,102 ---- + test90.out test91.out test92.out test93.out test94.out \ + test95.out test96.out test98.out test99.out \ + test100.out test101.out test103.out test104.out \ +! test105.out test106.out \ +! test_options.out + + # Known problems: + # test17: ? +*** ../vim-7.4.230/src/version.c 2014-04-01 12:26:40.245157964 +0200 +--- src/version.c 2014-04-01 13:14:57.549118109 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 231, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +11. You find yourself typing "com" after every period when using a word + processor.com + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.232 b/SOURCES/7.4.232 new file mode 100644 index 0000000..3e2dfe2 --- /dev/null +++ b/SOURCES/7.4.232 @@ -0,0 +1,109 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.232 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.232 +Problem: ":%s/\n//" uses a lot of memory. (Aidan Marlin) +Solution: Turn this into a join command. (Christian Brabandt) +Files: src/ex_cmds.c, src/ex_docmd.c, src/proto/ex_docmd.pro + + +*** ../vim-7.4.231/src/ex_cmds.c 2014-03-23 15:12:29.919264336 +0100 +--- src/ex_cmds.c 2014-04-01 17:37:59.560901015 +0200 +*************** +*** 4420,4425 **** +--- 4420,4450 ---- + endcolumn = (curwin->w_curswant == MAXCOL); + } + ++ /* Recognize ":%s/\n//" and turn it into a join command, which is much ++ * more efficient. ++ * TODO: find a generic solution to make line-joining operations more ++ * efficient, avoid allocating a string that grows in size. ++ */ ++ if (STRCMP(pat, "\\n") == 0 && STRLEN(pat) == 2 ++ && *sub == NUL ++ && (*cmd == NUL || (cmd[1] == NUL && (*cmd == 'g' || *cmd == 'l' ++ || *cmd == 'p' || *cmd == '#')))) ++ { ++ curwin->w_cursor.lnum = eap->line1; ++ if (*cmd == 'l') ++ eap->flags = EXFLAG_LIST; ++ else if (*cmd == '#') ++ eap->flags = EXFLAG_NR; ++ else if (*cmd == 'p') ++ eap->flags = EXFLAG_PRINT; ++ ++ (void)do_join(eap->line2 - eap->line1 + 1, FALSE, TRUE, FALSE); ++ sub_nlines = sub_nsubs = eap->line2 - eap->line1 + 1; ++ (void)do_sub_msg(FALSE); ++ ex_may_print(eap); ++ return; ++ } ++ + /* + * Find trailing options. When '&' is used, keep old options. + */ +*** ../vim-7.4.231/src/ex_docmd.c 2014-03-25 13:03:44.937793766 +0100 +--- src/ex_docmd.c 2014-04-01 17:31:59.708905965 +0200 +*************** +*** 316,322 **** + static void ex_operators __ARGS((exarg_T *eap)); + static void ex_put __ARGS((exarg_T *eap)); + static void ex_copymove __ARGS((exarg_T *eap)); +- static void ex_may_print __ARGS((exarg_T *eap)); + static void ex_submagic __ARGS((exarg_T *eap)); + static void ex_join __ARGS((exarg_T *eap)); + static void ex_at __ARGS((exarg_T *eap)); +--- 316,321 ---- +*************** +*** 8683,8689 **** + /* + * Print the current line if flags were given to the Ex command. + */ +! static void + ex_may_print(eap) + exarg_T *eap; + { +--- 8682,8688 ---- + /* + * Print the current line if flags were given to the Ex command. + */ +! void + ex_may_print(eap) + exarg_T *eap; + { +*** ../vim-7.4.231/src/proto/ex_docmd.pro 2013-08-10 13:37:10.000000000 +0200 +--- src/proto/ex_docmd.pro 2014-04-01 17:31:59.708905965 +0200 +*************** +*** 54,57 **** +--- 54,58 ---- + int put_line __ARGS((FILE *fd, char *s)); + void dialog_msg __ARGS((char_u *buff, char *format, char_u *fname)); + char_u *get_behave_arg __ARGS((expand_T *xp, int idx)); ++ void ex_may_print __ARGS((exarg_T *eap)); + /* vim: set ft=c : */ +*** ../vim-7.4.231/src/version.c 2014-04-01 14:08:14.689074130 +0200 +--- src/version.c 2014-04-01 17:33:03.920905082 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 232, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +16. You step out of your room and realize that your parents have moved and + you don't have a clue when it happened. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.233 b/SOURCES/7.4.233 new file mode 100644 index 0000000..0ae1bca --- /dev/null +++ b/SOURCES/7.4.233 @@ -0,0 +1,80 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.233 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.233 +Problem: Escaping special characters for using "%" with a shell command is + inconsistant, parenthesis are escaped but spaces are not. +Solution: Only escape "!". (Gary Johnson) +Files: src/ex_docmd.c + + +*** ../vim-7.4.232/src/ex_docmd.c 2014-04-01 17:49:40.140891378 +0200 +--- src/ex_docmd.c 2014-04-01 18:26:16.036861171 +0200 +*************** +*** 4580,4604 **** + + /* For a shell command a '!' must be escaped. */ + if ((eap->usefilter || eap->cmdidx == CMD_bang) +! && vim_strpbrk(repl, (char_u *)"!&;()<>") != NULL) + { + char_u *l; + +! l = vim_strsave_escaped(repl, (char_u *)"!&;()<>"); + if (l != NULL) + { + vim_free(repl); + repl = l; +- /* For a sh-like shell escape "!" another time. */ +- if (strstr((char *)p_sh, "sh") != NULL) +- { +- l = vim_strsave_escaped(repl, (char_u *)"!"); +- if (l != NULL) +- { +- vim_free(repl); +- repl = l; +- } +- } + } + } + +--- 4580,4594 ---- + + /* For a shell command a '!' must be escaped. */ + if ((eap->usefilter || eap->cmdidx == CMD_bang) +! && vim_strpbrk(repl, (char_u *)"!") != NULL) + { + char_u *l; + +! l = vim_strsave_escaped(repl, (char_u *)"!"); + if (l != NULL) + { + vim_free(repl); + repl = l; + } + } + +*** ../vim-7.4.232/src/version.c 2014-04-01 17:49:40.144891378 +0200 +--- src/version.c 2014-04-01 18:54:13.276838100 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 233, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +17. You turn on your intercom when leaving the room so you can hear if new + e-mail arrives. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.234 b/SOURCES/7.4.234 new file mode 100644 index 0000000..d70b7a0 --- /dev/null +++ b/SOURCES/7.4.234 @@ -0,0 +1,95 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.234 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.234 +Problem: Can't get the command that was used to start Vim. +Solution: Add v:progpath. (Viktor Kojouharov) +Files: runtime/doc/eval.txt, src/eval.c, src/main.c, src/vim.h + + +*** ../vim-7.4.233/runtime/doc/eval.txt 2014-03-25 18:23:27.054087691 +0100 +--- runtime/doc/eval.txt 2014-04-01 19:33:25.516805743 +0200 +*************** +*** 1557,1562 **** +--- 1558,1569 ---- + |evim| etc., or any other name you might symlink to Vim. + Read-only. + ++ *v:progpath* *progpath-variable* ++ v:progpath Contains the command with which Vim was invoked, including the ++ path. Useful if you want to message a Vim server using a ++ |--remote-expr|. ++ Read-only. ++ + *v:register* *register-variable* + v:register The name of the register in effect for the current normal mode + command (regardless of whether that command actually used a +*** ../vim-7.4.233/src/eval.c 2014-03-30 16:49:06.412565288 +0200 +--- src/eval.c 2014-04-01 19:34:13.164805087 +0200 +*************** +*** 361,366 **** +--- 361,367 ---- + {VV_NAME("hlsearch", VAR_NUMBER), 0}, + {VV_NAME("oldfiles", VAR_LIST), 0}, + {VV_NAME("windowid", VAR_NUMBER), VV_RO}, ++ {VV_NAME("progpath", VAR_STRING), VV_RO}, + }; + + /* shorthand */ +*** ../vim-7.4.233/src/main.c 2014-03-23 15:12:29.923264336 +0100 +--- src/main.c 2014-04-01 19:34:13.164805087 +0200 +*************** +*** 1602,1607 **** +--- 1602,1608 ---- + + #ifdef FEAT_EVAL + set_vim_var_string(VV_PROGNAME, initstr, -1); ++ set_vim_var_string(VV_PROGPATH, (char_u *)parmp->argv[0], -1); + #endif + + if (TOLOWER_ASC(initstr[0]) == 'r') +*** ../vim-7.4.233/src/vim.h 2014-03-24 19:43:56.600837795 +0100 +--- src/vim.h 2014-04-01 19:34:13.164805087 +0200 +*************** +*** 1880,1886 **** + #define VV_HLSEARCH 54 + #define VV_OLDFILES 55 + #define VV_WINDOWID 56 +! #define VV_LEN 57 /* number of v: vars */ + + #ifdef FEAT_CLIPBOARD + +--- 1880,1887 ---- + #define VV_HLSEARCH 54 + #define VV_OLDFILES 55 + #define VV_WINDOWID 56 +! #define VV_PROGPATH 57 +! #define VV_LEN 58 /* number of v: vars */ + + #ifdef FEAT_CLIPBOARD + +*** ../vim-7.4.233/src/version.c 2014-04-01 18:54:44.316837673 +0200 +--- src/version.c 2014-04-01 19:28:05.092810150 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 234, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +18. Your wife drapes a blond wig over your monitor to remind you of what she + looks like. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.235 b/SOURCES/7.4.235 new file mode 100644 index 0000000..1f12ee7 --- /dev/null +++ b/SOURCES/7.4.235 @@ -0,0 +1,552 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.235 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.235 +Problem: It is not easy to get the full path of a command. +Solution: Add the exepath() function. +Files: src/eval.c, src/misc1.c, src/os_amiga.c, src/os_msdos.c, + src/os_unix.c, src/os_vms.c, src/os_win32.c, + src/proto/os_amiga.pro, src/proto/os_msdos.pro, + src/proto/os_unix.pro, src/proto/os_win32.pro, + runtime/doc/eval.txt + + +*** ../vim-7.4.234/src/eval.c 2014-04-01 19:55:46.252787300 +0200 +--- src/eval.c 2014-04-01 20:18:39.212768414 +0200 +*************** +*** 514,519 **** +--- 514,520 ---- + static void f_eval __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_eventhandler __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_executable __ARGS((typval_T *argvars, typval_T *rettv)); ++ static void f_exepath __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_exists __ARGS((typval_T *argvars, typval_T *rettv)); + #ifdef FEAT_FLOAT + static void f_exp __ARGS((typval_T *argvars, typval_T *rettv)); +*************** +*** 7920,7925 **** +--- 7921,7927 ---- + {"eval", 1, 1, f_eval}, + {"eventhandler", 0, 0, f_eventhandler}, + {"executable", 1, 1, f_executable}, ++ {"exepath", 1, 1, f_exepath}, + {"exists", 1, 1, f_exists}, + #ifdef FEAT_FLOAT + {"exp", 1, 1, f_exp}, +*************** +*** 10046,10052 **** + typval_T *argvars; + typval_T *rettv; + { +! rettv->vval.v_number = mch_can_exe(get_tv_string(&argvars[0])); + } + + /* +--- 10048,10069 ---- + typval_T *argvars; + typval_T *rettv; + { +! rettv->vval.v_number = mch_can_exe(get_tv_string(&argvars[0]), NULL); +! } +! +! /* +! * "exepath()" function +! */ +! static void +! f_exepath(argvars, rettv) +! typval_T *argvars; +! typval_T *rettv; +! { +! char_u *p = NULL; +! +! (void)mch_can_exe(get_tv_string(&argvars[0]), &p); +! rettv->v_type = VAR_STRING; +! rettv->vval.v_string = p; + } + + /* +*** ../vim-7.4.234/src/misc1.c 2014-03-12 18:55:52.100906804 +0100 +--- src/misc1.c 2014-04-01 20:01:08.752782864 +0200 +*************** +*** 10728,10734 **** + return; + + /* If the file isn't executable, may not add it. Do accept directories. */ +! if (!isdir && (flags & EW_EXEC) && !mch_can_exe(f)) + return; + + /* Make room for another item in the file list. */ +--- 10728,10734 ---- + return; + + /* If the file isn't executable, may not add it. Do accept directories. */ +! if (!isdir && (flags & EW_EXEC) && !mch_can_exe(f, NULL)) + return; + + /* Make room for another item in the file list. */ +*** ../vim-7.4.234/src/os_amiga.c 2013-05-06 04:06:04.000000000 +0200 +--- src/os_amiga.c 2014-04-01 20:19:50.804767429 +0200 +*************** +*** 884,891 **** + * Return -1 if unknown. + */ + int +! mch_can_exe(name) + char_u *name; + { + /* TODO */ + return -1; +--- 884,892 ---- + * Return -1 if unknown. + */ + int +! mch_can_exe(name, path) + char_u *name; ++ char_u **path; + { + /* TODO */ + return -1; +*** ../vim-7.4.234/src/os_msdos.c 2014-03-23 15:12:29.931264336 +0100 +--- src/os_msdos.c 2014-04-01 20:02:39.996781608 +0200 +*************** +*** 2945,2958 **** + * Return -1 if unknown. + */ + int +! mch_can_exe(name) + char_u *name; + { + char *p; + + p = searchpath(name); + if (p == NULL || mch_isdir(p)) + return FALSE; + return TRUE; + } + +--- 2945,2961 ---- + * Return -1 if unknown. + */ + int +! mch_can_exe(name, path) + char_u *name; ++ char_u **path; + { + char *p; + + p = searchpath(name); + if (p == NULL || mch_isdir(p)) + return FALSE; ++ if (path != NULL) ++ *path = vim_strsave(p); + return TRUE; + } + +*** ../vim-7.4.234/src/os_unix.c 2014-03-12 16:51:35.060792541 +0100 +--- src/os_unix.c 2014-04-01 20:46:21.304745550 +0200 +*************** +*** 2992,2999 **** + * Return -1 if unknown. + */ + int +! mch_can_exe(name) + char_u *name; + { + char_u *buf; + char_u *p, *e; +--- 2992,3000 ---- + * Return -1 if unknown. + */ + int +! mch_can_exe(name, path) + char_u *name; ++ char_u **path; + { + char_u *buf; + char_u *p, *e; +*************** +*** 3003,3009 **** + if (mch_isFullName(name) || (name[0] == '.' && (name[1] == '/' + || (name[1] == '.' && name[2] == '/')))) + { +! return executable_file(name); + } + + p = (char_u *)getenv("PATH"); +--- 3004,3021 ---- + if (mch_isFullName(name) || (name[0] == '.' && (name[1] == '/' + || (name[1] == '.' && name[2] == '/')))) + { +! if (executable_file(name)) +! { +! if (path != NULL) +! { +! if (name[0] == '.') +! *path = FullName_save(name, TRUE); +! else +! *path = vim_strsave(name); +! } +! return TRUE; +! } +! return FALSE; + } + + p = (char_u *)getenv("PATH"); +*************** +*** 3032,3038 **** +--- 3044,3059 ---- + STRCAT(buf, name); + retval = executable_file(buf); + if (retval == 1) ++ { ++ if (path != NULL) ++ { ++ if (buf[0] == '.') ++ *path = FullName_save(buf, TRUE); ++ else ++ *path = vim_strsave(buf); ++ } + break; ++ } + + if (*e != ':') + break; +*************** +*** 5592,5598 **** + continue; + + /* Skip files that are not executable if we check for that. */ +! if (!dir && (flags & EW_EXEC) && !mch_can_exe(p)) + continue; + + if (--files_free == 0) +--- 5613,5619 ---- + continue; + + /* Skip files that are not executable if we check for that. */ +! if (!dir && (flags & EW_EXEC) && !mch_can_exe(p, NULL)) + continue; + + if (--files_free == 0) +*************** +*** 6090,6096 **** + continue; + + /* Skip files that are not executable if we check for that. */ +! if (!dir && (flags & EW_EXEC) && !mch_can_exe((*file)[i])) + continue; + + p = alloc((unsigned)(STRLEN((*file)[i]) + 1 + dir)); +--- 6111,6117 ---- + continue; + + /* Skip files that are not executable if we check for that. */ +! if (!dir && (flags & EW_EXEC) && !mch_can_exe((*file)[i], NULL)) + continue; + + p = alloc((unsigned)(STRLEN((*file)[i]) + 1 + dir)); +*************** +*** 6317,6323 **** + + /* Reads gpm event and adds special keys to input buf. Returns length of + * generated key sequence. +! * This function is made after gui_send_mouse_event + */ + static int + mch_gpm_process() +--- 6338,6344 ---- + + /* Reads gpm event and adds special keys to input buf. Returns length of + * generated key sequence. +! * This function is styled after gui_send_mouse_event(). + */ + static int + mch_gpm_process() +*** ../vim-7.4.234/src/os_vms.c 2014-03-12 16:51:35.060792541 +0100 +--- src/os_vms.c 2014-04-01 20:05:52.960778954 +0200 +*************** +*** 483,489 **** + continue; + + /* Skip files that are not executable if we check for that. */ +! if (!dir && (flags & EW_EXEC) && !mch_can_exe(vms_fmatch[i])) + continue; + + /* allocate memory for pointers */ +--- 483,489 ---- + continue; + + /* Skip files that are not executable if we check for that. */ +! if (!dir && (flags & EW_EXEC) && !mch_can_exe(vms_fmatch[i], NULL)) + continue; + + /* allocate memory for pointers */ +*** ../vim-7.4.234/src/os_win32.c 2014-02-11 17:05:57.282217857 +0100 +--- src/os_win32.c 2014-04-01 20:26:07.432762248 +0200 +*************** +*** 1882,1888 **** + * TODO: Should somehow check if it's really executable. + */ + static int +! executable_exists(char *name) + { + char *dum; + char fname[_MAX_PATH]; +--- 1882,1888 ---- + * TODO: Should somehow check if it's really executable. + */ + static int +! executable_exists(char *name, char_u **path) + { + char *dum; + char fname[_MAX_PATH]; +*************** +*** 1905,1910 **** +--- 1905,1912 ---- + return FALSE; + if (GetFileAttributesW(fnamew) & FILE_ATTRIBUTE_DIRECTORY) + return FALSE; ++ if (path != NULL) ++ *path = utf16_to_enc(fnamew, NULL); + return TRUE; + } + /* Retry with non-wide function (for Windows 98). */ +*************** +*** 1915,1920 **** +--- 1917,1924 ---- + return FALSE; + if (mch_isdir(fname)) + return FALSE; ++ if (path != NULL) ++ *path = vim_strsave(fname); + return TRUE; + } + +*************** +*** 1996,2002 **** + vimrun_path = (char *)vim_strsave(vimrun_location); + s_dont_use_vimrun = FALSE; + } +! else if (executable_exists("vimrun.exe")) + s_dont_use_vimrun = FALSE; + + /* Don't give the warning for a missing vimrun.exe right now, but only +--- 2000,2006 ---- + vimrun_path = (char *)vim_strsave(vimrun_location); + s_dont_use_vimrun = FALSE; + } +! else if (executable_exists("vimrun.exe", NULL)) + s_dont_use_vimrun = FALSE; + + /* Don't give the warning for a missing vimrun.exe right now, but only +*************** +*** 2010,2016 **** + * If "finstr.exe" doesn't exist, use "grep -n" for 'grepprg'. + * Otherwise the default "findstr /n" is used. + */ +! if (!executable_exists("findstr.exe")) + set_option_value((char_u *)"grepprg", 0, (char_u *)"grep -n", 0); + + #ifdef FEAT_CLIPBOARD +--- 2014,2020 ---- + * If "finstr.exe" doesn't exist, use "grep -n" for 'grepprg'. + * Otherwise the default "findstr /n" is used. + */ +! if (!executable_exists("findstr.exe", NULL)) + set_option_value((char_u *)"grepprg", 0, (char_u *)"grep -n", 0); + + #ifdef FEAT_CLIPBOARD +*************** +*** 3330,3336 **** + * Return -1 if unknown. + */ + int +! mch_can_exe(char_u *name) + { + char_u buf[_MAX_PATH]; + int len = (int)STRLEN(name); +--- 3334,3340 ---- + * Return -1 if unknown. + */ + int +! mch_can_exe(char_u *name, char_u **path) + { + char_u buf[_MAX_PATH]; + int len = (int)STRLEN(name); +*************** +*** 3343,3349 **** + * this with a Unix-shell like 'shell'. */ + if (vim_strchr(gettail(name), '.') != NULL + || strstr((char *)gettail(p_sh), "sh") != NULL) +! if (executable_exists((char *)name)) + return TRUE; + + /* +--- 3347,3353 ---- + * this with a Unix-shell like 'shell'. */ + if (vim_strchr(gettail(name), '.') != NULL + || strstr((char *)gettail(p_sh), "sh") != NULL) +! if (executable_exists((char *)name, path)) + return TRUE; + + /* +*************** +*** 3365,3371 **** + } + else + copy_option_part(&p, buf + len, _MAX_PATH - len, ";"); +! if (executable_exists((char *)buf)) + return TRUE; + } + return FALSE; +--- 3369,3375 ---- + } + else + copy_option_part(&p, buf + len, _MAX_PATH - len, ";"); +! if (executable_exists((char *)buf, path)) + return TRUE; + } + return FALSE; +*** ../vim-7.4.234/src/proto/os_amiga.pro 2013-08-10 13:37:37.000000000 +0200 +--- src/proto/os_amiga.pro 2014-04-01 20:41:23.672749644 +0200 +*************** +*** 26,32 **** + void mch_hide __ARGS((char_u *name)); + int mch_isdir __ARGS((char_u *name)); + int mch_mkdir __ARGS((char_u *name)); +! int mch_can_exe __ARGS((char_u *name)); + int mch_nodetype __ARGS((char_u *name)); + void mch_early_init __ARGS((void)); + void mch_exit __ARGS((int r)); +--- 26,32 ---- + void mch_hide __ARGS((char_u *name)); + int mch_isdir __ARGS((char_u *name)); + int mch_mkdir __ARGS((char_u *name)); +! int mch_can_exe __ARGS((char_u *name, char_u **path)); + int mch_nodetype __ARGS((char_u *name)); + void mch_early_init __ARGS((void)); + void mch_exit __ARGS((int r)); +*** ../vim-7.4.234/src/proto/os_msdos.pro 2013-08-10 13:37:37.000000000 +0200 +--- src/proto/os_msdos.pro 2014-04-01 20:41:32.432749524 +0200 +*************** +*** 38,44 **** + int mch_setperm __ARGS((char_u *name, long perm)); + void mch_hide __ARGS((char_u *name)); + int mch_isdir __ARGS((char_u *name)); +! int mch_can_exe __ARGS((char_u *name)); + int mch_nodetype __ARGS((char_u *name)); + int mch_dirname __ARGS((char_u *buf, int len)); + int mch_remove __ARGS((char_u *name)); +--- 38,44 ---- + int mch_setperm __ARGS((char_u *name, long perm)); + void mch_hide __ARGS((char_u *name)); + int mch_isdir __ARGS((char_u *name)); +! int mch_can_exe __ARGS((char_u *name, char_u **path)); + int mch_nodetype __ARGS((char_u *name)); + int mch_dirname __ARGS((char_u *buf, int len)); + int mch_remove __ARGS((char_u *name)); +*** ../vim-7.4.234/src/proto/os_unix.pro 2013-08-10 13:37:23.000000000 +0200 +--- src/proto/os_unix.pro 2014-04-01 20:41:58.712749162 +0200 +*************** +*** 42,48 **** + void mch_free_acl __ARGS((vim_acl_T aclent)); + void mch_hide __ARGS((char_u *name)); + int mch_isdir __ARGS((char_u *name)); +! int mch_can_exe __ARGS((char_u *name)); + int mch_nodetype __ARGS((char_u *name)); + void mch_early_init __ARGS((void)); + void mch_free_mem __ARGS((void)); +--- 42,48 ---- + void mch_free_acl __ARGS((vim_acl_T aclent)); + void mch_hide __ARGS((char_u *name)); + int mch_isdir __ARGS((char_u *name)); +! int mch_can_exe __ARGS((char_u *name, char_u **path)); + int mch_nodetype __ARGS((char_u *name)); + void mch_early_init __ARGS((void)); + void mch_free_mem __ARGS((void)); +*** ../vim-7.4.234/src/proto/os_win32.pro 2013-08-10 13:37:38.000000000 +0200 +--- src/proto/os_win32.pro 2014-04-01 20:42:16.992748911 +0200 +*************** +*** 26,32 **** + int mch_is_linked __ARGS((char_u *fname)); + int win32_fileinfo __ARGS((char_u *fname, BY_HANDLE_FILE_INFORMATION *info)); + int mch_writable __ARGS((char_u *name)); +! int mch_can_exe __ARGS((char_u *name)); + int mch_nodetype __ARGS((char_u *name)); + vim_acl_T mch_get_acl __ARGS((char_u *fname)); + void mch_set_acl __ARGS((char_u *fname, vim_acl_T acl)); +--- 26,32 ---- + int mch_is_linked __ARGS((char_u *fname)); + int win32_fileinfo __ARGS((char_u *fname, BY_HANDLE_FILE_INFORMATION *info)); + int mch_writable __ARGS((char_u *name)); +! int mch_can_exe __ARGS((char_u *name, char_u **path)); + int mch_nodetype __ARGS((char_u *name)); + vim_acl_T mch_get_acl __ARGS((char_u *fname)); + void mch_set_acl __ARGS((char_u *fname, vim_acl_T acl)); +*** ../vim-7.4.234/runtime/doc/eval.txt 2014-04-01 19:55:46.244787300 +0200 +--- runtime/doc/eval.txt 2014-04-01 20:54:37.832738720 +0200 +*************** +*** 1561,1566 **** +--- 1562,1571 ---- + v:progpath Contains the command with which Vim was invoked, including the + path. Useful if you want to message a Vim server using a + |--remote-expr|. ++ To get the full path use: > ++ echo exepath(v:progpath) ++ < NOTE: This does not work when the command is a relative path ++ and the current directory has changed. + Read-only. + + *v:register* *register-variable* +*************** +*** 1761,1766 **** +--- 1766,1772 ---- + eval( {string}) any evaluate {string} into its value + eventhandler( ) Number TRUE if inside an event handler + executable( {expr}) Number 1 if executable {expr} exists ++ exepath( {expr}) String full path of the command {expr} + exists( {expr}) Number TRUE if {expr} exists + extend( {expr1}, {expr2} [, {expr3}]) + List/Dict insert items of {expr2} into {expr1} +*************** +*** 2705,2710 **** +--- 2711,2725 ---- + 0 does not exist + -1 not implemented on this system + ++ exepath({expr}) *exepath()* ++ If {expr} is an executable and is either an absolute path, a ++ relative path or found in $PATH, return the full path. ++ Note that the current directory is used when {expr} starts ++ with "./", which may be a problem for Vim: > ++ echo exepath(v:progpath) ++ < If {expr} cannot be found in $PATH or is not executable then ++ an empty string is returned. ++ + *exists()* + exists({expr}) The result is a Number, which is non-zero if {expr} is + defined, zero otherwise. The {expr} argument is a string, +*** ../vim-7.4.234/src/version.c 2014-04-01 19:55:46.252787300 +0200 +--- src/version.c 2014-04-01 20:00:44.108783203 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 235, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +19. All of your friends have an @ in their names. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.236 b/SOURCES/7.4.236 new file mode 100644 index 0000000..927b043 --- /dev/null +++ b/SOURCES/7.4.236 @@ -0,0 +1,159 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.236 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.236 +Problem: It's not that easy to check the Vim patch version. +Solution: Make has("patch-7.4.123") work. (partly by Marc Weber) +Files: runtime/doc/eval.txt, src/eval.c, src/testdir/test60.in, + src/testdir/test60.ok + + +*** ../vim-7.4.235/runtime/doc/eval.txt 2014-04-01 21:00:45.440733663 +0200 +--- runtime/doc/eval.txt 2014-04-01 21:19:52.232717888 +0200 +*************** +*** 6395,6407 **** + Example: > + :if has("gui_running") + < *has-patch* +! 3. Included patches. First check |v:version| for the version of Vim. +! Then the "patch123" feature means that patch 123 has been included for +! this version. Example (checking version 6.2.148 or later): > + :if v:version > 602 || v:version == 602 && has("patch148") +! < Note that it's possible for patch 147 to be omitted even though 148 is + included. + + all_builtin_terms Compiled with all builtin terminals enabled. + amiga Amiga version of Vim. + arabic Compiled with Arabic support |Arabic|. +--- 6408,6430 ---- + Example: > + :if has("gui_running") + < *has-patch* +! 3. Included patches. The "patch123" feature means that patch 123 has been +! included. Note that this form does not check the version of Vim, you need +! to inspect |v:version| for that: +! Example (checking version 6.2.148 or later): > + :if v:version > 602 || v:version == 602 && has("patch148") +! < Note that it's possible for patch 147 to be omitted even though 148 is + included. + ++ 4. Beyond a certain patch level. The "patch-7.4.123" feature means that ++ the Vim version is 7.4 and patch 123 or later was included, or the Vim ++ version is later than 7.4. ++ The example above can be simplified to: > ++ :if has("patch-6.2.148") ++ < Note that this does not check if the patch was actually included, some ++ patches may have been skipped. That is unusual though. ++ ++ acl Compiled with |ACL| support. + all_builtin_terms Compiled with all builtin terminals enabled. + amiga Amiga version of Vim. + arabic Compiled with Arabic support |Arabic|. +*** ../vim-7.4.235/src/eval.c 2014-04-01 21:00:45.428733664 +0200 +--- src/eval.c 2014-04-01 21:50:59.084692208 +0200 +*************** +*** 12638,12644 **** + if (n == FALSE) + { + if (STRNICMP(name, "patch", 5) == 0) +! n = has_patch(atoi((char *)name + 5)); + else if (STRICMP(name, "vim_starting") == 0) + n = (starting != 0); + #ifdef FEAT_MBYTE +--- 12638,12664 ---- + if (n == FALSE) + { + if (STRNICMP(name, "patch", 5) == 0) +! { +! if (name[5] == '-' +! && STRLEN(name) > 11 +! && vim_isdigit(name[6]) +! && vim_isdigit(name[8]) +! && vim_isdigit(name[10])) +! { +! int major = atoi((char *)name + 6); +! int minor = atoi((char *)name + 8); +! int patch = atoi((char *)name + 10); +! +! /* Expect "patch-9.9.01234". */ +! n = (major < VIM_VERSION_MAJOR +! || (major == VIM_VERSION_MAJOR +! && (minor < VIM_VERSION_MINOR +! || (minor == VIM_VERSION_MINOR +! && patch <= highest_patch())))); +! } +! else +! n = has_patch(atoi((char *)name + 5)); +! } + else if (STRICMP(name, "vim_starting") == 0) + n = (starting != 0); + #ifdef FEAT_MBYTE +*** ../vim-7.4.235/src/testdir/test60.in 2014-01-14 15:24:24.000000000 +0100 +--- src/testdir/test60.in 2014-04-01 22:01:40.256683388 +0200 +*************** +*** 1,4 **** +! Tests for the exists() function. vim: set ft=vim ts=8 : + + STARTTEST + :so small.vim +--- 1,4 ---- +! Tests for the exists() and has() functions. vim: set ft=vim ts=8 sw=2 : + + STARTTEST + :so small.vim +*************** +*** 588,593 **** +--- 588,603 ---- + redir END + endfunction + :call TestExists() ++ :" ++ :function TestHas() ++ redir >> test.out ++ for pl in ['6.9.999', '7.1.999', '7.4.123', '9.1.0', '9.9.1'] ++ echo 'has patch ' . pl . ': ' . has('patch-' . pl) ++ endfor ++ redir END ++ endfunc ++ :call TestHas() ++ :" + :delfunc TestExists + :delfunc RunTest + :delfunc TestFuncArg +*** ../vim-7.4.235/src/testdir/test60.ok 2014-01-14 15:24:24.000000000 +0100 +--- src/testdir/test60.ok 2014-04-01 22:01:46.664683300 +0200 +*************** +*** 204,206 **** +--- 204,211 ---- + g:footest#x = 1 + footest#F() 0 + UndefFun() 0 ++ has patch 6.9.999: 1 ++ has patch 7.1.999: 1 ++ has patch 7.4.123: 1 ++ has patch 9.1.0: 0 ++ has patch 9.9.1: 0 +*** ../vim-7.4.235/src/version.c 2014-04-01 21:00:45.440733663 +0200 +--- src/version.c 2014-04-01 21:22:27.964715746 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 236, + /**/ + +-- +When a fly lands on the ceiling, does it do a half roll or +a half loop? + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.237 b/SOURCES/7.4.237 new file mode 100644 index 0000000..02f9405 --- /dev/null +++ b/SOURCES/7.4.237 @@ -0,0 +1,127 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.237 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.237 (after 7.4.236) +Problem: When some patches was not included has("patch-7.4.123") may return + true falsely. +Solution: Check for the specific patch number. +Files: runtime/doc/eval.txt, src/eval.c + + +*** ../vim-7.4.236/runtime/doc/eval.txt 2014-04-01 22:08:51.008677463 +0200 +--- runtime/doc/eval.txt 2014-04-02 12:09:35.991983552 +0200 +*************** +*** 1681,1687 **** + is 501. Read-only. "version" also works, for backwards + compatibility. + Use |has()| to check if a certain patch was included, e.g.: > +! if has("patch123") + < Note that patch numbers are specific to the version, thus both + version 5.0 and 5.1 may have a patch 123, but these are + completely different. +--- 1682,1688 ---- + is 501. Read-only. "version" also works, for backwards + compatibility. + Use |has()| to check if a certain patch was included, e.g.: > +! if has("patch-7.4.123") + < Note that patch numbers are specific to the version, thus both + version 5.0 and 5.1 may have a patch 123, but these are + completely different. +*************** +*** 6397,6415 **** + < *has-patch* + 3. Included patches. The "patch123" feature means that patch 123 has been + included. Note that this form does not check the version of Vim, you need +! to inspect |v:version| for that: + Example (checking version 6.2.148 or later): > + :if v:version > 602 || v:version == 602 && has("patch148") + < Note that it's possible for patch 147 to be omitted even though 148 is + included. + +! 4. Beyond a certain patch level. The "patch-7.4.123" feature means that +! the Vim version is 7.4 and patch 123 or later was included, or the Vim +! version is later than 7.4. + The example above can be simplified to: > + :if has("patch-6.2.148") +! < Note that this does not check if the patch was actually included, some +! patches may have been skipped. That is unusual though. + + acl Compiled with |ACL| support. + all_builtin_terms Compiled with all builtin terminals enabled. +--- 6410,6428 ---- + < *has-patch* + 3. Included patches. The "patch123" feature means that patch 123 has been + included. Note that this form does not check the version of Vim, you need +! to inspect |v:version| for that. + Example (checking version 6.2.148 or later): > + :if v:version > 602 || v:version == 602 && has("patch148") + < Note that it's possible for patch 147 to be omitted even though 148 is + included. + +! 4. Beyond a certain version or at a certain version and including a specific +! patch. The "patch-7.4.123" feature means that the Vim version is 7.5 or +! later, or it is version 7.4 and patch 123 was included. + The example above can be simplified to: > + :if has("patch-6.2.148") +! < Note that it's possible for patch 147 to be omitted even though 148 is +! included. + + acl Compiled with |ACL| support. + all_builtin_terms Compiled with all builtin terminals enabled. +*** ../vim-7.4.236/src/eval.c 2014-04-01 22:08:51.016677463 +0200 +--- src/eval.c 2014-04-02 12:04:41.179987607 +0200 +*************** +*** 12647,12660 **** + { + int major = atoi((char *)name + 6); + int minor = atoi((char *)name + 8); +- int patch = atoi((char *)name + 10); + + /* Expect "patch-9.9.01234". */ + n = (major < VIM_VERSION_MAJOR + || (major == VIM_VERSION_MAJOR + && (minor < VIM_VERSION_MINOR + || (minor == VIM_VERSION_MINOR +! && patch <= highest_patch())))); + } + else + n = has_patch(atoi((char *)name + 5)); +--- 12647,12659 ---- + { + int major = atoi((char *)name + 6); + int minor = atoi((char *)name + 8); + + /* Expect "patch-9.9.01234". */ + n = (major < VIM_VERSION_MAJOR + || (major == VIM_VERSION_MAJOR + && (minor < VIM_VERSION_MINOR + || (minor == VIM_VERSION_MINOR +! && has_patch(atoi((char *)name + 10)))))); + } + else + n = has_patch(atoi((char *)name + 5)); +*** ../vim-7.4.236/src/version.c 2014-04-01 22:08:51.016677463 +0200 +--- src/version.c 2014-04-02 12:10:48.911982549 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 237, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +22. You've already visited all the links at Yahoo and you're halfway through + Lycos. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.238 b/SOURCES/7.4.238 new file mode 100644 index 0000000..bec9098 --- /dev/null +++ b/SOURCES/7.4.238 @@ -0,0 +1,505 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.238 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.238 +Problem: Vim does not support the smack library. +Solution: Add smack support (Jose Bollo) +Files: src/config.h.in, src/configure.in, src/fileio.c, src/memfile.c, + src/os_unix.c, src/undo.c, src/auto/configure + + +*** ../vim-7.4.237/src/config.h.in 2014-02-23 22:52:33.364764715 +0100 +--- src/config.h.in 2014-04-02 13:37:41.095910851 +0200 +*************** +*** 191,196 **** +--- 191,197 ---- + #undef HAVE_SIGSETJMP + #undef HAVE_SIGSTACK + #undef HAVE_SIGVEC ++ #undef HAVE_SMACK + #undef HAVE_STRCASECMP + #undef HAVE_STRERROR + #undef HAVE_STRFTIME +*** ../vim-7.4.237/src/configure.in 2014-03-27 18:51:06.604760919 +0100 +--- src/configure.in 2014-04-02 13:49:36.955901004 +0200 +*************** +*** 387,406 **** + AC_SUBST(QUOTESED) + + +! dnl Link with -lselinux for SELinux stuff; if not found +! AC_MSG_CHECKING(--disable-selinux argument) +! AC_ARG_ENABLE(selinux, +! [ --disable-selinux Don't check for SELinux support.], +! , enable_selinux="yes") +! if test "$enable_selinux" = "yes"; then + AC_MSG_RESULT(no) +! AC_CHECK_LIB(selinux, is_selinux_enabled, +! [LIBS="$LIBS -lselinux" +! AC_DEFINE(HAVE_SELINUX)]) + else + AC_MSG_RESULT(yes) + fi + + dnl Check user requested features. + + AC_MSG_CHECKING(--with-features argument) +--- 387,427 ---- + AC_SUBST(QUOTESED) + + +! dnl Link with -lsmack for Smack stuff; if not found +! AC_MSG_CHECKING(--disable-smack argument) +! AC_ARG_ENABLE(smack, +! [ --disable-smack Do not check for Smack support.], +! , enable_smack="yes") +! if test "$enable_smack" = "yes"; then +! AC_CHECK_HEADER([linux/xattr.h], true, enable_smack="no") +! fi +! if test "$enable_smack" = "yes"; then + AC_MSG_RESULT(no) +! AC_CHECK_LIB(attr, llistxattr, +! [LIBS="$LIBS -lattr" +! found_smack="yes" +! AC_DEFINE(HAVE_SMACK)]) + else + AC_MSG_RESULT(yes) + fi + ++ dnl When smack was found don't search for SELinux ++ if test "x$found_smack" = "x"; then ++ dnl Link with -lselinux for SELinux stuff; if not found ++ AC_MSG_CHECKING(--disable-selinux argument) ++ AC_ARG_ENABLE(selinux, ++ [ --disable-selinux Do not check for SELinux support.], ++ , enable_selinux="yes") ++ if test "$enable_selinux" = "yes"; then ++ AC_MSG_RESULT(no) ++ AC_CHECK_LIB(selinux, is_selinux_enabled, ++ [LIBS="$LIBS -lselinux" ++ AC_DEFINE(HAVE_SELINUX)]) ++ else ++ AC_MSG_RESULT(yes) ++ fi ++ fi ++ + dnl Check user requested features. + + AC_MSG_CHECKING(--with-features argument) +*** ../vim-7.4.237/src/fileio.c 2014-03-12 16:51:35.056792541 +0100 +--- src/fileio.c 2014-04-02 13:39:28.983909367 +0200 +*************** +*** 4030,4036 **** + ) + mch_setperm(backup, + (perm & 0707) | ((perm & 07) << 3)); +! # ifdef HAVE_SELINUX + mch_copy_sec(fname, backup); + # endif + #endif +--- 4030,4036 ---- + ) + mch_setperm(backup, + (perm & 0707) | ((perm & 07) << 3)); +! # if defined(HAVE_SELINUX) || defined(HAVE_SMACK) + mch_copy_sec(fname, backup); + # endif + #endif +*************** +*** 4069,4075 **** + #ifdef HAVE_ACL + mch_set_acl(backup, acl); + #endif +! #ifdef HAVE_SELINUX + mch_copy_sec(fname, backup); + #endif + break; +--- 4069,4075 ---- + #ifdef HAVE_ACL + mch_set_acl(backup, acl); + #endif +! #if defined(HAVE_SELINUX) || defined(HAVE_SMACK) + mch_copy_sec(fname, backup); + #endif + break; +*************** +*** 4718,4724 **** + } + #endif + +! #ifdef HAVE_SELINUX + /* Probably need to set the security context. */ + if (!backup_copy) + mch_copy_sec(backup, wfname); +--- 4718,4724 ---- + } + #endif + +! #if defined(HAVE_SELINUX) || defined(HAVE_SMACK) + /* Probably need to set the security context. */ + if (!backup_copy) + mch_copy_sec(backup, wfname); +*************** +*** 6707,6713 **** + mch_set_acl(to, acl); + mch_free_acl(acl); + #endif +! #ifdef HAVE_SELINUX + mch_copy_sec(from, to); + #endif + if (errmsg != NULL) +--- 6707,6713 ---- + mch_set_acl(to, acl); + mch_free_acl(acl); + #endif +! #if defined(HAVE_SELINUX) || defined(HAVE_SMACK) + mch_copy_sec(from, to); + #endif + if (errmsg != NULL) +*** ../vim-7.4.237/src/memfile.c 2013-05-23 22:22:22.000000000 +0200 +--- src/memfile.c 2014-04-02 13:37:41.103910851 +0200 +*************** +*** 1358,1364 **** + if (fdflags >= 0 && (fdflags & FD_CLOEXEC) == 0) + fcntl(mfp->mf_fd, F_SETFD, fdflags | FD_CLOEXEC); + #endif +! #ifdef HAVE_SELINUX + mch_copy_sec(fname, mfp->mf_fname); + #endif + mch_hide(mfp->mf_fname); /* try setting the 'hidden' flag */ +--- 1358,1364 ---- + if (fdflags >= 0 && (fdflags & FD_CLOEXEC) == 0) + fcntl(mfp->mf_fd, F_SETFD, fdflags | FD_CLOEXEC); + #endif +! #if defined(HAVE_SELINUX) || defined(HAVE_SMACK) + mch_copy_sec(fname, mfp->mf_fname); + #endif + mch_hide(mfp->mf_fname); /* try setting the 'hidden' flag */ +*** ../vim-7.4.237/src/os_unix.c 2014-04-01 21:00:45.436733663 +0200 +--- src/os_unix.c 2014-04-02 13:58:55.427893322 +0200 +*************** +*** 46,51 **** +--- 46,59 ---- + static int selinux_enabled = -1; + #endif + ++ #ifdef HAVE_SMACK ++ # include <attr/xattr.h> ++ # include <linux/xattr.h> ++ # ifndef SMACK_LABEL_LEN ++ # define SMACK_LABEL_LEN 1024 ++ # endif ++ #endif ++ + /* + * Use this prototype for select, some include files have a wrong prototype + */ +*************** +*** 2798,2803 **** +--- 2806,2895 ---- + } + #endif /* HAVE_SELINUX */ + ++ #if defined(HAVE_SMACK) && !defined(PROTO) ++ /* ++ * Copy security info from "from_file" to "to_file". ++ */ ++ void ++ mch_copy_sec(from_file, to_file) ++ char_u *from_file; ++ char_u *to_file; ++ { ++ static const char const *smack_copied_attributes[] = ++ { ++ XATTR_NAME_SMACK, ++ XATTR_NAME_SMACKEXEC, ++ XATTR_NAME_SMACKMMAP ++ }; ++ ++ char buffer[SMACK_LABEL_LEN]; ++ const char *name; ++ int index; ++ int ret; ++ ssize_t size; ++ ++ if (from_file == NULL) ++ return; ++ ++ for (index = 0 ; index < (int)(sizeof(smack_copied_attributes) ++ / sizeof(smack_copied_attributes)[0]) ; index++) ++ { ++ /* get the name of the attribute to copy */ ++ name = smack_copied_attributes[index]; ++ ++ /* get the value of the attribute in buffer */ ++ size = getxattr((char*)from_file, name, buffer, sizeof(buffer)); ++ if (size >= 0) ++ { ++ /* copy the attribute value of buffer */ ++ ret = setxattr((char*)to_file, name, buffer, (size_t)size, 0); ++ if (ret < 0) ++ { ++ MSG_PUTS(_("Could not set security context ")); ++ MSG_PUTS(name); ++ MSG_PUTS(_(" for ")); ++ msg_outtrans(to_file); ++ msg_putchar('\n'); ++ } ++ } ++ else ++ { ++ /* what reason of not having the attribute value? */ ++ switch (errno) ++ { ++ case ENOTSUP: ++ /* extended attributes aren't supported or enabled */ ++ /* should a message be echoed? not sure... */ ++ return; /* leave because it isn't usefull to continue */ ++ ++ case ERANGE: ++ default: ++ /* no enough size OR unexpected error */ ++ MSG_PUTS(_("Could not get security context ")); ++ MSG_PUTS(name); ++ MSG_PUTS(_(" for ")); ++ msg_outtrans(from_file); ++ MSG_PUTS(_(". Removing it!\n")); ++ /* FALLTHROUGH to remove the attribute */ ++ ++ case ENODATA: ++ /* no attribute of this name */ ++ ret = removexattr((char*)to_file, name); ++ if (ret < 0 && errno != ENODATA) ++ { ++ MSG_PUTS(_("Could not remove security context ")); ++ MSG_PUTS(name); ++ MSG_PUTS(_(" for ")); ++ msg_outtrans(to_file); ++ msg_putchar('\n'); ++ } ++ break; ++ } ++ } ++ } ++ } ++ #endif /* HAVE_SMACK */ ++ + /* + * Return a pointer to the ACL of file "fname" in allocated memory. + * Return NULL if the ACL is not available for whatever reason. +*** ../vim-7.4.237/src/undo.c 2014-03-23 15:12:29.943264337 +0100 +--- src/undo.c 2014-04-02 13:42:15.387907078 +0200 +*************** +*** 1455,1461 **** + # endif + ) + mch_setperm(file_name, (perm & 0707) | ((perm & 07) << 3)); +! # ifdef HAVE_SELINUX + if (buf->b_ffname != NULL) + mch_copy_sec(buf->b_ffname, file_name); + # endif +--- 1455,1461 ---- + # endif + ) + mch_setperm(file_name, (perm & 0707) | ((perm & 07) << 3)); +! # if defined(HAVE_SELINUX) || defined(HAVE_SMACK) + if (buf->b_ffname != NULL) + mch_copy_sec(buf->b_ffname, file_name); + # endif +*** ../vim-7.4.237/src/auto/configure 2014-03-27 18:51:06.612760919 +0100 +--- src/auto/configure 2014-04-02 13:50:11.375900531 +0200 +*************** +*** 782,787 **** +--- 782,788 ---- + with_view_name + with_global_runtime + with_modified_by ++ enable_smack + enable_selinux + with_features + with_compiledby +*************** +*** 1453,1459 **** + --enable-fail-if-missing Fail if dependencies on additional features + specified on the command line are missing. + --disable-darwin Disable Darwin (Mac OS X) support. +! --disable-selinux Don't check for SELinux support. + --disable-xsmp Disable XSMP session management + --disable-xsmp-interact Disable XSMP interaction + --enable-luainterp=OPTS Include Lua interpreter. default=no OPTS=no/yes/dynamic +--- 1454,1461 ---- + --enable-fail-if-missing Fail if dependencies on additional features + specified on the command line are missing. + --disable-darwin Disable Darwin (Mac OS X) support. +! --disable-smack Do not check for Smack support. +! --disable-selinux Do not check for SELinux support. + --disable-xsmp Disable XSMP session management + --disable-xsmp-interact Disable XSMP interaction + --enable-luainterp=OPTS Include Lua interpreter. default=no OPTS=no/yes/dynamic +*************** +*** 4588,4606 **** + + + +! { $as_echo "$as_me:${as_lineno-$LINENO}: checking --disable-selinux argument" >&5 + $as_echo_n "checking --disable-selinux argument... " >&6; } +! # Check whether --enable-selinux was given. + if test "${enable_selinux+set}" = set; then : + enableval=$enable_selinux; + else + enable_selinux="yes" + fi + +! if test "$enable_selinux" = "yes"; then +! { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } +! { $as_echo "$as_me:${as_lineno-$LINENO}: checking for is_selinux_enabled in -lselinux" >&5 + $as_echo_n "checking for is_selinux_enabled in -lselinux... " >&6; } + if ${ac_cv_lib_selinux_is_selinux_enabled+:} false; then : + $as_echo_n "(cached) " >&6 +--- 4590,4679 ---- + + + +! { $as_echo "$as_me:${as_lineno-$LINENO}: checking --disable-smack argument" >&5 +! $as_echo_n "checking --disable-smack argument... " >&6; } +! # Check whether --enable-smack was given. +! if test "${enable_smack+set}" = set; then : +! enableval=$enable_smack; +! else +! enable_smack="yes" +! fi +! +! if test "$enable_smack" = "yes"; then +! ac_fn_c_check_header_mongrel "$LINENO" "linux/xattr.h" "ac_cv_header_linux_xattr_h" "$ac_includes_default" +! if test "x$ac_cv_header_linux_xattr_h" = xyes; then : +! true +! else +! enable_smack="no" +! fi +! +! +! fi +! if test "$enable_smack" = "yes"; then +! { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +! $as_echo "no" >&6; } +! { $as_echo "$as_me:${as_lineno-$LINENO}: checking for llistxattr in -lattr" >&5 +! $as_echo_n "checking for llistxattr in -lattr... " >&6; } +! if ${ac_cv_lib_attr_llistxattr+:} false; then : +! $as_echo_n "(cached) " >&6 +! else +! ac_check_lib_save_LIBS=$LIBS +! LIBS="-lattr $LIBS" +! cat confdefs.h - <<_ACEOF >conftest.$ac_ext +! /* end confdefs.h. */ +! +! /* Override any GCC internal prototype to avoid an error. +! Use char because int might match the return type of a GCC +! builtin and then its argument prototype would still apply. */ +! #ifdef __cplusplus +! extern "C" +! #endif +! char llistxattr (); +! int +! main () +! { +! return llistxattr (); +! ; +! return 0; +! } +! _ACEOF +! if ac_fn_c_try_link "$LINENO"; then : +! ac_cv_lib_attr_llistxattr=yes +! else +! ac_cv_lib_attr_llistxattr=no +! fi +! rm -f core conftest.err conftest.$ac_objext \ +! conftest$ac_exeext conftest.$ac_ext +! LIBS=$ac_check_lib_save_LIBS +! fi +! { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_attr_llistxattr" >&5 +! $as_echo "$ac_cv_lib_attr_llistxattr" >&6; } +! if test "x$ac_cv_lib_attr_llistxattr" = xyes; then : +! LIBS="$LIBS -lattr" +! found_smack="yes" +! $as_echo "#define HAVE_SMACK 1" >>confdefs.h +! +! fi +! +! else +! { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +! $as_echo "yes" >&6; } +! fi +! +! if test "x$found_smack" = "x"; then +! { $as_echo "$as_me:${as_lineno-$LINENO}: checking --disable-selinux argument" >&5 + $as_echo_n "checking --disable-selinux argument... " >&6; } +! # Check whether --enable-selinux was given. + if test "${enable_selinux+set}" = set; then : + enableval=$enable_selinux; + else + enable_selinux="yes" + fi + +! if test "$enable_selinux" = "yes"; then +! { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } +! { $as_echo "$as_me:${as_lineno-$LINENO}: checking for is_selinux_enabled in -lselinux" >&5 + $as_echo_n "checking for is_selinux_enabled in -lselinux... " >&6; } + if ${ac_cv_lib_selinux_is_selinux_enabled+:} false; then : + $as_echo_n "(cached) " >&6 +*************** +*** 4638,4650 **** + $as_echo "$ac_cv_lib_selinux_is_selinux_enabled" >&6; } + if test "x$ac_cv_lib_selinux_is_selinux_enabled" = xyes; then : + LIBS="$LIBS -lselinux" +! $as_echo "#define HAVE_SELINUX 1" >>confdefs.h + + fi + +! else +! { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 + $as_echo "yes" >&6; } + fi + + +--- 4711,4724 ---- + $as_echo "$ac_cv_lib_selinux_is_selinux_enabled" >&6; } + if test "x$ac_cv_lib_selinux_is_selinux_enabled" = xyes; then : + LIBS="$LIBS -lselinux" +! $as_echo "#define HAVE_SELINUX 1" >>confdefs.h + + fi + +! else +! { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 + $as_echo "yes" >&6; } ++ fi + fi + + +*** ../vim-7.4.237/src/version.c 2014-04-02 12:12:04.163981514 +0200 +--- src/version.c 2014-04-02 13:38:22.511910282 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 238, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +25. You believe nothing looks sexier than a man in boxer shorts illuminated + only by a 17" inch svga monitor. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.239 b/SOURCES/7.4.239 new file mode 100644 index 0000000..5943d69 --- /dev/null +++ b/SOURCES/7.4.239 @@ -0,0 +1,55 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.239 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.239 +Problem: ":e +" does not position cursor at end of the file. +Solution: Check for "+" being the last character (ZyX) +Files: src/ex_docmd.c + + +*** ../vim-7.4.238/src/ex_docmd.c 2014-04-01 18:54:44.312837673 +0200 +--- src/ex_docmd.c 2014-04-02 14:18:02.247877546 +0200 +*************** +*** 4841,4847 **** + if (*arg == '+') /* +[command] */ + { + ++arg; +! if (vim_isspace(*arg)) + command = dollar_command; + else + { +--- 4841,4847 ---- + if (*arg == '+') /* +[command] */ + { + ++arg; +! if (vim_isspace(*arg) || *arg == NUL) + command = dollar_command; + else + { +*** ../vim-7.4.238/src/version.c 2014-04-02 14:05:34.003887839 +0200 +--- src/version.c 2014-04-02 14:17:40.923877840 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 239, + /**/ + +-- +Q: What is the difference betwee open-source and commercial software? +A: If you have a problem with commercial software you can call a phone + number and they will tell you it might be solved in a future version. + For open-source software there isn't a phone number to call, but you + get the solution within a day. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.240 b/SOURCES/7.4.240 new file mode 100644 index 0000000..e51e2e6 --- /dev/null +++ b/SOURCES/7.4.240 @@ -0,0 +1,57 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.240 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.240 +Problem: ":tjump" shows "\n" as "\\n". +Solution: Skip over "\" that escapes a backslash. (Gary Johnson) +Files: src/tag.c + + +*** ../vim-7.4.239/src/tag.c 2013-11-28 14:36:24.000000000 +0100 +--- src/tag.c 2014-04-02 17:14:27.087731943 +0200 +*************** +*** 741,748 **** + break; + msg_advance(15); + +! /* skip backslash used for escaping command char */ +! if (*p == '\\' && *(p + 1) == *tagp.command) + ++p; + + if (*p == TAB) +--- 741,750 ---- + break; + msg_advance(15); + +! /* skip backslash used for escaping a command char or +! * a backslash */ +! if (*p == '\\' && (*(p + 1) == *tagp.command +! || *(p + 1) == '\\')) + ++p; + + if (*p == TAB) +*** ../vim-7.4.239/src/version.c 2014-04-02 14:22:00.123874274 +0200 +--- src/version.c 2014-04-02 17:15:26.395731128 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 240, + /**/ + +-- +Anyone who is capable of getting themselves made President should on no +account be allowed to do the job. + -- Douglas Adams, "The Hitchhiker's Guide to the Galaxy" + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.242 b/SOURCES/7.4.242 new file mode 100644 index 0000000..5076878 --- /dev/null +++ b/SOURCES/7.4.242 @@ -0,0 +1,520 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.242 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.242 +Problem: getreg() does not distinguish between a NL used for a line break + and a NL used for a NUL character. +Solution: Add another argument to return a list. (ZyX) +Files: runtime/doc/eval.txt, src/eval.c src/ops.c, src/proto/ops.pro, + src/vim.h, src/Makefile, src/testdir/test_eval.in, + src/testdir/test_eval.ok, src/testdir/Make_amiga.mak, + src/testdir/Make_dos.mak, src/testdir/Make_ming.mak, + src/testdir/Make_os2.mak, src/testdir/Make_vms.mms + + +*** ../vim-7.4.241/runtime/doc/eval.txt 2014-04-02 19:00:53.035644100 +0200 +--- runtime/doc/eval.txt 2014-04-02 19:15:31.847632011 +0200 +*************** +*** 1818,1824 **** + getpid() Number process ID of Vim + getpos( {expr}) List position of cursor, mark, etc. + getqflist() List list of quickfix items +! getreg( [{regname} [, 1]]) String contents of register + getregtype( [{regname}]) String type of register + gettabvar( {nr}, {varname} [, {def}]) + any variable {varname} in tab {nr} or {def} +--- 1819,1826 ---- + getpid() Number process ID of Vim + getpos( {expr}) List position of cursor, mark, etc. + getqflist() List list of quickfix items +! getreg( [{regname} [, 1 [, {list}]]]) +! String or List contents of register + getregtype( [{regname}]) String type of register + gettabvar( {nr}, {varname} [, {def}]) + any variable {varname} in tab {nr} or {def} +*************** +*** 3466,3472 **** + :endfor + + +! getreg([{regname} [, 1]]) *getreg()* + The result is a String, which is the contents of register + {regname}. Example: > + :let cliptext = getreg('*') +--- 3468,3474 ---- + :endfor + + +! getreg([{regname} [, 1 [, {list}]]]) *getreg()* + The result is a String, which is the contents of register + {regname}. Example: > + :let cliptext = getreg('*') +*************** +*** 3475,3480 **** +--- 3477,3487 ---- + getreg('=', 1) returns the expression itself, so that it can + be restored with |setreg()|. For other registers the extra + argument is ignored, thus you can always give it. ++ If {list} is present and non-zero result type is changed to ++ |List|. Each list item is one text line. Use it if you care ++ about zero bytes possibly present inside register: without ++ third argument both NLs and zero bytes are represented as NLs ++ (see |NL-used-for-Nul|). + If {regname} is not specified, |v:register| is used. + + +*** ../vim-7.4.241/src/eval.c 2014-04-02 19:00:53.043644100 +0200 +--- src/eval.c 2014-04-02 19:35:54.919615187 +0200 +*************** +*** 2458,2464 **** + p = get_tv_string_chk(tv); + if (p != NULL && op != NULL && *op == '.') + { +! s = get_reg_contents(*arg == '@' ? '"' : *arg, TRUE, TRUE); + if (s != NULL) + { + p = ptofree = concat_str(s, p); +--- 2458,2464 ---- + p = get_tv_string_chk(tv); + if (p != NULL && op != NULL && *op == '.') + { +! s = get_reg_contents(*arg == '@' ? '"' : *arg, GREG_EXPR_SRC); + if (s != NULL) + { + p = ptofree = concat_str(s, p); +*************** +*** 5121,5127 **** + if (evaluate) + { + rettv->v_type = VAR_STRING; +! rettv->vval.v_string = get_reg_contents(**arg, TRUE, TRUE); + } + if (**arg != NUL) + ++*arg; +--- 5121,5128 ---- + if (evaluate) + { + rettv->v_type = VAR_STRING; +! rettv->vval.v_string = get_reg_contents(**arg, +! GREG_EXPR_SRC); + } + if (**arg != NUL) + ++*arg; +*************** +*** 7970,7976 **** + {"getpid", 0, 0, f_getpid}, + {"getpos", 1, 1, f_getpos}, + {"getqflist", 0, 0, f_getqflist}, +! {"getreg", 0, 2, f_getreg}, + {"getregtype", 0, 1, f_getregtype}, + {"gettabvar", 2, 3, f_gettabvar}, + {"gettabwinvar", 3, 4, f_gettabwinvar}, +--- 7971,7977 ---- + {"getpid", 0, 0, f_getpid}, + {"getpos", 1, 1, f_getpos}, + {"getqflist", 0, 0, f_getqflist}, +! {"getreg", 0, 3, f_getreg}, + {"getregtype", 0, 1, f_getregtype}, + {"gettabvar", 2, 3, f_gettabvar}, + {"gettabwinvar", 3, 4, f_gettabwinvar}, +*************** +*** 11799,11804 **** +--- 11800,11806 ---- + char_u *strregname; + int regname; + int arg2 = FALSE; ++ int return_list = FALSE; + int error = FALSE; + + if (argvars[0].v_type != VAR_UNKNOWN) +*************** +*** 11806,11822 **** + strregname = get_tv_string_chk(&argvars[0]); + error = strregname == NULL; + if (argvars[1].v_type != VAR_UNKNOWN) + arg2 = get_tv_number_chk(&argvars[1], &error); + } + else + strregname = vimvars[VV_REG].vv_str; + regname = (strregname == NULL ? '"' : *strregname); + if (regname == 0) + regname = '"'; + +! rettv->v_type = VAR_STRING; +! rettv->vval.v_string = error ? NULL : +! get_reg_contents(regname, TRUE, arg2); + } + + /* +--- 11808,11841 ---- + strregname = get_tv_string_chk(&argvars[0]); + error = strregname == NULL; + if (argvars[1].v_type != VAR_UNKNOWN) ++ { + arg2 = get_tv_number_chk(&argvars[1], &error); ++ if (!error && argvars[2].v_type != VAR_UNKNOWN) ++ return_list = get_tv_number_chk(&argvars[2], &error); ++ } + } + else + strregname = vimvars[VV_REG].vv_str; ++ ++ if (error) ++ return; ++ + regname = (strregname == NULL ? '"' : *strregname); + if (regname == 0) + regname = '"'; + +! if (return_list) +! { +! rettv->v_type = VAR_LIST; +! rettv->vval.v_list = (list_T *)get_reg_contents(regname, +! (arg2 ? GREG_EXPR_SRC : 0) | GREG_LIST); +! } +! else +! { +! rettv->v_type = VAR_STRING; +! rettv->vval.v_string = get_reg_contents(regname, +! arg2 ? GREG_EXPR_SRC : 0); +! } + } + + /* +*************** +*** 17891,17899 **** + typval_T *rettv; + { + int error = FALSE; +- char_u **match; +- char_u **s; +- listitem_T *li; + int no; + int retList = 0; + +--- 17910,17915 ---- +*** ../vim-7.4.241/src/ops.c 2014-03-23 15:12:29.931264336 +0100 +--- src/ops.c 2014-04-02 19:36:08.831614995 +0200 +*************** +*** 6166,6181 **** + return MAUTO; + } + + /* + * Return the contents of a register as a single allocated string. + * Used for "@r" in expressions and for getreg(). + * Returns NULL for error. + */ + char_u * +! get_reg_contents(regname, allowexpr, expr_src) + int regname; +! int allowexpr; /* allow "=" register */ +! int expr_src; /* get expression for "=" register */ + { + long i; + char_u *retval; +--- 6166,6214 ---- + return MAUTO; + } + ++ static char_u *getreg_wrap_one_line __ARGS((char_u *s, int flags)); ++ ++ /* ++ * When "flags" has GREG_LIST return a list with text "s". ++ * Otherwise just return "s". ++ */ ++ static char_u * ++ getreg_wrap_one_line(s, flags) ++ char_u *s; ++ int flags; ++ { ++ if (flags & GREG_LIST) ++ { ++ list_T *list = list_alloc(); ++ ++ if (list != NULL) ++ { ++ if (list_append_string(list, NULL, -1) == FAIL) ++ { ++ list_free(list, TRUE); ++ return NULL; ++ } ++ list->lv_first->li_tv.vval.v_string = s; ++ } ++ return (char_u *)list; ++ } ++ return s; ++ } ++ + /* + * Return the contents of a register as a single allocated string. + * Used for "@r" in expressions and for getreg(). + * Returns NULL for error. ++ * Flags: ++ * GREG_NO_EXPR Do not allow expression register ++ * GREG_EXPR_SRC For the expression register: return expression itself, ++ * not the result of its evaluation. ++ * GREG_LIST Return a list of lines in place of a single string. + */ + char_u * +! get_reg_contents(regname, flags) + int regname; +! int flags; + { + long i; + char_u *retval; +*************** +*** 6185,6197 **** + /* Don't allow using an expression register inside an expression */ + if (regname == '=') + { +! if (allowexpr) +! { +! if (expr_src) +! return get_expr_line_src(); +! return get_expr_line(); +! } +! return NULL; + } + + if (regname == '@') /* "@@" is used for unnamed register */ +--- 6218,6228 ---- + /* Don't allow using an expression register inside an expression */ + if (regname == '=') + { +! if (flags & GREG_NO_EXPR) +! return NULL; +! if (flags & GREG_EXPR_SRC) +! return getreg_wrap_one_line(get_expr_line_src(), flags); +! return getreg_wrap_one_line(get_expr_line(), flags); + } + + if (regname == '@') /* "@@" is used for unnamed register */ +*************** +*** 6209,6223 **** + { + if (retval == NULL) + return NULL; +! if (!allocated) +! retval = vim_strsave(retval); +! return retval; + } + + get_yank_register(regname, FALSE); + if (y_current->y_array == NULL) + return NULL; + + /* + * Compute length of resulting string. + */ +--- 6240,6272 ---- + { + if (retval == NULL) + return NULL; +! if (allocated) +! return getreg_wrap_one_line(retval, flags); +! return getreg_wrap_one_line(vim_strsave(retval), flags); + } + + get_yank_register(regname, FALSE); + if (y_current->y_array == NULL) + return NULL; + ++ if (flags & GREG_LIST) ++ { ++ list_T *list = list_alloc(); ++ int error = FALSE; ++ ++ if (list == NULL) ++ return NULL; ++ for (i = 0; i < y_current->y_size; ++i) ++ if (list_append_string(list, y_current->y_array[i], -1) == FAIL) ++ error = TRUE; ++ if (error) ++ { ++ list_free(list, TRUE); ++ return NULL; ++ } ++ return (char_u *)list; ++ } ++ + /* + * Compute length of resulting string. + */ +*** ../vim-7.4.241/src/proto/ops.pro 2013-08-10 13:37:22.000000000 +0200 +--- src/proto/ops.pro 2014-04-02 19:17:22.407630490 +0200 +*************** +*** 53,59 **** + int clip_convert_selection __ARGS((char_u **str, long_u *len, VimClipboard *cbd)); + void dnd_yank_drag_data __ARGS((char_u *str, long len)); + char_u get_reg_type __ARGS((int regname, long *reglen)); +! char_u *get_reg_contents __ARGS((int regname, int allowexpr, int expr_src)); + void write_reg_contents __ARGS((int name, char_u *str, int maxlen, int must_append)); + void write_reg_contents_ex __ARGS((int name, char_u *str, int maxlen, int must_append, int yank_type, long block_len)); + void clear_oparg __ARGS((oparg_T *oap)); +--- 53,59 ---- + int clip_convert_selection __ARGS((char_u **str, long_u *len, VimClipboard *cbd)); + void dnd_yank_drag_data __ARGS((char_u *str, long len)); + char_u get_reg_type __ARGS((int regname, long *reglen)); +! char_u *get_reg_contents __ARGS((int regname, int flags)); + void write_reg_contents __ARGS((int name, char_u *str, int maxlen, int must_append)); + void write_reg_contents_ex __ARGS((int name, char_u *str, int maxlen, int must_append, int yank_type, long block_len)); + void clear_oparg __ARGS((oparg_T *oap)); +*** ../vim-7.4.241/src/vim.h 2014-04-01 19:55:46.252787300 +0200 +--- src/vim.h 2014-04-02 19:17:22.407630490 +0200 +*************** +*** 2259,2264 **** +--- 2259,2269 ---- + #define SREQ_WIN 1 /* Request window-local option */ + #define SREQ_BUF 2 /* Request buffer-local option */ + ++ /* Flags for get_reg_contents */ ++ #define GREG_NO_EXPR 1 /* Do not allow expression register */ ++ #define GREG_EXPR_SRC 2 /* Return expression itself for "=" register */ ++ #define GREG_LIST 4 /* Return list */ ++ + /* Character used as separated in autoload function/variable names. */ + #define AUTOLOAD_CHAR '#' + +*** ../vim-7.4.241/src/Makefile 2014-04-01 14:08:14.685074130 +0200 +--- src/Makefile 2014-04-02 19:42:21.931609863 +0200 +*************** +*** 1880,1885 **** +--- 1880,1886 ---- + + # Run individual test, assuming that Vim was already compiled. + test1 test2 test3 test4 test5 test6 test7 test8 test9 \ ++ test_eval \ + test_options \ + test10 test11 test12 test13 test14 test15 test16 test17 test18 test19 \ + test20 test21 test22 test23 test24 test25 test26 test27 test28 test29 \ +*** ../vim-7.4.241/src/testdir/test_eval.in 2014-04-02 19:51:32.391602291 +0200 +--- src/testdir/test_eval.in 2014-04-02 19:47:13.607605851 +0200 +*************** +*** 0 **** +--- 1,21 ---- ++ Test for various eval features. ++ ++ STARTTEST ++ :so small.vim ++ :" ++ :" test getreg() ++ /^one ++ "ay3j:$put =string(getreg('a')) ++ :$put =string(getreg('a', 1, 1)) ++ :" ++ :/^result/,$w! test.out ++ :qa! ++ ENDTEST ++ ++ one ++ two ++ three ++ four ++ five ++ ++ result +*** ../vim-7.4.241/src/testdir/test_eval.ok 2014-04-02 19:51:32.399602291 +0200 +--- src/testdir/test_eval.ok 2014-04-02 19:48:51.595604503 +0200 +*************** +*** 0 **** +--- 1,7 ---- ++ result ++ 'one ++ two ++ three ++ four ++ ' ++ ['one', 'two', 'three', 'four'] +*** ../vim-7.4.241/src/testdir/Make_amiga.mak 2014-04-01 14:08:14.685074130 +0200 +--- src/testdir/Make_amiga.mak 2014-04-02 19:41:24.331610655 +0200 +*************** +*** 36,41 **** +--- 36,42 ---- + test94.out test95.out test96.out test97.out test98.out \ + test99.out test100.out test101.out test102.out test103.out \ + test104.out test105.out test106.out \ ++ test_eval.out \ + test_options.out + + .SUFFIXES: .in .out +*************** +*** 159,162 **** +--- 160,164 ---- + test104.out: test104.in + test105.out: test105.in + test106.out: test106.in ++ test_eval.out: test_eval.in + test_options.out: test_options.in +*** ../vim-7.4.241/src/testdir/Make_dos.mak 2014-04-01 14:08:14.685074130 +0200 +--- src/testdir/Make_dos.mak 2014-04-02 19:41:34.419610516 +0200 +*************** +*** 35,40 **** +--- 35,41 ---- + test94.out test95.out test96.out test98.out test99.out \ + test100.out test101.out test102.out test103.out test104.out \ + test105.out test106.out \ ++ test_eval.out \ + test_options.out + + SCRIPTS32 = test50.out test70.out +*** ../vim-7.4.241/src/testdir/Make_ming.mak 2014-04-01 14:08:14.685074130 +0200 +--- src/testdir/Make_ming.mak 2014-04-02 19:41:43.131610397 +0200 +*************** +*** 55,60 **** +--- 55,61 ---- + test94.out test95.out test96.out test98.out test99.out \ + test100.out test101.out test102.out test103.out test104.out \ + test105.out test106.out \ ++ test_eval.out \ + test_options.out + + SCRIPTS32 = test50.out test70.out +*** ../vim-7.4.241/src/testdir/Make_os2.mak 2014-04-01 14:08:14.685074130 +0200 +--- src/testdir/Make_os2.mak 2014-04-02 19:41:50.659610293 +0200 +*************** +*** 37,42 **** +--- 37,43 ---- + test94.out test95.out test96.out test98.out test99.out \ + test100.out test101.out test102.out test103.out test104.out \ + test105.out test106.out \ ++ test_eval.out \ + test_options.out + + .SUFFIXES: .in .out +*** ../vim-7.4.241/src/testdir/Make_vms.mms 2014-04-01 14:08:14.689074130 +0200 +--- src/testdir/Make_vms.mms 2014-04-02 19:41:58.971610179 +0200 +*************** +*** 96,101 **** +--- 96,102 ---- + test95.out test96.out test98.out test99.out \ + test100.out test101.out test103.out test104.out \ + test105.out test106.out \ ++ test_eval.out \ + test_options.out + + # Known problems: +*** ../vim-7.4.241/src/version.c 2014-04-02 19:00:53.047644099 +0200 +--- src/version.c 2014-04-02 19:46:41.867606287 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 242, + /**/ + +-- +Don't Panic! + -- The Hitchhiker's Guide to the Galaxy + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.244 b/SOURCES/7.4.244 new file mode 100644 index 0000000..448edfa --- /dev/null +++ b/SOURCES/7.4.244 @@ -0,0 +1,60 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.244 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.244 (after 7.4.238) +Problem: The smack feature causes stray error messages. +Solution: Remove the error messages. +Files: src/os_unix.c + + +*** ../vim-7.4.243/src/os_unix.c 2014-04-02 14:05:33.999887839 +0200 +--- src/os_unix.c 2014-04-02 23:08:25.967439786 +0200 +*************** +*** 2875,2888 **** + case ENODATA: + /* no attribute of this name */ + ret = removexattr((char*)to_file, name); +! if (ret < 0 && errno != ENODATA) +! { +! MSG_PUTS(_("Could not remove security context ")); +! MSG_PUTS(name); +! MSG_PUTS(_(" for ")); +! msg_outtrans(to_file); +! msg_putchar('\n'); +! } + break; + } + } +--- 2875,2882 ---- + case ENODATA: + /* no attribute of this name */ + ret = removexattr((char*)to_file, name); +! /* Silently ignore errors, apparently this happens when +! * smack is not actually being used. */ + break; + } + } +*** ../vim-7.4.243/src/version.c 2014-04-02 22:17:00.007482236 +0200 +--- src/version.c 2014-04-02 23:07:36.067440472 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 244, + /**/ + +-- +How To Keep A Healthy Level Of Insanity: +2. Page yourself over the intercom. Don't disguise your voice. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.245 b/SOURCES/7.4.245 new file mode 100644 index 0000000..83ca6a4 --- /dev/null +++ b/SOURCES/7.4.245 @@ -0,0 +1,52 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.245 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.245 +Problem: Crash for "vim -u NONE -N -c '&&'". +Solution: Check for the pattern to be NULL. (Dominique Pelle) +Files: src/ex_cmds.c + + +*** ../vim-7.4.244/src/ex_cmds.c 2014-04-01 17:49:40.136891378 +0200 +--- src/ex_cmds.c 2014-04-04 18:56:00.159939544 +0200 +*************** +*** 4425,4431 **** + * TODO: find a generic solution to make line-joining operations more + * efficient, avoid allocating a string that grows in size. + */ +! if (STRCMP(pat, "\\n") == 0 && STRLEN(pat) == 2 + && *sub == NUL + && (*cmd == NUL || (cmd[1] == NUL && (*cmd == 'g' || *cmd == 'l' + || *cmd == 'p' || *cmd == '#')))) +--- 4425,4431 ---- + * TODO: find a generic solution to make line-joining operations more + * efficient, avoid allocating a string that grows in size. + */ +! if (pat != NULL && STRCMP(pat, "\\n") == 0 + && *sub == NUL + && (*cmd == NUL || (cmd[1] == NUL && (*cmd == 'g' || *cmd == 'l' + || *cmd == 'p' || *cmd == '#')))) +*** ../vim-7.4.244/src/version.c 2014-04-02 23:09:23.003439001 +0200 +--- src/version.c 2014-04-04 18:52:21.519939067 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 245, + /**/ + +-- +One difference between a man and a machine is that a machine is quiet +when well oiled. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.246 b/SOURCES/7.4.246 new file mode 100644 index 0000000..0ac7afa --- /dev/null +++ b/SOURCES/7.4.246 @@ -0,0 +1,121 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.246 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.246 +Problem: Configure message for detecting smack are out of sequence. +Solution: Put the messages in the right place. (Kazunobu Kuriyama) +Files: src/configure.in, src/auto/configure + + +*** ../vim-7.4.245/src/configure.in 2014-04-02 14:05:33.999887839 +0200 +--- src/configure.in 2014-04-05 11:56:33.807099380 +0200 +*************** +*** 393,408 **** + [ --disable-smack Do not check for Smack support.], + , enable_smack="yes") + if test "$enable_smack" = "yes"; then + AC_CHECK_HEADER([linux/xattr.h], true, enable_smack="no") + fi + if test "$enable_smack" = "yes"; then +- AC_MSG_RESULT(no) + AC_CHECK_LIB(attr, llistxattr, + [LIBS="$LIBS -lattr" + found_smack="yes" + AC_DEFINE(HAVE_SMACK)]) +- else +- AC_MSG_RESULT(yes) + fi + + dnl When smack was found don't search for SELinux +--- 393,408 ---- + [ --disable-smack Do not check for Smack support.], + , enable_smack="yes") + if test "$enable_smack" = "yes"; then ++ AC_MSG_RESULT(no) + AC_CHECK_HEADER([linux/xattr.h], true, enable_smack="no") ++ else ++ AC_MSG_RESULT(yes) + fi + if test "$enable_smack" = "yes"; then + AC_CHECK_LIB(attr, llistxattr, + [LIBS="$LIBS -lattr" + found_smack="yes" + AC_DEFINE(HAVE_SMACK)]) + fi + + dnl When smack was found don't search for SELinux +*** ../vim-7.4.245/src/auto/configure 2014-04-02 14:05:34.003887839 +0200 +--- src/auto/configure 2014-04-05 11:56:37.123099387 +0200 +*************** +*** 4600,4605 **** +--- 4600,4607 ---- + fi + + if test "$enable_smack" = "yes"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++ $as_echo "no" >&6; } + ac_fn_c_check_header_mongrel "$LINENO" "linux/xattr.h" "ac_cv_header_linux_xattr_h" "$ac_includes_default" + if test "x$ac_cv_header_linux_xattr_h" = xyes; then : + true +*************** +*** 4608,4617 **** + fi + + + fi + if test "$enable_smack" = "yes"; then +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +- $as_echo "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for llistxattr in -lattr" >&5 + $as_echo_n "checking for llistxattr in -lattr... " >&6; } + if ${ac_cv_lib_attr_llistxattr+:} false; then : +--- 4610,4620 ---- + fi + + ++ else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 ++ $as_echo "yes" >&6; } + fi + if test "$enable_smack" = "yes"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for llistxattr in -lattr" >&5 + $as_echo_n "checking for llistxattr in -lattr... " >&6; } + if ${ac_cv_lib_attr_llistxattr+:} false; then : +*************** +*** 4655,4663 **** + + fi + +- else +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +- $as_echo "yes" >&6; } + fi + + if test "x$found_smack" = "x"; then +--- 4658,4663 ---- +*** ../vim-7.4.245/src/version.c 2014-04-04 19:00:46.351940169 +0200 +--- src/version.c 2014-04-05 11:57:29.503099502 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 246, + /**/ + +-- +Apparently, 1 in 5 people in the world are Chinese. And there are 5 +people in my family, so it must be one of them. It's either my mum +or my dad. Or my older brother Colin. Or my younger brother +Ho-Cha-Chu. But I think it's Colin. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.247 b/SOURCES/7.4.247 new file mode 100644 index 0000000..36006e1 --- /dev/null +++ b/SOURCES/7.4.247 @@ -0,0 +1,227 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.247 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.247 +Problem: When passing input to system() there is no way to keep NUL and + NL characters separate. +Solution: Optionally use a list for the system() input. (ZyX) +Files: runtime/doc/eval.txt, src/eval.c + + +*** ../vim-7.4.246/runtime/doc/eval.txt 2014-04-02 22:16:59.995482236 +0200 +--- runtime/doc/eval.txt 2014-04-05 18:47:12.907153201 +0200 +*************** +*** 5951,5960 **** + + system({expr} [, {input}]) *system()* *E677* + Get the output of the shell command {expr}. +! When {input} is given, this string is written to a file and +! passed as stdin to the command. The string is written as-is, +! you need to take care of using the correct line separators +! yourself. Pipes are not used. + Note: Use |shellescape()| or |::S| with |expand()| or + |fnamemodify()| to escape special characters in a command + argument. Newlines in {expr} may cause the command to fail. +--- 5964,5980 ---- + + system({expr} [, {input}]) *system()* *E677* + Get the output of the shell command {expr}. +! +! When {input} is given and is a string this string is written +! to a file and passed as stdin to the command. The string is +! written as-is, you need to take care of using the correct line +! separators yourself. +! If {input} is given and is a |List| it is written to the file +! in a way |writefile()| does with {binary} set to "b" (i.e. +! with a newline between each list item with newlines inside +! list items converted to NULs). +! Pipes are not used. +! + Note: Use |shellescape()| or |::S| with |expand()| or + |fnamemodify()| to escape special characters in a command + argument. Newlines in {expr} may cause the command to fail. +*** ../vim-7.4.246/src/eval.c 2014-04-02 22:17:00.003482236 +0200 +--- src/eval.c 2014-04-05 18:47:50.971153284 +0200 +*************** +*** 836,841 **** +--- 836,842 ---- + static int searchpair_cmn __ARGS((typval_T *argvars, pos_T *match_pos)); + static int search_cmn __ARGS((typval_T *argvars, pos_T *match_pos, int *flagsp)); + static void setwinvar __ARGS((typval_T *argvars, typval_T *rettv, int off)); ++ static int write_list __ARGS((FILE *fd, list_T *list, int binary)); + + + #ifdef EBCDIC +*************** +*** 18267,18280 **** + EMSG2(_(e_notopen), infile); + goto done; + } +! p = get_tv_string_buf_chk(&argvars[1], buf); +! if (p == NULL) + { +! fclose(fd); +! goto done; /* type error; errmsg already given */ + } +- if (fwrite(p, STRLEN(p), 1, fd) != 1) +- err = TRUE; + if (fclose(fd) != 0) + err = TRUE; + if (err) +--- 18268,18289 ---- + EMSG2(_(e_notopen), infile); + goto done; + } +! if (argvars[1].v_type == VAR_LIST) + { +! if (write_list(fd, argvars[1].vval.v_list, TRUE) == FAIL) +! err = TRUE; +! } +! else +! { +! p = get_tv_string_buf_chk(&argvars[1], buf); +! if (p == NULL) +! { +! fclose(fd); +! goto done; /* type error; errmsg already given */ +! } +! if (fwrite(p, STRLEN(p), 1, fd) != 1) +! err = TRUE; + } + if (fclose(fd) != 0) + err = TRUE; + if (err) +*************** +*** 19173,19178 **** +--- 19182,19230 ---- + } + + /* ++ * Write list of strings to file ++ */ ++ static int ++ write_list(fd, list, binary) ++ FILE *fd; ++ list_T *list; ++ int binary; ++ { ++ listitem_T *li; ++ int c; ++ int ret = OK; ++ char_u *s; ++ ++ for (li = list->lv_first; li != NULL; li = li->li_next) ++ { ++ for (s = get_tv_string(&li->li_tv); *s != NUL; ++s) ++ { ++ if (*s == '\n') ++ c = putc(NUL, fd); ++ else ++ c = putc(*s, fd); ++ if (c == EOF) ++ { ++ ret = FAIL; ++ break; ++ } ++ } ++ if (!binary || li->li_next != NULL) ++ if (putc('\n', fd) == EOF) ++ { ++ ret = FAIL; ++ break; ++ } ++ if (ret == FAIL) ++ { ++ EMSG(_(e_write)); ++ break; ++ } ++ } ++ return ret; ++ } ++ ++ /* + * "writefile()" function + */ + static void +*************** +*** 19183,19192 **** + int binary = FALSE; + char_u *fname; + FILE *fd; +- listitem_T *li; +- char_u *s; + int ret = 0; +- int c; + + if (check_restricted() || check_secure()) + return; +--- 19235,19241 ---- +*************** +*** 19213,19245 **** + } + else + { +! for (li = argvars[0].vval.v_list->lv_first; li != NULL; +! li = li->li_next) +! { +! for (s = get_tv_string(&li->li_tv); *s != NUL; ++s) +! { +! if (*s == '\n') +! c = putc(NUL, fd); +! else +! c = putc(*s, fd); +! if (c == EOF) +! { +! ret = -1; +! break; +! } +! } +! if (!binary || li->li_next != NULL) +! if (putc('\n', fd) == EOF) +! { +! ret = -1; +! break; +! } +! if (ret < 0) +! { +! EMSG(_(e_write)); +! break; +! } +! } + fclose(fd); + } + +--- 19262,19269 ---- + } + else + { +! if (write_list(fd, argvars[0].vval.v_list, binary) == FAIL) +! ret = -1; + fclose(fd); + } + +*** ../vim-7.4.246/src/version.c 2014-04-05 12:02:20.751100138 +0200 +--- src/version.c 2014-04-05 18:49:24.411153488 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 247, + /**/ + +-- +Time is an illusion. Lunchtime doubly so. + -- Ford Prefect, in Douglas Adams' + "The Hitchhiker's Guide to the Galaxy" + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.248 b/SOURCES/7.4.248 new file mode 100644 index 0000000..b41f6cb --- /dev/null +++ b/SOURCES/7.4.248 @@ -0,0 +1,515 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.248 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.248 +Problem: Cannot distinguish between NL and NUL in output of system(). +Solution: Add systemlist(). (ZyX) +Files: runtime/doc/eval.txt, src/eval.c, src/ex_cmds2.c, src/misc1.c, + src/proto/misc1.pro + + +*** ../vim-7.4.247/runtime/doc/eval.txt 2014-04-05 18:55:40.471154309 +0200 +--- runtime/doc/eval.txt 2014-04-05 19:03:05.419155281 +0200 +*************** +*** 2001,2006 **** +--- 2002,2008 ---- + synconcealed( {lnum}, {col}) List info about concealing + synstack( {lnum}, {col}) List stack of syntax IDs at {lnum} and {col} + system( {expr} [, {input}]) String output of shell command/filter {expr} ++ systemlist( {expr} [, {input}]) List output of shell command/filter {expr} + tabpagebuflist( [{arg}]) List list of buffer numbers in tab page + tabpagenr( [{arg}]) Number number of current or last tab page + tabpagewinnr( {tabarg}[, {arg}]) +*************** +*** 5950,5956 **** + valid positions. + + system({expr} [, {input}]) *system()* *E677* +! Get the output of the shell command {expr}. + + When {input} is given and is a string this string is written + to a file and passed as stdin to the command. The string is +--- 5964,5971 ---- + valid positions. + + system({expr} [, {input}]) *system()* *E677* +! Get the output of the shell command {expr} as a string. See +! |systemlist()| to get the output as a List. + + When {input} is given and is a string this string is written + to a file and passed as stdin to the command. The string is +*************** +*** 5998,6003 **** +--- 6013,6028 ---- + Use |:checktime| to force a check. + + ++ systemlist({expr} [, {input}]) *systemlist()* ++ Same as |system()|, but returns a |List| with lines (parts of ++ output separated by NL) with NULs transformed into NLs. Output ++ is the same as |readfile()| will output with {binary} argument ++ set to "b". ++ ++ Returns an empty string on error, so be careful not to run ++ into |E706|. ++ ++ + tabpagebuflist([{arg}]) *tabpagebuflist()* + The result is a |List|, where each item is the number of the + buffer associated with each window in the current tab page. +*** ../vim-7.4.247/src/eval.c 2014-04-05 18:55:40.479154309 +0200 +--- src/eval.c 2014-04-05 19:42:37.675160463 +0200 +*************** +*** 726,731 **** +--- 726,732 ---- + static void f_synstack __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_synconcealed __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_system __ARGS((typval_T *argvars, typval_T *rettv)); ++ static void f_systemlist __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_tabpagebuflist __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_tabpagenr __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_tabpagewinnr __ARGS((typval_T *argvars, typval_T *rettv)); +*************** +*** 837,842 **** +--- 838,844 ---- + static int search_cmn __ARGS((typval_T *argvars, pos_T *match_pos, int *flagsp)); + static void setwinvar __ARGS((typval_T *argvars, typval_T *rettv, int off)); + static int write_list __ARGS((FILE *fd, list_T *list, int binary)); ++ static void get_cmd_output_as_rettv __ARGS((typval_T *argvars, typval_T *rettv, int retlist)); + + + #ifdef EBCDIC +*************** +*** 8139,8144 **** +--- 8141,8147 ---- + {"synconcealed", 2, 2, f_synconcealed}, + {"synstack", 2, 2, f_synstack}, + {"system", 1, 2, f_system}, ++ {"systemlist", 1, 2, f_systemlist}, + {"tabpagebuflist", 0, 1, f_tabpagebuflist}, + {"tabpagenr", 0, 1, f_tabpagenr}, + {"tabpagewinnr", 1, 2, f_tabpagewinnr}, +*************** +*** 18232,18244 **** + #endif + } + +- /* +- * "system()" function +- */ + static void +! f_system(argvars, rettv) + typval_T *argvars; + typval_T *rettv; + { + char_u *res = NULL; + char_u *p; +--- 18235,18245 ---- + #endif + } + + static void +! get_cmd_output_as_rettv(argvars, rettv, retlist) + typval_T *argvars; + typval_T *rettv; ++ int retlist; + { + char_u *res = NULL; + char_u *p; +*************** +*** 18246,18254 **** + char_u buf[NUMBUFLEN]; + int err = FALSE; + FILE *fd; + + if (check_restricted() || check_secure()) +! goto done; + + if (argvars[1].v_type != VAR_UNKNOWN) + { +--- 18247,18258 ---- + char_u buf[NUMBUFLEN]; + int err = FALSE; + FILE *fd; ++ list_T *list = NULL; + ++ rettv->v_type = VAR_STRING; ++ rettv->vval.v_string = NULL; + if (check_restricted() || check_secure()) +! goto errret; + + if (argvars[1].v_type != VAR_UNKNOWN) + { +*************** +*** 18259,18272 **** + if ((infile = vim_tempname('i')) == NULL) + { + EMSG(_(e_notmp)); +! goto done; + } + + fd = mch_fopen((char *)infile, WRITEBIN); + if (fd == NULL) + { + EMSG2(_(e_notopen), infile); +! goto done; + } + if (argvars[1].v_type == VAR_LIST) + { +--- 18263,18276 ---- + if ((infile = vim_tempname('i')) == NULL) + { + EMSG(_(e_notmp)); +! goto errret; + } + + fd = mch_fopen((char *)infile, WRITEBIN); + if (fd == NULL) + { + EMSG2(_(e_notopen), infile); +! goto errret; + } + if (argvars[1].v_type == VAR_LIST) + { +*************** +*** 18279,18285 **** + if (p == NULL) + { + fclose(fd); +! goto done; /* type error; errmsg already given */ + } + if (fwrite(p, STRLEN(p), 1, fd) != 1) + err = TRUE; +--- 18283,18289 ---- + if (p == NULL) + { + fclose(fd); +! goto errret; /* type error; errmsg already given */ + } + if (fwrite(p, STRLEN(p), 1, fd) != 1) + err = TRUE; +*************** +*** 18289,18340 **** + if (err) + { + EMSG(_("E677: Error writing temp file")); +! goto done; + } + } + +! res = get_cmd_output(get_tv_string(&argvars[0]), infile, +! SHELL_SILENT | SHELL_COOKED); +! +! #ifdef USE_CR +! /* translate <CR> into <NL> */ +! if (res != NULL) + { +! char_u *s; + +! for (s = res; *s; ++s) +! { +! if (*s == CAR) +! *s = NL; + } + } +! #else +! # ifdef USE_CRNL +! /* translate <CR><NL> into <NL> */ +! if (res != NULL) + { +! char_u *s, *d; + +! d = res; +! for (s = res; *s; ++s) + { +! if (s[0] == CAR && s[1] == NL) +! ++s; +! *d++ = *s; + } +- *d = NUL; +- } + # endif + #endif + +! done: + if (infile != NULL) + { + mch_remove(infile); + vim_free(infile); + } +! rettv->v_type = VAR_STRING; +! rettv->vval.v_string = res; + } + + /* +--- 18293,18420 ---- + if (err) + { + EMSG(_("E677: Error writing temp file")); +! goto errret; + } + } + +! if (retlist) + { +! int len; +! listitem_T *li; +! char_u *s = NULL; +! char_u *start; +! char_u *end; +! char_u *p; +! int i; +! +! res = get_cmd_output(get_tv_string(&argvars[0]), infile, +! SHELL_SILENT | SHELL_COOKED, &len); +! if (res == NULL) +! goto errret; +! +! list = list_alloc(); +! if (list == NULL) +! goto errret; +! +! for (i = 0; i < len; ++i) +! { +! start = res + i; +! for (end = start; i < len && *end != NL; ++end) +! ++i; + +! s = vim_strnsave(start, (int)(end - start)); +! if (s == NULL) +! goto errret; +! +! for (p = s, end = s + (end - start); p < end; ++p) +! if (*p == NUL) +! *p = NL; +! +! li = listitem_alloc(); +! if (li == NULL) +! { +! vim_free(s); +! goto errret; +! } +! li->li_tv.v_type = VAR_STRING; +! li->li_tv.vval.v_string = s; +! list_append(list, li); + } ++ ++ rettv->v_type = VAR_LIST; ++ rettv->vval.v_list = list; ++ list = NULL; + } +! else + { +! res = get_cmd_output(get_tv_string(&argvars[0]), infile, +! SHELL_SILENT | SHELL_COOKED, NULL); +! #ifdef USE_CR +! /* translate <CR> into <NL> */ +! if (res != NULL) +! { +! char_u *s; + +! for (s = res; *s; ++s) +! { +! if (*s == CAR) +! *s = NL; +! } +! } +! #else +! # ifdef USE_CRNL +! /* translate <CR><NL> into <NL> */ +! if (res != NULL) + { +! char_u *s, *d; +! +! d = res; +! for (s = res; *s; ++s) +! { +! if (s[0] == CAR && s[1] == NL) +! ++s; +! *d++ = *s; +! } +! *d = NUL; + } + # endif + #endif ++ rettv->vval.v_string = res; ++ res = NULL; ++ } + +! errret: + if (infile != NULL) + { + mch_remove(infile); + vim_free(infile); + } +! if (res != NULL) +! vim_free(res); +! if (list != NULL) +! list_free(list, TRUE); +! } +! +! /* +! * "system()" function +! */ +! static void +! f_system(argvars, rettv) +! typval_T *argvars; +! typval_T *rettv; +! { +! get_cmd_output_as_rettv(argvars, rettv, FALSE); +! } +! +! /* +! * "systemlist()" function +! */ +! static void +! f_systemlist(argvars, rettv) +! typval_T *argvars; +! typval_T *rettv; +! { +! get_cmd_output_as_rettv(argvars, rettv, TRUE); + } + + /* +*** ../vim-7.4.247/src/ex_cmds2.c 2013-11-09 03:31:45.000000000 +0100 +--- src/ex_cmds2.c 2014-04-05 19:20:25.023157552 +0200 +*************** +*** 4341,4347 **** + /* Find all available locales by running command "locale -a". If this + * doesn't work we won't have completion. */ + char_u *locale_a = get_cmd_output((char_u *)"locale -a", +! NULL, SHELL_SILENT); + if (locale_a == NULL) + return NULL; + ga_init2(&locales_ga, sizeof(char_u *), 20); +--- 4341,4347 ---- + /* Find all available locales by running command "locale -a". If this + * doesn't work we won't have completion. */ + char_u *locale_a = get_cmd_output((char_u *)"locale -a", +! NULL, SHELL_SILENT, NULL); + if (locale_a == NULL) + return NULL; + ga_init2(&locales_ga, sizeof(char_u *), 20); +*** ../vim-7.4.247/src/misc1.c 2014-04-01 21:00:45.436733663 +0200 +--- src/misc1.c 2014-04-05 19:21:36.603157708 +0200 +*************** +*** 10665,10671 **** + else + #endif + buffer = get_cmd_output(cmd, NULL, +! (flags & EW_SILENT) ? SHELL_SILENT : 0); + vim_free(cmd); + if (buffer == NULL) + return 0; +--- 10665,10671 ---- + else + #endif + buffer = get_cmd_output(cmd, NULL, +! (flags & EW_SILENT) ? SHELL_SILENT : 0, NULL); + vim_free(cmd); + if (buffer == NULL) + return 0; +*************** +*** 10765,10777 **** + + /* + * Get the stdout of an external command. + * Returns an allocated string, or NULL for error. + */ + char_u * +! get_cmd_output(cmd, infile, flags) + char_u *cmd; + char_u *infile; /* optional input file name */ + int flags; /* can be SHELL_SILENT */ + { + char_u *tempname; + char_u *command; +--- 10765,10780 ---- + + /* + * Get the stdout of an external command. ++ * If "ret_len" is NULL replace NUL characters with NL. When "ret_len" is not ++ * NULL store the length there. + * Returns an allocated string, or NULL for error. + */ + char_u * +! get_cmd_output(cmd, infile, flags, ret_len) + char_u *cmd; + char_u *infile; /* optional input file name */ + int flags; /* can be SHELL_SILENT */ ++ int *ret_len; + { + char_u *tempname; + char_u *command; +*************** +*** 10841,10847 **** + vim_free(buffer); + buffer = NULL; + } +! else + { + /* Change NUL into SOH, otherwise the string is truncated. */ + for (i = 0; i < len; ++i) +--- 10844,10850 ---- + vim_free(buffer); + buffer = NULL; + } +! else if (ret_len == NULL) + { + /* Change NUL into SOH, otherwise the string is truncated. */ + for (i = 0; i < len; ++i) +*************** +*** 10850,10855 **** +--- 10853,10860 ---- + + buffer[len] = NUL; /* make sure the buffer is terminated */ + } ++ else ++ *ret_len = len; + + done: + vim_free(tempname); +*** ../vim-7.4.247/src/proto/misc1.pro 2013-11-06 04:01:31.000000000 +0100 +--- src/proto/misc1.pro 2014-04-05 19:06:26.427155720 +0200 +*************** +*** 100,106 **** + void remove_duplicates __ARGS((garray_T *gap)); + int gen_expand_wildcards __ARGS((int num_pat, char_u **pat, int *num_file, char_u ***file, int flags)); + void addfile __ARGS((garray_T *gap, char_u *f, int flags)); +! char_u *get_cmd_output __ARGS((char_u *cmd, char_u *infile, int flags)); + void FreeWild __ARGS((int count, char_u **files)); + int goto_im __ARGS((void)); + /* vim: set ft=c : */ +--- 100,106 ---- + void remove_duplicates __ARGS((garray_T *gap)); + int gen_expand_wildcards __ARGS((int num_pat, char_u **pat, int *num_file, char_u ***file, int flags)); + void addfile __ARGS((garray_T *gap, char_u *f, int flags)); +! char_u *get_cmd_output __ARGS((char_u *cmd, char_u *infile, int flags, int *ret_len)); + void FreeWild __ARGS((int count, char_u **files)); + int goto_im __ARGS((void)); + /* vim: set ft=c : */ +*** ../vim-7.4.247/src/version.c 2014-04-05 18:55:40.479154309 +0200 +--- src/version.c 2014-04-05 19:07:12.447155821 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 248, + /**/ + +-- +Tips for aliens in New York: Land anywhere. Central Park, anywhere. +No one will care or indeed even notice. + -- Douglas Adams, "The Hitchhiker's Guide to the Galaxy" + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.250 b/SOURCES/7.4.250 new file mode 100644 index 0000000..ff078aa --- /dev/null +++ b/SOURCES/7.4.250 @@ -0,0 +1,52 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.250 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.250 +Problem: Some test files missing from distribution. +Solution: Add pattern for newly added tests. +Files: Filelist + + +*** ../vim-7.4.249/Filelist 2014-01-23 14:26:18.815303381 +0100 +--- Filelist 2014-04-05 21:56:31.743178012 +0200 +*************** +*** 82,90 **** +--- 82,93 ---- + src/testdir/*.in \ + src/testdir/sautest/autoload/*.vim \ + src/testdir/test[0-9]*.ok \ ++ src/testdir/test[0-9]*a.ok \ ++ src/testdir/test_[a-z]*.ok \ + src/testdir/test49.vim \ + src/testdir/test60.vim \ + src/testdir/test83-tags? \ ++ src/testdir/test77a.com \ + src/testdir/python2/*.py \ + src/testdir/python3/*.py \ + src/testdir/pythonx/*.py \ +*** ../vim-7.4.249/src/version.c 2014-04-05 21:28:50.671174384 +0200 +--- src/version.c 2014-04-05 21:58:05.203178216 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 250, + /**/ + +-- +Give a man a computer program and you give him a headache, +but teach him to program computers and you give him the power +to create headaches for others for the rest of his life... + R. B. Forest + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.251 b/SOURCES/7.4.251 new file mode 100644 index 0000000..e841b80 --- /dev/null +++ b/SOURCES/7.4.251 @@ -0,0 +1,164 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.251 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.251 +Problem: Crash when BufAdd autocommand wipes out the buffer. +Solution: Check for buffer to still be valid. Postpone freeing the buffer + structure. (Hirohito Higashi) +Files: src/buffer.c, src/ex_cmds.c, src/fileio.c, src/globals.h + + +*** ../vim-7.4.250/src/buffer.c 2014-03-23 15:12:29.907264336 +0100 +--- src/buffer.c 2014-04-06 19:55:53.563350929 +0200 +*************** +*** 676,683 **** + #endif + #ifdef FEAT_AUTOCMD + aubuflocal_remove(buf); + #endif +! vim_free(buf); + } + + /* +--- 676,691 ---- + #endif + #ifdef FEAT_AUTOCMD + aubuflocal_remove(buf); ++ if (autocmd_busy) ++ { ++ /* Do not free the buffer structure while autocommands are executing, ++ * it's still needed. Free it when autocmd_busy is reset. */ ++ buf->b_next = au_pending_free_buf; ++ au_pending_free_buf = buf; ++ } ++ else + #endif +! vim_free(buf); + } + + /* +*************** +*** 1681,1687 **** +--- 1689,1699 ---- + buf->b_p_bl = TRUE; + #ifdef FEAT_AUTOCMD + if (!(flags & BLN_DUMMY)) ++ { + apply_autocmds(EVENT_BUFADD, NULL, NULL, FALSE, buf); ++ if (!buf_valid(buf)) ++ return NULL; ++ } + #endif + } + return buf; +*************** +*** 1857,1864 **** +--- 1869,1882 ---- + if (!(flags & BLN_DUMMY)) + { + apply_autocmds(EVENT_BUFNEW, NULL, NULL, FALSE, buf); ++ if (!buf_valid(buf)) ++ return NULL; + if (flags & BLN_LISTED) ++ { + apply_autocmds(EVENT_BUFADD, NULL, NULL, FALSE, buf); ++ if (!buf_valid(buf)) ++ return NULL; ++ } + # ifdef FEAT_EVAL + if (aborting()) /* autocmds may abort script processing */ + return NULL; +*** ../vim-7.4.250/src/ex_cmds.c 2014-04-04 19:00:46.351940169 +0200 +--- src/ex_cmds.c 2014-04-06 20:41:37.899356924 +0200 +*************** +*** 3343,3348 **** +--- 3343,3354 ---- + #endif + buf = buflist_new(ffname, sfname, 0L, + BLN_CURBUF | ((flags & ECMD_SET_HELP) ? 0 : BLN_LISTED)); ++ #ifdef FEAT_AUTOCMD ++ /* autocommands may change curwin and curbuf */ ++ if (oldwin != NULL) ++ oldwin = curwin; ++ old_curbuf = curbuf; ++ #endif + } + if (buf == NULL) + goto theend; +*** ../vim-7.4.250/src/fileio.c 2014-04-02 14:05:33.999887839 +0200 +--- src/fileio.c 2014-04-06 20:34:24.063355976 +0200 +*************** +*** 9548,9560 **** + + /* + * When stopping to execute autocommands, restore the search patterns and +! * the redo buffer. + */ + if (!autocmd_busy) + { + restore_search_patterns(); + restoreRedobuff(); + did_filetype = FALSE; + } + + /* +--- 9548,9566 ---- + + /* + * When stopping to execute autocommands, restore the search patterns and +! * the redo buffer. Free buffers in the au_pending_free_buf list. + */ + if (!autocmd_busy) + { + restore_search_patterns(); + restoreRedobuff(); + did_filetype = FALSE; ++ while (au_pending_free_buf != NULL) ++ { ++ buf_T *b = au_pending_free_buf->b_next; ++ vim_free(au_pending_free_buf); ++ au_pending_free_buf = b; ++ } + } + + /* +*** ../vim-7.4.250/src/globals.h 2014-03-23 15:12:29.943264337 +0100 +--- src/globals.h 2014-04-06 20:32:58.339355789 +0200 +*************** +*** 386,391 **** +--- 386,396 ---- + /* When deleting the current buffer, another one must be loaded. If we know + * which one is preferred, au_new_curbuf is set to it */ + EXTERN buf_T *au_new_curbuf INIT(= NULL); ++ ++ /* When deleting the buffer and autocmd_busy is TRUE, do not free the buffer ++ * but link it in the list starting with au_pending_free_buf, using b_next. ++ * Free the buffer when autocmd_busy is set to FALSE. */ ++ EXTERN buf_T *au_pending_free_buf INIT(= NULL); + #endif + + #ifdef FEAT_MOUSE +*** ../vim-7.4.250/src/version.c 2014-04-05 21:59:35.939178415 +0200 +--- src/version.c 2014-04-06 19:52:46.887350521 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 251, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +37. You start looking for hot HTML addresses in public restrooms. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.252 b/SOURCES/7.4.252 new file mode 100644 index 0000000..2c02849 --- /dev/null +++ b/SOURCES/7.4.252 @@ -0,0 +1,47 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.252 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.252 +Problem: Critical error in GTK, removing timer twice. +Solution: Clear the timer after removing it. (James McCoy) +Files: src/gui_gtk_x11.c + + +*** ../vim-7.4.251/src/gui_gtk_x11.c 2013-06-30 17:42:13.000000000 +0200 +--- src/gui_gtk_x11.c 2014-04-06 21:04:57.595359981 +0200 +*************** +*** 732,738 **** +--- 732,741 ---- + gui_mch_start_blink(void) + { + if (blink_timer) ++ { + gtk_timeout_remove(blink_timer); ++ blink_timer = 0; ++ } + /* Only switch blinking on if none of the times is zero */ + if (blink_waittime && blink_ontime && blink_offtime && gui.in_focus) + { +*** ../vim-7.4.251/src/version.c 2014-04-06 20:45:40.127357453 +0200 +--- src/version.c 2014-04-06 21:06:25.543360173 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 252, + /**/ + +-- +Everyone has a photographic memory. Some don't have film. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.253 b/SOURCES/7.4.253 new file mode 100644 index 0000000..dadc81b --- /dev/null +++ b/SOURCES/7.4.253 @@ -0,0 +1,76 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.253 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.253 +Problem: Crash when using cpp syntax file with pattern using external + match. (Havard Garnes) +Solution: Discard match when end column is before start column. +Files: src/regexp.c, src/regexp_nfa.c + + +*** ../vim-7.4.252/src/regexp.c 2014-04-02 19:00:53.043644100 +0200 +--- src/regexp.c 2014-04-06 21:26:17.087362776 +0200 +*************** +*** 4146,4152 **** + { + /* Only accept single line matches. */ + if (reg_startzpos[i].lnum >= 0 +! && reg_endzpos[i].lnum == reg_startzpos[i].lnum) + re_extmatch_out->matches[i] = + vim_strnsave(reg_getline(reg_startzpos[i].lnum) + + reg_startzpos[i].col, +--- 4146,4153 ---- + { + /* Only accept single line matches. */ + if (reg_startzpos[i].lnum >= 0 +! && reg_endzpos[i].lnum == reg_startzpos[i].lnum +! && reg_endzpos[i].col >= reg_startzpos[i].col) + re_extmatch_out->matches[i] = + vim_strnsave(reg_getline(reg_startzpos[i].lnum) + + reg_startzpos[i].col, +*** ../vim-7.4.252/src/regexp_nfa.c 2014-03-23 15:12:29.935264336 +0100 +--- src/regexp_nfa.c 2014-04-06 21:16:57.111361553 +0200 +*************** +*** 6781,6788 **** + { + struct multipos *mpos = &subs.synt.list.multi[i]; + +! /* Only accept single line matches. */ +! if (mpos->start.lnum >= 0 && mpos->start.lnum == mpos->end.lnum) + re_extmatch_out->matches[i] = + vim_strnsave(reg_getline(mpos->start.lnum) + + mpos->start.col, +--- 6781,6790 ---- + { + struct multipos *mpos = &subs.synt.list.multi[i]; + +! /* Only accept single line matches that are valid. */ +! if (mpos->start.lnum >= 0 +! && mpos->start.lnum == mpos->end.lnum +! && mpos->end.col >= mpos->start.col) + re_extmatch_out->matches[i] = + vim_strnsave(reg_getline(mpos->start.lnum) + + mpos->start.col, +*** ../vim-7.4.252/src/version.c 2014-04-06 21:08:41.315360470 +0200 +--- src/version.c 2014-04-06 21:33:17.271363694 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 253, + /**/ + +-- +A day without sunshine is like, well, night. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.254 b/SOURCES/7.4.254 new file mode 100644 index 0000000..a5085ba --- /dev/null +++ b/SOURCES/7.4.254 @@ -0,0 +1,183 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.2 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.254 +Problem: Smack support detection is incomplete. +Solution: Check for attr/xattr.h and specific macro. +Files: src/configure.in, src/auto/configure + + +*** ../vim-7.4.253/src/configure.in 2014-04-05 12:02:20.747100138 +0200 +--- src/configure.in 2014-04-10 11:02:59.256035996 +0200 +*************** +*** 396,405 **** + AC_MSG_RESULT(no) + AC_CHECK_HEADER([linux/xattr.h], true, enable_smack="no") + else +! AC_MSG_RESULT(yes) + fi + if test "$enable_smack" = "yes"; then +! AC_CHECK_LIB(attr, llistxattr, + [LIBS="$LIBS -lattr" + found_smack="yes" + AC_DEFINE(HAVE_SMACK)]) +--- 396,414 ---- + AC_MSG_RESULT(no) + AC_CHECK_HEADER([linux/xattr.h], true, enable_smack="no") + else +! AC_MSG_RESULT(yes) + fi + if test "$enable_smack" = "yes"; then +! AC_CHECK_HEADER([attr/xattr.h], true, enable_smack="no") +! fi +! if test "$enable_smack" = "yes"; then +! AC_MSG_CHECKING(for XATTR_NAME_SMACKEXEC in linux/xattr.h) +! AC_EGREP_CPP(XATTR_NAME_SMACKEXEC, [#include <linux/xattr.h>], +! AC_MSG_RESULT(yes), +! AC_MSG_RESULT(no); enable_smack = "no") +! fi +! if test "$enable_smack" = "yes"; then +! AC_CHECK_LIB(attr, setxattr, + [LIBS="$LIBS -lattr" + found_smack="yes" + AC_DEFINE(HAVE_SMACK)]) +*** ../vim-7.4.253/src/auto/configure 2014-04-05 12:02:20.751100138 +0200 +--- src/auto/configure 2014-04-10 11:03:04.220036007 +0200 +*************** +*** 4611,4623 **** + + + else +! { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 + $as_echo "yes" >&6; } + fi + if test "$enable_smack" = "yes"; then +! { $as_echo "$as_me:${as_lineno-$LINENO}: checking for llistxattr in -lattr" >&5 +! $as_echo_n "checking for llistxattr in -lattr... " >&6; } +! if ${ac_cv_lib_attr_llistxattr+:} false; then : + $as_echo_n "(cached) " >&6 + else + ac_check_lib_save_LIBS=$LIBS +--- 4611,4651 ---- + + + else +! { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 + $as_echo "yes" >&6; } + fi + if test "$enable_smack" = "yes"; then +! ac_fn_c_check_header_mongrel "$LINENO" "attr/xattr.h" "ac_cv_header_attr_xattr_h" "$ac_includes_default" +! if test "x$ac_cv_header_attr_xattr_h" = xyes; then : +! true +! else +! enable_smack="no" +! fi +! +! +! fi +! if test "$enable_smack" = "yes"; then +! { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XATTR_NAME_SMACKEXEC in linux/xattr.h" >&5 +! $as_echo_n "checking for XATTR_NAME_SMACKEXEC in linux/xattr.h... " >&6; } +! cat confdefs.h - <<_ACEOF >conftest.$ac_ext +! /* end confdefs.h. */ +! #include <linux/xattr.h> +! _ACEOF +! if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | +! $EGREP "XATTR_NAME_SMACKEXEC" >/dev/null 2>&1; then : +! { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +! $as_echo "yes" >&6; } +! else +! { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +! $as_echo "no" >&6; }; enable_smack = "no" +! fi +! rm -f conftest* +! +! fi +! if test "$enable_smack" = "yes"; then +! { $as_echo "$as_me:${as_lineno-$LINENO}: checking for setxattr in -lattr" >&5 +! $as_echo_n "checking for setxattr in -lattr... " >&6; } +! if ${ac_cv_lib_attr_setxattr+:} false; then : + $as_echo_n "(cached) " >&6 + else + ac_check_lib_save_LIBS=$LIBS +*************** +*** 4631,4657 **** + #ifdef __cplusplus + extern "C" + #endif +! char llistxattr (); + int + main () + { +! return llistxattr (); + ; + return 0; + } + _ACEOF + if ac_fn_c_try_link "$LINENO"; then : +! ac_cv_lib_attr_llistxattr=yes + else +! ac_cv_lib_attr_llistxattr=no + fi + rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LIBS=$ac_check_lib_save_LIBS + fi +! { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_attr_llistxattr" >&5 +! $as_echo "$ac_cv_lib_attr_llistxattr" >&6; } +! if test "x$ac_cv_lib_attr_llistxattr" = xyes; then : + LIBS="$LIBS -lattr" + found_smack="yes" + $as_echo "#define HAVE_SMACK 1" >>confdefs.h +--- 4659,4685 ---- + #ifdef __cplusplus + extern "C" + #endif +! char setxattr (); + int + main () + { +! return setxattr (); + ; + return 0; + } + _ACEOF + if ac_fn_c_try_link "$LINENO"; then : +! ac_cv_lib_attr_setxattr=yes + else +! ac_cv_lib_attr_setxattr=no + fi + rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LIBS=$ac_check_lib_save_LIBS + fi +! { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_attr_setxattr" >&5 +! $as_echo "$ac_cv_lib_attr_setxattr" >&6; } +! if test "x$ac_cv_lib_attr_setxattr" = xyes; then : + LIBS="$LIBS -lattr" + found_smack="yes" + $as_echo "#define HAVE_SMACK 1" >>confdefs.h +*** ../vim-7.4.253/src/version.c 2014-04-06 21:33:39.675363743 +0200 +--- src/version.c 2014-04-10 11:00:57.200035730 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 254, + /**/ + +-- +George: "I just got a new set of golf clubs for my wife!" + John: "Great trade!" + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.255 b/SOURCES/7.4.255 new file mode 100644 index 0000000..5741a5e --- /dev/null +++ b/SOURCES/7.4.255 @@ -0,0 +1,108 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.255 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.255 +Problem: Configure check for smack doesn't work with all shells. (David + Larson) +Solution: Remove spaces in set command. +Files: src/configure.in, src/auto/configure + + +*** ../vim-7.4.254/src/configure.in 2014-04-10 11:09:11.676036810 +0200 +--- src/configure.in 2014-04-10 19:53:38.884105545 +0200 +*************** +*** 405,411 **** + AC_MSG_CHECKING(for XATTR_NAME_SMACKEXEC in linux/xattr.h) + AC_EGREP_CPP(XATTR_NAME_SMACKEXEC, [#include <linux/xattr.h>], + AC_MSG_RESULT(yes), +! AC_MSG_RESULT(no); enable_smack = "no") + fi + if test "$enable_smack" = "yes"; then + AC_CHECK_LIB(attr, setxattr, +--- 405,411 ---- + AC_MSG_CHECKING(for XATTR_NAME_SMACKEXEC in linux/xattr.h) + AC_EGREP_CPP(XATTR_NAME_SMACKEXEC, [#include <linux/xattr.h>], + AC_MSG_RESULT(yes), +! AC_MSG_RESULT(no); enable_smack="no") + fi + if test "$enable_smack" = "yes"; then + AC_CHECK_LIB(attr, setxattr, +*************** +*** 2643,2649 **** + AC_MSG_CHECKING(for XIMText in X11/Xlib.h) + AC_EGREP_CPP(XIMText, [#include <X11/Xlib.h>], + AC_MSG_RESULT(yes), +! AC_MSG_RESULT(no; xim has been disabled); enable_xim = "no") + fi + CPPFLAGS=$cppflags_save + +--- 2643,2649 ---- + AC_MSG_CHECKING(for XIMText in X11/Xlib.h) + AC_EGREP_CPP(XIMText, [#include <X11/Xlib.h>], + AC_MSG_RESULT(yes), +! AC_MSG_RESULT(no; xim has been disabled); enable_xim="no") + fi + CPPFLAGS=$cppflags_save + +*** ../vim-7.4.254/src/auto/configure 2014-04-10 11:09:11.684036810 +0200 +--- src/auto/configure 2014-04-10 19:53:54.032105578 +0200 +*************** +*** 4637,4643 **** + $as_echo "yes" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +! $as_echo "no" >&6; }; enable_smack = "no" + fi + rm -f conftest* + +--- 4637,4643 ---- + $as_echo "yes" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +! $as_echo "no" >&6; }; enable_smack="no" + fi + rm -f conftest* + +*************** +*** 9303,9309 **** + $as_echo "yes" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no; xim has been disabled" >&5 +! $as_echo "no; xim has been disabled" >&6; }; enable_xim = "no" + fi + rm -f conftest* + +--- 9303,9309 ---- + $as_echo "yes" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no; xim has been disabled" >&5 +! $as_echo "no; xim has been disabled" >&6; }; enable_xim="no" + fi + rm -f conftest* + +*** ../vim-7.4.254/src/version.c 2014-04-10 11:09:11.684036810 +0200 +--- src/version.c 2014-04-10 19:56:55.272105974 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 255, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +40. You tell the cab driver you live at + http://123.elm.street/house/bluetrim.html +41. You actually try that 123.elm.street address. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.256 b/SOURCES/7.4.256 new file mode 100644 index 0000000..ef2a859 --- /dev/null +++ b/SOURCES/7.4.256 @@ -0,0 +1,83 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.2 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.256 (after 7.4.248) +Problem: Using systemlist() may cause a crash and does not handle NUL + characters properly. +Solution: Increase the reference count, allocate memory by length. (Yasuhiro + Matsumoto) +Files: src/eval.c + + +*** ../vim-7.4.255/src/eval.c 2014-04-05 21:28:50.667174384 +0200 +--- src/eval.c 2014-04-11 10:10:22.112217827 +0200 +*************** +*** 18334,18349 **** + for (i = 0; i < len; ++i) + { + start = res + i; +! for (end = start; i < len && *end != NL; ++end) + ++i; + +! s = vim_strnsave(start, (int)(end - start)); + if (s == NULL) + goto errret; + +! for (p = s, end = s + (end - start); p < end; ++p) +! if (*p == NUL) +! *p = NL; + + li = listitem_alloc(); + if (li == NULL) +--- 18334,18350 ---- + for (i = 0; i < len; ++i) + { + start = res + i; +! while (i < len && res[i] != NL) + ++i; ++ end = res + i; + +! s = alloc((unsigned)(end - start + 1)); + if (s == NULL) + goto errret; + +! for (p = s; start < end; ++p, ++start) +! *p = *start == NUL ? NL : *start; +! *p = NUL; + + li = listitem_alloc(); + if (li == NULL) +*************** +*** 18356,18361 **** +--- 18357,18363 ---- + list_append(list, li); + } + ++ ++list->lv_refcount; + rettv->v_type = VAR_LIST; + rettv->vval.v_list = list; + list = NULL; +*** ../vim-7.4.255/src/version.c 2014-04-10 20:00:03.720106386 +0200 +--- src/version.c 2014-04-11 09:44:05.208214383 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 256, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +46. Your wife makes a new rule: "The computer cannot come to bed." + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.257 b/SOURCES/7.4.257 new file mode 100644 index 0000000..67974a8 --- /dev/null +++ b/SOURCES/7.4.257 @@ -0,0 +1,64 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.257 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.257 +Problem: Compiler warning, possibly for mismatch in parameter name. +Solution: Rename the parameter in the declaration. +Files: src/ops.c + +*** ../vim-7.4.256/src/ops.c 2014-04-02 22:17:00.003482236 +0200 +--- src/ops.c 2014-04-12 12:23:59.308424067 +0200 +*************** +*** 113,119 **** + #endif + static void block_prep __ARGS((oparg_T *oap, struct block_def *, linenr_T, int)); + #if defined(FEAT_CLIPBOARD) || defined(FEAT_EVAL) +! static void str_to_reg __ARGS((struct yankreg *y_ptr, int type, char_u *str, long len, long blocklen, int str_list)); + #endif + static int ends_in_white __ARGS((linenr_T lnum)); + #ifdef FEAT_COMMENTS +--- 113,119 ---- + #endif + static void block_prep __ARGS((oparg_T *oap, struct block_def *, linenr_T, int)); + #if defined(FEAT_CLIPBOARD) || defined(FEAT_EVAL) +! static void str_to_reg __ARGS((struct yankreg *y_ptr, int yank_type, char_u *str, long len, long blocklen, int str_list)); + #endif + static int ends_in_white __ARGS((linenr_T lnum)); + #ifdef FEAT_COMMENTS +*** ../vim-7.4.256/src/version.c 2014-04-11 10:22:46.288219453 +0200 +--- src/version.c 2014-04-12 12:25:44.176424296 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 257, + /**/ + +-- +The real +trick is +this: to +keep the +lines as +short as +possible +and keep +the size +the same +yet free +from the +need for +hyphena- +Dammit!! (Matthew Winn) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.258 b/SOURCES/7.4.258 new file mode 100644 index 0000000..d423345 --- /dev/null +++ b/SOURCES/7.4.258 @@ -0,0 +1,114 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.258 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.258 +Problem: Configure fails if $CC contains options. +Solution: Remove quotes around $CC. (Paul Barker) +Files: src/configure.in, src/auto/configure + + +*** ../vim-7.4.257/src/configure.in 2014-04-10 20:00:03.708106386 +0200 +--- src/configure.in 2014-04-12 13:00:51.332428899 +0200 +*************** +*** 46,55 **** + fi + if test "$GCC" = yes; then + dnl method that should work for nearly all versions +! gccversion=`"$CC" -dumpversion` + if test "x$gccversion" = "x"; then + dnl old method; fall-back for when -dumpversion doesn't work +! gccversion=`"$CC" --version | sed -e '2,$d' -e 's/darwin.//' -e 's/^[[^0-9]]*\([[0-9]]\.[[0-9.]]*\).*$/\1/g'` + fi + dnl version 4.0.1 was reported to cause trouble on Macintosh by Marcin Dalecki + if test "$gccversion" = "3.0.1" -o "$gccversion" = "3.0.2" -o "$gccversion" = "4.0.1"; then +--- 46,55 ---- + fi + if test "$GCC" = yes; then + dnl method that should work for nearly all versions +! gccversion=`$CC -dumpversion` + if test "x$gccversion" = "x"; then + dnl old method; fall-back for when -dumpversion doesn't work +! gccversion=`$CC --version | sed -e '2,$d' -e 's/darwin.//' -e 's/^[[^0-9]]*\([[0-9]]\.[[0-9.]]*\).*$/\1/g'` + fi + dnl version 4.0.1 was reported to cause trouble on Macintosh by Marcin Dalecki + if test "$gccversion" = "3.0.1" -o "$gccversion" = "3.0.2" -o "$gccversion" = "4.0.1"; then +*************** +*** 68,74 **** + dnl the version number of the clang in use. + dnl Note that this does not work to get the version of clang 3.1 or 3.2. + AC_MSG_CHECKING(for recent clang version) +! CLANG_VERSION_STRING=`"$CC" --version 2>/dev/null | sed -n -e 's/^.*clang.*\([[0-9]][[0-9]]*\.[[0-9]][[0-9]]*\.[[0-9]][[0-9]]*\).*$/\1/p'` + if test x"$CLANG_VERSION_STRING" != x"" ; then + CLANG_MAJOR=`echo "$CLANG_VERSION_STRING" | sed -n -e 's/\([[0-9]][[0-9]]*\)\.[[0-9]][[0-9]]*\.[[0-9]][[0-9]]*/\1/p'` + CLANG_MINOR=`echo "$CLANG_VERSION_STRING" | sed -n -e 's/[[0-9]][[0-9]]*\.\([[0-9]][[0-9]]*\)\.[[0-9]][[0-9]]*/\1/p'` +--- 68,74 ---- + dnl the version number of the clang in use. + dnl Note that this does not work to get the version of clang 3.1 or 3.2. + AC_MSG_CHECKING(for recent clang version) +! CLANG_VERSION_STRING=`$CC --version 2>/dev/null | sed -n -e 's/^.*clang.*\([[0-9]][[0-9]]*\.[[0-9]][[0-9]]*\.[[0-9]][[0-9]]*\).*$/\1/p'` + if test x"$CLANG_VERSION_STRING" != x"" ; then + CLANG_MAJOR=`echo "$CLANG_VERSION_STRING" | sed -n -e 's/\([[0-9]][[0-9]]*\)\.[[0-9]][[0-9]]*\.[[0-9]][[0-9]]*/\1/p'` + CLANG_MINOR=`echo "$CLANG_VERSION_STRING" | sed -n -e 's/[[0-9]][[0-9]]*\.\([[0-9]][[0-9]]*\)\.[[0-9]][[0-9]]*/\1/p'` +*** ../vim-7.4.257/src/auto/configure 2014-04-10 20:00:03.716106386 +0200 +--- src/auto/configure 2014-04-12 13:00:58.436428915 +0200 +*************** +*** 4074,4082 **** + test "$GCC" = yes && CFLAGS="-O2 -fno-strength-reduce -Wall" + fi + if test "$GCC" = yes; then +! gccversion=`"$CC" -dumpversion` + if test "x$gccversion" = "x"; then +! gccversion=`"$CC" --version | sed -e '2,$d' -e 's/darwin.//' -e 's/^[^0-9]*\([0-9]\.[0-9.]*\).*$/\1/g'` + fi + if test "$gccversion" = "3.0.1" -o "$gccversion" = "3.0.2" -o "$gccversion" = "4.0.1"; then + echo 'GCC [34].0.[12] has a bug in the optimizer, disabling "-O#"' +--- 4074,4082 ---- + test "$GCC" = yes && CFLAGS="-O2 -fno-strength-reduce -Wall" + fi + if test "$GCC" = yes; then +! gccversion=`$CC -dumpversion` + if test "x$gccversion" = "x"; then +! gccversion=`$CC --version | sed -e '2,$d' -e 's/darwin.//' -e 's/^[^0-9]*\([0-9]\.[0-9.]*\).*$/\1/g'` + fi + if test "$gccversion" = "3.0.1" -o "$gccversion" = "3.0.2" -o "$gccversion" = "4.0.1"; then + echo 'GCC [34].0.[12] has a bug in the optimizer, disabling "-O#"' +*************** +*** 4091,4097 **** + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for recent clang version" >&5 + $as_echo_n "checking for recent clang version... " >&6; } +! CLANG_VERSION_STRING=`"$CC" --version 2>/dev/null | sed -n -e 's/^.*clang.*\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*$/\1/p'` + if test x"$CLANG_VERSION_STRING" != x"" ; then + CLANG_MAJOR=`echo "$CLANG_VERSION_STRING" | sed -n -e 's/\([0-9][0-9]*\)\.[0-9][0-9]*\.[0-9][0-9]*/\1/p'` + CLANG_MINOR=`echo "$CLANG_VERSION_STRING" | sed -n -e 's/[0-9][0-9]*\.\([0-9][0-9]*\)\.[0-9][0-9]*/\1/p'` +--- 4091,4097 ---- + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for recent clang version" >&5 + $as_echo_n "checking for recent clang version... " >&6; } +! CLANG_VERSION_STRING=`$CC --version 2>/dev/null | sed -n -e 's/^.*clang.*\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*$/\1/p'` + if test x"$CLANG_VERSION_STRING" != x"" ; then + CLANG_MAJOR=`echo "$CLANG_VERSION_STRING" | sed -n -e 's/\([0-9][0-9]*\)\.[0-9][0-9]*\.[0-9][0-9]*/\1/p'` + CLANG_MINOR=`echo "$CLANG_VERSION_STRING" | sed -n -e 's/[0-9][0-9]*\.\([0-9][0-9]*\)\.[0-9][0-9]*/\1/p'` +*** ../vim-7.4.257/src/version.c 2014-04-12 12:26:25.856424387 +0200 +--- src/version.c 2014-04-12 13:05:09.372429463 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 258, + /**/ + +-- +Never go to the toilet in a paperless office. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.259 b/SOURCES/7.4.259 new file mode 100644 index 0000000..e8f28b5 --- /dev/null +++ b/SOURCES/7.4.259 @@ -0,0 +1,53 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.259 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.259 +Problem: Warning for misplaced "const". +Solution: Move the "const". (Yukihiro Nakadaira) +Files: src/os_unix.c + + +*** ../vim-7.4.258/src/os_unix.c 2014-04-02 23:09:23.003439001 +0200 +--- src/os_unix.c 2014-04-23 12:40:45.931386548 +0200 +*************** +*** 2815,2821 **** + char_u *from_file; + char_u *to_file; + { +! static const char const *smack_copied_attributes[] = + { + XATTR_NAME_SMACK, + XATTR_NAME_SMACKEXEC, +--- 2815,2821 ---- + char_u *from_file; + char_u *to_file; + { +! static const char * const smack_copied_attributes[] = + { + XATTR_NAME_SMACK, + XATTR_NAME_SMACKEXEC, +*** ../vim-7.4.258/src/version.c 2014-04-12 13:11:58.272430356 +0200 +--- src/version.c 2014-04-23 12:49:22.587374098 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 259, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +91. It's Saturday afternoon in the middle of May and you + are on computer. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.260 b/SOURCES/7.4.260 new file mode 100644 index 0000000..2ac9669 --- /dev/null +++ b/SOURCES/7.4.260 @@ -0,0 +1,281 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.260 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.260 +Problem: It is possible to define a function with a colon in the name. It + is possible to define a function with a lower case character if a + "#" appears after the name. +Solution: Disallow using a colon other than with "s:". Ignore "#" after the + name. +Files: runtime/doc/eval.txt, src/eval.c, src/testdir/test_eval.in, + src/testdir/test_eval.ok + + +*** ../vim-7.4.259/runtime/doc/eval.txt 2014-04-05 19:44:36.891160723 +0200 +--- runtime/doc/eval.txt 2014-04-23 17:19:57.914982886 +0200 +*************** +*** 123,128 **** +--- 123,129 ---- + :echo Fn() + < *E704* *E705* *E707* + A Funcref variable must start with a capital, "s:", "w:", "t:" or "b:". You ++ can use "g:" but the following name must still start with a capital. You + cannot have both a Funcref variable and a function with the same name. + + A special case is defining a function and directly assigning its Funcref to a +*************** +*** 6675,6680 **** +--- 6691,6698 ---- + and autocommands defined in the script. It is also possible to call the + function from a mapping defined in the script, but then |<SID>| must be used + instead of "s:" when the mapping is expanded outside of the script. ++ There are only script-local functions, no buffer-local or window-local ++ functions. + + *:fu* *:function* *E128* *E129* *E123* + :fu[nction] List all functions and their arguments. +*************** +*** 6698,6708 **** + < + See |:verbose-cmd| for more information. + +! *E124* *E125* *E853* + :fu[nction][!] {name}([arguments]) [range] [abort] [dict] + Define a new function by the name {name}. The name + must be made of alphanumeric characters and '_', and +! must start with a capital or "s:" (see above). + + {name} can also be a |Dictionary| entry that is a + |Funcref|: > +--- 6716,6727 ---- + < + See |:verbose-cmd| for more information. + +! *E124* *E125* *E853* *E884* + :fu[nction][!] {name}([arguments]) [range] [abort] [dict] + Define a new function by the name {name}. The name + must be made of alphanumeric characters and '_', and +! must start with a capital or "s:" (see above). Note +! that using "b:" or "g:" is not allowed. + + {name} can also be a |Dictionary| entry that is a + |Funcref|: > +*** ../vim-7.4.259/src/eval.c 2014-04-11 10:22:46.288219453 +0200 +--- src/eval.c 2014-04-23 17:37:23.890957682 +0200 +*************** +*** 808,814 **** + static void list_func_head __ARGS((ufunc_T *fp, int indent)); + static ufunc_T *find_func __ARGS((char_u *name)); + static int function_exists __ARGS((char_u *name)); +! static int builtin_function __ARGS((char_u *name)); + #ifdef FEAT_PROFILE + static void func_do_profile __ARGS((ufunc_T *fp)); + static void prof_sort_list __ARGS((FILE *fd, ufunc_T **sorttab, int st_len, char *title, int prefer_self)); +--- 808,814 ---- + static void list_func_head __ARGS((ufunc_T *fp, int indent)); + static ufunc_T *find_func __ARGS((char_u *name)); + static int function_exists __ARGS((char_u *name)); +! static int builtin_function __ARGS((char_u *name, int len)); + #ifdef FEAT_PROFILE + static void func_do_profile __ARGS((ufunc_T *fp)); + static void prof_sort_list __ARGS((FILE *fd, ufunc_T **sorttab, int st_len, char *title, int prefer_self)); +*************** +*** 8489,8495 **** + rettv->vval.v_number = 0; + error = ERROR_UNKNOWN; + +! if (!builtin_function(fname)) + { + /* + * User defined function. +--- 8489,8495 ---- + rettv->vval.v_number = 0; + error = ERROR_UNKNOWN; + +! if (!builtin_function(fname, -1)) + { + /* + * User defined function. +*************** +*** 21584,21589 **** +--- 21584,21590 ---- + * Get the function name. There are these situations: + * func normal function name + * "name" == func, "fudi.fd_dict" == NULL ++ * s:func script-local function name + * dict.func new dictionary entry + * "name" == NULL, "fudi.fd_dict" set, + * "fudi.fd_di" == NULL, "fudi.fd_newkey" == func +*************** +*** 22314,22324 **** + lead += (int)STRLEN(sid_buf); + } + } +! else if (!(flags & TFN_INT) && builtin_function(lv.ll_name)) + { +! EMSG2(_("E128: Function name must start with a capital or contain a colon: %s"), lv.ll_name); + goto theend; + } + name = alloc((unsigned)(len + lead + 1)); + if (name != NULL) + { +--- 22315,22338 ---- + lead += (int)STRLEN(sid_buf); + } + } +! else if (!(flags & TFN_INT) && builtin_function(lv.ll_name, len)) + { +! EMSG2(_("E128: Function name must start with a capital or \"s:\": %s"), +! lv.ll_name); + goto theend; + } ++ if (!skip) ++ { ++ char_u *cp = vim_strchr(lv.ll_name, ':'); ++ ++ if (cp != NULL && cp < end) ++ { ++ EMSG2(_("E884: Function name cannot contain a colon: %s"), ++ lv.ll_name); ++ goto theend; ++ } ++ } ++ + name = alloc((unsigned)(len + lead + 1)); + if (name != NULL) + { +*************** +*** 22331,22337 **** + STRCPY(name + 3, sid_buf); + } + mch_memmove(name + lead, lv.ll_name, (size_t)len); +! name[len + lead] = NUL; + } + *pp = end; + +--- 22345,22351 ---- + STRCPY(name + 3, sid_buf); + } + mch_memmove(name + lead, lv.ll_name, (size_t)len); +! name[lead + len] = NUL; + } + *pp = end; + +*************** +*** 22452,22458 **** + translated_function_exists(name) + char_u *name; + { +! if (builtin_function(name)) + return find_internal_func(name) >= 0; + return find_func(name) != NULL; + } +--- 22466,22472 ---- + translated_function_exists(name) + char_u *name; + { +! if (builtin_function(name, -1)) + return find_internal_func(name) >= 0; + return find_func(name) != NULL; + } +*************** +*** 22500,22513 **** + + /* + * Return TRUE if "name" looks like a builtin function name: starts with a +! * lower case letter and doesn't contain a ':' or AUTOLOAD_CHAR. + */ + static int +! builtin_function(name) + char_u *name; + { +! return ASCII_ISLOWER(name[0]) && vim_strchr(name, ':') == NULL +! && vim_strchr(name, AUTOLOAD_CHAR) == NULL; + } + + #if defined(FEAT_PROFILE) || defined(PROTO) +--- 22514,22533 ---- + + /* + * Return TRUE if "name" looks like a builtin function name: starts with a +! * lower case letter and doesn't contain AUTOLOAD_CHAR. +! * "len" is the length of "name", or -1 for NUL terminated. + */ + static int +! builtin_function(name, len) + char_u *name; ++ int len; + { +! char_u *p; +! +! if (!ASCII_ISLOWER(name[0])) +! return FALSE; +! p = vim_strchr(name, AUTOLOAD_CHAR); +! return p == NULL || (len > 0 && p > name + len); + } + + #if defined(FEAT_PROFILE) || defined(PROTO) +*** ../vim-7.4.259/src/testdir/test_eval.in 2014-04-05 21:28:50.667174384 +0200 +--- src/testdir/test_eval.in 2014-04-23 17:35:12.086960858 +0200 +*************** +*** 144,149 **** +--- 144,167 ---- + :delcommand AR + :call garbagecollect(1) + :" ++ :" function name includes a colon ++ :try ++ :func! g:test() ++ :echo "test" ++ :endfunc ++ :catch ++ :$put =v:exception ++ :endtry ++ :" ++ :" function name folowed by # ++ :try ++ :func! test2() "# ++ :echo "test2" ++ :endfunc ++ :catch ++ :$put =v:exception ++ :endtry ++ :" + :/^start:/+1,$wq! test.out + :" vim: et ts=4 isk-=\: fmr=???,??? + :call getchar() +*** ../vim-7.4.259/src/testdir/test_eval.ok 2014-04-05 21:28:50.667174384 +0200 +--- src/testdir/test_eval.ok 2014-04-23 17:36:34.602958870 +0200 +*************** +*** 335,337 **** +--- 335,339 ---- + Vim(call):E883: search pattern and expression register may not contain two or more lines + Executing call setreg(1, ["", "", [], ""]) + Vim(call):E730: using List as a String ++ Vim(function):E128: Function name must start with a capital or "s:": g:test() ++ Vim(function):E128: Function name must start with a capital or "s:": test2() "# +*** ../vim-7.4.259/src/version.c 2014-04-23 12:52:36.499369426 +0200 +--- src/version.c 2014-04-23 17:17:50.994985945 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 260, + /**/ + +-- +From "know your smileys": + ;-0 Can't find shift key + ,-9 Kann Umschalttaste nicht finden + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.261 b/SOURCES/7.4.261 new file mode 100644 index 0000000..a9ca118 --- /dev/null +++ b/SOURCES/7.4.261 @@ -0,0 +1,106 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.261 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.261 +Problem: When updating the window involves a regexp pattern, an interactive + substitute to replace a "\n" with a line break fails. (Ingo + Karkat) +Solution: Set reg_line_lbr in vim_regsub() and vim_regsub_multi(). +Files: src/regexp.c, src/testdir/test79.in, src/testdir/test79.ok + + +*** ../vim-7.4.260/src/regexp.c 2014-04-06 21:33:39.671363743 +0200 +--- src/regexp.c 2014-04-23 18:40:37.094866280 +0200 +*************** +*** 7381,7386 **** +--- 7381,7387 ---- + reg_mmatch = NULL; + reg_maxline = 0; + reg_buf = curbuf; ++ reg_line_lbr = TRUE; + return vim_regsub_both(source, dest, copy, magic, backslash); + } + #endif +*************** +*** 7400,7405 **** +--- 7401,7407 ---- + reg_buf = curbuf; /* always works on the current buffer! */ + reg_firstlnum = lnum; + reg_maxline = curbuf->b_ml.ml_line_count - lnum; ++ reg_line_lbr = FALSE; + return vim_regsub_both(source, dest, copy, magic, backslash); + } + +*** ../vim-7.4.260/src/testdir/test79.in 2014-04-02 19:00:53.043644100 +0200 +--- src/testdir/test79.in 2014-04-23 18:36:29.158872254 +0200 +*************** +*** 1,6 **** +--- 1,7 ---- + Test for *sub-replace-special* and *sub-replace-expression* on :substitute. + Test for submatch() on :substitue. + Test for *:s%* on :substitute. ++ Test for :s replacing \n with line break. + + STARTTEST + :so small.vim +*************** +*** 234,239 **** +--- 235,254 ---- + Q + + STARTTEST ++ :function! TitleString() ++ let check = 'foo' =~ 'bar' ++ return "" ++ endfunction ++ :set titlestring=%{TitleString()} ++ :/^test_one/s/.*/\="foo\nbar"/ ++ :/^test_two/s/.*/\="foo\nbar"/c ++ y ++ ENDTEST ++ ++ test_one ++ test_two ++ ++ STARTTEST + :g/^STARTTEST/.,/^ENDTEST/d + :1;/^Results/,$wq! test.out + :call getchar() +*** ../vim-7.4.260/src/testdir/test79.ok 2014-04-02 19:00:53.043644100 +0200 +--- src/testdir/test79.ok 2014-04-23 18:35:30.650873664 +0200 +*************** +*** 126,128 **** +--- 126,134 ---- + Q + Q + ++ ++ foo ++ bar ++ foo ++ bar ++ +*** ../vim-7.4.260/src/version.c 2014-04-23 17:43:37.366948683 +0200 +--- src/version.c 2014-04-23 18:46:45.250857408 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 261, + /**/ + +-- +From "know your smileys": + !-| I-am-a-Cylon-Centurian-with-one-red-eye-bouncing-back-and-forth + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.262 b/SOURCES/7.4.262 new file mode 100644 index 0000000..ef29032 --- /dev/null +++ b/SOURCES/7.4.262 @@ -0,0 +1,314 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.262 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.262 +Problem: Duplicate code in regexec(). +Solution: Add line_lbr flag to regexec_nl(). +Files: src/regexp.c, src/regexp_nfa.c, src/regexp.h + + +*** ../vim-7.4.261/src/regexp.c 2014-04-23 18:48:43.546854558 +0200 +--- src/regexp.c 2014-04-23 18:59:38.606838773 +0200 +*************** +*** 3709,3733 **** + /* TRUE if using multi-line regexp. */ + #define REG_MULTI (reg_match == NULL) + +! static int bt_regexec __ARGS((regmatch_T *rmp, char_u *line, colnr_T col)); + + /* + * Match a regexp against a string. + * "rmp->regprog" is a compiled regexp as returned by vim_regcomp(). + * Uses curbuf for line count and 'iskeyword'. + * + * Return TRUE if there is a match, FALSE if not. + */ + static int +! bt_regexec(rmp, line, col) + regmatch_T *rmp; + char_u *line; /* string to match against */ + colnr_T col; /* column to start looking for match */ + { + reg_match = rmp; + reg_mmatch = NULL; + reg_maxline = 0; +! reg_line_lbr = FALSE; + reg_buf = curbuf; + reg_win = NULL; + ireg_ic = rmp->rm_ic; +--- 3709,3736 ---- + /* TRUE if using multi-line regexp. */ + #define REG_MULTI (reg_match == NULL) + +! static int bt_regexec_nl __ARGS((regmatch_T *rmp, char_u *line, colnr_T col, int line_lbr)); +! + + /* + * Match a regexp against a string. + * "rmp->regprog" is a compiled regexp as returned by vim_regcomp(). + * Uses curbuf for line count and 'iskeyword'. ++ * if "line_lbr" is TRUE consider a "\n" in "line" to be a line break. + * + * Return TRUE if there is a match, FALSE if not. + */ + static int +! bt_regexec_nl(rmp, line, col, line_lbr) + regmatch_T *rmp; + char_u *line; /* string to match against */ + colnr_T col; /* column to start looking for match */ ++ int line_lbr; + { + reg_match = rmp; + reg_mmatch = NULL; + reg_maxline = 0; +! reg_line_lbr = line_lbr; + reg_buf = curbuf; + reg_win = NULL; + ireg_ic = rmp->rm_ic; +*************** +*** 3738,3772 **** + return (bt_regexec_both(line, col, NULL) != 0); + } + +- #if defined(FEAT_MODIFY_FNAME) || defined(FEAT_EVAL) \ +- || defined(FIND_REPLACE_DIALOG) || defined(PROTO) +- +- static int bt_regexec_nl __ARGS((regmatch_T *rmp, char_u *line, colnr_T col)); +- +- /* +- * Like vim_regexec(), but consider a "\n" in "line" to be a line break. +- */ +- static int +- bt_regexec_nl(rmp, line, col) +- regmatch_T *rmp; +- char_u *line; /* string to match against */ +- colnr_T col; /* column to start looking for match */ +- { +- reg_match = rmp; +- reg_mmatch = NULL; +- reg_maxline = 0; +- reg_line_lbr = TRUE; +- reg_buf = curbuf; +- reg_win = NULL; +- ireg_ic = rmp->rm_ic; +- #ifdef FEAT_MBYTE +- ireg_icombine = FALSE; +- #endif +- ireg_maxcol = 0; +- return (bt_regexec_both(line, col, NULL) != 0); +- } +- #endif +- + static long bt_regexec_multi __ARGS((regmmatch_T *rmp, win_T *win, buf_T *buf, linenr_T lnum, colnr_T col, proftime_T *tm)); + + /* +--- 3741,3746 ---- +*************** +*** 7985,7995 **** + { + bt_regcomp, + bt_regfree, +- bt_regexec, +- #if defined(FEAT_MODIFY_FNAME) || defined(FEAT_EVAL) \ +- || defined(FIND_REPLACE_DIALOG) || defined(PROTO) + bt_regexec_nl, +- #endif + bt_regexec_multi + #ifdef DEBUG + ,(char_u *)"" +--- 7959,7965 ---- +*************** +*** 8003,8013 **** + { + nfa_regcomp, + nfa_regfree, +- nfa_regexec, +- #if defined(FEAT_MODIFY_FNAME) || defined(FEAT_EVAL) \ +- || defined(FIND_REPLACE_DIALOG) || defined(PROTO) + nfa_regexec_nl, +- #endif + nfa_regexec_multi + #ifdef DEBUG + ,(char_u *)"" +--- 7973,7979 ---- +*************** +*** 8131,8137 **** + char_u *line; /* string to match against */ + colnr_T col; /* column to start looking for match */ + { +! return rmp->regprog->engine->regexec(rmp, line, col); + } + + #if defined(FEAT_MODIFY_FNAME) || defined(FEAT_EVAL) \ +--- 8097,8103 ---- + char_u *line; /* string to match against */ + colnr_T col; /* column to start looking for match */ + { +! return rmp->regprog->engine->regexec_nl(rmp, line, col, FALSE); + } + + #if defined(FEAT_MODIFY_FNAME) || defined(FEAT_EVAL) \ +*************** +*** 8145,8151 **** + char_u *line; + colnr_T col; + { +! return rmp->regprog->engine->regexec_nl(rmp, line, col); + } + #endif + +--- 8111,8117 ---- + char_u *line; + colnr_T col; + { +! return rmp->regprog->engine->regexec_nl(rmp, line, col, TRUE); + } + #endif + +*** ../vim-7.4.261/src/regexp_nfa.c 2014-04-06 21:33:39.675363743 +0200 +--- src/regexp_nfa.c 2014-04-23 19:00:44.354837189 +0200 +*************** +*** 311,317 **** + static long nfa_regexec_both __ARGS((char_u *line, colnr_T col)); + static regprog_T *nfa_regcomp __ARGS((char_u *expr, int re_flags)); + static void nfa_regfree __ARGS((regprog_T *prog)); +! static int nfa_regexec __ARGS((regmatch_T *rmp, char_u *line, colnr_T col)); + static long nfa_regexec_multi __ARGS((regmmatch_T *rmp, win_T *win, buf_T *buf, linenr_T lnum, colnr_T col, proftime_T *tm)); + static int match_follows __ARGS((nfa_state_T *startstate, int depth)); + static int failure_chance __ARGS((nfa_state_T *state, int depth)); +--- 311,317 ---- + static long nfa_regexec_both __ARGS((char_u *line, colnr_T col)); + static regprog_T *nfa_regcomp __ARGS((char_u *expr, int re_flags)); + static void nfa_regfree __ARGS((regprog_T *prog)); +! static int nfa_regexec_nl __ARGS((regmatch_T *rmp, char_u *line, colnr_T col, int line_lbr)); + static long nfa_regexec_multi __ARGS((regmmatch_T *rmp, win_T *win, buf_T *buf, linenr_T lnum, colnr_T col, proftime_T *tm)); + static int match_follows __ARGS((nfa_state_T *startstate, int depth)); + static int failure_chance __ARGS((nfa_state_T *state, int depth)); +*************** +*** 7060,7078 **** + * Match a regexp against a string. + * "rmp->regprog" is a compiled regexp as returned by nfa_regcomp(). + * Uses curbuf for line count and 'iskeyword'. + * + * Return TRUE if there is a match, FALSE if not. + */ + static int +! nfa_regexec(rmp, line, col) + regmatch_T *rmp; + char_u *line; /* string to match against */ + colnr_T col; /* column to start looking for match */ + { + reg_match = rmp; + reg_mmatch = NULL; + reg_maxline = 0; +! reg_line_lbr = FALSE; + reg_buf = curbuf; + reg_win = NULL; + ireg_ic = rmp->rm_ic; +--- 7060,7080 ---- + * Match a regexp against a string. + * "rmp->regprog" is a compiled regexp as returned by nfa_regcomp(). + * Uses curbuf for line count and 'iskeyword'. ++ * If "line_lbr" is TRUE consider a "\n" in "line" to be a line break. + * + * Return TRUE if there is a match, FALSE if not. + */ + static int +! nfa_regexec_nl(rmp, line, col, line_lbr) + regmatch_T *rmp; + char_u *line; /* string to match against */ + colnr_T col; /* column to start looking for match */ ++ int line_lbr; + { + reg_match = rmp; + reg_mmatch = NULL; + reg_maxline = 0; +! reg_line_lbr = line_lbr; + reg_buf = curbuf; + reg_win = NULL; + ireg_ic = rmp->rm_ic; +*************** +*** 7083,7117 **** + return (nfa_regexec_both(line, col) != 0); + } + +- #if defined(FEAT_MODIFY_FNAME) || defined(FEAT_EVAL) \ +- || defined(FIND_REPLACE_DIALOG) || defined(PROTO) +- +- static int nfa_regexec_nl __ARGS((regmatch_T *rmp, char_u *line, colnr_T col)); +- +- /* +- * Like nfa_regexec(), but consider a "\n" in "line" to be a line break. +- */ +- static int +- nfa_regexec_nl(rmp, line, col) +- regmatch_T *rmp; +- char_u *line; /* string to match against */ +- colnr_T col; /* column to start looking for match */ +- { +- reg_match = rmp; +- reg_mmatch = NULL; +- reg_maxline = 0; +- reg_line_lbr = TRUE; +- reg_buf = curbuf; +- reg_win = NULL; +- ireg_ic = rmp->rm_ic; +- #ifdef FEAT_MBYTE +- ireg_icombine = FALSE; +- #endif +- ireg_maxcol = 0; +- return (nfa_regexec_both(line, col) != 0); +- } +- #endif +- + + /* + * Match a regexp against multiple lines. +--- 7085,7090 ---- +*** ../vim-7.4.261/src/regexp.h 2013-06-11 10:53:14.000000000 +0200 +--- src/regexp.h 2014-04-23 18:58:18.614840701 +0200 +*************** +*** 149,159 **** + { + regprog_T *(*regcomp)(char_u*, int); + void (*regfree)(regprog_T *); +! int (*regexec)(regmatch_T*, char_u*, colnr_T); +! #if defined(FEAT_MODIFY_FNAME) || defined(FEAT_EVAL) \ +! || defined(FIND_REPLACE_DIALOG) || defined(PROTO) +! int (*regexec_nl)(regmatch_T*, char_u*, colnr_T); +! #endif + long (*regexec_multi)(regmmatch_T*, win_T*, buf_T*, linenr_T, colnr_T, proftime_T*); + #ifdef DEBUG + char_u *expr; +--- 149,155 ---- + { + regprog_T *(*regcomp)(char_u*, int); + void (*regfree)(regprog_T *); +! int (*regexec_nl)(regmatch_T*, char_u*, colnr_T, int); + long (*regexec_multi)(regmmatch_T*, win_T*, buf_T*, linenr_T, colnr_T, proftime_T*); + #ifdef DEBUG + char_u *expr; +*** ../vim-7.4.261/src/version.c 2014-04-23 18:48:43.546854558 +0200 +--- src/version.c 2014-04-23 18:52:20.102849340 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 262, + /**/ + +-- +From "know your smileys": + ~#:-( I just washed my hair, and I can't do nuthin' with it. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.263 b/SOURCES/7.4.263 new file mode 100644 index 0000000..ee7fd13 --- /dev/null +++ b/SOURCES/7.4.263 @@ -0,0 +1,44 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.263 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.263 +Problem: GCC 4.8 compiler warning for hiding a declaration (Francois Gannaz) +Solution: Remove the second declaration. +Files: src/eval.c + + +*** ../vim-7.4.262/src/eval.c 2014-04-23 17:43:37.362948683 +0200 +--- src/eval.c 2014-04-23 19:34:46.678787977 +0200 +*************** +*** 18319,18325 **** + char_u *s = NULL; + char_u *start; + char_u *end; +- char_u *p; + int i; + + res = get_cmd_output(get_tv_string(&argvars[0]), infile, +--- 18319,18324 ---- +*** ../vim-7.4.262/src/version.c 2014-04-23 19:06:33.702828771 +0200 +--- src/version.c 2014-04-23 19:43:22.366775550 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 263, + /**/ + +-- +How many light bulbs does it take to change a person? + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.264 b/SOURCES/7.4.264 new file mode 100644 index 0000000..06776b8 --- /dev/null +++ b/SOURCES/7.4.264 @@ -0,0 +1,176 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.264 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.264 (after 7.4.260) +Problem: Can't define a function starting with "g:". Can't assign a + funcref to a buffer-local variable. +Solution: Skip "g:" at the start of a function name. Don't check for colons + when assigning to a variable. +Files: src/eval.c, src/testdir/test_eval.in, src/testdir/test_eval.ok + + +*** ../vim-7.4.263/src/eval.c 2014-04-23 19:44:26.366774008 +0200 +--- src/eval.c 2014-04-23 20:40:16.738693276 +0200 +*************** +*** 21583,21589 **** + * Get the function name. There are these situations: + * func normal function name + * "name" == func, "fudi.fd_dict" == NULL +- * s:func script-local function name + * dict.func new dictionary entry + * "name" == NULL, "fudi.fd_dict" set, + * "fudi.fd_di" == NULL, "fudi.fd_newkey" == func +--- 21583,21588 ---- +*************** +*** 21593,21598 **** +--- 21592,21599 ---- + * dict.func existing dict entry that's not a Funcref + * "name" == NULL, "fudi.fd_dict" set, + * "fudi.fd_di" set, "fudi.fd_newkey" == NULL ++ * s:func script-local function name ++ * g:func global function name, same as "func" + */ + p = eap->arg; + name = trans_function_name(&p, eap->skip, 0, &fudi); +*************** +*** 22286,22292 **** + } + else + { +! if (lead == 2) /* skip over "s:" */ + lv.ll_name += 2; + len = (int)(end - lv.ll_name); + } +--- 22287,22294 ---- + } + else + { +! /* skip over "s:" and "g:" */ +! if (lead == 2 || (lv.ll_name[0] == 'g' && lv.ll_name[1] == ':')) + lv.ll_name += 2; + len = (int)(end - lv.ll_name); + } +*************** +*** 22317,22333 **** + else if (!(flags & TFN_INT) && builtin_function(lv.ll_name, len)) + { + EMSG2(_("E128: Function name must start with a capital or \"s:\": %s"), +! lv.ll_name); + goto theend; + } +! if (!skip) + { + char_u *cp = vim_strchr(lv.ll_name, ':'); + + if (cp != NULL && cp < end) + { +! EMSG2(_("E884: Function name cannot contain a colon: %s"), +! lv.ll_name); + goto theend; + } + } +--- 22319,22334 ---- + else if (!(flags & TFN_INT) && builtin_function(lv.ll_name, len)) + { + EMSG2(_("E128: Function name must start with a capital or \"s:\": %s"), +! start); + goto theend; + } +! if (!skip && !(flags & TFN_QUIET)) + { + char_u *cp = vim_strchr(lv.ll_name, ':'); + + if (cp != NULL && cp < end) + { +! EMSG2(_("E884: Function name cannot contain a colon: %s"), start); + goto theend; + } + } +*** ../vim-7.4.263/src/testdir/test_eval.in 2014-04-23 17:43:37.362948683 +0200 +--- src/testdir/test_eval.in 2014-04-23 20:36:50.494698246 +0200 +*************** +*** 144,150 **** + :delcommand AR + :call garbagecollect(1) + :" +! :" function name includes a colon + :try + :func! g:test() + :echo "test" +--- 144,150 ---- + :delcommand AR + :call garbagecollect(1) + :" +! :" function name not starting with capital + :try + :func! g:test() + :echo "test" +*************** +*** 153,158 **** +--- 153,167 ---- + :$put =v:exception + :endtry + :" ++ :" function name includes a colon ++ :try ++ :func! b:test() ++ :echo "test" ++ :endfunc ++ :catch ++ :$put =v:exception ++ :endtry ++ :" + :" function name folowed by # + :try + :func! test2() "# +*************** +*** 162,167 **** +--- 171,183 ---- + :$put =v:exception + :endtry + :" ++ :" function name starting with/without "g:", buffer-local funcref. ++ :function! g:Foo() ++ : $put ='called Foo()' ++ :endfunction ++ :let b:my_func = function('Foo') ++ :call b:my_func() ++ :" + :/^start:/+1,$wq! test.out + :" vim: et ts=4 isk-=\: fmr=???,??? + :call getchar() +*** ../vim-7.4.263/src/testdir/test_eval.ok 2014-04-23 17:43:37.362948683 +0200 +--- src/testdir/test_eval.ok 2014-04-23 20:37:45.526696920 +0200 +*************** +*** 336,339 **** +--- 336,341 ---- + Executing call setreg(1, ["", "", [], ""]) + Vim(call):E730: using List as a String + Vim(function):E128: Function name must start with a capital or "s:": g:test() ++ Vim(function):E128: Function name must start with a capital or "s:": b:test() + Vim(function):E128: Function name must start with a capital or "s:": test2() "# ++ called Foo() +*** ../vim-7.4.263/src/version.c 2014-04-23 19:44:26.370774008 +0200 +--- src/version.c 2014-04-23 20:27:17.614712050 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 264, + /**/ + +-- +In order for something to become clean, something else must become dirty; +but you can get everything dirty without getting anything clean. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.265 b/SOURCES/7.4.265 new file mode 100644 index 0000000..da88bdb --- /dev/null +++ b/SOURCES/7.4.265 @@ -0,0 +1,153 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.265 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.265 (after 7.4.260) +Problem: Can't call a global function with "g:" in an expression. +Solution: Skip the "g:" when looking up the function. +Files: src/eval.c, src/testdir/test_eval.in, src/testdir/test_eval.ok + + +*** ../vim-7.4.264/src/eval.c 2014-04-23 20:43:07.290689167 +0200 +--- src/eval.c 2014-04-24 17:06:38.884920215 +0200 +*************** +*** 8485,8517 **** + /* execute the function if no errors detected and executing */ + if (evaluate && error == ERROR_NONE) + { + rettv->v_type = VAR_NUMBER; /* default rettv is number zero */ + rettv->vval.v_number = 0; + error = ERROR_UNKNOWN; + +! if (!builtin_function(fname, -1)) + { + /* + * User defined function. + */ +! fp = find_func(fname); + + #ifdef FEAT_AUTOCMD + /* Trigger FuncUndefined event, may load the function. */ + if (fp == NULL + && apply_autocmds(EVENT_FUNCUNDEFINED, +! fname, fname, TRUE, NULL) + && !aborting()) + { + /* executed an autocommand, search for the function again */ +! fp = find_func(fname); + } + #endif + /* Try loading a package. */ +! if (fp == NULL && script_autoload(fname, TRUE) && !aborting()) + { + /* loaded a package, search for the function again */ +! fp = find_func(fname); + } + + if (fp != NULL) +--- 8485,8523 ---- + /* execute the function if no errors detected and executing */ + if (evaluate && error == ERROR_NONE) + { ++ char_u *rfname = fname; ++ ++ /* Ignore "g:" before a function name. */ ++ if (fname[0] == 'g' && fname[1] == ':') ++ rfname = fname + 2; ++ + rettv->v_type = VAR_NUMBER; /* default rettv is number zero */ + rettv->vval.v_number = 0; + error = ERROR_UNKNOWN; + +! if (!builtin_function(rfname, -1)) + { + /* + * User defined function. + */ +! fp = find_func(rfname); + + #ifdef FEAT_AUTOCMD + /* Trigger FuncUndefined event, may load the function. */ + if (fp == NULL + && apply_autocmds(EVENT_FUNCUNDEFINED, +! rfname, rfname, TRUE, NULL) + && !aborting()) + { + /* executed an autocommand, search for the function again */ +! fp = find_func(rfname); + } + #endif + /* Try loading a package. */ +! if (fp == NULL && script_autoload(rfname, TRUE) && !aborting()) + { + /* loaded a package, search for the function again */ +! fp = find_func(rfname); + } + + if (fp != NULL) +*** ../vim-7.4.264/src/testdir/test_eval.in 2014-04-23 20:43:07.290689167 +0200 +--- src/testdir/test_eval.in 2014-04-24 17:07:57.108918330 +0200 +*************** +*** 172,182 **** + :endtry + :" + :" function name starting with/without "g:", buffer-local funcref. +! :function! g:Foo() +! : $put ='called Foo()' + :endfunction + :let b:my_func = function('Foo') +! :call b:my_func() + :" + :/^start:/+1,$wq! test.out + :" vim: et ts=4 isk-=\: fmr=???,??? +--- 172,184 ---- + :endtry + :" + :" function name starting with/without "g:", buffer-local funcref. +! :function! g:Foo(n) +! : $put ='called Foo(' . a:n . ')' + :endfunction + :let b:my_func = function('Foo') +! :call b:my_func(1) +! :echo g:Foo(2) +! :echo Foo(3) + :" + :/^start:/+1,$wq! test.out + :" vim: et ts=4 isk-=\: fmr=???,??? +*** ../vim-7.4.264/src/testdir/test_eval.ok 2014-04-23 20:43:07.290689167 +0200 +--- src/testdir/test_eval.ok 2014-04-24 16:54:36.856937613 +0200 +*************** +*** 338,341 **** + Vim(function):E128: Function name must start with a capital or "s:": g:test() + Vim(function):E128: Function name must start with a capital or "s:": b:test() + Vim(function):E128: Function name must start with a capital or "s:": test2() "# +! called Foo() +--- 338,343 ---- + Vim(function):E128: Function name must start with a capital or "s:": g:test() + Vim(function):E128: Function name must start with a capital or "s:": b:test() + Vim(function):E128: Function name must start with a capital or "s:": test2() "# +! called Foo(1) +! called Foo(2) +! called Foo(3) +*** ../vim-7.4.264/src/version.c 2014-04-23 20:43:07.290689167 +0200 +--- src/version.c 2014-04-24 16:56:24.520935019 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 265, + /**/ + +-- +The sooner you fall behind, the more time you'll have to catch up. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.266 b/SOURCES/7.4.266 new file mode 100644 index 0000000..23d56ac --- /dev/null +++ b/SOURCES/7.4.266 @@ -0,0 +1,46 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.266 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.266 +Problem: Test 62 fails. +Solution: Set the language to C. (Christian Brabandt) +Files: src/testdir/test62.in + + +*** ../vim-7.4.265/src/testdir/test62.in 2013-07-14 13:37:12.000000000 +0200 +--- src/testdir/test62.in 2014-04-29 11:50:50.676058452 +0200 +*************** +*** 2,7 **** +--- 2,8 ---- + + STARTTEST + :so small.vim ++ :lang C + :" Simple test for opening and closing a tab page + :tabnew + :let nr = tabpagenr() +*** ../vim-7.4.265/src/version.c 2014-04-24 17:12:29.584911764 +0200 +--- src/version.c 2014-04-29 11:51:32.356057722 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 266, + /**/ + +-- +I AM THANKFUL... +...for a lawn that needs mowing, windows that need cleaning +and gutters that need fixing because it means I have a home. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.267 b/SOURCES/7.4.267 new file mode 100644 index 0000000..376e9ee --- /dev/null +++ b/SOURCES/7.4.267 @@ -0,0 +1,438 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.2 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.267 (after 7.4.178) +Problem: The '[ mark is in the wrong position after "gq". (Ingo Karkat) +Solution: Add the setmark argument to do_join(). (Christian Brabandt) +Files: src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, + src/testdir/Make_ming.mak, src/testdir/Make_os2.mak, + src/testdir/Make_vms.mms, src/testdir/Makefile, + src/testdir/test_autoformat_join.in, + src/testdir/test_autoformat_join.ok, src/Makefile, src/edit.c, + src/ex_cmds.c, src/ex_docmd.c, src/normal.c, src/ops.c, + src/proto/ops.pro + + +*** ../vim-7.4.266/src/testdir/Make_amiga.mak 2014-04-02 19:54:58.275599459 +0200 +--- src/testdir/Make_amiga.mak 2014-04-29 12:02:34.144046123 +0200 +*************** +*** 36,41 **** +--- 36,42 ---- + test94.out test95.out test96.out test97.out test98.out \ + test99.out test100.out test101.out test102.out test103.out \ + test104.out test105.out test106.out \ ++ test_autoformat_join.out \ + test_eval.out \ + test_options.out + +*************** +*** 160,164 **** +--- 161,166 ---- + test104.out: test104.in + test105.out: test105.in + test106.out: test106.in ++ test_autoformat_join.out: test_autoformat_join.in + test_eval.out: test_eval.in + test_options.out: test_options.in +*** ../vim-7.4.266/src/testdir/Make_dos.mak 2014-04-02 19:54:58.275599459 +0200 +--- src/testdir/Make_dos.mak 2014-04-29 12:02:45.128045931 +0200 +*************** +*** 35,40 **** +--- 35,41 ---- + test94.out test95.out test96.out test98.out test99.out \ + test100.out test101.out test102.out test103.out test104.out \ + test105.out test106.out \ ++ test_autoformat_join.out \ + test_eval.out \ + test_options.out + +*** ../vim-7.4.266/src/testdir/Make_ming.mak 2014-04-02 19:54:58.275599459 +0200 +--- src/testdir/Make_ming.mak 2014-04-29 12:02:54.020045775 +0200 +*************** +*** 55,60 **** +--- 55,61 ---- + test94.out test95.out test96.out test98.out test99.out \ + test100.out test101.out test102.out test103.out test104.out \ + test105.out test106.out \ ++ test_autoformat_join.out \ + test_eval.out \ + test_options.out + +*** ../vim-7.4.266/src/testdir/Make_os2.mak 2014-04-02 19:54:58.275599459 +0200 +--- src/testdir/Make_os2.mak 2014-04-29 12:03:03.384045611 +0200 +*************** +*** 37,42 **** +--- 37,43 ---- + test94.out test95.out test96.out test98.out test99.out \ + test100.out test101.out test102.out test103.out test104.out \ + test105.out test106.out \ ++ test_autoformat_join.out \ + test_eval.out \ + test_options.out + +*** ../vim-7.4.266/src/testdir/Make_vms.mms 2014-04-02 19:54:58.275599459 +0200 +--- src/testdir/Make_vms.mms 2014-04-29 12:03:12.200045456 +0200 +*************** +*** 96,101 **** +--- 96,102 ---- + test95.out test96.out test98.out test99.out \ + test100.out test101.out test103.out test104.out \ + test105.out test106.out \ ++ test_autoformat_join.out \ + test_eval.out \ + test_options.out + +*** ../vim-7.4.266/src/testdir/Makefile 2014-04-01 14:08:14.685074130 +0200 +--- src/testdir/Makefile 2014-04-29 12:02:09.152046561 +0200 +*************** +*** 33,38 **** +--- 33,40 ---- + test94.out test95.out test96.out test97.out test98.out \ + test99.out test100.out test101.out test102.out test103.out \ + test104.out test105.out test106.out \ ++ test_autoformat_join.out \ ++ test_eval.out \ + test_options.out + + SCRIPTS_GUI = test16.out +*** ../vim-7.4.266/src/testdir/test_autoformat_join.in 2014-04-29 12:12:57.324035202 +0200 +--- src/testdir/test_autoformat_join.in 2014-04-29 12:00:35.360048205 +0200 +*************** +*** 0 **** +--- 1,23 ---- ++ Tests for setting the '[,'] marks when joining lines. ++ ++ STARTTEST ++ :so small.vim ++ :/^\t\t/ ++ 0gqj ++ :let a=string(getpos("'[")).'/'.string(getpos("']")) ++ :/^This line/;'}-join ++ :let b=string(getpos("'[")).'/'.string(getpos("']")) ++ :$put ='First test: Start/End '.string(a) ++ :$put ='Second test: Start/End '.string(b) ++ :/^\t\t/,$wq! test.out ++ ENDTEST ++ ++ ++ O sodales, ludite, vos qui ++ attamen consulite per voster honur. Tua pulchra facies me fay planszer milies ++ ++ This line. ++ Should be joined with the next line ++ and with this line ++ ++ Results: +*** ../vim-7.4.266/src/testdir/test_autoformat_join.ok 2014-04-29 12:12:57.332035201 +0200 +--- src/testdir/test_autoformat_join.ok 2014-04-29 12:00:35.360048205 +0200 +*************** +*** 0 **** +--- 1,8 ---- ++ O sodales, ludite, vos qui attamen consulite per voster honur. ++ Tua pulchra facies me fay planszer milies ++ ++ This line. Should be joined with the next line and with this line ++ ++ Results: ++ First test: Start/End '[0, 16, 1, 0]/[0, 17, 1, 0]' ++ Second test: Start/End '[0, 19, 11, 0]/[0, 19, 67, 0]' +*** ../vim-7.4.266/src/Makefile 2014-04-02 19:54:58.275599459 +0200 +--- src/Makefile 2014-04-29 12:03:48.600044818 +0200 +*************** +*** 1880,1885 **** +--- 1880,1886 ---- + + # Run individual test, assuming that Vim was already compiled. + test1 test2 test3 test4 test5 test6 test7 test8 test9 \ ++ test_autoformat_join \ + test_eval \ + test_options \ + test10 test11 test12 test13 test14 test15 test16 test17 test18 test19 \ +*** ../vim-7.4.266/src/edit.c 2014-03-23 15:12:29.915264336 +0100 +--- src/edit.c 2014-04-29 12:08:50.608039525 +0200 +*************** +*** 8685,8691 **** + { + temp = curwin->w_cursor.col; + if (!can_bs(BS_EOL) /* only if "eol" included */ +! || do_join(2, FALSE, TRUE, FALSE) == FAIL) + vim_beep(); + else + curwin->w_cursor.col = temp; +--- 8685,8691 ---- + { + temp = curwin->w_cursor.col; + if (!can_bs(BS_EOL) /* only if "eol" included */ +! || do_join(2, FALSE, TRUE, FALSE, FALSE) == FAIL) + vim_beep(); + else + curwin->w_cursor.col = temp; +*************** +*** 8866,8872 **** + ptr[len - 1] = NUL; + } + +! (void)do_join(2, FALSE, FALSE, FALSE); + if (temp == NUL && gchar_cursor() != NUL) + inc_cursor(); + } +--- 8866,8872 ---- + ptr[len - 1] = NUL; + } + +! (void)do_join(2, FALSE, FALSE, FALSE, FALSE); + if (temp == NUL && gchar_cursor() != NUL) + inc_cursor(); + } +*** ../vim-7.4.266/src/ex_cmds.c 2014-04-06 20:45:40.119357453 +0200 +--- src/ex_cmds.c 2014-04-29 12:08:50.612039525 +0200 +*************** +*** 4444,4450 **** + else if (*cmd == 'p') + eap->flags = EXFLAG_PRINT; + +! (void)do_join(eap->line2 - eap->line1 + 1, FALSE, TRUE, FALSE); + sub_nlines = sub_nsubs = eap->line2 - eap->line1 + 1; + (void)do_sub_msg(FALSE); + ex_may_print(eap); +--- 4444,4450 ---- + else if (*cmd == 'p') + eap->flags = EXFLAG_PRINT; + +! (void)do_join(eap->line2 - eap->line1 + 1, FALSE, TRUE, FALSE, TRUE); + sub_nlines = sub_nsubs = eap->line2 - eap->line1 + 1; + (void)do_sub_msg(FALSE); + ex_may_print(eap); +*** ../vim-7.4.266/src/ex_docmd.c 2014-04-02 14:22:00.119874274 +0200 +--- src/ex_docmd.c 2014-04-29 12:08:50.616039525 +0200 +*************** +*** 8717,8723 **** + } + ++eap->line2; + } +! (void)do_join(eap->line2 - eap->line1 + 1, !eap->forceit, TRUE, TRUE); + beginline(BL_WHITE | BL_FIX); + ex_may_print(eap); + } +--- 8717,8723 ---- + } + ++eap->line2; + } +! (void)do_join(eap->line2 - eap->line1 + 1, !eap->forceit, TRUE, TRUE, TRUE); + beginline(BL_WHITE | BL_FIX); + ex_may_print(eap); + } +*** ../vim-7.4.266/src/normal.c 2014-03-23 15:12:29.927264336 +0100 +--- src/normal.c 2014-04-29 12:08:50.616039525 +0200 +*************** +*** 812,818 **** + + if (text_locked() && (nv_cmds[idx].cmd_flags & NV_NCW)) + { +! /* This command is not allowed while editing a ccmdline: beep. */ + clearopbeep(oap); + text_locked_msg(); + goto normal_end; +--- 812,818 ---- + + if (text_locked() && (nv_cmds[idx].cmd_flags & NV_NCW)) + { +! /* This command is not allowed while editing a cmdline: beep. */ + clearopbeep(oap); + text_locked_msg(); + goto normal_end; +*************** +*** 1905,1911 **** + else + { + (void)do_join(oap->line_count, oap->op_type == OP_JOIN, +! TRUE, TRUE); + auto_format(FALSE, TRUE); + } + break; +--- 1905,1911 ---- + else + { + (void)do_join(oap->line_count, oap->op_type == OP_JOIN, +! TRUE, TRUE, TRUE); + auto_format(FALSE, TRUE); + } + break; +*************** +*** 9236,9242 **** + { + prep_redo(cap->oap->regname, cap->count0, + NUL, cap->cmdchar, NUL, NUL, cap->nchar); +! (void)do_join(cap->count0, cap->nchar == NUL, TRUE, TRUE); + } + } + } +--- 9236,9242 ---- + { + prep_redo(cap->oap->regname, cap->count0, + NUL, cap->cmdchar, NUL, NUL, cap->nchar); +! (void)do_join(cap->count0, cap->nchar == NUL, TRUE, TRUE, TRUE); + } + } + } +*** ../vim-7.4.266/src/ops.c 2014-04-12 12:26:25.856424387 +0200 +--- src/ops.c 2014-04-29 12:10:29.428037794 +0200 +*************** +*** 1979,1985 **** + curwin->w_cursor = curpos; /* restore curwin->w_cursor */ + } + if (curwin->w_cursor.lnum < curbuf->b_ml.ml_line_count) +! (void)do_join(2, FALSE, FALSE, FALSE); + } + } + +--- 1979,1985 ---- + curwin->w_cursor = curpos; /* restore curwin->w_cursor */ + } + if (curwin->w_cursor.lnum < curbuf->b_ml.ml_line_count) +! (void)do_join(2, FALSE, FALSE, FALSE, FALSE); + } + } + +*************** +*** 4323,4339 **** + /* + * Join 'count' lines (minimal 2) at cursor position. + * When "save_undo" is TRUE save lines for undo first. +! * Set "use_formatoptions" to FALSE when e.g. processing +! * backspace and comment leaders should not be removed. + * + * return FAIL for failure, OK otherwise + */ + int +! do_join(count, insert_space, save_undo, use_formatoptions) + long count; + int insert_space; + int save_undo; + int use_formatoptions UNUSED; + { + char_u *curr = NULL; + char_u *curr_start = NULL; +--- 4323,4342 ---- + /* + * Join 'count' lines (minimal 2) at cursor position. + * When "save_undo" is TRUE save lines for undo first. +! * Set "use_formatoptions" to FALSE when e.g. processing backspace and comment +! * leaders should not be removed. +! * When setmark is TRUE, sets the '[ and '] mark, else, the caller is expected +! * to set those marks. + * + * return FAIL for failure, OK otherwise + */ + int +! do_join(count, insert_space, save_undo, use_formatoptions, setmark) + long count; + int insert_space; + int save_undo; + int use_formatoptions UNUSED; ++ int setmark; + { + char_u *curr = NULL; + char_u *curr_start = NULL; +*************** +*** 4384,4390 **** + for (t = 0; t < count; ++t) + { + curr = curr_start = ml_get((linenr_T)(curwin->w_cursor.lnum + t)); +! if (t == 0) + { + /* Set the '[ mark. */ + curwin->w_buffer->b_op_start.lnum = curwin->w_cursor.lnum; +--- 4387,4393 ---- + for (t = 0; t < count; ++t) + { + curr = curr_start = ml_get((linenr_T)(curwin->w_cursor.lnum + t)); +! if (t == 0 && setmark) + { + /* Set the '[ mark. */ + curwin->w_buffer->b_op_start.lnum = curwin->w_cursor.lnum; +*************** +*** 4506,4514 **** + } + ml_replace(curwin->w_cursor.lnum, newp, FALSE); + +! /* Set the '] mark. */ +! curwin->w_buffer->b_op_end.lnum = curwin->w_cursor.lnum; +! curwin->w_buffer->b_op_end.col = (colnr_T)STRLEN(newp); + + /* Only report the change in the first line here, del_lines() will report + * the deleted line. */ +--- 4509,4520 ---- + } + ml_replace(curwin->w_cursor.lnum, newp, FALSE); + +! if (setmark) +! { +! /* Set the '] mark. */ +! curwin->w_buffer->b_op_end.lnum = curwin->w_cursor.lnum; +! curwin->w_buffer->b_op_end.col = (colnr_T)STRLEN(newp); +! } + + /* Only report the change in the first line here, del_lines() will report + * the deleted line. */ +*************** +*** 5009,5015 **** + } + } + curwin->w_cursor.lnum--; +! if (do_join(2, TRUE, FALSE, FALSE) == FAIL) + { + beep_flush(); + break; +--- 5015,5021 ---- + } + } + curwin->w_cursor.lnum--; +! if (do_join(2, TRUE, FALSE, FALSE, FALSE) == FAIL) + { + beep_flush(); + break; +*** ../vim-7.4.266/src/proto/ops.pro 2014-04-02 22:17:00.003482236 +0200 +--- src/proto/ops.pro 2014-04-29 12:08:50.620039525 +0200 +*************** +*** 37,43 **** + int preprocs_left __ARGS((void)); + int get_register_name __ARGS((int num)); + void ex_display __ARGS((exarg_T *eap)); +! int do_join __ARGS((long count, int insert_space, int save_undo, int use_formatoptions)); + void op_format __ARGS((oparg_T *oap, int keep_cursor)); + void op_formatexpr __ARGS((oparg_T *oap)); + int fex_format __ARGS((linenr_T lnum, long count, int c)); +--- 37,43 ---- + int preprocs_left __ARGS((void)); + int get_register_name __ARGS((int num)); + void ex_display __ARGS((exarg_T *eap)); +! int do_join __ARGS((long count, int insert_space, int save_undo, int use_formatoptions, int setmark)); + void op_format __ARGS((oparg_T *oap, int keep_cursor)); + void op_formatexpr __ARGS((oparg_T *oap)); + int fex_format __ARGS((linenr_T lnum, long count, int c)); +*** ../vim-7.4.266/src/version.c 2014-04-29 11:55:26.176053624 +0200 +--- src/version.c 2014-04-29 11:59:35.620049252 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 267, + /**/ + +-- +I AM THANKFUL... +...for all the complaining I hear about the government +because it means we have freedom of speech. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.268 b/SOURCES/7.4.268 new file mode 100644 index 0000000..84ab154 --- /dev/null +++ b/SOURCES/7.4.268 @@ -0,0 +1,108 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.268 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.268 +Problem: Using exists() on a funcref for a script-local function does not + work. +Solution: Translate <SNR> to the special byte sequence. Add a test. +Files: src/eval.c, src/testdir/test_eval.in, src/testdir/test_eval.ok, + src/testdir/test_eval_func.vim, Filelist + + +*** ../vim-7.4.267/src/eval.c 2014-04-24 17:12:29.580911764 +0200 +--- src/eval.c 2014-04-29 13:49:26.759933737 +0200 +*************** +*** 22275,22280 **** +--- 22275,22288 ---- + { + name = vim_strsave(name); + *pp = end; ++ if (STRNCMP(name, "<SNR>", 5) == 0) ++ { ++ /* Change "<SNR>" to the byte sequence. */ ++ name[0] = K_SPECIAL; ++ name[1] = KS_EXTRA; ++ name[2] = (int)KE_SNR; ++ mch_memmove(name + 3, name + 5, STRLEN(name + 5) + 1); ++ } + goto theend; + } + +*** ../vim-7.4.267/src/testdir/test_eval.in 2014-04-24 17:12:29.584911764 +0200 +--- src/testdir/test_eval.in 2014-04-29 13:59:09.495923525 +0200 +*************** +*** 180,185 **** +--- 180,188 ---- + :echo g:Foo(2) + :echo Foo(3) + :" ++ :" script-local function used in Funcref must exist. ++ :so test_eval_func.vim ++ :" + :/^start:/+1,$wq! test.out + :" vim: et ts=4 isk-=\: fmr=???,??? + :call getchar() +*** ../vim-7.4.267/src/testdir/test_eval.ok 2014-04-24 17:12:29.584911764 +0200 +--- src/testdir/test_eval.ok 2014-04-29 13:59:39.551922998 +0200 +*************** +*** 341,343 **** +--- 341,347 ---- + called Foo(1) + called Foo(2) + called Foo(3) ++ s:Testje exists: 0 ++ func s:Testje exists: 1 ++ Bar exists: 1 ++ func Bar exists: 1 +*** ../vim-7.4.267/src/testdir/test_eval_func.vim 2014-04-29 14:02:08.415920389 +0200 +--- src/testdir/test_eval_func.vim 2014-04-29 13:57:34.503925189 +0200 +*************** +*** 0 **** +--- 1,10 ---- ++ " Vim script used in test_eval.in. Needed for script-local function. ++ ++ func! s:Testje() ++ return "foo" ++ endfunc ++ let Bar = function('s:Testje') ++ $put ='s:Testje exists: ' . exists('s:Testje') ++ $put ='func s:Testje exists: ' . exists('*s:Testje') ++ $put ='Bar exists: ' . exists('Bar') ++ $put ='func Bar exists: ' . exists('*Bar') +*** ../vim-7.4.267/Filelist 2014-04-05 21:59:35.939178415 +0200 +--- Filelist 2014-04-29 13:58:40.207924038 +0200 +*************** +*** 88,93 **** +--- 88,94 ---- + src/testdir/test60.vim \ + src/testdir/test83-tags? \ + src/testdir/test77a.com \ ++ src/testdir/test_*.vim \ + src/testdir/python2/*.py \ + src/testdir/python3/*.py \ + src/testdir/pythonx/*.py \ +*** ../vim-7.4.267/src/version.c 2014-04-29 12:15:22.860032651 +0200 +--- src/version.c 2014-04-29 13:47:32.935935732 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 268, + /**/ + +-- +I AM THANKFUL... +...for the piles of laundry and ironing because it means I +have plenty of clothes to wear. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.270 b/SOURCES/7.4.270 new file mode 100644 index 0000000..ce9fb70 --- /dev/null +++ b/SOURCES/7.4.270 @@ -0,0 +1,62 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.270 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.270 +Problem: Comparing pointers instead of the string they point to. +Solution: Use strcmp(). (Ken Takata) +Files: src/gui_gtk_x11.c + + +*** ../vim-7.4.269/src/gui_gtk_x11.c 2014-04-06 21:08:41.311360470 +0200 +--- src/gui_gtk_x11.c 2014-04-29 15:02:35.931856814 +0200 +*************** +*** 3142,3151 **** + gnome_program_init(VIMPACKAGE, VIM_VERSION_SHORT, + LIBGNOMEUI_MODULE, gui_argc, gui_argv, NULL); + # if defined(FEAT_FLOAT) && defined(LC_NUMERIC) +! /* Make sure strtod() uses a decimal point, not a comma. Gnome init +! * may change it. */ +! if (setlocale(LC_NUMERIC, NULL) != (char *) "C") +! setlocale(LC_NUMERIC, "C"); + # endif + } + #endif +--- 3142,3155 ---- + gnome_program_init(VIMPACKAGE, VIM_VERSION_SHORT, + LIBGNOMEUI_MODULE, gui_argc, gui_argv, NULL); + # if defined(FEAT_FLOAT) && defined(LC_NUMERIC) +! { +! char *p = setlocale(LC_NUMERIC, NULL); +! +! /* Make sure strtod() uses a decimal point, not a comma. Gnome +! * init may change it. */ +! if (p == NULL || strcmp(p, "C") != 0) +! setlocale(LC_NUMERIC, "C"); +! } + # endif + } + #endif +*** ../vim-7.4.269/src/version.c 2014-04-29 14:44:31.519875819 +0200 +--- src/version.c 2014-04-29 14:59:21.799860216 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 270, + /**/ + +-- +From "know your smileys": + :-| :-| Deja' vu! + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.271 b/SOURCES/7.4.271 new file mode 100644 index 0000000..c7f03ee --- /dev/null +++ b/SOURCES/7.4.271 @@ -0,0 +1,52 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.271 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.271 +Problem: Compiler warning on 64 bit windows. +Solution: Add type cast. (Mike Williams) +Files: src/ops.c + + +*** ../vim-7.4.270/src/ops.c 2014-04-29 12:15:22.860032651 +0200 +--- src/ops.c 2014-04-29 15:54:23.055802359 +0200 +*************** +*** 6559,6565 **** + { + for (ss = (char_u **) str; *ss != NULL; ++ss, ++lnum) + { +! i = STRLEN(*ss); + pp[lnum] = vim_strnsave(*ss, i); + if (i > maxlen) + maxlen = i; +--- 6559,6565 ---- + { + for (ss = (char_u **) str; *ss != NULL; ++ss, ++lnum) + { +! i = (long)STRLEN(*ss); + pp[lnum] = vim_strnsave(*ss, i); + if (i > maxlen) + maxlen = i; +*** ../vim-7.4.270/src/version.c 2014-04-29 15:11:39.783847283 +0200 +--- src/version.c 2014-04-29 15:52:54.083803919 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 271, + /**/ + +-- +From "know your smileys": + :.-( Crying + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.272 b/SOURCES/7.4.272 new file mode 100644 index 0000000..e893a96 --- /dev/null +++ b/SOURCES/7.4.272 @@ -0,0 +1,148 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.272 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.272 +Problem: Using just "$" does not cause an error message. +Solution: Check for empty environment variable name. (Christian Brabandt) +Files: src/eval.c, src/testdir/test_eval.in, src/testdir/test_eval.ok + + +*** ../vim-7.4.271/src/eval.c 2014-04-29 14:02:42.543919791 +0200 +--- src/eval.c 2014-04-29 17:33:40.575697949 +0200 +*************** +*** 7798,7804 **** + * Get the value of an environment variable. + * "arg" is pointing to the '$'. It is advanced to after the name. + * If the environment variable was not set, silently assume it is empty. +! * Always return OK. + */ + static int + get_env_tv(arg, rettv, evaluate) +--- 7798,7804 ---- + * Get the value of an environment variable. + * "arg" is pointing to the '$'. It is advanced to after the name. + * If the environment variable was not set, silently assume it is empty. +! * Return FAIL if the name is invalid. + */ + static int + get_env_tv(arg, rettv, evaluate) +*************** +*** 7817,7848 **** + len = get_env_len(arg); + if (evaluate) + { +! if (len != 0) + { +! cc = name[len]; +! name[len] = NUL; +! /* first try vim_getenv(), fast for normal environment vars */ +! string = vim_getenv(name, &mustfree); +! if (string != NULL && *string != NUL) +! { +! if (!mustfree) +! string = vim_strsave(string); +! } +! else +! { +! if (mustfree) +! vim_free(string); + +! /* next try expanding things like $VIM and ${HOME} */ +! string = expand_env_save(name - 1); +! if (string != NULL && *string == '$') +! { +! vim_free(string); +! string = NULL; +! } + } +- name[len] = cc; + } + rettv->v_type = VAR_STRING; + rettv->vval.v_string = string; + } +--- 7817,7849 ---- + len = get_env_len(arg); + if (evaluate) + { +! if (len == 0) +! return FAIL; /* can't be an environment variable */ +! +! cc = name[len]; +! name[len] = NUL; +! /* first try vim_getenv(), fast for normal environment vars */ +! string = vim_getenv(name, &mustfree); +! if (string != NULL && *string != NUL) + { +! if (!mustfree) +! string = vim_strsave(string); +! } +! else +! { +! if (mustfree) +! vim_free(string); + +! /* next try expanding things like $VIM and ${HOME} */ +! string = expand_env_save(name - 1); +! if (string != NULL && *string == '$') +! { +! vim_free(string); +! string = NULL; + } + } ++ name[len] = cc; ++ + rettv->v_type = VAR_STRING; + rettv->vval.v_string = string; + } +*** ../vim-7.4.271/src/testdir/test_eval.in 2014-04-29 14:02:42.543919791 +0200 +--- src/testdir/test_eval.in 2014-04-29 17:35:27.243696080 +0200 +*************** +*** 183,188 **** +--- 183,195 ---- + :" script-local function used in Funcref must exist. + :so test_eval_func.vim + :" ++ :" Using $ instead of '$' must give an error ++ :try ++ : call append($, 'foobar') ++ :catch ++ :$put =v:exception ++ :endtry ++ :" + :/^start:/+1,$wq! test.out + :" vim: et ts=4 isk-=\: fmr=???,??? + :call getchar() +*** ../vim-7.4.271/src/testdir/test_eval.ok 2014-04-29 14:02:42.543919791 +0200 +--- src/testdir/test_eval.ok 2014-04-29 17:36:41.451694779 +0200 +*************** +*** 345,347 **** +--- 345,348 ---- + func s:Testje exists: 1 + Bar exists: 1 + func Bar exists: 1 ++ Vim(call):E116: Invalid arguments for function append +*** ../vim-7.4.271/src/version.c 2014-04-29 15:55:39.443801021 +0200 +--- src/version.c 2014-04-29 17:31:54.203699814 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 272, + /**/ + +-- +From "know your smileys": + C=}>;*{)) Drunk, devilish chef with a toupee in an updraft, + a mustache, and a double chin + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.273 b/SOURCES/7.4.273 new file mode 100644 index 0000000..2fe4d17 --- /dev/null +++ b/SOURCES/7.4.273 @@ -0,0 +1,57 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.273 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.273 +Problem: "make autoconf" and "make reconfig" may first run configure and + then remove the output. +Solution: Add these targets to the exceptions. (Ken Takata) +Files: src/Makefile + + +*** ../vim-7.4.272/src/Makefile 2014-04-29 12:15:22.852032651 +0200 +--- src/Makefile 2014-04-29 19:58:23.611545773 +0200 +*************** +*** 1670,1676 **** + ! grep -x -F 'ac_cv_env_CFLAGS_value=$(CFLAGS)' auto/config.cache > /dev/null; then \ + rm auto/config.cache; \ + fi +! if test "X$(MAKECMDGOALS)" != "Xclean" -a "X$(MAKECMDGOALS)" != "Xdistclean"; then \ + GUI_INC_LOC="$(GUI_INC_LOC)" GUI_LIB_LOC="$(GUI_LIB_LOC)" \ + CC="$(CC)" CPPFLAGS="$(CPPFLAGS)" CFLAGS="$(CFLAGS)" \ + LDFLAGS="$(LDFLAGS)" $(CONF_SHELL) srcdir="$(srcdir)" \ +--- 1670,1679 ---- + ! grep -x -F 'ac_cv_env_CFLAGS_value=$(CFLAGS)' auto/config.cache > /dev/null; then \ + rm auto/config.cache; \ + fi +! if test "X$(MAKECMDGOALS)" != "Xclean" \ +! -a "X$(MAKECMDGOALS)" != "Xdistclean" \ +! -a "X$(MAKECMDGOALS)" != "Xautoconf" \ +! -a "X$(MAKECMDGOALS)" != "Xreconfig"; then \ + GUI_INC_LOC="$(GUI_INC_LOC)" GUI_LIB_LOC="$(GUI_LIB_LOC)" \ + CC="$(CC)" CPPFLAGS="$(CPPFLAGS)" CFLAGS="$(CFLAGS)" \ + LDFLAGS="$(LDFLAGS)" $(CONF_SHELL) srcdir="$(srcdir)" \ +*** ../vim-7.4.272/src/version.c 2014-04-29 17:41:18.351689927 +0200 +--- src/version.c 2014-04-29 19:59:21.895544751 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 273, + /**/ + +-- +From "know your smileys": + <|-) Chinese + <|-( Chinese and doesn't like these kind of jokes + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.274 b/SOURCES/7.4.274 new file mode 100644 index 0000000..186e09b --- /dev/null +++ b/SOURCES/7.4.274 @@ -0,0 +1,46 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.274 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.274 +Problem: When doing ":update" just before running an external command that + changes the file, the timestamp may be unchanged and the file + is not reloaded. +Solution: Also check the file size. +Files: src/fileio.c + + +*** ../vim-7.4.273/src/fileio.c 2014-04-06 20:45:40.123357453 +0200 +--- src/fileio.c 2014-05-02 15:35:19.671279728 +0200 +*************** +*** 6897,6902 **** +--- 6897,6903 ---- + && buf->b_mtime != 0 + && ((stat_res = mch_stat((char *)buf->b_ffname, &st)) < 0 + || time_differs((long)st.st_mtime, buf->b_mtime) ++ || st.st_size != buf->b_orig_size + #ifdef HAVE_ST_MODE + || (int)st.st_mode != buf->b_orig_mode + #else +*** ../vim-7.4.273/src/version.c 2014-04-29 20:04:05.331539784 +0200 +--- src/version.c 2014-05-02 15:36:22.619278625 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 274, + /**/ + +-- +A meeting is an event at which the minutes are kept and the hours are lost. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.275 b/SOURCES/7.4.275 new file mode 100644 index 0000000..443fe18 --- /dev/null +++ b/SOURCES/7.4.275 @@ -0,0 +1,56 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.275 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.275 +Problem: When changing the type of a sign that hasn't been placed ther is + no error message. +Solution: Add an error message. (Christian Brabandt) +Files: src/ex_cmds.c + + +*** ../vim-7.4.274/src/ex_cmds.c 2014-04-29 12:15:22.856032651 +0200 +--- src/ex_cmds.c 2014-05-07 14:38:31.293091622 +0200 +*************** +*** 7275,7281 **** + else + /* ":sign place {id} file={fname}": change sign type */ + lnum = buf_change_sign_type(buf, id, sp->sn_typenr); +! update_debug_sign(buf, lnum); + } + else + EMSG(_(e_invarg)); +--- 7275,7284 ---- + else + /* ":sign place {id} file={fname}": change sign type */ + lnum = buf_change_sign_type(buf, id, sp->sn_typenr); +! if (lnum > 0) +! update_debug_sign(buf, lnum); +! else +! EMSG2(_("E885: Not possible to change sign %s"), sign_name); + } + else + EMSG(_(e_invarg)); +*** ../vim-7.4.274/src/version.c 2014-05-02 15:46:10.731268318 +0200 +--- src/version.c 2014-05-07 14:18:32.581081129 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 275, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +117. You are more comfortable typing in html. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.276 b/SOURCES/7.4.276 new file mode 100644 index 0000000..ab4f310 --- /dev/null +++ b/SOURCES/7.4.276 @@ -0,0 +1,302 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.276 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.276 +Problem: The fish shell is not supported. +Solution: Use begin/end instead of () for fish. (Andy Russell) +Files: src/ex_cmds.c, src/misc1.c, src/option.c, src/proto/misc1.pro + + +*** ../vim-7.4.275/src/ex_cmds.c 2014-05-07 14:38:41.129091709 +0200 +--- src/ex_cmds.c 2014-05-07 15:09:57.797108136 +0200 +*************** +*** 1551,1558 **** + { + char_u *buf; + long_u len; + +! len = (long_u)STRLEN(cmd) + 3; /* "()" + NUL */ + if (itmp != NULL) + len += (long_u)STRLEN(itmp) + 9; /* " { < " + " } " */ + if (otmp != NULL) +--- 1551,1566 ---- + { + char_u *buf; + long_u len; ++ int is_fish_shell; + +! #if (defined(UNIX) && !defined(ARCHIE)) || defined(OS2) +! /* Account for fish's different syntax for subshells */ +! is_fish_shell = (fnamecmp(get_isolated_shell_name(), "fish") == 0); +! if (is_fish_shell) +! len = (long_u)STRLEN(cmd) + 13; /* "begin; " + "; end" + NUL */ +! else +! #endif +! len = (long_u)STRLEN(cmd) + 3; /* "()" + NUL */ + if (itmp != NULL) + len += (long_u)STRLEN(itmp) + 9; /* " { < " + " } " */ + if (otmp != NULL) +*************** +*** 1567,1573 **** + * redirecting input and/or output. + */ + if (itmp != NULL || otmp != NULL) +! vim_snprintf((char *)buf, len, "(%s)", (char *)cmd); + else + STRCPY(buf, cmd); + if (itmp != NULL) +--- 1575,1586 ---- + * redirecting input and/or output. + */ + if (itmp != NULL || otmp != NULL) +! { +! if (is_fish_shell) +! vim_snprintf((char *)buf, len, "begin; %s; end", (char *)cmd); +! else +! vim_snprintf((char *)buf, len, "(%s)", (char *)cmd); +! } + else + STRCPY(buf, cmd); + if (itmp != NULL) +*************** +*** 1577,1583 **** + } + #else + /* +! * for shells that don't understand braces around commands, at least allow + * the use of commands in a pipe. + */ + STRCPY(buf, cmd); +--- 1590,1596 ---- + } + #else + /* +! * For shells that don't understand braces around commands, at least allow + * the use of commands in a pipe. + */ + STRCPY(buf, cmd); +*************** +*** 4315,4321 **** + pos_T old_cursor = curwin->w_cursor; + int start_nsubs; + #ifdef FEAT_EVAL +! int save_ma = 0; + #endif + + cmd = eap->arg; +--- 4328,4334 ---- + pos_T old_cursor = curwin->w_cursor; + int start_nsubs; + #ifdef FEAT_EVAL +! int save_ma = 0; + #endif + + cmd = eap->arg; +*************** +*** 5986,5992 **** + "/\\\\?", "/\\\\z(\\\\)", "\\\\=", ":s\\\\=", + "\\[count]", "\\[quotex]", "\\[range]", + "\\[pattern]", "\\\\bar", "/\\\\%\\$", +! "s/\\\\\\~", "s/\\\\U", "s/\\\\L", + "s/\\\\1", "s/\\\\2", "s/\\\\3", "s/\\\\9"}; + int flags; + +--- 5999,6005 ---- + "/\\\\?", "/\\\\z(\\\\)", "\\\\=", ":s\\\\=", + "\\[count]", "\\[quotex]", "\\[range]", + "\\[pattern]", "\\\\bar", "/\\\\%\\$", +! "s/\\\\\\~", "s/\\\\U", "s/\\\\L", + "s/\\\\1", "s/\\\\2", "s/\\\\3", "s/\\\\9"}; + int flags; + +*************** +*** 6026,6032 **** + /* Replace: + * "[:...:]" with "\[:...:]" + * "[++...]" with "\[++...]" +! * "\{" with "\\{" -- matching "} \}" + */ + if ((arg[0] == '[' && (arg[1] == ':' + || (arg[1] == '+' && arg[2] == '+'))) +--- 6039,6045 ---- + /* Replace: + * "[:...:]" with "\[:...:]" + * "[++...]" with "\[++...]" +! * "\{" with "\\{" -- matching "} \}" + */ + if ((arg[0] == '[' && (arg[1] == ':' + || (arg[1] == '+' && arg[2] == '+'))) +*** ../vim-7.4.275/src/misc1.c 2014-04-05 19:44:36.903160723 +0200 +--- src/misc1.c 2014-05-07 15:04:25.921105231 +0200 +*************** +*** 1405,1411 **** + #ifdef FEAT_SMARTINDENT + if (did_si) + { +! int sw = (int)get_sw_value(curbuf); + + if (p_sr) + newindent -= newindent % sw; +--- 1405,1411 ---- + #ifdef FEAT_SMARTINDENT + if (did_si) + { +! int sw = (int)get_sw_value(curbuf); + + if (p_sr) + newindent -= newindent % sw; +*************** +*** 10896,10898 **** +--- 10896,10936 ---- + { + return (p_im && stuff_empty() && typebuf_typed()); + } ++ ++ /* ++ * Returns the isolated name of the shell: ++ * - Skip beyond any path. E.g., "/usr/bin/csh -f" -> "csh -f". ++ * - Remove any argument. E.g., "csh -f" -> "csh". ++ * But don't allow a space in the path, so that this works: ++ * "/usr/bin/csh --rcfile ~/.cshrc" ++ * But don't do that for Windows, it's common to have a space in the path. ++ */ ++ char_u * ++ get_isolated_shell_name() ++ { ++ char_u *p; ++ ++ #ifdef WIN3264 ++ p = gettail(p_sh); ++ p = vim_strnsave(p, (int)(skiptowhite(p) - p)); ++ #else ++ p = skiptowhite(p_sh); ++ if (*p == NUL) ++ { ++ /* No white space, use the tail. */ ++ p = vim_strsave(gettail(p_sh)); ++ } ++ else ++ { ++ char_u *p1, *p2; ++ ++ /* Find the last path separator before the space. */ ++ p1 = p_sh; ++ for (p2 = p_sh; p2 < p; mb_ptr_adv(p2)) ++ if (vim_ispathsep(*p2)) ++ p1 = p2 + 1; ++ p = vim_strnsave(p1, (int)(p - p1)); ++ } ++ #endif ++ return p; ++ } +*** ../vim-7.4.275/src/option.c 2014-03-23 15:12:29.931264336 +0100 +--- src/option.c 2014-05-07 15:05:14.117105653 +0200 +*************** +*** 3804,3840 **** + else + do_sp = !(options[idx_sp].flags & P_WAS_SET); + #endif +! +! /* +! * Isolate the name of the shell: +! * - Skip beyond any path. E.g., "/usr/bin/csh -f" -> "csh -f". +! * - Remove any argument. E.g., "csh -f" -> "csh". +! * But don't allow a space in the path, so that this works: +! * "/usr/bin/csh --rcfile ~/.cshrc" +! * But don't do that for Windows, it's common to have a space in the path. +! */ +! #ifdef WIN3264 +! p = gettail(p_sh); +! p = vim_strnsave(p, (int)(skiptowhite(p) - p)); +! #else +! p = skiptowhite(p_sh); +! if (*p == NUL) +! { +! /* No white space, use the tail. */ +! p = vim_strsave(gettail(p_sh)); +! } +! else +! { +! char_u *p1, *p2; +! +! /* Find the last path separator before the space. */ +! p1 = p_sh; +! for (p2 = p_sh; p2 < p; mb_ptr_adv(p2)) +! if (vim_ispathsep(*p2)) +! p1 = p2 + 1; +! p = vim_strnsave(p1, (int)(p - p1)); +! } +! #endif + if (p != NULL) + { + /* +--- 3804,3810 ---- + else + do_sp = !(options[idx_sp].flags & P_WAS_SET); + #endif +! p = get_isolated_shell_name(); + if (p != NULL) + { + /* +*************** +*** 3875,3880 **** +--- 3845,3851 ---- + || fnamecmp(p, "zsh") == 0 + || fnamecmp(p, "zsh-beta") == 0 + || fnamecmp(p, "bash") == 0 ++ || fnamecmp(p, "fish") == 0 + # ifdef WIN3264 + || fnamecmp(p, "cmd") == 0 + || fnamecmp(p, "sh.exe") == 0 +*************** +*** 8858,8865 **** + * opt_type). Uses + * + * Returned flags: +! * 0 hidden or unknown option, also option that does not have requested +! * type (see SREQ_* in vim.h) + * see SOPT_* in vim.h for other flags + * + * Possible opt_type values: see SREQ_* in vim.h +--- 8829,8836 ---- + * opt_type). Uses + * + * Returned flags: +! * 0 hidden or unknown option, also option that does not have requested +! * type (see SREQ_* in vim.h) + * see SOPT_* in vim.h for other flags + * + * Possible opt_type values: see SREQ_* in vim.h +*** ../vim-7.4.275/src/proto/misc1.pro 2014-04-05 19:44:36.903160723 +0200 +--- src/proto/misc1.pro 2014-05-07 14:57:04.605101368 +0200 +*************** +*** 103,106 **** +--- 103,107 ---- + char_u *get_cmd_output __ARGS((char_u *cmd, char_u *infile, int flags, int *ret_len)); + void FreeWild __ARGS((int count, char_u **files)); + int goto_im __ARGS((void)); ++ char_u *get_isolated_shell_name __ARGS((void)); + /* vim: set ft=c : */ +*** ../vim-7.4.275/src/version.c 2014-05-07 14:38:41.129091709 +0200 +--- src/version.c 2014-05-07 14:58:59.769102376 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 276, + /**/ + +-- +Support your right to bare arms! Wear short sleeves! + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.277 b/SOURCES/7.4.277 new file mode 100644 index 0000000..1b569cb --- /dev/null +++ b/SOURCES/7.4.277 @@ -0,0 +1,80 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.277 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.277 +Problem: Using ":sign unplace *" may leave the cursor in the wrong position + (Christian Brabandt) +Solution: Update the cursor position when removing all signs. +Files: src/buffer.c + + +*** ../vim-7.4.276/src/buffer.c 2014-04-06 20:45:40.115357453 +0200 +--- src/buffer.c 2014-05-07 16:30:13.117150289 +0200 +*************** +*** 5525,5530 **** +--- 5525,5534 ---- + return; + } + ++ /* ++ * For an existing, placed sign "markId" change the type to "typenr". ++ * Returns the line number of the sign, or zero if the sign is not found. ++ */ + linenr_T + buf_change_sign_type(buf, markId, typenr) + buf_T *buf; /* buffer to store sign in */ +*************** +*** 5693,5698 **** +--- 5697,5710 ---- + { + signlist_T *next; + ++ /* When deleting the last sign need to redraw the windows to remove the ++ * sign column. */ ++ if (buf->b_signlist != NULL) ++ { ++ redraw_buf_later(buf, NOT_VALID); ++ changed_cline_bef_curs(); ++ } ++ + while (buf->b_signlist != NULL) + { + next = buf->b_signlist->next; +*************** +*** 5711,5721 **** + + for (buf = firstbuf; buf != NULL; buf = buf->b_next) + if (buf->b_signlist != NULL) +- { +- /* Need to redraw the windows to remove the sign column. */ +- redraw_buf_later(buf, NOT_VALID); + buf_delete_signs(buf); +- } + } + + /* +--- 5723,5729 ---- +*** ../vim-7.4.276/src/version.c 2014-05-07 15:10:17.661108310 +0200 +--- src/version.c 2014-05-07 16:32:06.933151285 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 277, + /**/ + +-- +An actual excerpt from a classified section of a city newspaper: +"Illiterate? Write today for free help!" + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.278 b/SOURCES/7.4.278 new file mode 100644 index 0000000..5740fb8 --- /dev/null +++ b/SOURCES/7.4.278 @@ -0,0 +1,183 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.278 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.278 +Problem: list_remove() conflicts with function defined in Sun header file. +Solution: Rename the function. (Richard Palo) +Files: src/eval.c, src/if_lua.c, src/if_py_both.h, src/proto/eval.pro + + +*** ../vim-7.4.277/src/eval.c 2014-04-29 17:41:18.351689927 +0200 +--- src/eval.c 2014-05-07 17:28:56.037181128 +0200 +*************** +*** 5998,6004 **** + list_T *l; + listitem_T *item; + { +! list_remove(l, item, item); + listitem_free(item); + } + +--- 5998,6004 ---- + list_T *l; + listitem_T *item; + { +! vimlist_remove(l, item, item); + listitem_free(item); + } + +*************** +*** 6577,6585 **** + /* + * Remove items "item" to "item2" from list "l". + * Does not free the listitem or the value! + */ + void +! list_remove(l, item, item2) + list_T *l; + listitem_T *item; + listitem_T *item2; +--- 6577,6587 ---- + /* + * Remove items "item" to "item2" from list "l". + * Does not free the listitem or the value! ++ * This used to be called list_remove, but that conflicts with a Sun header ++ * file. + */ + void +! vimlist_remove(l, item, item2) + list_T *l; + listitem_T *item; + listitem_T *item2; +*************** +*** 15435,15441 **** + if (argvars[2].v_type == VAR_UNKNOWN) + { + /* Remove one item, return its value. */ +! list_remove(l, item, item); + *rettv = item->li_tv; + vim_free(item); + } +--- 15437,15443 ---- + if (argvars[2].v_type == VAR_UNKNOWN) + { + /* Remove one item, return its value. */ +! vimlist_remove(l, item, item); + *rettv = item->li_tv; + vim_free(item); + } +*************** +*** 15461,15467 **** + EMSG(_(e_invrange)); + else + { +! list_remove(l, item, item2); + if (rettv_list_alloc(rettv) == OK) + { + l = rettv->vval.v_list; +--- 15463,15469 ---- + EMSG(_(e_invrange)); + else + { +! vimlist_remove(l, item, item2); + if (rettv_list_alloc(rettv) == OK) + { + l = rettv->vval.v_list; +*** ../vim-7.4.277/src/if_lua.c 2013-06-23 12:55:02.000000000 +0200 +--- src/if_lua.c 2014-05-07 17:29:08.913181240 +0200 +*************** +*** 734,740 **** + if (li == NULL) return 0; + if (lua_isnil(L, 3)) /* remove? */ + { +! list_remove(l, li, li); + clear_tv(&li->li_tv); + vim_free(li); + } +--- 734,740 ---- + if (li == NULL) return 0; + if (lua_isnil(L, 3)) /* remove? */ + { +! vimlist_remove(l, li, li); + clear_tv(&li->li_tv); + vim_free(li); + } +*** ../vim-7.4.277/src/if_py_both.h 2014-03-30 16:11:37.176530823 +0200 +--- src/if_py_both.h 2014-05-07 17:29:26.497181394 +0200 +*************** +*** 2494,2500 **** + if (numreplaced < slicelen) + { + lis[slicelen + numreplaced] = lis[numreplaced]->li_prev; +! list_remove(l, lis[numreplaced], lis[numreplaced]); + numreplaced++; + } + else +--- 2494,2500 ---- + if (numreplaced < slicelen) + { + lis[slicelen + numreplaced] = lis[numreplaced]->li_prev; +! vimlist_remove(l, lis[numreplaced], lis[numreplaced]); + numreplaced++; + } + else +*************** +*** 2570,2576 **** + if (obj == NULL) + { + li = list_find(l, (long) index); +! list_remove(l, li, li); + clear_tv(&li->li_tv); + vim_free(li); + return 0; +--- 2570,2576 ---- + if (obj == NULL) + { + li = list_find(l, (long) index); +! vimlist_remove(l, li, li); + clear_tv(&li->li_tv); + vim_free(li); + return 0; +*** ../vim-7.4.277/src/proto/eval.pro 2014-01-14 16:36:40.000000000 +0100 +--- src/proto/eval.pro 2014-05-07 17:30:02.517181710 +0200 +*************** +*** 59,65 **** + int list_append_dict __ARGS((list_T *list, dict_T *dict)); + int list_append_string __ARGS((list_T *l, char_u *str, int len)); + int list_insert_tv __ARGS((list_T *l, typval_T *tv, listitem_T *item)); +! void list_remove __ARGS((list_T *l, listitem_T *item, listitem_T *item2)); + void list_insert __ARGS((list_T *l, listitem_T *ni, listitem_T *item)); + int garbage_collect __ARGS((void)); + void set_ref_in_ht __ARGS((hashtab_T *ht, int copyID)); +--- 59,65 ---- + int list_append_dict __ARGS((list_T *list, dict_T *dict)); + int list_append_string __ARGS((list_T *l, char_u *str, int len)); + int list_insert_tv __ARGS((list_T *l, typval_T *tv, listitem_T *item)); +! void vimlist_remove __ARGS((list_T *l, listitem_T *item, listitem_T *item2)); + void list_insert __ARGS((list_T *l, listitem_T *ni, listitem_T *item)); + int garbage_collect __ARGS((void)); + void set_ref_in_ht __ARGS((hashtab_T *ht, int copyID)); +*** ../vim-7.4.277/src/version.c 2014-05-07 16:35:05.029152844 +0200 +--- src/version.c 2014-05-07 17:30:43.449182068 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 278, + /**/ + +-- +"Computers in the future may weigh no more than 1.5 tons." + Popular Mechanics, 1949 + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.279 b/SOURCES/7.4.279 new file mode 100644 index 0000000..6fb4c1b --- /dev/null +++ b/SOURCES/7.4.279 @@ -0,0 +1,616 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.279 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.279 +Problem: globpath() returns a string, making it difficult to get a list of + matches. (Greg Novack) +Solution: Add an optional argument like with glob(). (Adnan Zafar) +Files: runtime/doc/eval.txt, src/eval.c, src/ex_getln.c, src/misc1.c, + src/misc2.c, src/proto/ex_getln.pro, src/proto/misc2.pro, + src/testdir/test97.in, src/testdir/test97.ok + + +*** ../vim-7.4.278/runtime/doc/eval.txt 2014-04-23 17:43:37.350948683 +0200 +--- runtime/doc/eval.txt 2014-05-07 17:38:03.045185916 +0200 +*************** +*** 1832,1838 **** + any variable {varname} in window {nr} + glob( {expr} [, {nosuf} [, {list}]]) + any expand file wildcards in {expr} +! globpath( {path}, {expr} [, {flag}]) + String do glob({expr}) for all dirs in {path} + has( {feature}) Number TRUE if feature {feature} supported + has_key( {dict}, {key}) Number TRUE if {dict} has entry {key} +--- 1832,1838 ---- + any variable {varname} in window {nr} + glob( {expr} [, {nosuf} [, {list}]]) + any expand file wildcards in {expr} +! globpath( {path}, {expr} [, {nosuf} [, {list}]]) + String do glob({expr}) for all dirs in {path} + has( {feature}) Number TRUE if feature {feature} supported + has_key( {dict}, {key}) Number TRUE if {dict} has entry {key} +*************** +*** 3570,3580 **** + See |expand()| for expanding special Vim variables. See + |system()| for getting the raw output of an external command. + +! globpath({path}, {expr} [, {flag}]) *globpath()* + Perform glob() on all directories in {path} and concatenate + the results. Example: > + :echo globpath(&rtp, "syntax/c.vim") +! < {path} is a comma-separated list of directory names. Each + directory name is prepended to {expr} and expanded like with + |glob()|. A path separator is inserted when needed. + To add a comma inside a directory name escape it with a +--- 3571,3582 ---- + See |expand()| for expanding special Vim variables. See + |system()| for getting the raw output of an external command. + +! globpath({path}, {expr} [, {nosuf} [, {list}]]) *globpath()* + Perform glob() on all directories in {path} and concatenate + the results. Example: > + :echo globpath(&rtp, "syntax/c.vim") +! < +! {path} is a comma-separated list of directory names. Each + directory name is prepended to {expr} and expanded like with + |glob()|. A path separator is inserted when needed. + To add a comma inside a directory name escape it with a +*************** +*** 3582,3592 **** + trailing backslash, remove it if you put a comma after it. + If the expansion fails for one of the directories, there is no + error message. +! Unless the optional {flag} argument is given and is non-zero, + the 'suffixes' and 'wildignore' options apply: Names matching + one of the patterns in 'wildignore' will be skipped and + 'suffixes' affect the ordering of matches. + + The "**" item can be used to search in a directory tree. + For example, to find all "README.txt" files in the directories + in 'runtimepath' and below: > +--- 3584,3602 ---- + trailing backslash, remove it if you put a comma after it. + If the expansion fails for one of the directories, there is no + error message. +! +! Unless the optional {nosuf} argument is given and is non-zero, + the 'suffixes' and 'wildignore' options apply: Names matching + one of the patterns in 'wildignore' will be skipped and + 'suffixes' affect the ordering of matches. + ++ When {list} is present and it is non-zero the result is a List ++ with all matching files. The advantage of using a List is, you ++ also get filenames containing newlines correctly. Otherwise ++ the result is a String and when there are several matches, ++ they are separated by <NL> characters. Example: > ++ :echo globpath(&rtp, "syntax/c.vim", 0, 1) ++ < + The "**" item can be used to search in a directory tree. + For example, to find all "README.txt" files in the directories + in 'runtimepath' and below: > +*** ../vim-7.4.278/src/eval.c 2014-05-07 17:31:32.473182497 +0200 +--- src/eval.c 2014-05-07 18:06:29.541200854 +0200 +*************** +*** 7985,7991 **** + {"getwinposy", 0, 0, f_getwinposy}, + {"getwinvar", 2, 3, f_getwinvar}, + {"glob", 1, 3, f_glob}, +! {"globpath", 2, 3, f_globpath}, + {"has", 1, 1, f_has}, + {"has_key", 2, 2, f_has_key}, + {"haslocaldir", 0, 0, f_haslocaldir}, +--- 7985,7991 ---- + {"getwinposy", 0, 0, f_getwinposy}, + {"getwinvar", 2, 3, f_getwinvar}, + {"glob", 1, 3, f_glob}, +! {"globpath", 2, 4, f_globpath}, + {"has", 1, 1, f_has}, + {"has_key", 2, 2, f_has_key}, + {"haslocaldir", 0, 0, f_haslocaldir}, +*************** +*** 12151,12168 **** + char_u buf1[NUMBUFLEN]; + char_u *file = get_tv_string_buf_chk(&argvars[1], buf1); + int error = FALSE; + + /* When the optional second argument is non-zero, don't remove matches + * for 'wildignore' and don't put matches for 'suffixes' at the end. */ +- if (argvars[2].v_type != VAR_UNKNOWN +- && get_tv_number_chk(&argvars[2], &error)) +- flags |= WILD_KEEP_ALL; + rettv->v_type = VAR_STRING; +! if (file == NULL || error) +! rettv->vval.v_string = NULL; + else +! rettv->vval.v_string = globpath(get_tv_string(&argvars[0]), file, +! flags); + } + + /* +--- 12151,12187 ---- + char_u buf1[NUMBUFLEN]; + char_u *file = get_tv_string_buf_chk(&argvars[1], buf1); + int error = FALSE; ++ garray_T ga; ++ int i; + + /* When the optional second argument is non-zero, don't remove matches + * for 'wildignore' and don't put matches for 'suffixes' at the end. */ + rettv->v_type = VAR_STRING; +! if (argvars[2].v_type != VAR_UNKNOWN) +! { +! if (get_tv_number_chk(&argvars[2], &error)) +! flags |= WILD_KEEP_ALL; +! if (argvars[3].v_type != VAR_UNKNOWN +! && get_tv_number_chk(&argvars[3], &error)) +! { +! rettv->v_type = VAR_LIST; +! rettv->vval.v_list = NULL; +! } +! } +! if (file != NULL && !error) +! { +! ga_init2(&ga, (int)sizeof(char_u *), 10); +! globpath(get_tv_string(&argvars[0]), file, &ga, flags); +! if (rettv->v_type == VAR_STRING) +! rettv->vval.v_string = ga_concat_strings(&ga, "\n"); +! else if (rettv_list_alloc(rettv) != FAIL) +! for (i = 0; i < ga.ga_len; ++i) +! list_append_string(rettv->vval.v_list, +! ((char_u **)(ga.ga_data))[i], -1); +! ga_clear_strings(&ga); +! } + else +! rettv->vval.v_string = NULL; + } + + /* +*** ../vim-7.4.278/src/ex_getln.c 2013-11-12 05:28:08.000000000 +0100 +--- src/ex_getln.c 2014-05-07 18:11:49.281203653 +0200 +*************** +*** 5095,5103 **** + char_u ***file; + char *dirnames[]; + { +- char_u *matches; + char_u *s; + char_u *e; + garray_T ga; + int i; + int pat_len; +--- 5095,5103 ---- + char_u ***file; + char *dirnames[]; + { + char_u *s; + char_u *e; ++ char_u *match; + garray_T ga; + int i; + int pat_len; +*************** +*** 5116,5148 **** + return FAIL; + } + sprintf((char *)s, "%s/%s*.vim", dirnames[i], pat); +! matches = globpath(p_rtp, s, 0); + vim_free(s); +! if (matches == NULL) +! continue; + +! for (s = matches; *s != NUL; s = e) + { +! e = vim_strchr(s, '\n'); +! if (e == NULL) +! e = s + STRLEN(s); +! if (ga_grow(&ga, 1) == FAIL) +! break; +! if (e - 4 > s && STRNICMP(e - 4, ".vim", 4) == 0) +! { +! for (s = e - 4; s > matches; mb_ptr_back(matches, s)) +! if (*s == '\n' || vim_ispathsep(*s)) +! break; +! ++s; +! ((char_u **)ga.ga_data)[ga.ga_len] = +! vim_strnsave(s, (int)(e - s - 4)); +! ++ga.ga_len; +! } +! if (*e != NUL) +! ++e; + } +- vim_free(matches); + } + if (ga.ga_len == 0) + return FAIL; + +--- 5116,5142 ---- + return FAIL; + } + sprintf((char *)s, "%s/%s*.vim", dirnames[i], pat); +! globpath(p_rtp, s, &ga, 0); + vim_free(s); +! } + +! for (i = 0; i < ga.ga_len; ++i) +! { +! match = ((char_u **)ga.ga_data)[i]; +! s = match; +! e = s + STRLEN(s); +! if (e - 4 > s && STRNICMP(e - 4, ".vim", 4) == 0) + { +! e -= 4; +! for (s = e; s > match; mb_ptr_back(match, s)) +! if (s < match || vim_ispathsep(*s)) +! break; +! ++s; +! *e = NUL; +! mch_memmove(match, s, e - s + 1); + } + } ++ + if (ga.ga_len == 0) + return FAIL; + +*************** +*** 5160,5192 **** + #if defined(FEAT_CMDL_COMPL) || defined(FEAT_EVAL) || defined(PROTO) + /* + * Expand "file" for all comma-separated directories in "path". +! * Returns an allocated string with all matches concatenated, separated by +! * newlines. Returns NULL for an error or no matches. + */ +! char_u * +! globpath(path, file, expand_options) + char_u *path; + char_u *file; + int expand_options; + { + expand_T xpc; + char_u *buf; +- garray_T ga; + int i; +- int len; + int num_p; + char_u **p; +- char_u *cur = NULL; + + buf = alloc(MAXPATHL); + if (buf == NULL) +! return NULL; + + ExpandInit(&xpc); + xpc.xp_context = EXPAND_FILES; + +- ga_init2(&ga, 1, 100); +- + /* Loop over all entries in {path}. */ + while (*path != NUL) + { +--- 5154,5181 ---- + #if defined(FEAT_CMDL_COMPL) || defined(FEAT_EVAL) || defined(PROTO) + /* + * Expand "file" for all comma-separated directories in "path". +! * Adds the matches to "ga". Caller must init "ga". + */ +! void +! globpath(path, file, ga, expand_options) + char_u *path; + char_u *file; ++ garray_T *ga; + int expand_options; + { + expand_T xpc; + char_u *buf; + int i; + int num_p; + char_u **p; + + buf = alloc(MAXPATHL); + if (buf == NULL) +! return; + + ExpandInit(&xpc); + xpc.xp_context = EXPAND_FILES; + + /* Loop over all entries in {path}. */ + while (*path != NUL) + { +*************** +*** 5207,5236 **** + WILD_SILENT|expand_options) != FAIL && num_p > 0) + { + ExpandEscape(&xpc, buf, num_p, p, WILD_SILENT|expand_options); +- for (len = 0, i = 0; i < num_p; ++i) +- len += (int)STRLEN(p[i]) + 1; + +! /* Concatenate new results to previous ones. */ +! if (ga_grow(&ga, len) == OK) + { +- cur = (char_u *)ga.ga_data + ga.ga_len; + for (i = 0; i < num_p; ++i) + { +! STRCPY(cur, p[i]); +! cur += STRLEN(p[i]); +! *cur++ = '\n'; + } +- ga.ga_len += len; + } + FreeWild(num_p, p); + } + } + } +- if (cur != NULL) +- *--cur = 0; /* Replace trailing newline with NUL */ + + vim_free(buf); +- return (char_u *)ga.ga_data; + } + + #endif +--- 5196,5218 ---- + WILD_SILENT|expand_options) != FAIL && num_p > 0) + { + ExpandEscape(&xpc, buf, num_p, p, WILD_SILENT|expand_options); + +! if (ga_grow(ga, num_p) == OK) + { + for (i = 0; i < num_p; ++i) + { +! ((char_u **)ga->ga_data)[ga->ga_len] = +! vim_strnsave(p[i], STRLEN(p[i])); +! ++ga->ga_len; + } + } ++ + FreeWild(num_p, p); + } + } + } + + vim_free(buf); + } + + #endif +*** ../vim-7.4.278/src/misc1.c 2014-05-07 15:10:17.657108310 +0200 +--- src/misc1.c 2014-05-07 17:46:30.269190356 +0200 +*************** +*** 10336,10344 **** + { + char_u *curdir; + garray_T path_ga; +- char_u *files = NULL; +- char_u *s; /* start */ +- char_u *e; /* end */ + char_u *paths = NULL; + + if ((curdir = alloc((unsigned)MAXPATHL)) == NULL) +--- 10336,10341 ---- +*************** +*** 10351,10387 **** + if (path_ga.ga_len == 0) + return 0; + +! paths = ga_concat_strings(&path_ga); + ga_clear_strings(&path_ga); + if (paths == NULL) + return 0; + +! files = globpath(paths, pattern, (flags & EW_ICASE) ? WILD_ICASE : 0); + vim_free(paths); +- if (files == NULL) +- return 0; +- +- /* Copy each path in files into gap */ +- s = e = files; +- while (*s != NUL) +- { +- while (*e != '\n' && *e != NUL) +- e++; +- if (*e == NUL) +- { +- addfile(gap, s, flags); +- break; +- } +- else +- { +- /* *e is '\n' */ +- *e = NUL; +- addfile(gap, s, flags); +- e++; +- s = e; +- } +- } +- vim_free(files); + + return gap->ga_len; + } +--- 10348,10360 ---- + if (path_ga.ga_len == 0) + return 0; + +! paths = ga_concat_strings(&path_ga, ","); + ga_clear_strings(&path_ga); + if (paths == NULL) + return 0; + +! globpath(paths, pattern, gap, (flags & EW_ICASE) ? WILD_ICASE : 0); + vim_free(paths); + + return gap->ga_len; + } +*** ../vim-7.4.278/src/misc2.c 2014-03-23 15:12:29.927264336 +0100 +--- src/misc2.c 2014-05-07 18:34:37.689215632 +0200 +*************** +*** 2087,2115 **** + + /* + * For a growing array that contains a list of strings: concatenate all the +! * strings with a separating comma. + * Returns NULL when out of memory. + */ + char_u * +! ga_concat_strings(gap) + garray_T *gap; + { + int i; + int len = 0; + char_u *s; + + for (i = 0; i < gap->ga_len; ++i) +! len += (int)STRLEN(((char_u **)(gap->ga_data))[i]) + 1; + + s = alloc(len + 1); + if (s != NULL) + { + *s = NUL; + for (i = 0; i < gap->ga_len; ++i) + { +! if (*s != NUL) +! STRCAT(s, ","); +! STRCAT(s, ((char_u **)(gap->ga_data))[i]); + } + } + return s; +--- 2087,2123 ---- + + /* + * For a growing array that contains a list of strings: concatenate all the +! * strings with a separating "sep". + * Returns NULL when out of memory. + */ + char_u * +! ga_concat_strings(gap, sep) + garray_T *gap; ++ char *sep; + { + int i; + int len = 0; ++ int sep_len = (int)STRLEN(sep); + char_u *s; ++ char_u *p; + + for (i = 0; i < gap->ga_len; ++i) +! len += (int)STRLEN(((char_u **)(gap->ga_data))[i]) + sep_len; + + s = alloc(len + 1); + if (s != NULL) + { + *s = NUL; ++ p = s; + for (i = 0; i < gap->ga_len; ++i) + { +! if (p != s) +! { +! STRCPY(p, sep); +! p += sep_len; +! } +! STRCPY(p, ((char_u **)(gap->ga_data))[i]); +! p += STRLEN(p); + } + } + return s; +*** ../vim-7.4.278/src/proto/ex_getln.pro 2013-08-10 13:37:11.000000000 +0200 +--- src/proto/ex_getln.pro 2014-05-07 17:52:42.457193614 +0200 +*************** +*** 32,38 **** + void set_cmd_context __ARGS((expand_T *xp, char_u *str, int len, int col)); + int expand_cmdline __ARGS((expand_T *xp, char_u *str, int col, int *matchcount, char_u ***matches)); + int ExpandGeneric __ARGS((expand_T *xp, regmatch_T *regmatch, int *num_file, char_u ***file, char_u *((*func)(expand_T *, int)), int escaped)); +! char_u *globpath __ARGS((char_u *path, char_u *file, int expand_options)); + void init_history __ARGS((void)); + int get_histtype __ARGS((char_u *name)); + void add_to_history __ARGS((int histype, char_u *new_entry, int in_map, int sep)); +--- 32,38 ---- + void set_cmd_context __ARGS((expand_T *xp, char_u *str, int len, int col)); + int expand_cmdline __ARGS((expand_T *xp, char_u *str, int col, int *matchcount, char_u ***matches)); + int ExpandGeneric __ARGS((expand_T *xp, regmatch_T *regmatch, int *num_file, char_u ***file, char_u *((*func)(expand_T *, int)), int escaped)); +! void globpath __ARGS((char_u *path, char_u *file, garray_T *ga, int expand_options)); + void init_history __ARGS((void)); + int get_histtype __ARGS((char_u *name)); + void add_to_history __ARGS((int histype, char_u *new_entry, int in_map, int sep)); +*** ../vim-7.4.278/src/proto/misc2.pro 2014-02-23 23:38:58.828760280 +0100 +--- src/proto/misc2.pro 2014-05-07 17:52:36.189193559 +0200 +*************** +*** 55,61 **** + void ga_init __ARGS((garray_T *gap)); + void ga_init2 __ARGS((garray_T *gap, int itemsize, int growsize)); + int ga_grow __ARGS((garray_T *gap, int n)); +! char_u *ga_concat_strings __ARGS((garray_T *gap)); + void ga_concat __ARGS((garray_T *gap, char_u *s)); + void ga_append __ARGS((garray_T *gap, int c)); + void append_ga_line __ARGS((garray_T *gap)); +--- 55,61 ---- + void ga_init __ARGS((garray_T *gap)); + void ga_init2 __ARGS((garray_T *gap, int itemsize, int growsize)); + int ga_grow __ARGS((garray_T *gap, int n)); +! char_u *ga_concat_strings __ARGS((garray_T *gap, char *sep)); + void ga_concat __ARGS((garray_T *gap, char_u *s)); + void ga_append __ARGS((garray_T *gap, int c)); + void append_ga_line __ARGS((garray_T *gap)); +*** ../vim-7.4.278/src/testdir/test97.in 2013-08-02 14:55:50.000000000 +0200 +--- src/testdir/test97.in 2014-05-07 18:27:59.213212144 +0200 +*************** +*** 5,16 **** + :so small.vim + :set shell=doesnotexist + :e test.out +! :put =glob('Xxx\{') +! :put =glob('Xxx\$') + :w! Xxx{ + :w! Xxx\$ +! :put =glob('Xxx\{') +! :put =glob('Xxx\$') + :w + :qa! + ENDTEST +--- 5,19 ---- + :so small.vim + :set shell=doesnotexist + :e test.out +! :$put =glob('Xxx\{') +! :$put =glob('Xxx\$') + :w! Xxx{ + :w! Xxx\$ +! :$put =glob('Xxx\{') +! :$put =glob('Xxx\$') +! :" +! :$put =string(globpath('sautest/autoload', '*.vim')) +! :$put =string(globpath('sautest/autoload', '*.vim', 0, 1)) + :w + :qa! + ENDTEST +*** ../vim-7.4.278/src/testdir/test97.ok 2013-07-03 16:14:50.000000000 +0200 +--- src/testdir/test97.ok 2014-05-07 18:28:01.985212168 +0200 +*************** +*** 3,5 **** +--- 3,8 ---- + + Xxx{ + Xxx$ ++ 'sautest/autoload/Test104.vim ++ sautest/autoload/footest.vim' ++ ['sautest/autoload/Test104.vim', 'sautest/autoload/footest.vim'] +*** ../vim-7.4.278/src/version.c 2014-05-07 17:31:32.473182497 +0200 +--- src/version.c 2014-05-07 17:35:06.253184368 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 279, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +121. You ask for e-mail adresses instead of telephone numbers. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.280 b/SOURCES/7.4.280 new file mode 100644 index 0000000..6b392df --- /dev/null +++ b/SOURCES/7.4.280 @@ -0,0 +1,125 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.280 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.280 +Problem: When using a session file the relative position of the cursor is + not restored if there is another tab. (Nobuhiro Takasaki) +Solution: Update w_wrow before calculating the fraction. +Files: src/window.c + + +*** ../vim-7.4.279/src/window.c 2014-03-23 15:12:29.943264337 +0100 +--- src/window.c 2014-05-07 20:18:55.237270409 +0200 +*************** +*** 5623,5629 **** + win_T *wp; + { + wp->w_fraction = ((long)wp->w_wrow * FRACTION_MULT +! + FRACTION_MULT / 2) / (long)wp->w_height; + } + + /* +--- 5623,5629 ---- + win_T *wp; + { + wp->w_fraction = ((long)wp->w_wrow * FRACTION_MULT +! + wp->w_height / 2) / (long)wp->w_height; + } + + /* +*************** +*** 5638,5643 **** +--- 5638,5644 ---- + { + 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. + * Will equalize heights soon to fix it. */ +*************** +*** 5646,5653 **** + if (wp->w_height == height) + return; /* nothing to do */ + +! if (wp->w_wrow != wp->w_prev_fraction_row && wp->w_height > 0) +! set_fraction(wp); + + wp->w_height = height; + wp->w_skipcol = 0; +--- 5647,5659 ---- + if (wp->w_height == height) + return; /* nothing to do */ + +! if (wp->w_height > 0) +! { +! if (wp == curwin) +! validate_cursor(); /* w_wrow needs to be valid */ +! if (wp->w_wrow != wp->w_prev_fraction_row) +! set_fraction(wp); +! } + + wp->w_height = height; + wp->w_skipcol = 0; +*************** +*** 5667,5673 **** + lnum = wp->w_cursor.lnum; + if (lnum < 1) /* can happen when starting up */ + lnum = 1; +! wp->w_wrow = ((long)wp->w_fraction * (long)height - 1L) / FRACTION_MULT; + line_size = plines_win_col(wp, lnum, (long)(wp->w_cursor.col)) - 1; + sline = wp->w_wrow - line_size; + +--- 5673,5680 ---- + lnum = wp->w_cursor.lnum; + if (lnum < 1) /* can happen when starting up */ + lnum = 1; +! wp->w_wrow = ((long)wp->w_fraction * (long)height - 1L +! + FRACTION_MULT / 2) / FRACTION_MULT; + line_size = plines_win_col(wp, lnum, (long)(wp->w_cursor.col)) - 1; + sline = wp->w_wrow - line_size; + +*************** +*** 5757,5763 **** + update_topline(); + curs_columns(FALSE); /* validate w_wrow */ + } +! wp->w_prev_fraction_row = wp->w_wrow; + + win_comp_scroll(wp); + redraw_win_later(wp, SOME_VALID); +--- 5764,5771 ---- + update_topline(); + curs_columns(FALSE); /* validate w_wrow */ + } +! if (prev_height > 0) +! wp->w_prev_fraction_row = wp->w_wrow; + + win_comp_scroll(wp); + redraw_win_later(wp, SOME_VALID); +*** ../vim-7.4.279/src/version.c 2014-05-07 18:35:25.669216052 +0200 +--- src/version.c 2014-05-07 20:24:14.313273202 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 280, + /**/ + +-- +~ +~ +~ +".signature" 4 lines, 50 characters written + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.281 b/SOURCES/7.4.281 new file mode 100644 index 0000000..6c6765a --- /dev/null +++ b/SOURCES/7.4.281 @@ -0,0 +1,80 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.281 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.281 +Problem: When a session file has more than one tabpage and 'showtabline' is + one the positions may be slightly off. +Solution: Set 'showtabline' to two while positioning windows. +Files: src/ex_docmd.c + + +*** ../vim-7.4.280/src/ex_docmd.c 2014-04-29 12:15:22.856032651 +0200 +--- src/ex_docmd.c 2014-05-07 21:07:56.249296154 +0200 +*************** +*** 10290,10295 **** +--- 10290,10296 ---- + char_u *sname; + win_T *edited_win = NULL; + int tabnr; ++ int restore_stal = FALSE; + win_T *tab_firstwin; + frame_T *tab_topframe; + int cur_arg_idx = 0; +*************** +*** 10399,10404 **** +--- 10400,10418 ---- + #endif + + /* ++ * When there are two or more tabpages and 'showtabline' is 1 the tabline ++ * will be displayed when creating the next tab. That resizes the windows ++ * in the first tab, which may cause problems. Set 'showtabline' to 2 ++ * temporarily to avoid that. ++ */ ++ if (p_stal == 1 && first_tabpage->tp_next != NULL) ++ { ++ if (put_line(fd, "set stal=2") == FAIL) ++ return FAIL; ++ restore_stal = TRUE; ++ } ++ ++ /* + * May repeat putting Windows for each tab, when "tabpages" is in + * 'sessionoptions'. + * Don't use goto_tabpage(), it may change directory and trigger +*************** +*** 10548,10553 **** +--- 10562,10569 ---- + || put_eol(fd) == FAIL) + return FAIL; + } ++ if (restore_stal && put_line(fd, "set stal=1") == FAIL) ++ return FAIL; + + /* + * Wipe out an empty unnamed buffer we started in. +*** ../vim-7.4.280/src/version.c 2014-05-07 20:25:30.845273872 +0200 +--- src/version.c 2014-05-07 21:11:24.925297981 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 281, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +122. You ask if the Netaholics Anonymous t-shirt you ordered can be + sent to you via e-mail. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.282 b/SOURCES/7.4.282 new file mode 100644 index 0000000..5ee4e8d --- /dev/null +++ b/SOURCES/7.4.282 @@ -0,0 +1,48 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.282 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.282 (after 7.4.279) +Problem: Test 97 fails on Mac. +Solution: Do not ignore case in file names. (Jun Takimoto) +Files: src/testdir/test97.in + + +*** ../vim-7.4.281/src/testdir/test97.in 2014-05-07 18:35:25.669216052 +0200 +--- src/testdir/test97.in 2014-05-08 11:42:37.701755565 +0200 +*************** +*** 3,9 **** +--- 3,12 ---- + + STARTTEST + :so small.vim ++ :" make sure glob() doesn't use the shell + :set shell=doesnotexist ++ :" consistent sorting of file names ++ :set nofileignorecase + :e test.out + :$put =glob('Xxx\{') + :$put =glob('Xxx\$') +*** ../vim-7.4.281/src/version.c 2014-05-07 21:14:42.913299714 +0200 +--- src/version.c 2014-05-08 11:46:04.825757378 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 282, + /**/ + +-- +Would you care for a drink? I mean, if it were, like, +disabled and you had to look after it? + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.283 b/SOURCES/7.4.283 new file mode 100644 index 0000000..2138470 --- /dev/null +++ b/SOURCES/7.4.283 @@ -0,0 +1,56 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.283 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.283 (after 7.4.276) +Problem: Compiler warning about unused variable. (Charles Cooper) +Solution: Move the variable inside the #if block. +Files: src/ex_cmds.c + + +*** ../vim-7.4.282/src/ex_cmds.c 2014-05-07 15:10:17.657108310 +0200 +--- src/ex_cmds.c 2014-05-09 20:31:16.414789550 +0200 +*************** +*** 1551,1559 **** + { + char_u *buf; + long_u len; +- int is_fish_shell; + + #if (defined(UNIX) && !defined(ARCHIE)) || defined(OS2) + /* Account for fish's different syntax for subshells */ + is_fish_shell = (fnamecmp(get_isolated_shell_name(), "fish") == 0); + if (is_fish_shell) +--- 1551,1560 ---- + { + char_u *buf; + long_u len; + + #if (defined(UNIX) && !defined(ARCHIE)) || defined(OS2) ++ int is_fish_shell; ++ + /* Account for fish's different syntax for subshells */ + is_fish_shell = (fnamecmp(get_isolated_shell_name(), "fish") == 0); + if (is_fish_shell) +*** ../vim-7.4.282/src/version.c 2014-05-08 11:46:23.621757543 +0200 +--- src/version.c 2014-05-09 20:32:06.538789989 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 283, + /**/ + +-- +Don't drink and drive. You might hit a bump and spill your beer. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.284 b/SOURCES/7.4.284 new file mode 100644 index 0000000..0c9781e --- /dev/null +++ b/SOURCES/7.4.284 @@ -0,0 +1,53 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.284 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.284 +Problem: Setting 'langmap' in the modeline can cause trouble. E.g. mapping + ":" breaks many commands. (Jens-Wolfhard Schicke-Uffmann) +Solution: Disallow setting 'langmap' from the modeline. +Files: src/option.c + + +*** ../vim-7.4.283/src/option.c 2014-05-07 15:10:17.661108310 +0200 +--- src/option.c 2014-05-13 12:11:39.677552445 +0200 +*************** +*** 1652,1658 **** + #endif + #endif + (char_u *)0L} SCRIPTID_INIT}, +! {"langmap", "lmap", P_STRING|P_VI_DEF|P_COMMA|P_NODUP, + #ifdef FEAT_LANGMAP + (char_u *)&p_langmap, PV_NONE, + {(char_u *)"", /* unmatched } */ +--- 1652,1658 ---- + #endif + #endif + (char_u *)0L} SCRIPTID_INIT}, +! {"langmap", "lmap", P_STRING|P_VI_DEF|P_COMMA|P_NODUP|P_SECURE, + #ifdef FEAT_LANGMAP + (char_u *)&p_langmap, PV_NONE, + {(char_u *)"", /* unmatched } */ +*** ../vim-7.4.283/src/version.c 2014-05-09 20:33:01.102790466 +0200 +--- src/version.c 2014-05-13 12:12:21.273552809 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 284, + /**/ + +-- +We are the Borg of GNU GPL. We will assimilate your source code. +Resistance is futile. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.285 b/SOURCES/7.4.285 new file mode 100644 index 0000000..2d3862d --- /dev/null +++ b/SOURCES/7.4.285 @@ -0,0 +1,49 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.285 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.285 +Problem: When 'relativenumber' is set and deleting lines or undoing that, + line numbers are not always updated. (Robert Arkwright) +Solution: (Christian Brabandt) +Files: src/misc1.c + + +*** ../vim-7.4.284/src/misc1.c 2014-05-07 18:35:25.669216052 +0200 +--- src/misc1.c 2014-05-13 12:41:56.357568348 +0200 +*************** +*** 3125,3130 **** +--- 3125,3133 ---- + if (hasAnyFolding(wp)) + set_topline(wp, wp->w_topline); + #endif ++ /* relative numbering may require updating more */ ++ if (wp->w_p_rnu) ++ redraw_win_later(wp, SOME_VALID); + } + } + +*** ../vim-7.4.284/src/version.c 2014-05-13 12:16:44.037555110 +0200 +--- src/version.c 2014-05-13 12:33:21.553563842 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 285, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +148. You find it easier to dial-up the National Weather Service + Weather/your_town/now.html than to simply look out the window. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.286 b/SOURCES/7.4.286 new file mode 100644 index 0000000..9c60ec0 --- /dev/null +++ b/SOURCES/7.4.286 @@ -0,0 +1,52 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.286 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.286 +Problem: Error messages are inconsistant. (ZyX) +Solution: Change "Lists" to "list". +Files: src/eval.c + + +*** ../vim-7.4.285/src/eval.c 2014-05-07 18:35:25.665216052 +0200 +--- src/eval.c 2014-05-13 13:37:47.349597682 +0200 +*************** +*** 4431,4437 **** + if (rettv->v_type != var2.v_type) + EMSG(_("E691: Can only compare List with List")); + else +! EMSG(_("E692: Invalid operation for Lists")); + clear_tv(rettv); + clear_tv(&var2); + return FAIL; +--- 4431,4437 ---- + if (rettv->v_type != var2.v_type) + EMSG(_("E691: Can only compare List with List")); + else +! EMSG(_("E692: Invalid operation for List")); + clear_tv(rettv); + clear_tv(&var2); + return FAIL; +*** ../vim-7.4.285/src/version.c 2014-05-13 12:44:19.897569605 +0200 +--- src/version.c 2014-05-13 13:31:23.393594321 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 286, + /**/ + +-- +You are not really successful until someone claims he sat +beside you in school. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.287 b/SOURCES/7.4.287 new file mode 100644 index 0000000..1288981 --- /dev/null +++ b/SOURCES/7.4.287 @@ -0,0 +1,47 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.287 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.287 +Problem: Patches for .hgignore don't work, since the file is not in the + distribution. +Solution: Add .hgignore to the distribution. Will be effective with the + next version. +Files: Filelist + + +*** ../vim-7.4.286/Filelist 2014-04-29 14:02:42.547919791 +0200 +--- Filelist 2014-05-13 13:50:01.669604110 +0200 +*************** +*** 3,8 **** +--- 3,9 ---- + + # source files for all source archives + SRC_ALL = \ ++ .hgignore \ + src/README.txt \ + src/arabic.c \ + src/arabic.h \ +*** ../vim-7.4.286/src/version.c 2014-05-13 13:46:30.597602262 +0200 +--- src/version.c 2014-05-13 13:51:38.101604954 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 287, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +150. You find yourself counting emoticons to get to sleep. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.288 b/SOURCES/7.4.288 new file mode 100644 index 0000000..a1fd182 --- /dev/null +++ b/SOURCES/7.4.288 @@ -0,0 +1,46 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.288 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.288 +Problem: When 'spellfile' is set the screen is not redrawn. +Solution: Redraw when updating the spelling info. (Christian Brabandt) +Files: src/spell.c + + +*** ../vim-7.4.287/src/spell.c 2014-03-23 15:12:29.939264336 +0100 +--- src/spell.c 2014-05-13 14:01:59.165610391 +0200 +*************** +*** 4508,4513 **** +--- 4508,4514 ---- + theend: + vim_free(spl_copy); + recursive = FALSE; ++ redraw_win_later(wp, NOT_VALID); + return ret_msg; + } + +*** ../vim-7.4.287/src/version.c 2014-05-13 13:52:34.821605451 +0200 +--- src/version.c 2014-05-13 13:55:26.865606957 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 288, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +151. You find yourself engaged to someone you've never actually met, + except through e-mail. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.289 b/SOURCES/7.4.289 new file mode 100644 index 0000000..e62ce14 --- /dev/null +++ b/SOURCES/7.4.289 @@ -0,0 +1,122 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.289 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.289 +Problem: Pattern with repeated backreference does not match with new regexp + engine. (Urtica Dioica) +Solution: Also check the end of a submatch when deciding to put a state in + the state list. +Files: src/testdir/test64.in, src/testdir/test64.ok, src/regexp_nfa.c + + +*** ../vim-7.4.288/src/testdir/test64.in 2013-11-21 17:12:55.000000000 +0100 +--- src/testdir/test64.in 2014-05-13 15:35:02.477659266 +0200 +*************** +*** 407,412 **** +--- 407,413 ---- + :call add(tl, [2, '^.*\.\(.*\)/.\+\(\1\)\@<=$', 'foo.bat/foo.bat', 'foo.bat/foo.bat', 'bat', 'bat']) + :call add(tl, [2, '\\\@<!\${\(\d\+\%(:.\{-}\)\?\\\@<!\)}', '2013-06-27${0}', '${0}', '0']) + :call add(tl, [2, '^\(a*\)\1$', 'aaaaaaaa', 'aaaaaaaa', 'aaaa']) ++ :call add(tl, [2, '^\(a\{-2,}\)\1\+$', 'aaaaaaaaa', 'aaaaaaaaa', 'aaa']) + :" + :"""" Look-behind with limit + :call add(tl, [2, '<\@<=span.', 'xxspanxx<spanyyy', 'spany']) +*** ../vim-7.4.288/src/testdir/test64.ok 2013-11-21 17:12:55.000000000 +0100 +--- src/testdir/test64.ok 2014-05-13 15:49:21.381666784 +0200 +*************** +*** 947,952 **** +--- 947,955 ---- + OK 0 - ^\(a*\)\1$ + OK 1 - ^\(a*\)\1$ + OK 2 - ^\(a*\)\1$ ++ OK 0 - ^\(a\{-2,}\)\1\+$ ++ OK 1 - ^\(a\{-2,}\)\1\+$ ++ OK 2 - ^\(a\{-2,}\)\1\+$ + OK 0 - <\@<=span. + OK 1 - <\@<=span. + OK 2 - <\@<=span. +*** ../vim-7.4.288/src/regexp_nfa.c 2014-04-23 19:06:33.702828771 +0200 +--- src/regexp_nfa.c 2014-05-13 15:49:15.065666729 +0200 +*************** +*** 3945,3950 **** +--- 3945,3951 ---- + + /* + * Return TRUE if "sub1" and "sub2" have the same start positions. ++ * When using back-references also check the end position. + */ + static int + sub_equal(sub1, sub2) +*************** +*** 3976,3981 **** +--- 3977,3999 ---- + if (s1 != -1 && sub1->list.multi[i].start.col + != sub2->list.multi[i].start.col) + return FALSE; ++ ++ if (nfa_has_backref) ++ { ++ if (i < sub1->in_use) ++ s1 = sub1->list.multi[i].end.lnum; ++ else ++ s1 = -1; ++ if (i < sub2->in_use) ++ s2 = sub2->list.multi[i].end.lnum; ++ else ++ s2 = -1; ++ if (s1 != s2) ++ return FALSE; ++ if (s1 != -1 && sub1->list.multi[i].end.col ++ != sub2->list.multi[i].end.col) ++ return FALSE; ++ } + } + } + else +*************** +*** 3992,3997 **** +--- 4010,4028 ---- + sp2 = NULL; + if (sp1 != sp2) + return FALSE; ++ if (nfa_has_backref) ++ { ++ if (i < sub1->in_use) ++ sp1 = sub1->list.line[i].end; ++ else ++ sp1 = NULL; ++ if (i < sub2->in_use) ++ sp2 = sub2->list.line[i].end; ++ else ++ sp2 = NULL; ++ if (sp1 != sp2) ++ return FALSE; ++ } + } + } + +*** ../vim-7.4.288/src/version.c 2014-05-13 14:03:36.425611242 +0200 +--- src/version.c 2014-05-13 15:51:52.009668103 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 289, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +152. You find yourself falling for someone you've never seen or hardly + know, but, boy can he/she TYPE!!!!!! + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.290 b/SOURCES/7.4.290 new file mode 100644 index 0000000..e2e1e62 --- /dev/null +++ b/SOURCES/7.4.290 @@ -0,0 +1,156 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.290 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.290 +Problem: A non-greedy match followed by a branch is too greedy. (Ingo + Karkat) +Solution: Add NFA_MATCH when it is already in the state list if the position + differs. +Files: src/testdir/test64.in, src/testdir/test64.ok, src/regexp_nfa.c + + +*** ../vim-7.4.289/src/testdir/test64.in 2014-05-13 15:56:45.017670668 +0200 +--- src/testdir/test64.in 2014-05-13 16:15:57.213680754 +0200 +*************** +*** 238,244 **** + :call add(tl, [2, '\vx(.{-,8})yz(.*)','xayxayzxayzxayz','xayxayzxayzxayz','ayxa','xayzxayz']) + :call add(tl, [2, '\vx(.*)yz(.*)','xayxayzxayzxayz','xayxayzxayzxayz', 'ayxayzxayzxa','']) + :call add(tl, [2, '\v(a{1,2}){-2,3}','aaaaaaa','aaaa','aa']) +! :call add(tl, [2, '\v(a{-1,3})+','aa','aa','a']) + :" + :" Test Character classes + :call add(tl, [2, '\d\+e\d\d','test 10e23 fd','10e23']) +--- 238,248 ---- + :call add(tl, [2, '\vx(.{-,8})yz(.*)','xayxayzxayzxayz','xayxayzxayzxayz','ayxa','xayzxayz']) + :call add(tl, [2, '\vx(.*)yz(.*)','xayxayzxayzxayz','xayxayzxayzxayz', 'ayxayzxayzxa','']) + :call add(tl, [2, '\v(a{1,2}){-2,3}','aaaaaaa','aaaa','aa']) +! :call add(tl, [2, '\v(a{-1,3})+', 'aa', 'aa', 'a']) +! :call add(tl, [2, '^\s\{-}\zs\( x\|x$\)', ' x', ' x', ' x']) +! :call add(tl, [2, '^\s\{-}\zs\(x\| x$\)', ' x', ' x', ' x']) +! :call add(tl, [2, '^\s\{-}\ze\(x\| x$\)', ' x', '', ' x']) +! :call add(tl, [2, '^\(\s\{-}\)\(x\| x$\)', ' x', ' x', '', ' x']) + :" + :" Test Character classes + :call add(tl, [2, '\d\+e\d\d','test 10e23 fd','10e23']) +*************** +*** 462,476 **** + : try + : let l = matchlist(text, pat) + : catch +! : $put ='ERROR: pat: \"' . pat . '\", text: \"' . text . '\", caused an exception: \"' . v:exception . '\"' + : endtry + :" check the match itself + : if len(l) == 0 && len(t) > matchidx +! : $put ='ERROR: pat: \"' . pat . '\", text: \"' . text . '\", did not match, expected: \"' . t[matchidx] . '\"' + : elseif len(l) > 0 && len(t) == matchidx +! : $put ='ERROR: pat: \"' . pat . '\", text: \"' . text . '\", match: \"' . l[0] . '\", expected no match' + : elseif len(t) > matchidx && l[0] != t[matchidx] +! : $put ='ERROR: pat: \"' . pat . '\", text: \"' . text . '\", match: \"' . l[0] . '\", expected: \"' . t[matchidx] . '\"' + : else + : $put ='OK ' . engine . ' - ' . pat + : endif +--- 466,480 ---- + : try + : let l = matchlist(text, pat) + : catch +! : $put ='ERROR ' . engine . ': pat: \"' . pat . '\", text: \"' . text . '\", caused an exception: \"' . v:exception . '\"' + : endtry + :" check the match itself + : if len(l) == 0 && len(t) > matchidx +! : $put ='ERROR ' . engine . ': pat: \"' . pat . '\", text: \"' . text . '\", did not match, expected: \"' . t[matchidx] . '\"' + : elseif len(l) > 0 && len(t) == matchidx +! : $put ='ERROR ' . engine . ': pat: \"' . pat . '\", text: \"' . text . '\", match: \"' . l[0] . '\", expected no match' + : elseif len(t) > matchidx && l[0] != t[matchidx] +! : $put ='ERROR ' . engine . ': pat: \"' . pat . '\", text: \"' . text . '\", match: \"' . l[0] . '\", expected: \"' . t[matchidx] . '\"' + : else + : $put ='OK ' . engine . ' - ' . pat + : endif +*************** +*** 483,489 **** + : let e = t[matchidx + i] + : endif + : if l[i] != e +! : $put ='ERROR: pat: \"' . pat . '\", text: \"' . text . '\", submatch ' . i . ': \"' . l[i] . '\", expected: \"' . e . '\"' + : endif + : endfor + : unlet i +--- 487,493 ---- + : let e = t[matchidx + i] + : endif + : if l[i] != e +! : $put ='ERROR ' . engine . ': pat: \"' . pat . '\", text: \"' . text . '\", submatch ' . i . ': \"' . l[i] . '\", expected: \"' . e . '\"' + : endif + : endfor + : unlet i +*** ../vim-7.4.289/src/testdir/test64.ok 2014-05-13 15:56:45.017670668 +0200 +--- src/testdir/test64.ok 2014-05-13 16:39:35.077693166 +0200 +*************** +*** 533,538 **** +--- 533,550 ---- + OK 0 - \v(a{-1,3})+ + OK 1 - \v(a{-1,3})+ + OK 2 - \v(a{-1,3})+ ++ OK 0 - ^\s\{-}\zs\( x\|x$\) ++ OK 1 - ^\s\{-}\zs\( x\|x$\) ++ OK 2 - ^\s\{-}\zs\( x\|x$\) ++ OK 0 - ^\s\{-}\zs\(x\| x$\) ++ OK 1 - ^\s\{-}\zs\(x\| x$\) ++ OK 2 - ^\s\{-}\zs\(x\| x$\) ++ OK 0 - ^\s\{-}\ze\(x\| x$\) ++ OK 1 - ^\s\{-}\ze\(x\| x$\) ++ OK 2 - ^\s\{-}\ze\(x\| x$\) ++ OK 0 - ^\(\s\{-}\)\(x\| x$\) ++ OK 1 - ^\(\s\{-}\)\(x\| x$\) ++ OK 2 - ^\(\s\{-}\)\(x\| x$\) + OK 0 - \d\+e\d\d + OK 1 - \d\+e\d\d + OK 2 - \d\+e\d\d +*** ../vim-7.4.289/src/regexp_nfa.c 2014-05-13 15:56:45.021670668 +0200 +--- src/regexp_nfa.c 2014-05-13 16:37:58.481692320 +0200 +*************** +*** 4324,4331 **** + { + /* This state is already in the list, don't add it again, + * unless it is an MOPEN that is used for a backreference or +! * when there is a PIM. */ +! if (!nfa_has_backref && pim == NULL && !l->has_pim) + { + skip_add: + #ifdef ENABLE_LOG +--- 4324,4333 ---- + { + /* This state is already in the list, don't add it again, + * unless it is an MOPEN that is used for a backreference or +! * when there is a PIM. For NFA_MATCH check the position, +! * lower position is preferred. */ +! if (!nfa_has_backref && pim == NULL && !l->has_pim +! && state->c != NFA_MATCH) + { + skip_add: + #ifdef ENABLE_LOG +*** ../vim-7.4.289/src/version.c 2014-05-13 15:56:45.025670668 +0200 +--- src/version.c 2014-05-13 16:13:33.953679500 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 290, + /**/ + +-- +Although the scythe isn't pre-eminent among the weapons of war, anyone who +has been on the wrong end of, say, a peasants' revolt will know that in +skilled hands it is fearsome. + -- (Terry Pratchett, Mort) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.291 b/SOURCES/7.4.291 new file mode 100644 index 0000000..c9da781 --- /dev/null +++ b/SOURCES/7.4.291 @@ -0,0 +1,56 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.291 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.291 +Problem: Compiler warning for int to pointer of different size when DEBUG + is defined. +Solution: use smsg() instead of EMSG3(). +Files: src/regexp.c + + +*** ../vim-7.4.290/src/regexp.c 2014-04-23 19:06:33.702828771 +0200 +--- src/regexp.c 2014-05-13 16:39:28.833693111 +0200 +*************** +*** 8022,8029 **** + regexp_engine = expr[4] - '0'; + expr += 5; + #ifdef DEBUG +! EMSG3("New regexp mode selected (%d): %s", regexp_engine, +! regname[newengine]); + #endif + } + else +--- 8022,8029 ---- + regexp_engine = expr[4] - '0'; + expr += 5; + #ifdef DEBUG +! smsg((char_u *)"New regexp mode selected (%d): %s", +! regexp_engine, regname[newengine]); + #endif + } + else +*** ../vim-7.4.290/src/version.c 2014-05-13 16:44:25.637695709 +0200 +--- src/version.c 2014-05-13 16:45:34.901696316 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 291, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +153. You find yourself staring at your "inbox" waiting for new e-mail + to arrive. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.292 b/SOURCES/7.4.292 new file mode 100644 index 0000000..c35c616 --- /dev/null +++ b/SOURCES/7.4.292 @@ -0,0 +1,139 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.292 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.292 +Problem: Searching for "a" does not match accented "a" with new regexp + engine, does match with old engine. (David Bürgin) + "ca" does not match "ca" with accented "a" with either engine. +Solution: Change the old engine, check for following composing character + also for single-byte patterns. +Files: src/regexp.c, src/testdir/test95.in, src/testdir/test95.ok + + +*** ../vim-7.4.291/src/regexp.c 2014-05-13 16:46:25.693696760 +0200 +--- src/regexp.c 2014-05-13 17:45:50.977727970 +0200 +*************** +*** 4692,4722 **** + /* match empty string always works; happens when "~" is + * empty. */ + } +! else if (opnd[1] == NUL + #ifdef FEAT_MBYTE + && !(enc_utf8 && ireg_ic) + #endif + ) +! ++reginput; /* matched a single char */ +! else +! { +! len = (int)STRLEN(opnd); +! /* Need to match first byte again for multi-byte. */ +! if (cstrncmp(opnd, reginput, &len) != 0) +! status = RA_NOMATCH; + #ifdef FEAT_MBYTE + /* Check for following composing character. */ +! else if (enc_utf8 +! && UTF_COMPOSINGLIKE(reginput, reginput + len)) + { + /* raaron: This code makes a composing character get + * ignored, which is the correct behavior (sometimes) + * for voweled Hebrew texts. */ +! if (!ireg_icombine) +! status = RA_NOMATCH; + } + #endif +! else + reginput += len; + } + } +--- 4692,4728 ---- + /* match empty string always works; happens when "~" is + * empty. */ + } +! else +! { +! if (opnd[1] == NUL + #ifdef FEAT_MBYTE + && !(enc_utf8 && ireg_ic) + #endif + ) +! { +! len = 1; /* matched a single byte above */ +! } +! else +! { +! /* Need to match first byte again for multi-byte. */ +! len = (int)STRLEN(opnd); +! if (cstrncmp(opnd, reginput, &len) != 0) +! status = RA_NOMATCH; +! } + #ifdef FEAT_MBYTE + /* Check for following composing character. */ +! if (status != RA_NOMATCH +! && enc_utf8 +! && UTF_COMPOSINGLIKE(reginput, reginput + len) +! && !ireg_icombine) + { + /* raaron: This code makes a composing character get + * ignored, which is the correct behavior (sometimes) + * for voweled Hebrew texts. */ +! status = RA_NOMATCH; + } + #endif +! if (status != RA_NOMATCH) + reginput += len; + } + } +*** ../vim-7.4.291/src/testdir/test95.in 2013-07-21 16:53:52.000000000 +0200 +--- src/testdir/test95.in 2014-05-13 17:49:00.201729626 +0200 +*************** +*** 50,55 **** +--- 50,57 ---- + :call add(tl, [2, ".\u05b9", " y\u05bb\u05b9 x\u05b9 ", "y\u05bb\u05b9"]) + :call add(tl, [1, "\u05b9\u05bb", " y\u05b9 x\u05b9\u05bb ", "x\u05b9\u05bb"]) + :call add(tl, [2, ".\u05b9\u05bb", " y\u05bb x\u05b9\u05bb ", "x\u05b9\u05bb"]) ++ :call add(tl, [2, "a", "ca\u0300t"]) ++ :call add(tl, [2, "a\u0300", "ca\u0300t", "a\u0300"]) + + + :"""" Test \Z +*** ../vim-7.4.291/src/testdir/test95.ok 2013-07-21 17:01:22.000000000 +0200 +--- src/testdir/test95.ok 2014-05-13 17:49:46.709730033 +0200 +*************** +*** 67,72 **** +--- 67,78 ---- + OK 0 - .ֹֻ + OK 1 - .ֹֻ + OK 2 - .ֹֻ ++ OK 0 - a ++ OK 1 - a ++ OK 2 - a ++ OK 0 - à ++ OK 1 - à ++ OK 2 - à + OK 0 - ú\Z + OK 1 - ú\Z + OK 2 - ú\Z +*** ../vim-7.4.291/src/version.c 2014-05-13 16:46:25.693696760 +0200 +--- src/version.c 2014-05-13 18:00:22.149735596 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 292, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +154. You fondle your mouse. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.293 b/SOURCES/7.4.293 new file mode 100644 index 0000000..5cc60a1 --- /dev/null +++ b/SOURCES/7.4.293 @@ -0,0 +1,301 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.293 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.293 +Problem: It is not possible to ignore composing characters at a specific + point in a pattern. +Solution: Add the %C item. +Files: src/regexp.c, src/regexp_nfa.c, src/testdir/test95.in, + src/testdir/test95.ok, runtime/doc/pattern.txt + + +*** ../vim-7.4.292/src/regexp.c 2014-05-13 18:03:55.729737466 +0200 +--- src/regexp.c 2014-05-13 18:27:08.725749659 +0200 +*************** +*** 244,249 **** +--- 244,250 ---- + + #define RE_MARK 207 /* mark cmp Match mark position */ + #define RE_VISUAL 208 /* Match Visual area */ ++ #define RE_COMPOSING 209 /* any composing characters */ + + /* + * Magic characters have a special meaning, they don't match literally. +*************** +*** 2208,2213 **** +--- 2209,2218 ---- + ret = regnode(RE_VISUAL); + break; + ++ case 'C': ++ ret = regnode(RE_COMPOSING); ++ break; ++ + /* \%[abc]: Emit as a list of branches, all ending at the last + * branch which matches nothing. */ + case '[': +*************** +*** 4710,4720 **** + status = RA_NOMATCH; + } + #ifdef FEAT_MBYTE +! /* Check for following composing character. */ + if (status != RA_NOMATCH + && enc_utf8 + && UTF_COMPOSINGLIKE(reginput, reginput + len) +! && !ireg_icombine) + { + /* raaron: This code makes a composing character get + * ignored, which is the correct behavior (sometimes) +--- 4715,4727 ---- + status = RA_NOMATCH; + } + #ifdef FEAT_MBYTE +! /* Check for following composing character, unless %C +! * follows (skips over all composing chars). */ + if (status != RA_NOMATCH + && enc_utf8 + && UTF_COMPOSINGLIKE(reginput, reginput + len) +! && !ireg_icombine +! && OP(next) != RE_COMPOSING) + { + /* raaron: This code makes a composing character get + * ignored, which is the correct behavior (sometimes) +*************** +*** 4791,4796 **** +--- 4798,4813 ---- + status = RA_NOMATCH; + break; + #endif ++ case RE_COMPOSING: ++ #ifdef FEAT_MBYTE ++ if (enc_utf8) ++ { ++ /* Skip composing characters. */ ++ while (utf_iscomposing(utf_ptr2char(reginput))) ++ mb_cptr_adv(reginput); ++ } ++ #endif ++ break; + + case NOTHING: + break; +*** ../vim-7.4.292/src/regexp_nfa.c 2014-05-13 16:44:25.633695709 +0200 +--- src/regexp_nfa.c 2014-05-13 19:25:58.285780556 +0200 +*************** +*** 81,86 **** +--- 81,87 ---- + NFA_COMPOSING, /* Next nodes in NFA are part of the + composing multibyte char */ + NFA_END_COMPOSING, /* End of a composing char in the NFA */ ++ NFA_ANY_COMPOSING, /* \%C: Any composing characters. */ + NFA_OPT_CHARS, /* \%[abc] */ + + /* The following are used only in the postfix form, not in the NFA */ +*************** +*** 1418,1423 **** +--- 1419,1428 ---- + EMIT(NFA_VISUAL); + break; + ++ case 'C': ++ EMIT(NFA_ANY_COMPOSING); ++ break; ++ + case '[': + { + int n; +*************** +*** 2429,2434 **** +--- 2434,2440 ---- + case NFA_MARK_LT: STRCPY(code, "NFA_MARK_LT "); break; + case NFA_CURSOR: STRCPY(code, "NFA_CURSOR "); break; + case NFA_VISUAL: STRCPY(code, "NFA_VISUAL "); break; ++ case NFA_ANY_COMPOSING: STRCPY(code, "NFA_ANY_COMPOSING "); break; + + case NFA_STAR: STRCPY(code, "NFA_STAR "); break; + case NFA_STAR_NONGREEDY: STRCPY(code, "NFA_STAR_NONGREEDY "); break; +*************** +*** 2967,2972 **** +--- 2973,2979 ---- + case NFA_NLOWER_IC: + case NFA_UPPER_IC: + case NFA_NUPPER_IC: ++ case NFA_ANY_COMPOSING: + /* possibly non-ascii */ + #ifdef FEAT_MBYTE + if (has_mbyte) +*************** +*** 4152,4157 **** +--- 4159,4165 ---- + continue; + + case NFA_ANY: ++ case NFA_ANY_COMPOSING: + case NFA_IDENT: + case NFA_SIDENT: + case NFA_KWORD: +*************** +*** 4395,4401 **** + switch (state->c) + { + case NFA_MATCH: +! nfa_match = TRUE; + break; + + case NFA_SPLIT: +--- 4403,4409 ---- + switch (state->c) + { + case NFA_MATCH: +! // nfa_match = TRUE; + break; + + case NFA_SPLIT: +*************** +*** 5151,5156 **** +--- 5159,5165 ---- + + case NFA_MATCH: + case NFA_MCLOSE: ++ case NFA_ANY_COMPOSING: + /* empty match works always */ + return 0; + +*************** +*** 5573,5578 **** +--- 5582,5593 ---- + { + case NFA_MATCH: + { ++ #ifdef FEAT_MBYTE ++ /* If the match ends before a composing characters and ++ * ireg_icombine is not set, that is not really a match. */ ++ if (enc_utf8 && !ireg_icombine && utf_iscomposing(curc)) ++ break; ++ #endif + nfa_match = TRUE; + copy_sub(&submatch->norm, &t->subs.norm); + #ifdef FEAT_SYN_HL +*************** +*** 6120,6125 **** +--- 6135,6157 ---- + } + break; + ++ case NFA_ANY_COMPOSING: ++ /* On a composing character skip over it. Otherwise do ++ * nothing. Always matches. */ ++ #ifdef FEAT_MBYTE ++ if (enc_utf8 && utf_iscomposing(curc)) ++ { ++ add_off = clen; ++ } ++ else ++ #endif ++ { ++ add_here = TRUE; ++ add_off = 0; ++ } ++ add_state = t->state->out; ++ break; ++ + /* + * Character classes like \a for alpha, \d for digit etc. + */ +*************** +*** 6484,6495 **** + if (!result && ireg_ic) + result = MB_TOLOWER(c) == MB_TOLOWER(curc); + #ifdef FEAT_MBYTE +! /* If there is a composing character which is not being +! * ignored there can be no match. Match with composing +! * character uses NFA_COMPOSING above. */ +! if (result && enc_utf8 && !ireg_icombine +! && clen != utf_char2len(curc)) +! result = FALSE; + #endif + ADD_STATE_IF_MATCH(t->state); + break; +--- 6516,6525 ---- + if (!result && ireg_ic) + result = MB_TOLOWER(c) == MB_TOLOWER(curc); + #ifdef FEAT_MBYTE +! /* If ireg_icombine is not set only skip over the character +! * itself. When it is set skip over composing characters. */ +! if (result && enc_utf8 && !ireg_icombine) +! clen = utf_char2len(curc); + #endif + ADD_STATE_IF_MATCH(t->state); + break; +diff: ../vim-7.4.292/src/testdir/test95.insrc/testdir/test95.ok,: No such file or directory +diff: src/testdir/test95.insrc/testdir/test95.ok,: No such file or directory +*** ../vim-7.4.292/runtime/doc/pattern.txt 2013-08-10 13:24:59.000000000 +0200 +--- runtime/doc/pattern.txt 2014-05-13 18:59:57.621766895 +0200 +*************** +*** 545,550 **** +--- 545,551 ---- + |/\%u| \%u \%u match specified multibyte character (eg \%u20ac) + |/\%U| \%U \%U match specified large multibyte character (eg + \%U12345678) ++ |/\%C| \%C \%C match any composing characters + + Example matches ~ + \<\I\i* or +*************** +*** 1207,1218 **** + 8. Composing characters *patterns-composing* + + */\Z* +! When "\Z" appears anywhere in the pattern, composing characters are ignored. +! Thus only the base characters need to match, the composing characters may be +! different and the number of composing characters may differ. Only relevant +! when 'encoding' is "utf-8". + Exception: If the pattern starts with one or more composing characters, these + must match. + + When a composing character appears at the start of the pattern of after an + item that doesn't include the composing character, a match is found at any +--- 1208,1225 ---- + 8. Composing characters *patterns-composing* + + */\Z* +! When "\Z" appears anywhere in the pattern, all composing characters are +! ignored. Thus only the base characters need to match, the composing +! characters may be different and the number of composing characters may differ. +! Only relevant when 'encoding' is "utf-8". + Exception: If the pattern starts with one or more composing characters, these + must match. ++ */\%C* ++ Use "\%C" to skip any composing characters. For example, the pattern "a" does ++ not match in "càt" (where the a has the composing character 0x0300), but ++ "a\%C" does. Note that this does not match "cát" (where the á is character ++ 0xe1, it does not have a compositing character). It does match "cat" (where ++ the a is just an a). + + When a composing character appears at the start of the pattern of after an + item that doesn't include the composing character, a match is found at any +*** ../vim-7.4.292/src/version.c 2014-05-13 18:03:55.729737466 +0200 +--- src/version.c 2014-05-13 18:28:45.885750510 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 293, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +155. You forget to eat because you're too busy surfing the net. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.294 b/SOURCES/7.4.294 new file mode 100644 index 0000000..aa0201c --- /dev/null +++ b/SOURCES/7.4.294 @@ -0,0 +1,125 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.294 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.294 (after 7.4.293) +Problem: Test files missing from patch. +Solution: Patch the test files. +Files: src/testdir/test95.in, src/testdir/test95.ok + + +*** ../vim-7.4.293/src/testdir/test95.in 2014-05-13 18:03:55.729737466 +0200 +--- src/testdir/test95.in 2014-05-13 19:16:24.433775533 +0200 +*************** +*** 51,57 **** +--- 51,61 ---- + :call add(tl, [1, "\u05b9\u05bb", " y\u05b9 x\u05b9\u05bb ", "x\u05b9\u05bb"]) + :call add(tl, [2, ".\u05b9\u05bb", " y\u05bb x\u05b9\u05bb ", "x\u05b9\u05bb"]) + :call add(tl, [2, "a", "ca\u0300t"]) ++ :call add(tl, [2, "ca", "ca\u0300t"]) + :call add(tl, [2, "a\u0300", "ca\u0300t", "a\u0300"]) ++ :call add(tl, [2, 'a\%C', "ca\u0300t", "a\u0300"]) ++ :call add(tl, [2, 'ca\%C', "ca\u0300t", "ca\u0300"]) ++ :call add(tl, [2, 'ca\%Ct', "ca\u0300t", "ca\u0300t"]) + + + :"""" Test \Z +*************** +*** 91,105 **** + : try + : let l = matchlist(text, pat) + : catch +! : $put ='ERROR: pat: \"' . pat . '\", text: \"' . text . '\", caused an exception: \"' . v:exception . '\"' + : endtry + :" check the match itself + : if len(l) == 0 && len(t) > matchidx +! : $put ='ERROR: pat: \"' . pat . '\", text: \"' . text . '\", did not match, expected: \"' . t[matchidx] . '\"' + : elseif len(l) > 0 && len(t) == matchidx +! : $put ='ERROR: pat: \"' . pat . '\", text: \"' . text . '\", match: \"' . l[0] . '\", expected no match' + : elseif len(t) > matchidx && l[0] != t[matchidx] +! : $put ='ERROR: pat: \"' . pat . '\", text: \"' . text . '\", match: \"' . l[0] . '\", expected: \"' . t[matchidx] . '\"' + : else + : $put ='OK ' . engine . ' - ' . pat + : endif +--- 95,109 ---- + : try + : let l = matchlist(text, pat) + : catch +! : $put ='ERROR ' . engine . ': pat: \"' . pat . '\", text: \"' . text . '\", caused an exception: \"' . v:exception . '\"' + : endtry + :" check the match itself + : if len(l) == 0 && len(t) > matchidx +! : $put ='ERROR ' . engine . ': pat: \"' . pat . '\", text: \"' . text . '\", did not match, expected: \"' . t[matchidx] . '\"' + : elseif len(l) > 0 && len(t) == matchidx +! : $put ='ERROR ' . engine . ': pat: \"' . pat . '\", text: \"' . text . '\", match: \"' . l[0] . '\", expected no match' + : elseif len(t) > matchidx && l[0] != t[matchidx] +! : $put ='ERROR ' . engine . ': pat: \"' . pat . '\", text: \"' . text . '\", match: \"' . l[0] . '\", expected: \"' . t[matchidx] . '\"' + : else + : $put ='OK ' . engine . ' - ' . pat + : endif +*************** +*** 112,118 **** + : let e = t[matchidx + i] + : endif + : if l[i] != e +! : $put ='ERROR: pat: \"' . pat . '\", text: \"' . text . '\", submatch ' . i . ': \"' . l[i] . '\", expected: \"' . e . '\"' + : endif + : endfor + : unlet i +--- 116,122 ---- + : let e = t[matchidx + i] + : endif + : if l[i] != e +! : $put ='ERROR ' . engine . ': pat: \"' . pat . '\", text: \"' . text . '\", submatch ' . i . ': \"' . l[i] . '\", expected: \"' . e . '\"' + : endif + : endfor + : unlet i +*** ../vim-7.4.293/src/testdir/test95.ok 2014-05-13 18:03:55.729737466 +0200 +--- src/testdir/test95.ok 2014-05-13 19:01:54.693767920 +0200 +*************** +*** 70,78 **** +--- 70,90 ---- + OK 0 - a + OK 1 - a + OK 2 - a ++ OK 0 - ca ++ OK 1 - ca ++ OK 2 - ca + OK 0 - à + OK 1 - à + OK 2 - à ++ OK 0 - a\%C ++ OK 1 - a\%C ++ OK 2 - a\%C ++ OK 0 - ca\%C ++ OK 1 - ca\%C ++ OK 2 - ca\%C ++ OK 0 - ca\%Ct ++ OK 1 - ca\%Ct ++ OK 2 - ca\%Ct + OK 0 - ú\Z + OK 1 - ú\Z + OK 2 - ú\Z +*** ../vim-7.4.293/src/version.c 2014-05-13 19:37:19.489786520 +0200 +--- src/version.c 2014-05-13 20:09:45.133803551 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 294, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +156. You forget your friend's name but not her e-mail address. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.295 b/SOURCES/7.4.295 new file mode 100644 index 0000000..bb01d0a --- /dev/null +++ b/SOURCES/7.4.295 @@ -0,0 +1,144 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.295 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.295 +Problem: Various typos, bad white space and unclear comments. +Solution: Fix typos. Improve white space. Update comments. +Files: src/testdir/test49.in, src/macros.h, src/screen.c, src/structs.h, + src/gui_gtk_x11.c, src/os_unix.c + + +*** ../vim-7.4.294/src/testdir/test49.in 2012-11-15 22:29:55.000000000 +0100 +--- src/testdir/test49.in 2013-11-08 01:06:23.000000000 +0100 +*************** +*** 1,7 **** + This is a test of the script language. + + If after adding a new test, the test output doesn't appear properly in +! test49.failed, try to add one ore more "G"s at the line ending in "test.out" + + STARTTEST + :so small.vim +--- 1,7 ---- + This is a test of the script language. + + If after adding a new test, the test output doesn't appear properly in +! test49.failed, try to add one or more "G"s at the line ending in "test.out" + + STARTTEST + :so small.vim +*** ../vim-7.4.294/src/macros.h 2013-06-12 17:07:32.000000000 +0200 +--- src/macros.h 2013-11-08 04:12:45.000000000 +0100 +*************** +*** 264,270 **** + # define mb_ptr_adv(p) p += has_mbyte ? (*mb_ptr2len)(p) : 1 + /* Advance multi-byte pointer, do not skip over composing chars. */ + # define mb_cptr_adv(p) p += enc_utf8 ? utf_ptr2len(p) : has_mbyte ? (*mb_ptr2len)(p) : 1 +! /* Backup multi-byte pointer. */ + # define mb_ptr_back(s, p) p -= has_mbyte ? ((*mb_head_off)(s, p - 1) + 1) : 1 + /* get length of multi-byte char, not including composing chars */ + # define mb_cptr2len(p) (enc_utf8 ? utf_ptr2len(p) : (*mb_ptr2len)(p)) +--- 264,270 ---- + # define mb_ptr_adv(p) p += has_mbyte ? (*mb_ptr2len)(p) : 1 + /* Advance multi-byte pointer, do not skip over composing chars. */ + # define mb_cptr_adv(p) p += enc_utf8 ? utf_ptr2len(p) : has_mbyte ? (*mb_ptr2len)(p) : 1 +! /* Backup multi-byte pointer. Only use with "p" > "s" ! */ + # define mb_ptr_back(s, p) p -= has_mbyte ? ((*mb_head_off)(s, p - 1) + 1) : 1 + /* get length of multi-byte char, not including composing chars */ + # define mb_cptr2len(p) (enc_utf8 ? utf_ptr2len(p) : (*mb_ptr2len)(p)) +*** ../vim-7.4.294/src/screen.c 2014-03-23 15:12:29.935264336 +0100 +--- src/screen.c 2014-03-27 11:34:36.128359605 +0100 +*************** +*** 2456,2463 **** + if (len > 0) + { + int w = number_width(wp); +! long num; +! char *fmt = "%*ld "; + + if (len > w + 1) + len = w + 1; +--- 2456,2463 ---- + if (len > 0) + { + int w = number_width(wp); +! long num; +! char *fmt = "%*ld "; + + if (len > w + 1) + len = w + 1; +*** ../vim-7.4.294/src/structs.h 2014-03-23 16:03:56.171311627 +0100 +--- src/structs.h 2014-04-24 15:00:59.053101897 +0200 +*************** +*** 572,578 **** + unsigned mf_page_size; /* number of bytes in a page */ + int mf_dirty; /* TRUE if there are dirty blocks */ + #ifdef FEAT_CRYPT +! buf_T *mf_buffer; /* bufer this memfile is for */ + char_u mf_seed[MF_SEED_LEN]; /* seed for encryption */ + + /* Values for key, method and seed used for reading data blocks when +--- 572,578 ---- + unsigned mf_page_size; /* number of bytes in a page */ + int mf_dirty; /* TRUE if there are dirty blocks */ + #ifdef FEAT_CRYPT +! buf_T *mf_buffer; /* buffer this memfile is for */ + char_u mf_seed[MF_SEED_LEN]; /* seed for encryption */ + + /* Values for key, method and seed used for reading data blocks when +*** ../vim-7.4.294/src/gui_gtk_x11.c 2014-04-29 15:11:39.783847283 +0200 +--- src/gui_gtk_x11.c 2014-05-07 20:27:54.545275130 +0200 +*************** +*** 2054,2059 **** +--- 2054,2060 ---- + + ssop_flags = save_ssop_flags; + g_free(mksession_cmdline); ++ + /* + * Reopen the file and append a command to restore v:this_session, + * as if this save never happened. This is to avoid conflicts with +*** ../vim-7.4.294/src/os_unix.c 2014-04-23 12:52:36.499369426 +0200 +--- src/os_unix.c 2014-05-13 13:02:56.329579378 +0200 +*************** +*** 3783,3789 **** + del_mouse_termcode(KS_URXVT_MOUSE); + # endif + # ifdef FEAT_MOUSE_SGR +! /* same as the dec mouse */ + if (use_xterm_mouse() == 4 + # ifdef FEAT_GUI + && !gui.in_use +--- 3783,3789 ---- + del_mouse_termcode(KS_URXVT_MOUSE); + # endif + # ifdef FEAT_MOUSE_SGR +! /* There is no conflict with xterm mouse */ + if (use_xterm_mouse() == 4 + # ifdef FEAT_GUI + && !gui.in_use +*** ../vim-7.4.294/src/version.c 2014-05-13 20:15:20.461806487 +0200 +--- src/version.c 2014-05-13 20:17:27.693807600 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 295, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +157. You fum through a magazine, you first check to see if it has a web + address. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.296 b/SOURCES/7.4.296 new file mode 100644 index 0000000..2004516 --- /dev/null +++ b/SOURCES/7.4.296 @@ -0,0 +1,53 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.296 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.296 +Problem: Can't run tests on Solaris. +Solution: Change the way VIMRUNTIME is set. (Laurent Blume) +Files: src/testdir/Makefile + + +*** ../vim-7.4.295/src/testdir/Makefile 2014-04-29 12:15:22.852032651 +0200 +--- src/testdir/Makefile 2014-05-22 13:07:17.458599247 +0200 +*************** +*** 57,63 **** + + RM_ON_RUN = test.out X* viminfo + RM_ON_START = tiny.vim small.vim mbyte.vim mzscheme.vim lua.vim test.ok +! RUN_VIM = export VIMRUNTIME=$(SCRIPTSOURCE); $(VALGRIND) $(VIMPROG) -u unix.vim -U NONE --noplugin -s dotest.in + + clean: + -rm -rf *.out *.failed *.rej *.orig test.log $(RM_ON_RUN) $(RM_ON_START) valgrind.* +--- 57,63 ---- + + RM_ON_RUN = test.out X* viminfo + RM_ON_START = tiny.vim small.vim mbyte.vim mzscheme.vim lua.vim test.ok +! RUN_VIM = VIMRUNTIME=$(SCRIPTSOURCE); export VIMRUNTIME; $(VALGRIND) $(VIMPROG) -u unix.vim -U NONE --noplugin -s dotest.in + + clean: + -rm -rf *.out *.failed *.rej *.orig test.log $(RM_ON_RUN) $(RM_ON_START) valgrind.* +*** ../vim-7.4.295/src/version.c 2014-05-13 20:19:53.577808878 +0200 +--- src/version.c 2014-05-22 13:10:36.114595209 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 296, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +187. You promise yourself that you'll only stay online for another + 15 minutes...at least once every hour. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.297 b/SOURCES/7.4.297 new file mode 100644 index 0000000..ccfa6d6 --- /dev/null +++ b/SOURCES/7.4.297 @@ -0,0 +1,76 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.297 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.297 +Problem: Memory leak from result of get_isolated_shell_name(). +Solution: Free the memory. (Dominique Pelle) +Files: src/ex_cmds.c, src/misc1.c + + +*** ../vim-7.4.296/src/ex_cmds.c 2014-05-09 20:33:01.098790466 +0200 +--- src/ex_cmds.c 2014-05-22 13:59:20.962535763 +0200 +*************** +*** 1554,1562 **** + + #if (defined(UNIX) && !defined(ARCHIE)) || defined(OS2) + int is_fish_shell; + + /* Account for fish's different syntax for subshells */ +! is_fish_shell = (fnamecmp(get_isolated_shell_name(), "fish") == 0); + if (is_fish_shell) + len = (long_u)STRLEN(cmd) + 13; /* "begin; " + "; end" + NUL */ + else +--- 1554,1564 ---- + + #if (defined(UNIX) && !defined(ARCHIE)) || defined(OS2) + int is_fish_shell; ++ char_u *shell_name = get_isolated_shell_name(); + + /* Account for fish's different syntax for subshells */ +! is_fish_shell = (fnamecmp(shell_name, "fish") == 0); +! vim_free(shell_name); + if (is_fish_shell) + len = (long_u)STRLEN(cmd) + 13; /* "begin; " + "; end" + NUL */ + else +*** ../vim-7.4.296/src/misc1.c 2014-05-13 12:44:19.897569605 +0200 +--- src/misc1.c 2014-05-22 13:58:52.254536347 +0200 +*************** +*** 10874,10880 **** + } + + /* +! * Returns the isolated name of the shell: + * - Skip beyond any path. E.g., "/usr/bin/csh -f" -> "csh -f". + * - Remove any argument. E.g., "csh -f" -> "csh". + * But don't allow a space in the path, so that this works: +--- 10874,10880 ---- + } + + /* +! * Returns the isolated name of the shell in allocated memory: + * - Skip beyond any path. E.g., "/usr/bin/csh -f" -> "csh -f". + * - Remove any argument. E.g., "csh -f" -> "csh". + * But don't allow a space in the path, so that this works: +*** ../vim-7.4.296/src/version.c 2014-05-22 13:12:25.650592983 +0200 +--- src/version.c 2014-05-22 13:57:37.346537869 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 297, + /**/ + +-- +A computer program does what you tell it to do, not what you want it to do. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.298 b/SOURCES/7.4.298 new file mode 100644 index 0000000..5910902 --- /dev/null +++ b/SOURCES/7.4.298 @@ -0,0 +1,52 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.298 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.298 +Problem: Can't have a funcref start with "t:". +Solution: Add "t" to the list of accepted names. (Yukihiro Nakadaira) +Files: src/eval.c + + +*** ../vim-7.4.297/src/eval.c 2014-05-13 13:46:30.593602262 +0200 +--- src/eval.c 2014-05-22 14:09:46.902523041 +0200 +*************** +*** 21064,21070 **** + char_u *name; /* points to start of variable name */ + int new_var; /* TRUE when creating the variable */ + { +! if (!(vim_strchr((char_u *)"wbs", name[0]) != NULL && name[1] == ':') + && !ASCII_ISUPPER((name[0] != NUL && name[1] == ':') + ? name[2] : name[0])) + { +--- 21064,21071 ---- + char_u *name; /* points to start of variable name */ + int new_var; /* TRUE when creating the variable */ + { +! /* Allow for w: b: s: and t:. */ +! if (!(vim_strchr((char_u *)"wbst", name[0]) != NULL && name[1] == ':') + && !ASCII_ISUPPER((name[0] != NUL && name[1] == ':') + ? name[2] : name[0])) + { +*** ../vim-7.4.297/src/version.c 2014-05-22 14:00:12.698534712 +0200 +--- src/version.c 2014-05-22 14:08:43.874524322 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 298, + /**/ + +-- +I'm in shape. Round IS a shape. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.299 b/SOURCES/7.4.299 new file mode 100644 index 0000000..087cca6 --- /dev/null +++ b/SOURCES/7.4.299 @@ -0,0 +1,458 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.299 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.299 +Problem: When running configure twice DYNAMIC_PYTHON_DLL may become empty. +Solution: Use AC_CACHE_VAL. (Ken Takata) +Files: src/configure.in, src/auto/configure + + +*** ../vim-7.4.298/src/configure.in 2014-04-12 13:11:58.260430356 +0200 +--- src/configure.in 2014-05-22 14:39:39.326486611 +0200 +*************** +*** 1132,1141 **** + vi_cv_path_python_plibs=`echo $vi_cv_path_python_plibs | sed s/-ltermcap//` + fi + ]) + +- if test "X$python_DLLLIBRARY" != "X"; then +- python_INSTSONAME="$python_DLLLIBRARY" +- fi + PYTHON_LIBS="${vi_cv_path_python_plibs}" + if test "${vi_cv_path_python_pfx}" = "${vi_cv_path_python_epfx}"; then + PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version} -DPYTHON_HOME='\"${vi_cv_path_python_pfx}\"'" +--- 1132,1146 ---- + vi_cv_path_python_plibs=`echo $vi_cv_path_python_plibs | sed s/-ltermcap//` + fi + ]) ++ AC_CACHE_VAL(vi_cv_dll_name_python, ++ [ ++ if test "X$python_DLLLIBRARY" != "X"; then ++ vi_cv_dll_name_python="$python_DLLLIBRARY" ++ else ++ vi_cv_dll_name_python="$python_INSTSONAME" ++ fi ++ ]) + + PYTHON_LIBS="${vi_cv_path_python_plibs}" + if test "${vi_cv_path_python_pfx}" = "${vi_cv_path_python_epfx}"; then + PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version} -DPYTHON_HOME='\"${vi_cv_path_python_pfx}\"'" +*************** +*** 1323,1341 **** + @echo "python3_DLLLIBRARY='$(DLLLIBRARY)'" + @echo "python3_INSTSONAME='$(INSTSONAME)'" + eof +! dnl -- delete the lines from make about Entering/Leaving directory +! eval "`cd ${PYTHON3_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`" +! rm -f -- "${tmp_mkf}" + vi_cv_path_python3_plibs="-L${PYTHON3_CONFDIR} -lpython${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags}" +! vi_cv_path_python3_plibs="${vi_cv_path_python3_plibs} ${python3_BASEMODLIBS} ${python3_LIBS} ${python3_SYSLIBS}" +! dnl remove -ltermcap, it can conflict with an earlier -lncurses +! vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-ltermcap//` +! vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-lffi//` +! ]) +! +! if test "X$python3_DLLLIBRARY" != "X"; then +! python3_INSTSONAME="$python3_DLLLIBRARY" +! fi + PYTHON3_LIBS="${vi_cv_path_python3_plibs}" + if test "${vi_cv_path_python3_pfx}" = "${vi_cv_path_python3_epfx}"; then + PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -DPYTHON3_HOME='L\"${vi_cv_path_python3_pfx}\"'" +--- 1328,1351 ---- + @echo "python3_DLLLIBRARY='$(DLLLIBRARY)'" + @echo "python3_INSTSONAME='$(INSTSONAME)'" + eof +! dnl -- delete the lines from make about Entering/Leaving directory +! eval "`cd ${PYTHON3_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`" +! rm -f -- "${tmp_mkf}" + vi_cv_path_python3_plibs="-L${PYTHON3_CONFDIR} -lpython${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags}" +! vi_cv_path_python3_plibs="${vi_cv_path_python3_plibs} ${python3_BASEMODLIBS} ${python3_LIBS} ${python3_SYSLIBS}" +! dnl remove -ltermcap, it can conflict with an earlier -lncurses +! vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-ltermcap//` +! vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-lffi//` +! ]) +! AC_CACHE_VAL(vi_cv_dll_name_python3, +! [ +! if test "X$python3_DLLLIBRARY" != "X"; then +! vi_cv_dll_name_python3="$python3_DLLLIBRARY" +! else +! vi_cv_dll_name_python3="$python3_INSTSONAME" +! fi +! ]) +! + PYTHON3_LIBS="${vi_cv_path_python3_plibs}" + if test "${vi_cv_path_python3_pfx}" = "${vi_cv_path_python3_epfx}"; then + PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -DPYTHON3_HOME='L\"${vi_cv_path_python3_pfx}\"'" +*************** +*** 1458,1464 **** + int main(int argc, char** argv) + { + int not_needed = 0; +! if (no_rtl_global_needed_for("${python_INSTSONAME}", "${vi_cv_path_python_pfx}")) + not_needed = 1; + return !not_needed; + }])], +--- 1468,1474 ---- + int main(int argc, char** argv) + { + int not_needed = 0; +! if (no_rtl_global_needed_for("${vi_cv_dll_name_python}", "${vi_cv_path_python_pfx}")) + not_needed = 1; + return !not_needed; + }])], +*************** +*** 1504,1510 **** + int main(int argc, char** argv) + { + int not_needed = 0; +! if (no_rtl_global_needed_for("${python3_INSTSONAME}", L"${vi_cv_path_python3_pfx}")) + not_needed = 1; + return !not_needed; + }])], +--- 1514,1520 ---- + int main(int argc, char** argv) + { + int not_needed = 0; +! if (no_rtl_global_needed_for("${vi_cv_dll_name_python3}", L"${vi_cv_path_python3_pfx}")) + not_needed = 1; + return !not_needed; + }])], +*************** +*** 1515,1531 **** + + PYTHON_SRC="if_python.c" + PYTHON_OBJ="objects/if_python.o" +! PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${python_INSTSONAME}\\\"" + PYTHON_LIBS= + PYTHON3_SRC="if_python3.c" + PYTHON3_OBJ="objects/if_python3.o" +! PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${python3_INSTSONAME}\\\"" + PYTHON3_LIBS= + elif test "$python_ok" = yes && test "$enable_pythoninterp" = "dynamic"; then + AC_DEFINE(DYNAMIC_PYTHON) + PYTHON_SRC="if_python.c" + PYTHON_OBJ="objects/if_python.o" +! PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${python_INSTSONAME}\\\"" + PYTHON_LIBS= + elif test "$python_ok" = yes; then + dnl Check that adding -fPIE works. It may be needed when using a static +--- 1525,1541 ---- + + PYTHON_SRC="if_python.c" + PYTHON_OBJ="objects/if_python.o" +! PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${vi_cv_dll_name_python}\\\"" + PYTHON_LIBS= + PYTHON3_SRC="if_python3.c" + PYTHON3_OBJ="objects/if_python3.o" +! PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${vi_cv_dll_name_python3}\\\"" + PYTHON3_LIBS= + elif test "$python_ok" = yes && test "$enable_pythoninterp" = "dynamic"; then + AC_DEFINE(DYNAMIC_PYTHON) + PYTHON_SRC="if_python.c" + PYTHON_OBJ="objects/if_python.o" +! PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${vi_cv_dll_name_python}\\\"" + PYTHON_LIBS= + elif test "$python_ok" = yes; then + dnl Check that adding -fPIE works. It may be needed when using a static +*************** +*** 1547,1553 **** + AC_DEFINE(DYNAMIC_PYTHON3) + PYTHON3_SRC="if_python3.c" + PYTHON3_OBJ="objects/if_python3.o" +! PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${python3_INSTSONAME}\\\"" + PYTHON3_LIBS= + elif test "$python3_ok" = yes; then + dnl Check that adding -fPIE works. It may be needed when using a static +--- 1557,1563 ---- + AC_DEFINE(DYNAMIC_PYTHON3) + PYTHON3_SRC="if_python3.c" + PYTHON3_OBJ="objects/if_python3.o" +! PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${vi_cv_dll_name_python3}\\\"" + PYTHON3_LIBS= + elif test "$python3_ok" = yes; then + dnl Check that adding -fPIE works. It may be needed when using a static +*** ../vim-7.4.298/src/auto/configure 2014-04-12 13:11:58.268430356 +0200 +--- src/auto/configure 2014-05-22 14:40:05.146486086 +0200 +*************** +*** 5893,5902 **** + + fi + + +- if test "X$python_DLLLIBRARY" != "X"; then +- python_INSTSONAME="$python_DLLLIBRARY" +- fi + PYTHON_LIBS="${vi_cv_path_python_plibs}" + if test "${vi_cv_path_python_pfx}" = "${vi_cv_path_python_epfx}"; then + PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version} -DPYTHON_HOME='\"${vi_cv_path_python_pfx}\"'" +--- 5893,5911 ---- + + fi + ++ if ${vi_cv_dll_name_python+:} false; then : ++ $as_echo_n "(cached) " >&6 ++ else ++ ++ if test "X$python_DLLLIBRARY" != "X"; then ++ vi_cv_dll_name_python="$python_DLLLIBRARY" ++ else ++ vi_cv_dll_name_python="$python_INSTSONAME" ++ fi ++ ++ fi ++ + + PYTHON_LIBS="${vi_cv_path_python_plibs}" + if test "${vi_cv_path_python_pfx}" = "${vi_cv_path_python_epfx}"; then + PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version} -DPYTHON_HOME='\"${vi_cv_path_python_pfx}\"'" +*************** +*** 6200,6218 **** + @echo "python3_DLLLIBRARY='$(DLLLIBRARY)'" + @echo "python3_INSTSONAME='$(INSTSONAME)'" + eof +! eval "`cd ${PYTHON3_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`" +! rm -f -- "${tmp_mkf}" + vi_cv_path_python3_plibs="-L${PYTHON3_CONFDIR} -lpython${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags}" +! vi_cv_path_python3_plibs="${vi_cv_path_python3_plibs} ${python3_BASEMODLIBS} ${python3_LIBS} ${python3_SYSLIBS}" +! vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-ltermcap//` +! vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-lffi//` + + fi + + +- if test "X$python3_DLLLIBRARY" != "X"; then +- python3_INSTSONAME="$python3_DLLLIBRARY" +- fi + PYTHON3_LIBS="${vi_cv_path_python3_plibs}" + if test "${vi_cv_path_python3_pfx}" = "${vi_cv_path_python3_epfx}"; then + PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -DPYTHON3_HOME='L\"${vi_cv_path_python3_pfx}\"'" +--- 6209,6236 ---- + @echo "python3_DLLLIBRARY='$(DLLLIBRARY)'" + @echo "python3_INSTSONAME='$(INSTSONAME)'" + eof +! eval "`cd ${PYTHON3_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`" +! rm -f -- "${tmp_mkf}" + vi_cv_path_python3_plibs="-L${PYTHON3_CONFDIR} -lpython${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags}" +! vi_cv_path_python3_plibs="${vi_cv_path_python3_plibs} ${python3_BASEMODLIBS} ${python3_LIBS} ${python3_SYSLIBS}" +! vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-ltermcap//` +! vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-lffi//` +! +! fi +! +! if ${vi_cv_dll_name_python3+:} false; then : +! $as_echo_n "(cached) " >&6 +! else +! +! if test "X$python3_DLLLIBRARY" != "X"; then +! vi_cv_dll_name_python3="$python3_DLLLIBRARY" +! else +! vi_cv_dll_name_python3="$python3_INSTSONAME" +! fi + + fi + + + PYTHON3_LIBS="${vi_cv_path_python3_plibs}" + if test "${vi_cv_path_python3_pfx}" = "${vi_cv_path_python3_epfx}"; then + PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -DPYTHON3_HOME='L\"${vi_cv_path_python3_pfx}\"'" +*************** +*** 6372,6378 **** + int main(int argc, char** argv) + { + int not_needed = 0; +! if (no_rtl_global_needed_for("${python_INSTSONAME}", "${vi_cv_path_python_pfx}")) + not_needed = 1; + return !not_needed; + } +--- 6390,6396 ---- + int main(int argc, char** argv) + { + int not_needed = 0; +! if (no_rtl_global_needed_for("${vi_cv_dll_name_python}", "${vi_cv_path_python_pfx}")) + not_needed = 1; + return !not_needed; + } +*************** +*** 6438,6444 **** + int main(int argc, char** argv) + { + int not_needed = 0; +! if (no_rtl_global_needed_for("${python3_INSTSONAME}", L"${vi_cv_path_python3_pfx}")) + not_needed = 1; + return !not_needed; + } +--- 6456,6462 ---- + int main(int argc, char** argv) + { + int not_needed = 0; +! if (no_rtl_global_needed_for("${vi_cv_dll_name_python3}", L"${vi_cv_path_python3_pfx}")) + not_needed = 1; + return !not_needed; + } +*************** +*** 6461,6478 **** + + PYTHON_SRC="if_python.c" + PYTHON_OBJ="objects/if_python.o" +! PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${python_INSTSONAME}\\\"" + PYTHON_LIBS= + PYTHON3_SRC="if_python3.c" + PYTHON3_OBJ="objects/if_python3.o" +! PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${python3_INSTSONAME}\\\"" + PYTHON3_LIBS= + elif test "$python_ok" = yes && test "$enable_pythoninterp" = "dynamic"; then + $as_echo "#define DYNAMIC_PYTHON 1" >>confdefs.h + + PYTHON_SRC="if_python.c" + PYTHON_OBJ="objects/if_python.o" +! PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${python_INSTSONAME}\\\"" + PYTHON_LIBS= + elif test "$python_ok" = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if -fPIE can be added for Python" >&5 +--- 6479,6496 ---- + + PYTHON_SRC="if_python.c" + PYTHON_OBJ="objects/if_python.o" +! PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${vi_cv_dll_name_python}\\\"" + PYTHON_LIBS= + PYTHON3_SRC="if_python3.c" + PYTHON3_OBJ="objects/if_python3.o" +! PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${vi_cv_dll_name_python3}\\\"" + PYTHON3_LIBS= + elif test "$python_ok" = yes && test "$enable_pythoninterp" = "dynamic"; then + $as_echo "#define DYNAMIC_PYTHON 1" >>confdefs.h + + PYTHON_SRC="if_python.c" + PYTHON_OBJ="objects/if_python.o" +! PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${vi_cv_dll_name_python}\\\"" + PYTHON_LIBS= + elif test "$python_ok" = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if -fPIE can be added for Python" >&5 +*************** +*** 6511,6517 **** + + PYTHON3_SRC="if_python3.c" + PYTHON3_OBJ="objects/if_python3.o" +! PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${python3_INSTSONAME}\\\"" + PYTHON3_LIBS= + elif test "$python3_ok" = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if -fPIE can be added for Python3" >&5 +--- 6529,6535 ---- + + PYTHON3_SRC="if_python3.c" + PYTHON3_OBJ="objects/if_python3.o" +! PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${vi_cv_dll_name_python3}\\\"" + PYTHON3_LIBS= + elif test "$python3_ok" = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if -fPIE can be added for Python3" >&5 +*************** +*** 11420,11426 **** + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +! #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +--- 11438,11444 ---- + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +! #define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +*************** +*** 11466,11472 **** + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +! #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +--- 11484,11490 ---- + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +! #define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +*************** +*** 11490,11496 **** + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +! #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +--- 11508,11514 ---- + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +! #define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +*************** +*** 11535,11541 **** + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +! #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +--- 11553,11559 ---- + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +! #define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +*************** +*** 11559,11565 **** + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +! #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +--- 11577,11583 ---- + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +! #define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +*** ../vim-7.4.298/src/version.c 2014-05-22 14:19:51.674510749 +0200 +--- src/version.c 2014-05-22 14:36:44.634490162 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 299, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +190. You quickly hand over your wallet, leather jacket, and car keys + during a mugging, then proceed to beat the crap out of your + assailant when he asks for your laptop. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.300 b/SOURCES/7.4.300 new file mode 100644 index 0000000..308fd93 --- /dev/null +++ b/SOURCES/7.4.300 @@ -0,0 +1,62 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.300 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.300 +Problem: The way config.cache is removed doesn't always work. +Solution: Always remove config.cache. (Ken Takata) +Files: src/Makefile + + +*** ../vim-7.4.299/src/Makefile 2014-04-29 20:04:05.331539784 +0200 +--- src/Makefile 2014-05-22 14:48:23.034475967 +0200 +*************** +*** 1664,1675 **** + # auto/config.h isn't updated. The dependency on auto/config.mk should make + # sure configure is run when it's needed. + # + config auto/config.mk: auto/configure config.mk.in config.h.in +! if test -f auto/config.cache && \ +! grep '^ac_cv_env_CFLAGS_value=' auto/config.cache > /dev/null && \ +! ! grep -x -F 'ac_cv_env_CFLAGS_value=$(CFLAGS)' auto/config.cache > /dev/null; then \ +! rm auto/config.cache; \ +! fi + if test "X$(MAKECMDGOALS)" != "Xclean" \ + -a "X$(MAKECMDGOALS)" != "Xdistclean" \ + -a "X$(MAKECMDGOALS)" != "Xautoconf" \ +--- 1664,1674 ---- + # auto/config.h isn't updated. The dependency on auto/config.mk should make + # sure configure is run when it's needed. + # ++ # Remove the config.cache every time, once in a while it causes problems that ++ # are very hard to figure out. ++ # + config auto/config.mk: auto/configure config.mk.in config.h.in +! -rm -f auto/config.cache + if test "X$(MAKECMDGOALS)" != "Xclean" \ + -a "X$(MAKECMDGOALS)" != "Xdistclean" \ + -a "X$(MAKECMDGOALS)" != "Xautoconf" \ +*** ../vim-7.4.299/src/version.c 2014-05-22 14:44:08.098481148 +0200 +--- src/version.c 2014-05-22 14:51:36.022472045 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 300, + /**/ + + +-- +What is the difference between a professional and an amateur? +The ark was built by an amateur; professionals gave us the Titanic. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.301 b/SOURCES/7.4.301 new file mode 100644 index 0000000..5870932 --- /dev/null +++ b/SOURCES/7.4.301 @@ -0,0 +1,53 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.301 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.301 (after 7.4.280) +Problem: Still a scrolling problem when loading a session file. +Solution: Fix off-by-one mistake. (Nobuhiro Takasaki) +Files: src/window.c + + +*** ../vim-7.4.300/src/window.c 2014-05-07 20:25:30.845273872 +0200 +--- src/window.c 2014-05-22 15:11:58.786447193 +0200 +*************** +*** 5748,5754 **** + lnum++; + wp->w_wrow -= line_size + sline; + } +! else if (sline > 0) + { + /* First line of file reached, use that as topline. */ + lnum = 1; +--- 5748,5754 ---- + lnum++; + wp->w_wrow -= line_size + sline; + } +! else if (sline >= 0) + { + /* First line of file reached, use that as topline. */ + lnum = 1; +*** ../vim-7.4.300/src/version.c 2014-05-22 14:54:22.854468654 +0200 +--- src/version.c 2014-05-22 15:12:33.770446481 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 301, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +191. You rate eating establishments not by the quality of the food, + but by the availability of electrical outlets for your PowerBook. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.302 b/SOURCES/7.4.302 new file mode 100644 index 0000000..3411f4d --- /dev/null +++ b/SOURCES/7.4.302 @@ -0,0 +1,78 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.302 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.302 +Problem: Signs placed with 'foldcolumn' set don't show up after filler + lines. +Solution: Take filler lines into account. (Olaf Dabrunz) +Files: src/screen.c + + +*** ../vim-7.4.301/src/screen.c 2014-05-13 20:19:53.573808877 +0200 +--- src/screen.c 2014-05-22 15:27:11.966428633 +0200 +*************** +*** 3553,3563 **** + draw_state = WL_SIGN; + /* Show the sign column when there are any signs in this + * buffer or when using Netbeans. */ +! if (draw_signcolumn(wp) +! # ifdef FEAT_DIFF +! && filler_todo <= 0 +! # endif +! ) + { + int text_sign; + # ifdef FEAT_SIGN_ICONS +--- 3553,3559 ---- + draw_state = WL_SIGN; + /* Show the sign column when there are any signs in this + * buffer or when using Netbeans. */ +! if (draw_signcolumn(wp)) + { + int text_sign; + # ifdef FEAT_SIGN_ICONS +*************** +*** 3569,3575 **** + char_attr = hl_attr(HLF_SC); + n_extra = 2; + +! if (row == startrow) + { + text_sign = buf_getsigntype(wp->w_buffer, lnum, + SIGN_TEXT); +--- 3565,3575 ---- + char_attr = hl_attr(HLF_SC); + n_extra = 2; + +! if (row == startrow +! #ifdef FEAT_DIFF +! + filler_lines && filler_todo <= 0 +! #endif +! ) + { + text_sign = buf_getsigntype(wp->w_buffer, lnum, + SIGN_TEXT); +*** ../vim-7.4.301/src/version.c 2014-05-22 15:17:24.706440568 +0200 +--- src/version.c 2014-05-22 15:46:00.058405705 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 302, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +192. Your boss asks you to "go fer" coffee and you come up with 235 FTP sites. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.303 b/SOURCES/7.4.303 new file mode 100644 index 0000000..8e49c69 --- /dev/null +++ b/SOURCES/7.4.303 @@ -0,0 +1,85 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.303 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.303 +Problem: When using double-width characters the text displayed on the + command line is sometimes truncated. +Solution: Reset the string lenght. (Nobuhiro Takasaki) +Files: src/screen.c + + +*** ../vim-7.4.302/src/screen.c 2014-05-22 15:51:00.734399594 +0200 +--- src/screen.c 2014-05-22 16:02:24.294385701 +0200 +*************** +*** 6916,6930 **** + * a NUL. + */ + void +! screen_puts_len(text, len, row, col, attr) + char_u *text; +! int len; + int row; + int col; + int attr; + { + unsigned off; + char_u *ptr = text; + int c; + #ifdef FEAT_MBYTE + unsigned max_off; +--- 6916,6931 ---- + * a NUL. + */ + void +! screen_puts_len(text, textlen, row, col, attr) + char_u *text; +! int textlen; + int row; + int col; + int attr; + { + unsigned off; + char_u *ptr = text; ++ int len = textlen; + int c; + #ifdef FEAT_MBYTE + unsigned max_off; +*************** +*** 7169,7175 **** +--- 7170,7180 ---- + col += mbyte_cells; + ptr += mbyte_blen; + if (clear_next_cell) ++ { ++ /* This only happens at the end, display one space next. */ + ptr = (char_u *)" "; ++ len = -1; ++ } + } + else + #endif +*** ../vim-7.4.302/src/version.c 2014-05-22 15:51:00.738399594 +0200 +--- src/version.c 2014-05-22 15:58:15.050390766 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 303, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +193. You ask your girlfriend to drive home so you can sit back with + your PDA and download the information to your laptop + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.304 b/SOURCES/7.4.304 new file mode 100644 index 0000000..874d108 --- /dev/null +++ b/SOURCES/7.4.304 @@ -0,0 +1,45 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.304 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.304 +Problem: Cannot always use Python with Vim. +Solution: Add the manifest to the executable. (Jacques Germishuys) +Files: src/Make_mvc.mak + + +*** ../vim-7.4.303/src/Make_mvc.mak 2014-02-15 19:47:46.685882910 +0100 +--- src/Make_mvc.mak 2014-05-22 16:25:40.978357314 +0200 +*************** +*** 973,978 **** +--- 973,979 ---- + $(LUA_OBJ) $(MZSCHEME_OBJ) $(PERL_OBJ) $(PYTHON_OBJ) $(PYTHON3_OBJ) $(RUBY_OBJ) \ + $(TCL_OBJ) $(SNIFF_OBJ) $(CSCOPE_OBJ) $(NETBEANS_OBJ) \ + $(XPM_OBJ) $(OUTDIR)\version.obj $(LINKARGS2) ++ if exist $(VIM).exe.manifest mt.exe -nologo -manifest $(VIM).exe.manifest -updateresource:$(VIM).exe;1 + + $(VIM): $(VIM).exe + +*** ../vim-7.4.303/src/version.c 2014-05-22 16:05:16.342382204 +0200 +--- src/version.c 2014-05-22 16:20:07.534364091 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 304, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +194. Your business cards contain your e-mail and home page address. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.305 b/SOURCES/7.4.305 new file mode 100644 index 0000000..7abb227 --- /dev/null +++ b/SOURCES/7.4.305 @@ -0,0 +1,276 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.305 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.305 +Problem: Making 'ttymouse' empty after the xterm version was requested + causes problems. (Elijah Griffin) +Solution: Do not check for DEC mouse sequences when the xterm version was + requested. Also don't request the xterm version when DEC mouse + was enabled. +Files: src/term.c, src/os_unix.c, src/proto/term.pro, src/globals.h + + +*** ../vim-7.4.304/src/term.c 2014-03-25 13:46:22.841832960 +0100 +--- src/term.c 2014-05-22 17:12:59.198299628 +0200 +*************** +*** 153,158 **** +--- 153,163 ---- + static char_u *vim_tgetstr __ARGS((char *s, char_u **pp)); + #endif /* HAVE_TGETENT */ + ++ #if defined(FEAT_TERMRESPONSE) ++ static int xt_index_in = 0; ++ static int xt_index_out = 0; ++ #endif ++ + static int detected_8bit = FALSE; /* detected 8-bit terminal */ + + static struct builtin_term builtin_termcaps[] = +*************** +*** 3259,3265 **** + may_req_termresponse(); + /* Immediately check for a response. If t_Co changes, we don't + * want to redraw with wrong colors first. */ +! if (crv_status != CRV_GET) + check_for_codes_from_term(); + } + #endif +--- 3264,3270 ---- + may_req_termresponse(); + /* Immediately check for a response. If t_Co changes, we don't + * want to redraw with wrong colors first. */ +! if (crv_status == CRV_SENT) + check_for_codes_from_term(); + } + #endif +*************** +*** 3306,3311 **** +--- 3311,3340 ---- + } + } + ++ #if defined(UNIX) || defined(PROTO) ++ /* ++ * Return TRUE when the xterm version was requested or anything else that ++ * would send an ESC sequence back to Vim. ++ * If not sent yet, prevent it from being sent soon. ++ * Used to check whether it is OK to enable checking for DEC mouse codes, ++ * which conflict with may xterm ESC sequences. ++ */ ++ int ++ did_request_esc_sequence() ++ { ++ if (crv_status == CRV_GET) ++ crv_status = 0; ++ if (u7_status == U7_GET) ++ u7_status = 0; ++ return crv_status == CRV_SENT || u7_status == U7_SENT ++ # if defined(FEAT_TERMRESPONSE) ++ || xt_index_out > xt_index_in ++ # endif ++ ; ++ } ++ #endif ++ ++ + #if defined(FEAT_TERMRESPONSE) || defined(PROTO) + /* + * Request version string (for xterm) when needed. +*************** +*** 3319,3324 **** +--- 3348,3355 ---- + * Insert mode. + * On Unix only do it when both output and input are a tty (avoid writing + * request to terminal while reading from a file). ++ * Do not do this when a mouse is being detected that starts with the same ESC ++ * sequence as the termresponse. + * The result is caught in check_termcode(). + */ + void +*************** +*** 3332,3337 **** +--- 3363,3369 ---- + # ifdef UNIX + && isatty(1) + && isatty(read_cmd_fd) ++ && !xterm_conflict_mouse + # endif + && *T_CRV != NUL) + { +*************** +*** 5714,5722 **** + * termcap codes from the terminal itself. + * We get them one by one to avoid a very long response string. + */ +- static int xt_index_in = 0; +- static int xt_index_out = 0; +- + static void + req_codes_from_term() + { +--- 5746,5751 ---- +*** ../vim-7.4.304/src/os_unix.c 2014-05-13 20:19:53.573808877 +0200 +--- src/os_unix.c 2014-05-22 17:11:10.274301842 +0200 +*************** +*** 3667,3672 **** +--- 3667,3674 ---- + void + check_mouse_termcode() + { ++ xterm_conflict_mouse = FALSE; ++ + # ifdef FEAT_MOUSE_XTERM + if (use_xterm_mouse() + # ifdef FEAT_MOUSE_URXVT +*************** +*** 3711,3717 **** + # endif + + # ifdef FEAT_MOUSE_JSB +! /* conflicts with xterm mouse: "\033[" and "\033[M" ??? */ + if (!use_xterm_mouse() + # ifdef FEAT_GUI + && !gui.in_use +--- 3713,3719 ---- + # endif + + # ifdef FEAT_MOUSE_JSB +! /* There is no conflict, but it was disabled for xterm before. */ + if (!use_xterm_mouse() + # ifdef FEAT_GUI + && !gui.in_use +*************** +*** 3738,3769 **** + # endif + + # ifdef FEAT_MOUSE_DEC +! /* conflicts with xterm mouse: "\033[" and "\033[M" */ +! if (!use_xterm_mouse() + # ifdef FEAT_GUI + && !gui.in_use + # endif + ) + set_mouse_termcode(KS_DEC_MOUSE, (char_u *)(term_is_8bit(T_NAME) + ? IF_EB("\233", CSI_STR) : IF_EB("\033[", ESC_STR "["))); + else + del_mouse_termcode(KS_DEC_MOUSE); + # endif + # ifdef FEAT_MOUSE_PTERM + /* same as the dec mouse */ +! if (!use_xterm_mouse() + # ifdef FEAT_GUI + && !gui.in_use + # endif + ) + set_mouse_termcode(KS_PTERM_MOUSE, + (char_u *) IF_EB("\033[", ESC_STR "[")); + else + del_mouse_termcode(KS_PTERM_MOUSE); + # endif + # ifdef FEAT_MOUSE_URXVT + /* same as the dec mouse */ +! if (use_xterm_mouse() == 3 + # ifdef FEAT_GUI + && !gui.in_use + # endif +--- 3740,3779 ---- + # endif + + # ifdef FEAT_MOUSE_DEC +! /* Conflicts with xterm mouse: "\033[" and "\033[M". +! * Also conflicts with the xterm termresponse, skip this if it was +! * requested already. */ +! if (!use_xterm_mouse() && !did_request_esc_sequence() + # ifdef FEAT_GUI + && !gui.in_use + # endif + ) ++ { + set_mouse_termcode(KS_DEC_MOUSE, (char_u *)(term_is_8bit(T_NAME) + ? IF_EB("\233", CSI_STR) : IF_EB("\033[", ESC_STR "["))); ++ xterm_conflict_mouse = TRUE; ++ } + else + del_mouse_termcode(KS_DEC_MOUSE); + # endif + # ifdef FEAT_MOUSE_PTERM + /* same as the dec mouse */ +! if (!use_xterm_mouse() && !did_request_esc_sequence() + # ifdef FEAT_GUI + && !gui.in_use + # endif + ) ++ { + set_mouse_termcode(KS_PTERM_MOUSE, + (char_u *) IF_EB("\033[", ESC_STR "[")); ++ xterm_conflict_mouse = TRUE; ++ } + else + del_mouse_termcode(KS_PTERM_MOUSE); + # endif + # ifdef FEAT_MOUSE_URXVT + /* same as the dec mouse */ +! if (use_xterm_mouse() == 3 && !did_request_esc_sequence() + # ifdef FEAT_GUI + && !gui.in_use + # endif +*************** +*** 3778,3783 **** +--- 3788,3794 ---- + mch_setmouse(FALSE); + setmouse(); + } ++ xterm_conflict_mouse = TRUE; + } + else + del_mouse_termcode(KS_URXVT_MOUSE); +*** ../vim-7.4.304/src/proto/term.pro 2013-09-29 16:27:42.000000000 +0200 +--- src/proto/term.pro 2014-05-22 16:58:25.806317380 +0200 +*************** +*** 34,39 **** +--- 34,40 ---- + void settmode __ARGS((int tmode)); + void starttermcap __ARGS((void)); + void stoptermcap __ARGS((void)); ++ int did_request_esc_sequence __ARGS((void)); + void may_req_termresponse __ARGS((void)); + void may_req_ambiguous_char_width __ARGS((void)); + int swapping_screen __ARGS((void)); +*** ../vim-7.4.304/src/globals.h 2014-04-06 20:45:40.123357453 +0200 +--- src/globals.h 2014-05-22 17:07:39.130306133 +0200 +*************** +*** 1333,1338 **** +--- 1333,1341 ---- + #if defined(UNIX) || defined(VMS) + EXTERN int term_is_xterm INIT(= FALSE); /* xterm-like 'term' */ + #endif ++ #if defined(UNIX) ++ EXTERN int xterm_conflict_mouse INIT(= FALSE); ++ #endif + + #ifdef BACKSLASH_IN_FILENAME + EXTERN char psepc INIT(= '\\'); /* normal path separator character */ +*** ../vim-7.4.304/src/version.c 2014-05-22 16:29:03.378353200 +0200 +--- src/version.c 2014-05-22 16:58:16.150317576 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 305, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +195. Your cat has its own home page. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.306 b/SOURCES/7.4.306 new file mode 100644 index 0000000..756eb18 --- /dev/null +++ b/SOURCES/7.4.306 @@ -0,0 +1,84 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.306 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.306 +Problem: getchar(0) does not return Esc. +Solution: Do not wait for an Esc sequence to be complete. (Yasuhiro + Matsumoto) +Files: src/eval.c, src/getchar.c + + +*** ../vim-7.4.305/src/eval.c 2014-05-22 14:19:51.674510749 +0200 +--- src/eval.c 2014-05-22 18:59:34.038169656 +0200 +*************** +*** 11313,11325 **** + n = safe_vgetc(); + else if (get_tv_number_chk(&argvars[0], &error) == 1) + /* getchar(1): only check if char avail */ +! n = vpeekc(); +! else if (error || vpeekc() == NUL) + /* illegal argument or getchar(0) and no char avail: return zero */ + n = 0; + else + /* getchar(0) and char avail: return char */ + n = safe_vgetc(); + if (n == K_IGNORE) + continue; + break; +--- 11313,11326 ---- + n = safe_vgetc(); + else if (get_tv_number_chk(&argvars[0], &error) == 1) + /* getchar(1): only check if char avail */ +! n = vpeekc_any(); +! else if (error || vpeekc_any() == NUL) + /* illegal argument or getchar(0) and no char avail: return zero */ + n = 0; + else + /* getchar(0) and char avail: return char */ + n = safe_vgetc(); ++ + if (n == K_IGNORE) + continue; + break; +*** ../vim-7.4.305/src/getchar.c 2014-03-23 15:12:29.919264336 +0100 +--- src/getchar.c 2014-05-22 18:34:13.450200562 +0200 +*************** +*** 1883,1889 **** + } + #endif + +! #if defined(FEAT_INS_EXPAND) || defined(PROTO) + /* + * Check if any character is available, also half an escape sequence. + * Trick: when no typeahead found, but there is something in the typeahead +--- 1883,1889 ---- + } + #endif + +! #if defined(FEAT_INS_EXPAND) || defined(FEAT_EVAL) || defined(PROTO) + /* + * Check if any character is available, also half an escape sequence. + * Trick: when no typeahead found, but there is something in the typeahead +*** ../vim-7.4.305/src/version.c 2014-05-22 18:14:27.570224664 +0200 +--- src/version.c 2014-05-22 18:37:10.734196958 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 306, + /**/ + +-- +Press any key to continue, press any other key to quit. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.307 b/SOURCES/7.4.307 new file mode 100644 index 0000000..8b07881 --- /dev/null +++ b/SOURCES/7.4.307 @@ -0,0 +1,147 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.307 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.307 (after 7.4.305) +Problem: Can't build without the +termresponse feature. +Solution: Add proper #ifdefs. +Files: src/os_unix.c, src/term.c + + +*** ../vim-7.4.306/src/os_unix.c 2014-05-22 18:14:27.570224664 +0200 +--- src/os_unix.c 2014-05-22 20:29:36.930059845 +0200 +*************** +*** 3743,3749 **** + /* Conflicts with xterm mouse: "\033[" and "\033[M". + * Also conflicts with the xterm termresponse, skip this if it was + * requested already. */ +! if (!use_xterm_mouse() && !did_request_esc_sequence() + # ifdef FEAT_GUI + && !gui.in_use + # endif +--- 3743,3752 ---- + /* Conflicts with xterm mouse: "\033[" and "\033[M". + * Also conflicts with the xterm termresponse, skip this if it was + * requested already. */ +! if (!use_xterm_mouse() +! # ifdef FEAT_TERMRESPONSE +! && !did_request_esc_sequence() +! # endif + # ifdef FEAT_GUI + && !gui.in_use + # endif +*************** +*** 3758,3764 **** + # endif + # ifdef FEAT_MOUSE_PTERM + /* same as the dec mouse */ +! if (!use_xterm_mouse() && !did_request_esc_sequence() + # ifdef FEAT_GUI + && !gui.in_use + # endif +--- 3761,3770 ---- + # endif + # ifdef FEAT_MOUSE_PTERM + /* same as the dec mouse */ +! if (!use_xterm_mouse() +! # ifdef FEAT_TERMRESPONSE +! && !did_request_esc_sequence() +! # endif + # ifdef FEAT_GUI + && !gui.in_use + # endif +*************** +*** 3773,3779 **** + # endif + # ifdef FEAT_MOUSE_URXVT + /* same as the dec mouse */ +! if (use_xterm_mouse() == 3 && !did_request_esc_sequence() + # ifdef FEAT_GUI + && !gui.in_use + # endif +--- 3779,3788 ---- + # endif + # ifdef FEAT_MOUSE_URXVT + /* same as the dec mouse */ +! if (use_xterm_mouse() == 3 +! # ifdef FEAT_TERMRESPONSE +! && !did_request_esc_sequence() +! # endif + # ifdef FEAT_GUI + && !gui.in_use + # endif +*** ../vim-7.4.306/src/term.c 2014-05-22 18:14:27.570224664 +0200 +--- src/term.c 2014-05-22 20:28:34.922061106 +0200 +*************** +*** 3311,3317 **** + } + } + +! #if defined(UNIX) || defined(PROTO) + /* + * Return TRUE when the xterm version was requested or anything else that + * would send an ESC sequence back to Vim. +--- 3311,3318 ---- + } + } + +! #if defined(FEAT_TERMRESPONSE) || defined(PROTO) +! # if defined(UNIX) || defined(PROTO) + /* + * Return TRUE when the xterm version was requested or anything else that + * would send an ESC sequence back to Vim. +*************** +*** 3327,3341 **** + if (u7_status == U7_GET) + u7_status = 0; + return crv_status == CRV_SENT || u7_status == U7_SENT +! # if defined(FEAT_TERMRESPONSE) +! || xt_index_out > xt_index_in +! # endif +! ; + } +! #endif + + +- #if defined(FEAT_TERMRESPONSE) || defined(PROTO) + /* + * Request version string (for xterm) when needed. + * Only do this after switching to raw mode, otherwise the result will be +--- 3328,3338 ---- + if (u7_status == U7_GET) + u7_status = 0; + return crv_status == CRV_SENT || u7_status == U7_SENT +! || xt_index_out > xt_index_in; + } +! # endif + + + /* + * Request version string (for xterm) when needed. + * Only do this after switching to raw mode, otherwise the result will be +*** ../vim-7.4.306/src/version.c 2014-05-22 18:59:54.510169240 +0200 +--- src/version.c 2014-05-22 21:20:36.665997658 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 307, + /**/ + +-- +Some of the well known MS-Windows errors: + ESLEEP Operator fell asleep + ENOERR No error yet + EDOLLAR OS too expensive + EWINDOWS MS-Windows loaded, system in danger + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.308 b/SOURCES/7.4.308 new file mode 100644 index 0000000..f3d6a3c --- /dev/null +++ b/SOURCES/7.4.308 @@ -0,0 +1,47 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.308 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.308 +Problem: When using ":diffsplit" on an empty file the cursor is displayed + on the command line. +Solution: Limit the value of w_topfill. +Files: src/diff.c + + +*** ../vim-7.4.307/src/diff.c 2013-09-20 20:13:48.000000000 +0200 +--- src/diff.c 2014-05-28 11:30:11.724008432 +0200 +*************** +*** 622,627 **** +--- 622,628 ---- + wp->w_topfill = (n < 0 ? 0 : n); + else if (n > 0 && n > wp->w_topfill) + wp->w_topfill = n; ++ check_topfill(wp, FALSE); + } + } + } +*** ../vim-7.4.307/src/version.c 2014-05-22 21:22:15.361995652 +0200 +--- src/version.c 2014-05-28 11:34:01.064010440 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 308, + /**/ + +-- +msdn.microsoft.com: +ERROR_SUCCESS 0 (0x0) The operation completed successfully. +I have always suspected that for Microsoft success is an error. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.309 b/SOURCES/7.4.309 new file mode 100644 index 0000000..82c9e0b --- /dev/null +++ b/SOURCES/7.4.309 @@ -0,0 +1,88 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.309 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.309 +Problem: When increasing the size of the lower window, the upper window + jumps back to the top. (Ron Aaron) +Solution: Change setting the topline. (Nobuhiro Takasaki) +Files: src/window.c + + +*** ../vim-7.4.308/src/window.c 2014-05-22 15:17:24.706440568 +0200 +--- src/window.c 2014-05-28 13:24:40.308068558 +0200 +*************** +*** 5710,5717 **** + --wp->w_wrow; + } + } + } +! else + { + while (sline > 0 && lnum > 1) + { +--- 5710,5718 ---- + --wp->w_wrow; + } + } ++ set_topline(wp, lnum); + } +! else if (sline > 0) + { + while (sline > 0 && lnum > 1) + { +*************** +*** 5748,5761 **** + lnum++; + wp->w_wrow -= line_size + sline; + } +! else if (sline >= 0) + { + /* First line of file reached, use that as topline. */ + lnum = 1; + wp->w_wrow -= sline; + } + } +- set_topline(wp, lnum); + } + + if (wp == curwin) +--- 5749,5763 ---- + lnum++; + wp->w_wrow -= line_size + sline; + } +! else if (sline > 0) + { + /* First line of file reached, use that as topline. */ + lnum = 1; + wp->w_wrow -= sline; + } ++ ++ set_topline(wp, lnum); + } + } + + if (wp == curwin) +*** ../vim-7.4.308/src/version.c 2014-05-28 11:35:33.428011248 +0200 +--- src/version.c 2014-05-28 13:33:54.244073407 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 309, + /**/ + +-- +Don't be humble ... you're not that great. + -- Golda Meir + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.310 b/SOURCES/7.4.310 new file mode 100644 index 0000000..2d25f0f --- /dev/null +++ b/SOURCES/7.4.310 @@ -0,0 +1,373 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.310 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.310 +Problem: getpos()/setpos() don't include curswant. +Solution: Add a fifth number when getting/setting the cursor. +Files: src/eval.c, src/testdir/test_eval.in, src/testdir/test_eval.ok, + runtime/doc/eval.txt + + +*** ../vim-7.4.309/src/eval.c 2014-05-22 18:59:54.506169240 +0200 +--- src/eval.c 2014-05-28 14:23:37.608099523 +0200 +*************** +*** 764,770 **** + static void f_writefile __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_xor __ARGS((typval_T *argvars, typval_T *rettv)); + +! static int list2fpos __ARGS((typval_T *arg, pos_T *posp, int *fnump)); + static pos_T *var2fpos __ARGS((typval_T *varp, int dollar_lnum, int *fnum)); + static int get_env_len __ARGS((char_u **arg)); + static int get_id_len __ARGS((char_u **arg)); +--- 764,770 ---- + static void f_writefile __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_xor __ARGS((typval_T *argvars, typval_T *rettv)); + +! static int list2fpos __ARGS((typval_T *arg, pos_T *posp, int *fnump, colnr_T *curswantp)); + static pos_T *var2fpos __ARGS((typval_T *varp, int dollar_lnum, int *fnum)); + static int get_env_len __ARGS((char_u **arg)); + static int get_id_len __ARGS((char_u **arg)); +*************** +*** 9799,9812 **** + if (argvars[1].v_type == VAR_UNKNOWN) + { + pos_T pos; + +! if (list2fpos(argvars, &pos, NULL) == FAIL) + return; + line = pos.lnum; + col = pos.col; + #ifdef FEAT_VIRTUALEDIT + coladd = pos.coladd; + #endif + } + else + { +--- 9799,9815 ---- + if (argvars[1].v_type == VAR_UNKNOWN) + { + pos_T pos; ++ colnr_T curswant = -1; + +! if (list2fpos(argvars, &pos, NULL, &curswant) == FAIL) + return; + line = pos.lnum; + col = pos.col; + #ifdef FEAT_VIRTUALEDIT + coladd = pos.coladd; + #endif ++ if (curswant >= 0) ++ curwin->w_curswant = curswant - 1; + } + else + { +*************** +*** 11770,11775 **** +--- 11773,11780 ---- + (fp != NULL) ? (varnumber_T)fp->coladd : + #endif + (varnumber_T)0); ++ if (fp == &curwin->w_cursor) ++ list_append_number(l, (varnumber_T)curwin->w_curswant + 1); + } + else + rettv->vval.v_number = FALSE; +*************** +*** 16751,16762 **** + pos_T pos; + int fnum; + char_u *name; + + rettv->vval.v_number = -1; + name = get_tv_string_chk(argvars); + if (name != NULL) + { +! if (list2fpos(&argvars[1], &pos, &fnum) == OK) + { + if (--pos.col < 0) + pos.col = 0; +--- 16756,16768 ---- + pos_T pos; + int fnum; + char_u *name; ++ colnr_T curswant = -1; + + rettv->vval.v_number = -1; + name = get_tv_string_chk(argvars); + if (name != NULL) + { +! if (list2fpos(&argvars[1], &pos, &fnum, &curswant) == OK) + { + if (--pos.col < 0) + pos.col = 0; +*************** +*** 16766,16771 **** +--- 16772,16779 ---- + if (fnum == curbuf->b_fnum) + { + curwin->w_cursor = pos; ++ if (curswant >= 0) ++ curwin->w_curswant = curswant - 1; + check_cursor(); + rettv->vval.v_number = 0; + } +*************** +*** 19532,19552 **** + * validity. + */ + static int +! list2fpos(arg, posp, fnump) + typval_T *arg; + pos_T *posp; + int *fnump; + { + list_T *l = arg->vval.v_list; + long i = 0; + long n; + +! /* List must be: [fnum, lnum, col, coladd], where "fnum" is only there +! * when "fnump" isn't NULL and "coladd" is optional. */ + if (arg->v_type != VAR_LIST + || l == NULL + || l->lv_len < (fnump == NULL ? 2 : 3) +! || l->lv_len > (fnump == NULL ? 3 : 4)) + return FAIL; + + if (fnump != NULL) +--- 19540,19561 ---- + * validity. + */ + static int +! list2fpos(arg, posp, fnump, curswantp) + typval_T *arg; + pos_T *posp; + int *fnump; ++ colnr_T *curswantp; + { + list_T *l = arg->vval.v_list; + long i = 0; + long n; + +! /* List must be: [fnum, lnum, col, coladd, curswant], where "fnum" is only +! * there when "fnump" isn't NULL; "coladd" and "curswant" are optional. */ + if (arg->v_type != VAR_LIST + || l == NULL + || l->lv_len < (fnump == NULL ? 2 : 3) +! || l->lv_len > (fnump == NULL ? 4 : 5)) + return FAIL; + + if (fnump != NULL) +*************** +*** 19570,19582 **** + posp->col = n; + + #ifdef FEAT_VIRTUALEDIT +! n = list_find_nr(l, i, NULL); + if (n < 0) + posp->coladd = 0; + else + posp->coladd = n; + #endif + + return OK; + } + +--- 19579,19594 ---- + posp->col = n; + + #ifdef FEAT_VIRTUALEDIT +! n = list_find_nr(l, i, NULL); /* off */ + if (n < 0) + posp->coladd = 0; + else + posp->coladd = n; + #endif + ++ if (curswantp != NULL) ++ *curswantp = list_find_nr(l, i + 1, NULL); /* curswant */ ++ + return OK; + } + +*** ../vim-7.4.309/src/testdir/test_eval.in 2014-04-29 17:41:18.351689927 +0200 +--- src/testdir/test_eval.in 2014-05-28 14:22:31.780098947 +0200 +*************** +*** 190,198 **** +--- 190,207 ---- + :$put =v:exception + :endtry + :" ++ :$put ='{{{1 setpos/getpos' ++ /^012345678 ++ 6l:let sp = getpos('.') ++ 0:call setpos('.', sp) ++ jyl:$put ++ :" + :/^start:/+1,$wq! test.out + :" vim: et ts=4 isk-=\: fmr=???,??? + :call getchar() + ENDTEST + ++ 012345678 ++ 012345678 ++ + start: +*** ../vim-7.4.309/src/testdir/test_eval.ok 2014-04-29 17:41:18.351689927 +0200 +--- src/testdir/test_eval.ok 2014-05-28 14:19:31.836097372 +0200 +*************** +*** 346,348 **** +--- 346,350 ---- + Bar exists: 1 + func Bar exists: 1 + Vim(call):E116: Invalid arguments for function append ++ {{{1 setpos/getpos ++ 6 +*** ../vim-7.4.309/runtime/doc/eval.txt 2014-05-07 18:35:25.661216052 +0200 +--- runtime/doc/eval.txt 2014-05-28 14:04:40.928089573 +0200 +*************** +*** 2587,2595 **** + cursor({list}) + Positions the cursor at the column (byte count) {col} in the + line {lnum}. The first column is one. + When there is one argument {list} this is used as a |List| +! with two or three items {lnum}, {col} and {off}. This is like +! the return value of |getpos()|, but without the first item. + Does not change the jumplist. + If {lnum} is greater than the number of lines in the buffer, + the cursor will be positioned at the last line in the buffer. +--- 2587,2600 ---- + cursor({list}) + Positions the cursor at the column (byte count) {col} in the + line {lnum}. The first column is one. ++ + When there is one argument {list} this is used as a |List| +! with two, three or four item: +! [{lnum}, {col}, {off}] +! [{lnum}, {col}, {off}, {curswant}] +! This is like the return value of |getpos()|, but without the +! first item. +! + Does not change the jumplist. + If {lnum} is greater than the number of lines in the buffer, + the cursor will be positioned at the last line in the buffer. +*************** +*** 4475,4482 **** + *getpos()* + getpos({expr}) Get the position for {expr}. For possible values of {expr} + see |line()|. +! The result is a |List| with four numbers: + [bufnum, lnum, col, off] + "bufnum" is zero, unless a mark like '0 or 'A is used, then it + is the buffer number of the mark. + "lnum" and "col" are the position in the buffer. The first +--- 4490,4498 ---- + *getpos()* + getpos({expr}) Get the position for {expr}. For possible values of {expr} + see |line()|. +! The result is a |List| with four or five numbers: + [bufnum, lnum, col, off] ++ [bufnum, lnum, col, off, curswant] + "bufnum" is zero, unless a mark like '0 or 'A is used, then it + is the buffer number of the mark. + "lnum" and "col" are the position in the buffer. The first +*************** +*** 4485,4490 **** +--- 4501,4511 ---- + it is the offset in screen columns from the start of the + character. E.g., a position within a <Tab> or after the last + character. ++ The "curswant" number is only added for getpos('.'), it is the ++ preferred column when moving the cursor vertically. ++ Note that for '< and '> Visual mode matters: when it is "V" ++ (visual line mode) the column of '< is zero and the column of ++ '> is a large number. + This can be used to save and restore the cursor position: > + let save_cursor = getpos(".") + MoveTheCursorAround +*************** +*** 5289,5296 **** + . the cursor + 'x mark x + +! {list} must be a |List| with four numbers: + [bufnum, lnum, col, off] + + "bufnum" is the buffer number. Zero can be used for the + current buffer. Setting the cursor is only possible for +--- 5310,5318 ---- + . the cursor + 'x mark x + +! {list} must be a |List| with four or five numbers: + [bufnum, lnum, col, off] ++ [bufnum, lnum, col, off, curswant] + + "bufnum" is the buffer number. Zero can be used for the + current buffer. Setting the cursor is only possible for +*************** +*** 5308,5320 **** + character. E.g., a position within a <Tab> or after the last + character. + + Returns 0 when the position could be set, -1 otherwise. + An error message is given if {expr} is invalid. + + Also see |getpos()| + + This does not restore the preferred column for moving +! vertically. See |winrestview()| for that. + + + setqflist({list} [, {action}]) *setqflist()* +--- 5330,5355 ---- + character. E.g., a position within a <Tab> or after the last + character. + ++ The "curswant" number is only used when setting the cursor ++ position. It sets the preferred column for when moving the ++ cursor vertically. When the "curswant" number is missing the ++ preferred column is not set. When it is present and setting a ++ mark position it is not used. ++ ++ Note that for '< and '> changing the line number may result in ++ the marks to be effectively be swapped, so that '< is always ++ before '>. ++ + Returns 0 when the position could be set, -1 otherwise. + An error message is given if {expr} is invalid. + + Also see |getpos()| + + This does not restore the preferred column for moving +! vertically; if you set the cursor position with this, |j| and +! |k| motions will jump to previous columns! Use |cursor()| to +! also set the preferred column. Also see the "curswant" key in +! |winrestview()|. + + + setqflist({list} [, {action}]) *setqflist()* +*** ../vim-7.4.309/src/version.c 2014-05-28 13:42:59.884078184 +0200 +--- src/version.c 2014-05-28 14:27:20.132101471 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 310, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +218. Your spouse hands you a gift wrapped magnet with your PC's name + on it and you accuse him or her of genocide. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.311 b/SOURCES/7.4.311 new file mode 100644 index 0000000..0009788 --- /dev/null +++ b/SOURCES/7.4.311 @@ -0,0 +1,127 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.311 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.311 +Problem: Can't use winrestview to only restore part of the view. +Solution: Handle missing items in the dict. (Christian Brabandt) +Files: src/eval.c, runtime/doc/eval.txt + + +*** ../vim-7.4.310/src/eval.c 2014-05-28 14:32:47.156104334 +0200 +--- src/eval.c 2014-05-28 16:42:25.196172421 +0200 +*************** +*** 19231,19250 **** + EMSG(_(e_invarg)); + else + { +! curwin->w_cursor.lnum = get_dict_number(dict, (char_u *)"lnum"); +! curwin->w_cursor.col = get_dict_number(dict, (char_u *)"col"); + #ifdef FEAT_VIRTUALEDIT +! curwin->w_cursor.coladd = get_dict_number(dict, (char_u *)"coladd"); + #endif +! curwin->w_curswant = get_dict_number(dict, (char_u *)"curswant"); +! curwin->w_set_curswant = FALSE; + +! set_topline(curwin, get_dict_number(dict, (char_u *)"topline")); + #ifdef FEAT_DIFF +! curwin->w_topfill = get_dict_number(dict, (char_u *)"topfill"); + #endif +! curwin->w_leftcol = get_dict_number(dict, (char_u *)"leftcol"); +! curwin->w_skipcol = get_dict_number(dict, (char_u *)"skipcol"); + + check_cursor(); + win_new_height(curwin, curwin->w_height); +--- 19231,19260 ---- + EMSG(_(e_invarg)); + else + { +! if (dict_find(dict, (char_u *)"lnum", -1) != NULL) +! curwin->w_cursor.lnum = get_dict_number(dict, (char_u *)"lnum"); +! if (dict_find(dict, (char_u *)"col", -1) != NULL) +! curwin->w_cursor.col = get_dict_number(dict, (char_u *)"col"); + #ifdef FEAT_VIRTUALEDIT +! if (dict_find(dict, (char_u *)"coladd", -1) != NULL) +! curwin->w_cursor.coladd = get_dict_number(dict, (char_u *)"coladd"); + #endif +! if (dict_find(dict, (char_u *)"curswant", -1) != NULL) +! { +! curwin->w_curswant = get_dict_number(dict, (char_u *)"curswant"); +! curwin->w_set_curswant = FALSE; +! } + +! if (dict_find(dict, (char_u *)"topline", -1) != NULL) +! set_topline(curwin, get_dict_number(dict, (char_u *)"topline")); + #ifdef FEAT_DIFF +! if (dict_find(dict, (char_u *)"topfill", -1) != NULL) +! curwin->w_topfill = get_dict_number(dict, (char_u *)"topfill"); + #endif +! if (dict_find(dict, (char_u *)"leftcol", -1) != NULL) +! curwin->w_leftcol = get_dict_number(dict, (char_u *)"leftcol"); +! if (dict_find(dict, (char_u *)"skipcol", -1) != NULL) +! curwin->w_skipcol = get_dict_number(dict, (char_u *)"skipcol"); + + check_cursor(); + win_new_height(curwin, curwin->w_height); +*** ../vim-7.4.310/runtime/doc/eval.txt 2014-05-28 14:32:47.164104334 +0200 +--- runtime/doc/eval.txt 2014-05-28 16:42:25.192172421 +0200 +*************** +*** 6404,6409 **** +--- 6414,6429 ---- + winrestview({dict}) + Uses the |Dictionary| returned by |winsaveview()| to restore + the view of the current window. ++ Note: The {dict} does not have to contain all values, that are ++ returned by |winsaveview()|. If values are missing, those ++ settings won't be restored. So you can use: > ++ :call winrestview({'curswant': 4}) ++ < ++ This will only set the curswant value (the column the cursor ++ wants to move on vertical movements) of the cursor to column 5 ++ (yes, that is 5), while all other settings will remain the ++ same. This is useful, if you set the cursor position manually. ++ + If you have changed the values the result is unpredictable. + If the window size changed the result won't be the same. + +*************** +*** 6418,6424 **** + not opened when moving around. + The return value includes: + lnum cursor line number +! col cursor column + coladd cursor column offset for 'virtualedit' + curswant column for vertical movement + topline first line in the window +--- 6438,6446 ---- + not opened when moving around. + The return value includes: + lnum cursor line number +! col cursor column (Note: the first column +! zero, as opposed to what getpos() +! returns) + coladd cursor column offset for 'virtualedit' + curswant column for vertical movement + topline first line in the window +*** ../vim-7.4.310/src/version.c 2014-05-28 14:32:47.164104334 +0200 +--- src/version.c 2014-05-28 16:45:19.200173944 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 311, + /**/ + +-- +Your fault: core dumped + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.312 b/SOURCES/7.4.312 new file mode 100644 index 0000000..14bc1c1 --- /dev/null +++ b/SOURCES/7.4.312 @@ -0,0 +1,194 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.312 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.312 +Problem: Cannot figure out what argument list is being used for a window. +Solution: Add the arglistid() function. (Marcin Szamotulski) +Files: runtime/doc/eval.txt, runtime/doc/usr_41.txt, src/eval.c, + src/ex_docmd.c, src/globals.h, src/structs.h, src/main.c + + +*** ../vim-7.4.311/runtime/doc/eval.txt 2014-05-28 16:47:11.396174926 +0200 +--- runtime/doc/eval.txt 2014-05-28 18:00:06.248213223 +0200 +*************** +*** 1716,1721 **** +--- 1716,1723 ---- + append( {lnum}, {list}) Number append lines {list} below line {lnum} + argc() Number number of files in the argument list + argidx() Number current index in the argument list ++ arglistid( [{winnr}, [ {tabnr}]]) ++ Number argument list id + argv( {nr}) String {nr} entry of the argument list + argv( ) List the argument list + asin( {expr}) Float arc sine of {expr} +*************** +*** 2103,2108 **** +--- 2105,2122 ---- + argidx() The result is the current index in the argument list. 0 is + the first file. argc() - 1 is the last one. See |arglist|. + ++ *arglistid()* ++ arglistid([{winnr}, [ {tabnr} ]]) ++ Return the argument list ID. This is a number which ++ identifies the argument list being used. Zero is used for the ++ global argument list. ++ Return zero if the arguments are invalid. ++ ++ Without arguments use the current window. ++ With {winnr} only use this window in the current tab page. ++ With {winnr} and {tabnr} use the window in the specified tab ++ page. ++ + *argv()* + argv([{nr}]) The result is the {nr}th file in the argument list of the + current window. See |arglist|. "argv(0)" is the first one. +*** ../vim-7.4.311/runtime/doc/usr_41.txt 2014-03-25 18:23:27.054087691 +0100 +--- runtime/doc/usr_41.txt 2014-05-28 18:07:43.096217222 +0200 +*************** +*** 770,775 **** +--- 772,778 ---- + Buffers, windows and the argument list: + argc() number of entries in the argument list + argidx() current position in the argument list ++ arglistid() get id of the argument list + argv() get one entry from the argument list + bufexists() check if a buffer exists + buflisted() check if a buffer exists and is listed +*** ../vim-7.4.311/src/eval.c 2014-05-28 16:47:11.392174926 +0200 +--- src/eval.c 2014-05-28 18:11:10.264219035 +0200 +*************** +*** 463,468 **** +--- 463,469 ---- + static void f_append __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_argc __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_argidx __ARGS((typval_T *argvars, typval_T *rettv)); ++ static void f_arglistid __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_argv __ARGS((typval_T *argvars, typval_T *rettv)); + #ifdef FEAT_FLOAT + static void f_asin __ARGS((typval_T *argvars, typval_T *rettv)); +*************** +*** 7875,7880 **** +--- 7876,7882 ---- + {"append", 2, 2, f_append}, + {"argc", 0, 0, f_argc}, + {"argidx", 0, 0, f_argidx}, ++ {"arglistid", 0, 2, f_arglistid}, + {"argv", 0, 1, f_argv}, + #ifdef FEAT_FLOAT + {"asin", 1, 1, f_asin}, /* WJMc */ +*************** +*** 8859,8864 **** +--- 8861,8901 ---- + } + + /* ++ * "arglistid()" function ++ */ ++ static void ++ f_arglistid(argvars, rettv) ++ typval_T *argvars UNUSED; ++ typval_T *rettv; ++ { ++ win_T *wp; ++ tabpage_T *tp = NULL; ++ long n; ++ ++ rettv->vval.v_number = -1; ++ if (argvars[0].v_type != VAR_UNKNOWN) ++ { ++ if (argvars[1].v_type != VAR_UNKNOWN) ++ { ++ n = get_tv_number(&argvars[1]); ++ if (n >= 0) ++ tp = find_tabpage(n); ++ } ++ else ++ tp = curtab; ++ ++ if (tp != NULL) ++ { ++ wp = find_win_by_nr(&argvars[0], tp); ++ if (wp != NULL) ++ rettv->vval.v_number = wp->w_alist->id; ++ } ++ } ++ else ++ rettv->vval.v_number = curwin->w_alist->id; ++ } ++ ++ /* + * "argv(nr)" function + */ + static void +*** ../vim-7.4.311/src/ex_docmd.c 2014-05-07 21:14:42.913299714 +0200 +--- src/ex_docmd.c 2014-05-28 18:10:01.696218435 +0200 +*************** +*** 7211,7216 **** +--- 7211,7217 ---- + else + { + curwin->w_alist->al_refcount = 1; ++ curwin->w_alist->id = ++max_alist_id; + alist_init(curwin->w_alist); + } + } +*** ../vim-7.4.311/src/globals.h 2014-05-22 18:14:27.570224664 +0200 +--- src/globals.h 2014-05-28 17:56:53.392211534 +0200 +*************** +*** 601,606 **** +--- 601,607 ---- + * to this when the window is using the global argument list. + */ + EXTERN alist_T global_alist; /* global argument list */ ++ EXTERN int max_alist_id INIT(= 0); /* the previous argument list id */ + EXTERN int arg_had_last INIT(= FALSE); /* accessed last file in + global_alist */ + +*** ../vim-7.4.311/src/structs.h 2014-05-13 20:19:53.573808877 +0200 +--- src/structs.h 2014-05-28 17:54:18.312210177 +0200 +*************** +*** 675,680 **** +--- 675,681 ---- + { + garray_T al_ga; /* growarray with the array of file names */ + int al_refcount; /* number of windows using this arglist */ ++ int id; /* id of this arglist */ + } alist_T; + + /* +*** ../vim-7.4.311/src/main.c 2014-04-01 19:55:46.252787300 +0200 +--- src/main.c 2014-05-28 18:09:32.040218175 +0200 +*************** +*** 322,327 **** +--- 322,328 ---- + init_yank(); /* init yank buffers */ + + alist_init(&global_alist); /* Init the argument list to empty. */ ++ global_alist.id = 0; + + /* + * Set the default values for the options. +*** ../vim-7.4.311/src/version.c 2014-05-28 16:47:11.396174926 +0200 +--- src/version.c 2014-05-28 17:25:32.644195071 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 312, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +222. You send more than 20 personal e-mails a day. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.313 b/SOURCES/7.4.313 new file mode 100644 index 0000000..39468e0 --- /dev/null +++ b/SOURCES/7.4.313 @@ -0,0 +1,320 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.313 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.313 (after 7.4.310) +Problem: Changing the return value of getpos() causes an error. (Jie Zhu) +Solution: Revert getpos() and add getcurpos(). +Files: src/eval.c, src/testdir/test_eval.in, src/testdir/test_eval.ok, + runtime/doc/eval.txt + + +*** ../vim-7.4.312/src/eval.c 2014-05-28 18:22:37.876225054 +0200 +--- src/eval.c 2014-05-28 20:11:55.364282457 +0200 +*************** +*** 560,565 **** +--- 560,566 ---- + static void f_getline __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_getmatches __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_getpid __ARGS((typval_T *argvars, typval_T *rettv)); ++ static void f_getcurpos __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_getpos __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_getqflist __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_getreg __ARGS((typval_T *argvars, typval_T *rettv)); +*************** +*** 7967,7972 **** +--- 7968,7974 ---- + {"getcmdline", 0, 0, f_getcmdline}, + {"getcmdpos", 0, 0, f_getcmdpos}, + {"getcmdtype", 0, 0, f_getcmdtype}, ++ {"getcurpos", 0, 0, f_getcurpos}, + {"getcwd", 0, 0, f_getcwd}, + {"getfontname", 0, 1, f_getfontname}, + {"getfperm", 1, 1, f_getfperm}, +*************** +*** 11780,11785 **** +--- 11782,11800 ---- + rettv->vval.v_number = mch_get_pid(); + } + ++ static void getpos_both __ARGS((typval_T *argvars, typval_T *rettv, int getcurpos)); ++ ++ /* ++ * "getcurpos()" function ++ */ ++ static void ++ f_getcurpos(argvars, rettv) ++ typval_T *argvars; ++ typval_T *rettv; ++ { ++ getpos_both(argvars, rettv, TRUE); ++ } ++ + /* + * "getpos(string)" function + */ +*************** +*** 11788,11793 **** +--- 11803,11817 ---- + typval_T *argvars; + typval_T *rettv; + { ++ getpos_both(argvars, rettv, FALSE); ++ } ++ ++ static void ++ getpos_both(argvars, rettv, getcurpos) ++ typval_T *argvars; ++ typval_T *rettv; ++ int getcurpos; ++ { + pos_T *fp; + list_T *l; + int fnum = -1; +*************** +*** 11795,11801 **** + if (rettv_list_alloc(rettv) == OK) + { + l = rettv->vval.v_list; +! fp = var2fpos(&argvars[0], TRUE, &fnum); + if (fnum != -1) + list_append_number(l, (varnumber_T)fnum); + else +--- 11819,11828 ---- + if (rettv_list_alloc(rettv) == OK) + { + l = rettv->vval.v_list; +! if (getcurpos) +! fp = &curwin->w_cursor; +! else +! fp = var2fpos(&argvars[0], TRUE, &fnum); + if (fnum != -1) + list_append_number(l, (varnumber_T)fnum); + else +*************** +*** 11810,11816 **** + (fp != NULL) ? (varnumber_T)fp->coladd : + #endif + (varnumber_T)0); +! if (fp == &curwin->w_cursor) + list_append_number(l, (varnumber_T)curwin->w_curswant + 1); + } + else +--- 11837,11843 ---- + (fp != NULL) ? (varnumber_T)fp->coladd : + #endif + (varnumber_T)0); +! if (getcurpos) + list_append_number(l, (varnumber_T)curwin->w_curswant + 1); + } + else +*** ../vim-7.4.312/src/testdir/test_eval.in 2014-05-28 14:32:47.160104334 +0200 +--- src/testdir/test_eval.in 2014-05-28 20:14:27.048283785 +0200 +*************** +*** 190,198 **** + :$put =v:exception + :endtry + :" +! :$put ='{{{1 setpos/getpos' + /^012345678 +! 6l:let sp = getpos('.') + 0:call setpos('.', sp) + jyl:$put + :" +--- 190,198 ---- + :$put =v:exception + :endtry + :" +! :$put ='{{{1 getcurpos/setpos' + /^012345678 +! 6l:let sp = getcurpos() + 0:call setpos('.', sp) + jyl:$put + :" +*** ../vim-7.4.312/src/testdir/test_eval.ok 2014-05-28 14:32:47.160104334 +0200 +--- src/testdir/test_eval.ok 2014-05-28 20:14:43.316283927 +0200 +*************** +*** 346,350 **** + Bar exists: 1 + func Bar exists: 1 + Vim(call):E116: Invalid arguments for function append +! {{{1 setpos/getpos + 6 +--- 346,350 ---- + Bar exists: 1 + func Bar exists: 1 + Vim(call):E116: Invalid arguments for function append +! {{{1 getcurpos/setpos + 6 +*** ../vim-7.4.312/runtime/doc/eval.txt 2014-05-28 18:22:37.872225054 +0200 +--- runtime/doc/eval.txt 2014-05-28 20:27:57.092290876 +0200 +*************** +*** 1808,1817 **** + getcmdline() String return the current command-line + getcmdpos() Number return cursor position in command-line + getcmdtype() String return the current command-line type + getcwd() String the current working directory + getfperm( {fname}) String file permissions of file {fname} + getfsize( {fname}) Number size in bytes of file {fname} +- getfontname( [{name}]) String name of font being used + getftime( {fname}) Number last modification time of file + getftype( {fname}) String description of type of file {fname} + getline( {lnum}) String line {lnum} of current buffer +--- 1808,1818 ---- + getcmdline() String return the current command-line + getcmdpos() Number return cursor position in command-line + getcmdtype() String return the current command-line type ++ getcurpos() List position of the cursor + getcwd() String the current working directory ++ getfontname( [{name}]) String name of font being used + getfperm( {fname}) String file permissions of file {fname} + getfsize( {fname}) Number size in bytes of file {fname} + getftime( {fname}) Number last modification time of file + getftype( {fname}) String description of type of file {fname} + getline( {lnum}) String line {lnum} of current buffer +*************** +*** 2606,2613 **** + with two, three or four item: + [{lnum}, {col}, {off}] + [{lnum}, {col}, {off}, {curswant}] +! This is like the return value of |getpos()|, but without the +! first item. + + Does not change the jumplist. + If {lnum} is greater than the number of lines in the buffer, +--- 2607,2614 ---- + with two, three or four item: + [{lnum}, {col}, {off}] + [{lnum}, {col}, {off}, {curswant}] +! This is like the return value of |getpos()| or |getcurpos|, +! but without the first item. + + Does not change the jumplist. + If {lnum} is greater than the number of lines in the buffer, +*************** +*** 2617,2622 **** +--- 2618,2625 ---- + the cursor will be positioned at the last character in the + line. + If {col} is zero, the cursor will stay in the current column. ++ If {curswant} is given it is used to set the preferred column ++ for vertical movment. Otherwise {col} is used. + When 'virtualedit' is used {off} specifies the offset in + screen columns from the start of the character. E.g., a + position within a <Tab> or after the last character. +*************** +*** 3339,3344 **** +--- 3347,3363 ---- + Returns an empty string otherwise. + Also see |getcmdpos()|, |setcmdpos()| and |getcmdline()|. + ++ *getcurpos()* ++ getcurpos() Get the position of the cursor. This is like getpos('.'), but ++ includes an extra item in the list: ++ [bufnum, lnum, col, off, curswant] ++ The "curswant" number is the preferred column when moving the ++ cursor vertically. ++ This can be used to save and restore the cursor position: > ++ let save_cursor = getcurpos() ++ MoveTheCursorAround ++ call setpos('.', save_cursor) ++ + *getcwd()* + getcwd() The result is a String, which is the name of the current + working directory. +*************** +*** 4493,4502 **** + + *getpos()* + getpos({expr}) Get the position for {expr}. For possible values of {expr} +! see |line()|. +! The result is a |List| with four or five numbers: + [bufnum, lnum, col, off] +- [bufnum, lnum, col, off, curswant] + "bufnum" is zero, unless a mark like '0 or 'A is used, then it + is the buffer number of the mark. + "lnum" and "col" are the position in the buffer. The first +--- 4517,4526 ---- + + *getpos()* + getpos({expr}) Get the position for {expr}. For possible values of {expr} +! see |line()|. For getting the cursor position see +! |getcurpos()|. +! The result is a |List| with four numbers: + [bufnum, lnum, col, off] + "bufnum" is zero, unless a mark like '0 or 'A is used, then it + is the buffer number of the mark. + "lnum" and "col" are the position in the buffer. The first +*************** +*** 4505,4520 **** + it is the offset in screen columns from the start of the + character. E.g., a position within a <Tab> or after the last + character. +- The "curswant" number is only added for getpos('.'), it is the +- preferred column when moving the cursor vertically. + Note that for '< and '> Visual mode matters: when it is "V" + (visual line mode) the column of '< is zero and the column of + '> is a large number. +! This can be used to save and restore the cursor position: > +! let save_cursor = getpos(".") +! MoveTheCursorAround +! call setpos('.', save_cursor) +! < Also see |setpos()|. + + or({expr}, {expr}) *or()* + Bitwise OR on the two arguments. The arguments are converted +--- 4529,4542 ---- + it is the offset in screen columns from the start of the + character. E.g., a position within a <Tab> or after the last + character. + Note that for '< and '> Visual mode matters: when it is "V" + (visual line mode) the column of '< is zero and the column of + '> is a large number. +! This can be used to save and restore the position of a mark: > +! let save_a_mark = getpos("'a") +! ... +! call setpos(''a', save_a_mark +! < Also see |getcurpos()| and |setpos()|. + + or({expr}, {expr}) *or()* + Bitwise OR on the two arguments. The arguments are converted +*************** +*** 5347,5353 **** + Returns 0 when the position could be set, -1 otherwise. + An error message is given if {expr} is invalid. + +! Also see |getpos()| + + This does not restore the preferred column for moving + vertically; if you set the cursor position with this, |j| and +--- 5369,5375 ---- + Returns 0 when the position could be set, -1 otherwise. + An error message is given if {expr} is invalid. + +! Also see |getpos()| and |getcurpos()|. + + This does not restore the preferred column for moving + vertically; if you set the cursor position with this, |j| and +*** ../vim-7.4.312/src/version.c 2014-05-28 18:22:37.880225054 +0200 +--- src/version.c 2014-05-28 20:15:52.164284530 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 313, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +225. You sign up for free subscriptions for all the computer magazines + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.314 b/SOURCES/7.4.314 new file mode 100644 index 0000000..9308e38 --- /dev/null +++ b/SOURCES/7.4.314 @@ -0,0 +1,178 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.314 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.314 +Problem: Completion messages can get in the way of a plugin. +Solution: Add 'c' flag to 'shortmess' option. (Shougo Matsu) +Files: runtime/doc/options.txt, src/edit.c, src/option.h, src/screen.c + + +*** ../vim-7.4.313/runtime/doc/options.txt 2014-03-12 18:55:52.096906804 +0100 +--- runtime/doc/options.txt 2014-05-28 20:55:14.640305211 +0200 +*************** +*** 6252,6257 **** +--- 6254,6262 ---- + A don't give the "ATTENTION" message when an existing swap file + is found. + I don't give the intro message when starting Vim |:intro|. ++ c don't give |ins-completion-menu| messages. For example, ++ "-- XXX completion (YYY)", "match 1 of 2", "The only match", ++ "Pattern not found", "Back at original", etc. + + This gives you the opportunity to avoid that a change between buffers + requires you to hit <Enter>, but still gives as useful a message as +*** ../vim-7.4.313/src/edit.c 2014-04-29 14:44:31.515875819 +0200 +--- src/edit.c 2014-05-28 21:33:57.588325545 +0200 +*************** +*** 3854,3860 **** + ins_compl_free(); + compl_started = FALSE; + compl_matches = 0; +! msg_clr_cmdline(); /* necessary for "noshowmode" */ + ctrl_x_mode = 0; + compl_enter_selects = FALSE; + if (edit_submode != NULL) +--- 3854,3861 ---- + ins_compl_free(); + compl_started = FALSE; + compl_matches = 0; +! if (!shortmess(SHM_COMPLETIONMENU)) +! msg_clr_cmdline(); /* necessary for "noshowmode" */ + ctrl_x_mode = 0; + compl_enter_selects = FALSE; + if (edit_submode != NULL) +*************** +*** 5285,5291 **** + { + ctrl_x_mode = 0; + edit_submode = NULL; +! msg_clr_cmdline(); + return FAIL; + } + +--- 5286,5293 ---- + { + ctrl_x_mode = 0; + edit_submode = NULL; +! if (!shortmess(SHM_COMPLETIONMENU)) +! msg_clr_cmdline(); + return FAIL; + } + +*************** +*** 5544,5558 **** + + /* Show a message about what (completion) mode we're in. */ + showmode(); +! if (edit_submode_extra != NULL) + { +! if (!p_smd) +! msg_attr(edit_submode_extra, +! edit_submode_highl < HLF_COUNT +! ? hl_attr(edit_submode_highl) : 0); + } +- else +- msg_clr_cmdline(); /* necessary for "noshowmode" */ + + /* Show the popup menu, unless we got interrupted. */ + if (!compl_interrupted) +--- 5546,5563 ---- + + /* Show a message about what (completion) mode we're in. */ + showmode(); +! if (!shortmess(SHM_COMPLETIONMENU)) + { +! if (edit_submode_extra != NULL) +! { +! if (!p_smd) +! msg_attr(edit_submode_extra, +! edit_submode_highl < HLF_COUNT +! ? hl_attr(edit_submode_highl) : 0); +! } +! else +! msg_clr_cmdline(); /* necessary for "noshowmode" */ + } + + /* Show the popup menu, unless we got interrupted. */ + if (!compl_interrupted) +*** ../vim-7.4.313/src/option.h 2014-03-23 15:12:29.943264337 +0100 +--- src/option.h 2014-05-28 21:34:25.244325787 +0200 +*************** +*** 212,218 **** + #define SHM_SEARCH 's' /* no search hit bottom messages */ + #define SHM_ATTENTION 'A' /* no ATTENTION messages */ + #define SHM_INTRO 'I' /* intro messages */ +! #define SHM_ALL "rmfixlnwaWtToOsAI" /* all possible flags for 'shm' */ + + /* characters for p_go: */ + #define GO_ASEL 'a' /* autoselect */ +--- 212,219 ---- + #define SHM_SEARCH 's' /* no search hit bottom messages */ + #define SHM_ATTENTION 'A' /* no ATTENTION messages */ + #define SHM_INTRO 'I' /* intro messages */ +! #define SHM_COMPLETIONMENU 'c' /* completion menu messages */ +! #define SHM_ALL "rmfixlnwaWtToOsAIc" /* all possible flags for 'shm' */ + + /* characters for p_go: */ + #define GO_ASEL 'a' /* autoselect */ +*** ../vim-7.4.313/src/screen.c 2014-05-22 16:05:16.338382204 +0200 +--- src/screen.c 2014-05-28 20:53:20.488304211 +0200 +*************** +*** 42,48 **** + * + * The part of the buffer that is displayed in a window is set with: + * - w_topline (first buffer line in window) +! * - w_topfill (filler line above the first line) + * - w_leftcol (leftmost window cell in window), + * - w_skipcol (skipped window cells of first line) + * +--- 42,48 ---- + * + * The part of the buffer that is displayed in a window is set with: + * - w_topline (first buffer line in window) +! * - w_topfill (filler lines above the first line) + * - w_leftcol (leftmost window cell in window), + * - w_skipcol (skipped window cells of first line) + * +*************** +*** 9683,9689 **** + } + #endif + #ifdef FEAT_INS_EXPAND +! if (edit_submode != NULL) /* CTRL-X in Insert mode */ + { + /* These messages can get long, avoid a wrap in a narrow + * window. Prefer showing edit_submode_extra. */ +--- 9683,9690 ---- + } + #endif + #ifdef FEAT_INS_EXPAND +! /* CTRL-X in Insert mode */ +! if (edit_submode != NULL && !shortmess(SHM_COMPLETIONMENU)) + { + /* These messages can get long, avoid a wrap in a narrow + * window. Prefer showing edit_submode_extra. */ +*** ../vim-7.4.313/src/version.c 2014-05-28 20:31:37.504292805 +0200 +--- src/version.c 2014-05-28 20:54:27.664304800 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 314, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +227. You sleep next to your monitor. Or on top of it. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.315 b/SOURCES/7.4.315 new file mode 100644 index 0000000..ab52ec5 --- /dev/null +++ b/SOURCES/7.4.315 @@ -0,0 +1,229 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.315 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.315 (after 7.4.309) +Problem: Fixes for computation of topline not tested. +Solution: Add test. (Hirohito Higashi) +Files: src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, + src/testdir/Make_ming.mak, src/testdir/Make_os2.mak, + src/testdir/Make_vms.mms, src/testdir/Makefile, + src/testdir/test107.in, src/testdir/test107.ok + + +*** ../vim-7.4.314/src/testdir/Make_amiga.mak 2014-04-29 12:15:22.852032651 +0200 +--- src/testdir/Make_amiga.mak 2014-05-28 13:13:32.108062709 +0200 +*************** +*** 35,41 **** + test89.out test90.out test91.out test92.out test93.out \ + test94.out test95.out test96.out test97.out test98.out \ + test99.out test100.out test101.out test102.out test103.out \ +! test104.out test105.out test106.out \ + test_autoformat_join.out \ + test_eval.out \ + test_options.out +--- 35,41 ---- + test89.out test90.out test91.out test92.out test93.out \ + test94.out test95.out test96.out test97.out test98.out \ + test99.out test100.out test101.out test102.out test103.out \ +! test104.out test105.out test106.out test107.out \ + test_autoformat_join.out \ + test_eval.out \ + test_options.out +*************** +*** 161,166 **** +--- 161,167 ---- + test104.out: test104.in + test105.out: test105.in + test106.out: test106.in ++ test107.out: test107.in + test_autoformat_join.out: test_autoformat_join.in + test_eval.out: test_eval.in + test_options.out: test_options.in +*** ../vim-7.4.314/src/testdir/Make_dos.mak 2014-04-29 12:15:22.852032651 +0200 +--- src/testdir/Make_dos.mak 2014-05-28 13:13:44.344062816 +0200 +*************** +*** 34,40 **** + test89.out test90.out test91.out test92.out test93.out \ + test94.out test95.out test96.out test98.out test99.out \ + test100.out test101.out test102.out test103.out test104.out \ +! test105.out test106.out \ + test_autoformat_join.out \ + test_eval.out \ + test_options.out +--- 34,40 ---- + test89.out test90.out test91.out test92.out test93.out \ + test94.out test95.out test96.out test98.out test99.out \ + test100.out test101.out test102.out test103.out test104.out \ +! test105.out test106.out test107.out\ + test_autoformat_join.out \ + test_eval.out \ + test_options.out +*** ../vim-7.4.314/src/testdir/Make_ming.mak 2014-04-29 12:15:22.852032651 +0200 +--- src/testdir/Make_ming.mak 2014-05-28 13:13:52.656062889 +0200 +*************** +*** 54,60 **** + test89.out test90.out test91.out test92.out test93.out \ + test94.out test95.out test96.out test98.out test99.out \ + test100.out test101.out test102.out test103.out test104.out \ +! test105.out test106.out \ + test_autoformat_join.out \ + test_eval.out \ + test_options.out +--- 54,60 ---- + test89.out test90.out test91.out test92.out test93.out \ + test94.out test95.out test96.out test98.out test99.out \ + test100.out test101.out test102.out test103.out test104.out \ +! test105.out test106.out test107.out \ + test_autoformat_join.out \ + test_eval.out \ + test_options.out +*** ../vim-7.4.314/src/testdir/Make_os2.mak 2014-04-29 12:15:22.852032651 +0200 +--- src/testdir/Make_os2.mak 2014-05-28 13:14:03.616062985 +0200 +*************** +*** 36,42 **** + test89.out test90.out test91.out test92.out test93.out \ + test94.out test95.out test96.out test98.out test99.out \ + test100.out test101.out test102.out test103.out test104.out \ +! test105.out test106.out \ + test_autoformat_join.out \ + test_eval.out \ + test_options.out +--- 36,42 ---- + test89.out test90.out test91.out test92.out test93.out \ + test94.out test95.out test96.out test98.out test99.out \ + test100.out test101.out test102.out test103.out test104.out \ +! test105.out test106.out test107.out \ + test_autoformat_join.out \ + test_eval.out \ + test_options.out +*** ../vim-7.4.314/src/testdir/Make_vms.mms 2014-04-29 12:15:22.852032651 +0200 +--- src/testdir/Make_vms.mms 2014-05-28 13:14:09.724063038 +0200 +*************** +*** 4,10 **** + # Authors: Zoltan Arpadffy, <arpadffy@polarhome.com> + # Sandor Kopanyi, <sandor.kopanyi@mailbox.hu> + # +! # Last change: 2014 Mar 12 + # + # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64. + # Edit the lines in the Configuration section below to select. +--- 4,10 ---- + # Authors: Zoltan Arpadffy, <arpadffy@polarhome.com> + # Sandor Kopanyi, <sandor.kopanyi@mailbox.hu> + # +! # Last change: 2014 May 28 + # + # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64. + # Edit the lines in the Configuration section below to select. +*************** +*** 95,101 **** + test90.out test91.out test92.out test93.out test94.out \ + test95.out test96.out test98.out test99.out \ + test100.out test101.out test103.out test104.out \ +! test105.out test106.out \ + test_autoformat_join.out \ + test_eval.out \ + test_options.out +--- 95,101 ---- + test90.out test91.out test92.out test93.out test94.out \ + test95.out test96.out test98.out test99.out \ + test100.out test101.out test103.out test104.out \ +! test105.out test106.out test107.out \ + test_autoformat_join.out \ + test_eval.out \ + test_options.out +*** ../vim-7.4.314/src/testdir/Makefile 2014-05-22 13:12:25.650592983 +0200 +--- src/testdir/Makefile 2014-05-28 13:14:28.688063204 +0200 +*************** +*** 32,38 **** + test89.out test90.out test91.out test92.out test93.out \ + test94.out test95.out test96.out test97.out test98.out \ + test99.out test100.out test101.out test102.out test103.out \ +! test104.out test105.out test106.out \ + test_autoformat_join.out \ + test_eval.out \ + test_options.out +--- 32,38 ---- + test89.out test90.out test91.out test92.out test93.out \ + test94.out test95.out test96.out test97.out test98.out \ + test99.out test100.out test101.out test102.out test103.out \ +! test104.out test105.out test106.out test107.out \ + test_autoformat_join.out \ + test_eval.out \ + test_options.out +*** ../vim-7.4.314/src/testdir/test107.in 2014-05-29 11:46:48.728773486 +0200 +--- src/testdir/test107.in 2014-05-29 11:40:20.096770084 +0200 +*************** +*** 0 **** +--- 1,38 ---- ++ Tests for adjusting window and contents vim: set ft=vim : ++ ++ STARTTEST ++ :so small.vim ++ :new ++ :call setline(1, range(1,256)) ++ :let r=[] ++ :func! GetScreenStr(row) ++ : let str = "" ++ : for c in range(1,3) ++ : let str .= nr2char(screenchar(a:row, c)) ++ : endfor ++ : return str ++ :endfunc ++ : ++ :exe ":norm! \<C-W>t\<C-W>=1Gzt\<C-W>w\<C-W>+" ++ :let s3=GetScreenStr(1) ++ :wincmd p ++ :call add(r, [line("w0"), s3]) ++ : ++ :exe ":norm! \<C-W>t\<C-W>=50Gzt\<C-W>w\<C-W>+" ++ :let s3=GetScreenStr(1) ++ :wincmd p ++ :call add(r, [line("w0"), s3]) ++ : ++ :exe ":norm! \<C-W>t\<C-W>=59Gzt\<C-W>w\<C-W>+" ++ :let s3=GetScreenStr(1) ++ ::wincmd p ++ :call add(r, [line("w0"), s3]) ++ : ++ :bwipeout! ++ :$put=r ++ :call garbagecollect(1) ++ :" ++ :/^start:/,$wq! test.out ++ ENDTEST ++ ++ start: +*** ../vim-7.4.314/src/testdir/test107.ok 2014-05-29 11:46:48.736773486 +0200 +--- src/testdir/test107.ok 2014-05-29 11:40:20.096770084 +0200 +*************** +*** 0 **** +--- 1,4 ---- ++ start: ++ [1, '1 '] ++ [50, '50 '] ++ [59, '59 '] +*** ../vim-7.4.314/src/version.c 2014-05-28 21:40:47.092329130 +0200 +--- src/version.c 2014-05-29 11:41:47.640770850 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 315, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +229. You spend so much time thinking what to add on this list. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.316 b/SOURCES/7.4.316 new file mode 100644 index 0000000..89b3b50 --- /dev/null +++ b/SOURCES/7.4.316 @@ -0,0 +1,52 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.316 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.316 +Problem: Warning from 64-bit compiler. +Solution: Add type cast. (Mike Williams) +Files: src/ex_getln.c + + +*** ../vim-7.4.315/src/ex_getln.c 2014-05-07 18:35:25.665216052 +0200 +--- src/ex_getln.c 2014-05-29 14:32:53.584860716 +0200 +*************** +*** 5202,5208 **** + for (i = 0; i < num_p; ++i) + { + ((char_u **)ga->ga_data)[ga->ga_len] = +! vim_strnsave(p[i], STRLEN(p[i])); + ++ga->ga_len; + } + } +--- 5202,5208 ---- + for (i = 0; i < num_p; ++i) + { + ((char_u **)ga->ga_data)[ga->ga_len] = +! vim_strnsave(p[i], (int)STRLEN(p[i])); + ++ga->ga_len; + } + } +*** ../vim-7.4.315/src/version.c 2014-05-29 11:47:19.808773758 +0200 +--- src/version.c 2014-05-29 14:33:29.476861030 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 316, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +232. You start conversations with, "Have you gotten an ISDN line?" + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.317 b/SOURCES/7.4.317 new file mode 100644 index 0000000..34ea336 --- /dev/null +++ b/SOURCES/7.4.317 @@ -0,0 +1,57 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.317 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.317 +Problem: Crash when starting gvim. Issue 230. +Solution: Check for a pointer to be NULL. (Christian Brabandt) +Files: src/window.c + + +*** ../vim-7.4.316/src/window.c 2014-05-28 13:42:59.884078184 +0200 +--- src/window.c 2014-06-12 11:36:53.619441640 +0200 +*************** +*** 4721,4728 **** + win_free_lsize(wp) + win_T *wp; + { +! vim_free(wp->w_lines); +! wp->w_lines = NULL; + } + + /* +--- 4721,4732 ---- + win_free_lsize(wp) + win_T *wp; + { +! /* TODO: why would wp be NULL here? */ +! if (wp != NULL) +! { +! vim_free(wp->w_lines); +! wp->w_lines = NULL; +! } + } + + /* +*** ../vim-7.4.316/src/version.c 2014-05-29 14:36:26.156862577 +0200 +--- src/version.c 2014-06-12 11:37:37.907443315 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 317, + /**/ + +-- +press CTRL-ALT-DEL for more information + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.318 b/SOURCES/7.4.318 new file mode 100644 index 0000000..3f82c53 --- /dev/null +++ b/SOURCES/7.4.318 @@ -0,0 +1,52 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.318 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.318 +Problem: Check for whether a highlight group has settings ignores fg and bg + color settings. +Solution: Also check cterm and GUI color settings. (Christian Brabandt) +Files: src/syntax.c + + +*** ../vim-7.4.317/src/syntax.c 2014-03-23 15:12:29.939264336 +0100 +--- src/syntax.c 2014-06-12 12:16:13.851530931 +0200 +*************** +*** 8043,8050 **** +--- 8043,8056 ---- + { + return ( HL_TABLE()[idx].sg_term_attr != 0 + || HL_TABLE()[idx].sg_cterm_attr != 0 ++ || HL_TABLE()[idx].sg_cterm_fg != 0 ++ || HL_TABLE()[idx].sg_cterm_bg != 0 + #ifdef FEAT_GUI + || HL_TABLE()[idx].sg_gui_attr != 0 ++ || HL_TABLE()[idx].sg_gui_fg_name != NULL ++ || HL_TABLE()[idx].sg_gui_bg_name != NULL ++ || HL_TABLE()[idx].sg_gui_sp_name != NULL ++ || HL_TABLE()[idx].sg_font_name != NUL + #endif + || (check_link && (HL_TABLE()[idx].sg_set & SG_LINK))); + } +*** ../vim-7.4.317/src/version.c 2014-06-12 11:49:42.219470717 +0200 +--- src/version.c 2014-06-12 12:17:25.607533645 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 318, + /**/ + +-- +The software said it requires Windows 95 or better, so I installed Linux. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.319 b/SOURCES/7.4.319 new file mode 100644 index 0000000..9b7cfaa --- /dev/null +++ b/SOURCES/7.4.319 @@ -0,0 +1,55 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.319 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.319 +Problem: Crash when putting zero bytes on the clipboard. +Solution: Do not support the utf8_atom target when not using an Unicode + encoding. (Naofumi Honda) +Files: src/ui.c + + +*** ../vim-7.4.318/src/ui.c 2014-03-23 15:12:29.943264337 +0100 +--- src/ui.c 2014-06-12 13:25:21.791687853 +0200 +*************** +*** 2324,2330 **** + if ( *target != XA_STRING + #ifdef FEAT_MBYTE + && *target != vimenc_atom +! && *target != utf8_atom + #endif + && *target != vim_atom + && *target != text_atom +--- 2324,2330 ---- + if ( *target != XA_STRING + #ifdef FEAT_MBYTE + && *target != vimenc_atom +! && (*target != utf8_atom || !enc_utf8) + #endif + && *target != vim_atom + && *target != text_atom +*** ../vim-7.4.318/src/version.c 2014-06-12 12:20:50.195541385 +0200 +--- src/version.c 2014-06-12 13:26:09.147689645 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 319, + /**/ + +-- +FIRST HEAD: Oh! quick! get the sword out I want to cut his head off. +THIRD HEAD: Oh, cut your own head off. +SECOND HEAD: Yes - do us all a favour. + "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.320 b/SOURCES/7.4.320 new file mode 100644 index 0000000..92830aa --- /dev/null +++ b/SOURCES/7.4.320 @@ -0,0 +1,143 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.320 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.320 +Problem: Possible crash when an BufLeave autocommand deletes the buffer. +Solution: Check for the window pointer being valid. Postpone freeing the + window until autocommands are done. (Yasuhiro Matsumoto) +Files: src/buffer.c, src/fileio.c, src/globals.h, src/window.c + + +*** ../vim-7.4.319/src/buffer.c 2014-05-07 16:35:05.029152844 +0200 +--- src/buffer.c 2014-06-12 13:47:17.799737639 +0200 +*************** +*** 371,377 **** + unload_buf = TRUE; + #endif + +! if (win != NULL) + { + /* Set b_last_cursor when closing the last window for the buffer. + * Remember the last cursor position and window options of the buffer. +--- 371,381 ---- + unload_buf = TRUE; + #endif + +! if (win != NULL +! #ifdef FEAT_WINDOWS +! && win_valid(win) /* in case autocommands closed the window */ +! #endif +! ) + { + /* Set b_last_cursor when closing the last window for the buffer. + * Remember the last cursor position and window options of the buffer. +*** ../vim-7.4.319/src/fileio.c 2014-05-02 15:46:10.731268318 +0200 +--- src/fileio.c 2014-06-12 13:53:33.207751842 +0200 +*************** +*** 9549,9555 **** + + /* + * When stopping to execute autocommands, restore the search patterns and +! * the redo buffer. Free buffers in the au_pending_free_buf list. + */ + if (!autocmd_busy) + { +--- 9549,9556 ---- + + /* + * When stopping to execute autocommands, restore the search patterns and +! * the redo buffer. Free any buffers in the au_pending_free_buf list and +! * free any windows in the au_pending_free_win list. + */ + if (!autocmd_busy) + { +*************** +*** 9562,9567 **** +--- 9563,9574 ---- + vim_free(au_pending_free_buf); + au_pending_free_buf = b; + } ++ while (au_pending_free_win != NULL) ++ { ++ win_T *w = au_pending_free_win->w_next; ++ vim_free(au_pending_free_win); ++ au_pending_free_win = w; ++ } + } + + /* +*** ../vim-7.4.319/src/globals.h 2014-05-28 18:22:37.876225054 +0200 +--- src/globals.h 2014-06-12 13:54:29.163753959 +0200 +*************** +*** 387,396 **** + * which one is preferred, au_new_curbuf is set to it */ + EXTERN buf_T *au_new_curbuf INIT(= NULL); + +! /* When deleting the buffer and autocmd_busy is TRUE, do not free the buffer +! * but link it in the list starting with au_pending_free_buf, using b_next. +! * Free the buffer when autocmd_busy is set to FALSE. */ + EXTERN buf_T *au_pending_free_buf INIT(= NULL); + #endif + + #ifdef FEAT_MOUSE +--- 387,398 ---- + * which one is preferred, au_new_curbuf is set to it */ + EXTERN buf_T *au_new_curbuf INIT(= NULL); + +! /* When deleting a buffer/window and autocmd_busy is TRUE, do not free the +! * buffer/window. but link it in the list starting with +! * au_pending_free_buf/ap_pending_free_win, using b_next/w_next. +! * Free the buffer/window when autocmd_busy is being set to FALSE. */ + EXTERN buf_T *au_pending_free_buf INIT(= NULL); ++ EXTERN win_T *au_pending_free_win INIT(= NULL); + #endif + + #ifdef FEAT_MOUSE +*** ../vim-7.4.319/src/window.c 2014-06-12 11:49:42.219470717 +0200 +--- src/window.c 2014-06-12 13:51:54.939748124 +0200 +*************** +*** 4597,4603 **** + if (wp != aucmd_win) + #endif + win_remove(wp, tp); +! vim_free(wp); + + #ifdef FEAT_AUTOCMD + unblock_autocmds(); +--- 4597,4609 ---- + if (wp != aucmd_win) + #endif + win_remove(wp, tp); +! if (autocmd_busy) +! { +! wp->w_next = au_pending_free_win; +! au_pending_free_win = wp; +! } +! else +! vim_free(wp); + + #ifdef FEAT_AUTOCMD + unblock_autocmds(); +*** ../vim-7.4.319/src/version.c 2014-06-12 13:28:26.771694851 +0200 +--- src/version.c 2014-06-12 13:40:23.507721966 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 320, + /**/ + +-- +Life would be so much easier if we could just look at the source code. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.321 b/SOURCES/7.4.321 new file mode 100644 index 0000000..eaac413 --- /dev/null +++ b/SOURCES/7.4.321 @@ -0,0 +1,71 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.321 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.321 +Problem: Can't build with strawberry perl 5.20 + mingw-w64-4.9.0. +Solution: Define save_strlen. (Ken Takata) +Files: src/if_perl.xs + + +*** ../vim-7.4.320/src/if_perl.xs 2014-03-12 17:08:01.508807656 +0100 +--- src/if_perl.xs 2014-06-12 16:02:25.584044368 +0200 +*************** +*** 191,196 **** +--- 191,199 ---- + # define Perl_pop_scope dll_Perl_pop_scope + # define Perl_push_scope dll_Perl_push_scope + # define Perl_save_int dll_Perl_save_int ++ # if (PERL_REVISION == 5) && (PERL_VERSION >= 20) ++ # define Perl_save_strlen dll_Perl_save_strlen ++ # endif + # define Perl_stack_grow dll_Perl_stack_grow + # define Perl_set_context dll_Perl_set_context + # if (PERL_REVISION == 5) && (PERL_VERSION >= 14) +*************** +*** 311,316 **** +--- 314,322 ---- + static void (*Perl_pop_scope)(pTHX); + static void (*Perl_push_scope)(pTHX); + static void (*Perl_save_int)(pTHX_ int*); ++ #if (PERL_REVISION == 5) && (PERL_VERSION >= 20) ++ static void (*Perl_save_strlen)(pTHX_ STRLEN* ptr); ++ #endif + static SV** (*Perl_stack_grow)(pTHX_ SV**, SV**p, int); + static SV** (*Perl_set_context)(void*); + #if (PERL_REVISION == 5) && (PERL_VERSION >= 14) +*************** +*** 440,445 **** +--- 446,454 ---- + {"Perl_pop_scope", (PERL_PROC*)&Perl_pop_scope}, + {"Perl_push_scope", (PERL_PROC*)&Perl_push_scope}, + {"Perl_save_int", (PERL_PROC*)&Perl_save_int}, ++ #if (PERL_REVISION == 5) && (PERL_VERSION >= 20) ++ {"Perl_save_strlen", (PERL_PROC*)&Perl_save_strlen}, ++ #endif + {"Perl_stack_grow", (PERL_PROC*)&Perl_stack_grow}, + {"Perl_set_context", (PERL_PROC*)&Perl_set_context}, + #if (PERL_REVISION == 5) && (PERL_VERSION >= 14) +*** ../vim-7.4.320/src/version.c 2014-06-12 14:01:27.583769788 +0200 +--- src/version.c 2014-06-12 16:02:37.156044806 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 321, + /**/ + +-- +Microsoft's definition of a boolean: TRUE, FALSE, MAYBE +"Embrace and extend"...? + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.322 b/SOURCES/7.4.322 new file mode 100644 index 0000000..6c12b61 --- /dev/null +++ b/SOURCES/7.4.322 @@ -0,0 +1,92 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.322 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.322 +Problem: Using "msgfmt" is hard coded, cannot use "gmsgfmt". +Solution: Use the msgfmt command found by configure. (Danek Duvall) +Files: src/config.mk.in, src/po/Makefile + + +*** ../vim-7.4.321/src/config.mk.in 2010-11-03 22:26:24.000000000 +0100 +--- src/config.mk.in 2014-06-12 17:41:12.892268607 +0200 +*************** +*** 164,169 **** +--- 164,171 ---- + ### If the *.po files are to be translated to *.mo files. + MAKEMO = @MAKEMO@ + ++ MSGFMT = @MSGFMT@ ++ + # Make sure that "make first" will run "make all" once configure has done its + # work. This is needed when using the Makefile in the top directory. + first: all +*** ../vim-7.4.321/src/po/Makefile 2013-06-23 13:26:12.000000000 +0200 +--- src/po/Makefile 2014-06-12 17:45:19.116277922 +0200 +*************** +*** 1,5 **** +--- 1,8 ---- + # Makefile for the Vim message translations. + ++ # Include stuff found by configure. ++ include ../auto/config.mk ++ + # TODO make this configurable + # Note: ja.sjis, *.cp1250 and zh_CN.cp936 are only for MS-Windows, they are + # not installed on Unix +*************** +*** 133,139 **** + # tools 0.10.37, which use a slightly different .po file format that is not + # compatible with Solaris (and old gettext implementations) unless these are + # set. gettext 0.10.36 will not work! +! MSGFMT = OLD_PO_FILE_INPUT=yes msgfmt -v + XGETTEXT = OLD_PO_FILE_INPUT=yes OLD_PO_FILE_OUTPUT=yes xgettext + MSGMERGE = OLD_PO_FILE_INPUT=yes OLD_PO_FILE_OUTPUT=yes msgmerge + +--- 136,142 ---- + # tools 0.10.37, which use a slightly different .po file format that is not + # compatible with Solaris (and old gettext implementations) unless these are + # set. gettext 0.10.36 will not work! +! MSGFMTCMD = OLD_PO_FILE_INPUT=yes $(MSGFMT) -v + XGETTEXT = OLD_PO_FILE_INPUT=yes OLD_PO_FILE_OUTPUT=yes xgettext + MSGMERGE = OLD_PO_FILE_INPUT=yes OLD_PO_FILE_OUTPUT=yes msgmerge + +*************** +*** 142,148 **** + .PHONY: all install uninstall prefixcheck converted check clean checkclean distclean update-po $(LANGUAGES) $(CONVERTED) + + .po.mo: +! $(MSGFMT) -o $@ $< + + .po.ck: + $(VIM) -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq $< +--- 145,151 ---- + .PHONY: all install uninstall prefixcheck converted check clean checkclean distclean update-po $(LANGUAGES) $(CONVERTED) + + .po.mo: +! $(MSGFMTCMD) -o $@ $< + + .po.ck: + $(VIM) -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq $< +*** ../vim-7.4.321/src/version.c 2014-06-12 16:03:24.268046589 +0200 +--- src/version.c 2014-06-12 17:42:27.584271433 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 322, + /**/ + +-- +If I tell you "you have a beautiful body", would you hold it against me? + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.323 b/SOURCES/7.4.323 new file mode 100644 index 0000000..3faac9c --- /dev/null +++ b/SOURCES/7.4.323 @@ -0,0 +1,96 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.323 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.323 +Problem: Substitute() with zero width pattern breaks multi-byte character. +Solution: Take multi-byte character size into account. (Yukihiro Nakadaira) +Files: src/eval.c src/testdir/test69.in, src/testdir/test69.ok + + +*** ../vim-7.4.322/src/eval.c 2014-05-28 20:31:37.496292805 +0200 +--- src/eval.c 2014-06-12 18:34:22.928389291 +0200 +*************** +*** 24848,24855 **** + if (zero_width == regmatch.startp[0]) + { + /* avoid getting stuck on a match with an empty string */ +! *((char_u *)ga.ga_data + ga.ga_len) = *tail++; +! ++ga.ga_len; + continue; + } + zero_width = regmatch.startp[0]; +--- 24848,24858 ---- + if (zero_width == regmatch.startp[0]) + { + /* avoid getting stuck on a match with an empty string */ +! i = MB_PTR2LEN(tail); +! mch_memmove((char_u *)ga.ga_data + ga.ga_len, tail, +! (size_t)i); +! ga.ga_len += i; +! tail += i; + continue; + } + zero_width = regmatch.startp[0]; +*** ../vim-7.4.322/src/testdir/test69.in 2014-02-22 23:49:30.268896843 +0100 +--- src/testdir/test69.in 2014-06-12 18:32:43.108385514 +0200 +*************** +*** 180,185 **** +--- 180,192 ---- + byteidxcomp + + STARTTEST ++ /^substitute ++ :let y = substitute('123', '\zs', 'a', 'g') | put =y ++ ENDTEST ++ ++ substitute ++ ++ STARTTEST + :g/^STARTTEST/.,/^ENDTEST/d + :1;/^Results/,$wq! test.out + ENDTEST +*** ../vim-7.4.322/src/testdir/test69.ok 2014-02-22 23:49:30.268896843 +0100 +--- src/testdir/test69.ok 2014-06-12 18:32:43.108385514 +0200 +*************** +*** 160,162 **** +--- 160,166 ---- + [0, 1, 3, 4, -1] + [0, 1, 2, 4, 5, -1] + ++ ++ substitute ++ a1a2a3a ++ +*** ../vim-7.4.322/src/version.c 2014-06-12 18:03:24.940319000 +0200 +--- src/version.c 2014-06-12 18:32:08.356384200 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 323, + /**/ + +-- + When danger reared its ugly head, + He bravely turned his tail and fled + Yes, Brave Sir Robin turned about + And gallantly he chickened out + Bravely taking to his feet + He beat a very brave retreat + Bravest of the brave Sir Robin + Petrified of being dead + Soiled his pants then brave Sir Robin + Turned away and fled. + "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.324 b/SOURCES/7.4.324 new file mode 100644 index 0000000..7418d06 --- /dev/null +++ b/SOURCES/7.4.324 @@ -0,0 +1,190 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.324 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.324 +Problem: In Ex mode, cyrillic characters are not handled. (Stas Malavin) +Solution: Support multi-byte characters in Ex mode. (Yukihiro Nakadaira) +Files: src/ex_getln.c + + +*** ../vim-7.4.323/src/ex_getln.c 2014-05-29 14:36:26.156862577 +0200 +--- src/ex_getln.c 2014-06-12 19:33:10.440522741 +0200 +*************** +*** 2188,2193 **** +--- 2188,2194 ---- + int vcol = 0; + char_u *p; + int prev_char; ++ int len; + + /* Switch cursor on now. This avoids that it happens after the "\n", which + * confuses the system function that computes tabstops. */ +*************** +*** 2264,2270 **** + { + if (line_ga.ga_len > 0) + { +! --line_ga.ga_len; + goto redraw; + } + continue; +--- 2265,2281 ---- + { + if (line_ga.ga_len > 0) + { +! #ifdef FEAT_MBYTE +! if (has_mbyte) +! { +! p = (char_u *)line_ga.ga_data; +! p[line_ga.ga_len] = NUL; +! len = (*mb_head_off)(p, p + line_ga.ga_len - 1) + 1; +! line_ga.ga_len -= len; +! } +! else +! #endif +! --line_ga.ga_len; + goto redraw; + } + continue; +*************** +*** 2280,2286 **** + + if (c1 == Ctrl_T) + { +! long sw = get_sw_value(curbuf); + + p = (char_u *)line_ga.ga_data; + p[line_ga.ga_len] = NUL; +--- 2291,2297 ---- + + if (c1 == Ctrl_T) + { +! long sw = get_sw_value(curbuf); + + p = (char_u *)line_ga.ga_data; + p[line_ga.ga_len] = NUL; +*************** +*** 2300,2307 **** + /* redraw the line */ + msg_col = startcol; + vcol = 0; +! for (p = (char_u *)line_ga.ga_data; +! p < (char_u *)line_ga.ga_data + line_ga.ga_len; ++p) + { + if (*p == TAB) + { +--- 2311,2319 ---- + /* redraw the line */ + msg_col = startcol; + vcol = 0; +! p = (char_u *)line_ga.ga_data; +! p[line_ga.ga_len] = NUL; +! while (p < (char_u *)line_ga.ga_data + line_ga.ga_len) + { + if (*p == TAB) + { +*************** +*** 2309,2319 **** + { + msg_putchar(' '); + } while (++vcol % 8); + } + else + { +! msg_outtrans_len(p, 1); +! vcol += char2cells(*p); + } + } + msg_clr_eos(); +--- 2321,2334 ---- + { + msg_putchar(' '); + } while (++vcol % 8); ++ ++p; + } + else + { +! len = MB_PTR2LEN(p); +! msg_outtrans_len(p, len); +! vcol += ptr2cells(p); +! p += len; + } + } + msg_clr_eos(); +*************** +*** 2362,2368 **** + + if (IS_SPECIAL(c1)) + c1 = '?'; +! ((char_u *)line_ga.ga_data)[line_ga.ga_len] = c1; + if (c1 == '\n') + msg_putchar('\n'); + else if (c1 == TAB) +--- 2377,2392 ---- + + if (IS_SPECIAL(c1)) + c1 = '?'; +! #ifdef FEAT_MBYTE +! if (has_mbyte) +! len = (*mb_char2bytes)(c1, +! (char_u *)line_ga.ga_data + line_ga.ga_len); +! else +! #endif +! { +! len = 1; +! ((char_u *)line_ga.ga_data)[line_ga.ga_len] = c1; +! } + if (c1 == '\n') + msg_putchar('\n'); + else if (c1 == TAB) +*************** +*** 2376,2385 **** + else + { + msg_outtrans_len( +! ((char_u *)line_ga.ga_data) + line_ga.ga_len, 1); + vcol += char2cells(c1); + } +! ++line_ga.ga_len; + escaped = FALSE; + + windgoto(msg_row, msg_col); +--- 2400,2409 ---- + else + { + msg_outtrans_len( +! ((char_u *)line_ga.ga_data) + line_ga.ga_len, len); + vcol += char2cells(c1); + } +! line_ga.ga_len += len; + escaped = FALSE; + + windgoto(msg_row, msg_col); +*** ../vim-7.4.323/src/version.c 2014-06-12 18:39:16.828400409 +0200 +--- src/version.c 2014-06-12 19:37:40.296532950 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 324, + /**/ + +-- +ZOOT: I'm afraid our life must seem very dull and quiet compared to yours. + We are but eightscore young blondes, all between sixteen and + nineteen-and-a-half, cut off in this castle, with no one to protect us. + Oooh. It is a lonely life ... bathing ... dressing ... undressing ... + making exciting underwear.... + "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.325 b/SOURCES/7.4.325 new file mode 100644 index 0000000..5482a1d --- /dev/null +++ b/SOURCES/7.4.325 @@ -0,0 +1,62 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.325 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.325 +Problem: When starting the gui and changing the window size the status line + may not be drawn correctly. +Solution: Catch new_win_height() being called recursively. (Christian + Brabandt) +Files: src/window.c + + +*** ../vim-7.4.324/src/window.c 2014-06-12 14:01:27.579769788 +0200 +--- src/window.c 2014-06-13 20:04:59.051863582 +0200 +*************** +*** 5660,5666 **** + if (wp->w_height > 0) + { + if (wp == curwin) +! validate_cursor(); /* w_wrow needs to be valid */ + if (wp->w_wrow != wp->w_prev_fraction_row) + set_fraction(wp); + } +--- 5660,5671 ---- + if (wp->w_height > 0) + { + if (wp == curwin) +! /* w_wrow needs to be valid. When setting 'laststatus' this may +! * call win_new_height() recursively. */ +! validate_cursor(); +! if (wp->w_height != prev_height) +! return; /* Recursive call already changed the size, bail out here +! to avoid the following to mess things up. */ + if (wp->w_wrow != wp->w_prev_fraction_row) + set_fraction(wp); + } +*** ../vim-7.4.324/src/version.c 2014-06-12 19:44:45.324549030 +0200 +--- src/version.c 2014-06-13 20:06:12.947866378 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 325, + /**/ + +-- +DINGO: And after the spanking ... the oral sex. +GALAHAD: Oh, dear! Well, I... +GIRLS: The oral sex ... The oral sex. +GALAHAD: Well, I suppose I could stay a BIT longer. + "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.326 b/SOURCES/7.4.326 new file mode 100644 index 0000000..da62b68 --- /dev/null +++ b/SOURCES/7.4.326 @@ -0,0 +1,51 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.326 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.326 +Problem: Can't build Tiny version. (Elimar Riesebieter) +Solution: Add #ifdef. +Files: src/window.c + + +*** ../vim-7.4.325/src/window.c 2014-06-13 20:08:41.295871990 +0200 +--- src/window.c 2014-06-14 12:51:00.010147123 +0200 +*************** +*** 4597,4608 **** +--- 4597,4610 ---- + if (wp != aucmd_win) + #endif + win_remove(wp, tp); ++ #ifdef FEAT_AUTOCMD + if (autocmd_busy) + { + wp->w_next = au_pending_free_win; + au_pending_free_win = wp; + } + else ++ #endif + vim_free(wp); + + #ifdef FEAT_AUTOCMD +*** ../vim-7.4.325/src/version.c 2014-06-13 20:08:41.295871990 +0200 +--- src/version.c 2014-06-14 12:53:05.134151857 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 326, + /**/ + +-- +You cannot propel yourself forward by patting yourself on the back. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.327 b/SOURCES/7.4.327 new file mode 100644 index 0000000..a797dd7 --- /dev/null +++ b/SOURCES/7.4.327 @@ -0,0 +1,163 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.327 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.327 +Problem: When 'verbose' is set to display the return value of a function, + may get E724 repeatedly. +Solution: Do not give an error for verbose messages. Abort conversion to + string after an error. +Files: src/eval.c + + +*** ../vim-7.4.326/src/eval.c 2014-06-12 18:39:16.828400409 +0200 +--- src/eval.c 2014-06-17 12:48:12.083946675 +0200 +*************** +*** 134,139 **** +--- 134,142 ---- + #define COPYID_INC 2 + #define COPYID_MASK (~0x1) + ++ /* Abort conversion to string after a recursion error. */ ++ static int did_echo_string_emsg = FALSE; ++ + /* + * Array to hold the hashtab with variables local to each sourced script. + * Each item holds a variable (nameless) that points to the dict_T. +*************** +*** 6686,6691 **** +--- 6689,6696 ---- + } + + line_breakcheck(); ++ if (did_echo_string_emsg) /* recursion error, bail out */ ++ break; + } + + /* Allocate result buffer with its total size, avoid re-allocation and +*************** +*** 7460,7467 **** + if (s != NULL) + ga_concat(&ga, s); + vim_free(tofree); +! if (s == NULL) + break; + } + } + if (todo > 0) +--- 7465,7474 ---- + if (s != NULL) + ga_concat(&ga, s); + vim_free(tofree); +! if (s == NULL || did_echo_string_emsg) + break; ++ line_breakcheck(); ++ + } + } + if (todo > 0) +*************** +*** 7619,7627 **** + + if (recurse >= DICT_MAXNEST) + { +! EMSG(_("E724: variable nested too deep for displaying")); + *tofree = NULL; +! return NULL; + } + ++recurse; + +--- 7626,7641 ---- + + if (recurse >= DICT_MAXNEST) + { +! if (!did_echo_string_emsg) +! { +! /* Only give this message once for a recursive call to avoid +! * flooding the user with errors. And stop iterating over lists +! * and dicts. */ +! did_echo_string_emsg = TRUE; +! EMSG(_("E724: variable nested too deep for displaying")); +! } + *tofree = NULL; +! return (char_u *)"{E724}"; + } + ++recurse; + +*************** +*** 7689,7695 **** + *tofree = NULL; + } + +! --recurse; + return r; + } + +--- 7703,7710 ---- + *tofree = NULL; + } + +! if (--recurse == 0) +! did_echo_string_emsg = FALSE; + return r; + } + +*************** +*** 23303,23309 **** +--- 23318,23327 ---- + msg_outnum((long)argvars[i].vval.v_number); + else + { ++ /* Do not want errors such as E724 here. */ ++ ++emsg_off; + s = tv2string(&argvars[i], &tofree, numbuf2, 0); ++ --emsg_off; + if (s != NULL) + { + if (vim_strsize(s) > MSG_BUF_CLEN) +*************** +*** 23395,23402 **** + + /* The value may be very long. Skip the middle part, so that we + * have some idea how it starts and ends. smsg() would always +! * truncate it at the end. */ + s = tv2string(fc->rettv, &tofree, numbuf2, 0); + if (s != NULL) + { + if (vim_strsize(s) > MSG_BUF_CLEN) +--- 23413,23422 ---- + + /* The value may be very long. Skip the middle part, so that we + * have some idea how it starts and ends. smsg() would always +! * truncate it at the end. Don't want errors such as E724 here. */ +! ++emsg_off; + s = tv2string(fc->rettv, &tofree, numbuf2, 0); ++ --emsg_off; + if (s != NULL) + { + if (vim_strsize(s) > MSG_BUF_CLEN) +*** ../vim-7.4.326/src/version.c 2014-06-14 12:53:27.394152699 +0200 +--- src/version.c 2014-06-17 12:41:45.019932032 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 327, + /**/ + +-- +TALL KNIGHT: We shall say Ni! again to you if you do not appease us. +ARTHUR: All right! What do you want? +TALL KNIGHT: We want ... a shrubbery! + "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.328 b/SOURCES/7.4.328 new file mode 100644 index 0000000..d1f8c49 --- /dev/null +++ b/SOURCES/7.4.328 @@ -0,0 +1,82 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.328 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.328 +Problem: Selection of inner block is inconsistent. +Solution: Skip indent not only for '}' but all parens. (Tom McDonald) +Files: src/search.c + + +*** ../vim-7.4.327/src/search.c 2014-03-23 15:12:29.935264336 +0100 +--- src/search.c 2014-06-17 12:37:49.075923106 +0200 +*************** +*** 3608,3628 **** + + /* + * Try to exclude the '(', '{', ')', '}', etc. when "include" is FALSE. +! * If the ending '}' is only preceded by indent, skip that indent. +! * But only if the resulting area is not smaller than what we started with. + */ + while (!include) + { + incl(&start_pos); + sol = (curwin->w_cursor.col == 0); + decl(&curwin->w_cursor); +! if (what == '{') +! while (inindent(1)) +! { +! sol = TRUE; +! if (decl(&curwin->w_cursor) != 0) +! break; +! } + /* + * In Visual mode, when the resulting area is not bigger than what we + * started with, extend it to the next block, and then exclude again. +--- 3608,3629 ---- + + /* + * Try to exclude the '(', '{', ')', '}', etc. when "include" is FALSE. +! * If the ending '}', ')' or ']' is only preceded by indent, skip that +! * indent. But only if the resulting area is not smaller than what we +! * started with. + */ + while (!include) + { + incl(&start_pos); + sol = (curwin->w_cursor.col == 0); + decl(&curwin->w_cursor); +! while (inindent(1)) +! { +! sol = TRUE; +! if (decl(&curwin->w_cursor) != 0) +! break; +! } +! + /* + * In Visual mode, when the resulting area is not bigger than what we + * started with, extend it to the next block, and then exclude again. +*** ../vim-7.4.327/src/version.c 2014-06-17 12:51:13.207953527 +0200 +--- src/version.c 2014-06-17 12:52:35.279956632 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 328, + /**/ + +-- +FATHER: One day, lad, all this will be yours ... +PRINCE: What - the curtains? + "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.329 b/SOURCES/7.4.329 new file mode 100644 index 0000000..0fd9bad --- /dev/null +++ b/SOURCES/7.4.329 @@ -0,0 +1,55 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.329 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.329 +Problem: When moving the cursor and then switching to another window the + previous window isn't scrolled. (Yukihiro Nakadaira) +Solution: Call update_topline() before leaving the window. (Christian + Brabandt) +Files: src/window.c + + +*** ../vim-7.4.328/src/window.c 2014-06-14 12:53:27.394152699 +0200 +--- src/window.c 2014-06-17 13:44:48.812075178 +0200 +*************** +*** 4250,4255 **** +--- 4250,4260 ---- + /* sync undo before leaving the current buffer */ + if (undo_sync && curbuf != wp->w_buffer) + u_sync(FALSE); ++ ++ /* Might need to scroll the old window before switching, e.g., when the ++ * cursor was moved. */ ++ update_topline(); ++ + /* may have to copy the buffer options when 'cpo' contains 'S' */ + if (wp->w_buffer != curbuf) + buf_copy_options(wp->w_buffer, BCO_ENTER | BCO_NOHELP); +*** ../vim-7.4.328/src/version.c 2014-06-17 13:50:06.148087184 +0200 +--- src/version.c 2014-06-17 13:51:09.960089598 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 329, + /**/ + +-- +FATHER: Make sure the Prince doesn't leave this room until I come and + get him. +FIRST GUARD: Not ... to leave the room ... even if you come and get him. +FATHER: No. Until I come and get him. +SECOND GUARD: Hic. + "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.330 b/SOURCES/7.4.330 new file mode 100644 index 0000000..360d20c --- /dev/null +++ b/SOURCES/7.4.330 @@ -0,0 +1,1131 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.330 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.330 +Problem: Using a regexp pattern to highlight a specific position can be + slow. +Solution: Add matchaddpos() to highlight specific positions efficiently. + (Alexey Radkov) +Files: runtime/doc/eval.txt, runtime/doc/usr_41.txt, + runtime/plugin/matchparen.vim, src/eval.c, src/ex_docmd.c, + src/proto/window.pro, src/screen.c, src/structs.h, + src/testdir/test63.in, src/testdir/test63.ok, src/window.c + + +*** ../vim-7.4.329/runtime/doc/eval.txt 2014-05-28 20:31:37.500292805 +0200 +--- runtime/doc/eval.txt 2014-06-17 16:31:35.572453748 +0200 +*************** +*** 1887,1892 **** +--- 1887,1894 ---- + Number position where {pat} matches in {expr} + matchadd( {group}, {pattern}[, {priority}[, {id}]]) + Number highlight {pattern} with {group} ++ matchaddpos( {group}, {list}[, {priority}[, {id}]]) ++ Number highlight positions with {group} + matcharg( {nr}) List arguments of |:match| + matchdelete( {id}) Number delete match identified by {id} + matchend( {expr}, {pat}[, {start}[, {count}]]) +*************** +*** 4342,4347 **** +--- 4382,4422 ---- + available from |getmatches()|. All matches can be deleted in + one operation by |clearmatches()|. + ++ matchaddpos({group}, {pos}[, {priority}[, {id}]]) *matchaddpos()* ++ Same as |matchadd()|, but requires a list of positions {pos} ++ instead of a pattern. This command is faster than |matchadd()| ++ because it does not require to handle regular expressions and ++ sets buffer line boundaries to redraw screen. It is supposed ++ to be used when fast match additions and deletions are ++ required, for example to highlight matching parentheses. ++ ++ The list {pos} can contain one of these items: ++ - A number. This while line will be highlighted. The first ++ line has number 1. ++ - A list with one number, e.g., [23]. The whole line with this ++ number will be highlighted. ++ - A list with two numbers, e.g., [23, 11]. The first number is ++ the line number, the second one the column number (first ++ column is 1). The character at this position will be ++ highlighted. ++ - A list with three numbers, e.g., [23, 11, 3]. As above, but ++ the third number gives the length of the highlight in screen ++ cells. ++ ++ The maximum number of positions is 8. ++ ++ Example: > ++ :highlight MyGroup ctermbg=green guibg=green ++ :let m = matchaddpos("MyGroup", [[23, 24], 34]) ++ < Deletion of the pattern: > ++ :call matchdelete(m) ++ ++ < Matches added by |matchaddpos()| are returned by ++ |getmatches()| with an entry "pos1", "pos2", etc., with the ++ value a list like the {pos} item. ++ These matches cannot be set via |setmatches()|, however they ++ can still be deleted by |clearmatches()|. ++ + matcharg({nr}) *matcharg()* + Selects the {nr} match item, as set with a |:match|, + |:2match| or |:3match| command. +*** ../vim-7.4.329/runtime/doc/usr_41.txt 2014-05-28 18:22:37.872225054 +0200 +--- runtime/doc/usr_41.txt 2014-06-17 14:06:44.836124965 +0200 +*************** +*** 824,829 **** +--- 827,833 ---- + synconcealed() get info about concealing + diff_hlID() get highlight ID for diff mode at a position + matchadd() define a pattern to highlight (a "match") ++ matchaddpos() define a list of positions to highlight + matcharg() get info about |:match| arguments + matchdelete() delete a match defined by |matchadd()| or a + |:match| command +*** ../vim-7.4.329/runtime/plugin/matchparen.vim 2013-05-08 05:15:53.000000000 +0200 +--- runtime/plugin/matchparen.vim 2014-06-17 14:14:45.712143158 +0200 +*************** +*** 1,6 **** + " Vim plugin for showing matching parens + " Maintainer: Bram Moolenaar <Bram@vim.org> +! " Last Change: 2013 May 08 + + " Exit quickly when: + " - this plugin was already loaded (or disabled) +--- 1,6 ---- + " Vim plugin for showing matching parens + " Maintainer: Bram Moolenaar <Bram@vim.org> +! " Last Change: 2014 Jun 17 + + " Exit quickly when: + " - this plugin was already loaded (or disabled) +*************** +*** 39,45 **** + function! s:Highlight_Matching_Pair() + " Remove any previous match. + if exists('w:paren_hl_on') && w:paren_hl_on +! 3match none + let w:paren_hl_on = 0 + endif + +--- 39,45 ---- + function! s:Highlight_Matching_Pair() + " Remove any previous match. + if exists('w:paren_hl_on') && w:paren_hl_on +! silent! call matchdelete(3) + let w:paren_hl_on = 0 + endif + +*************** +*** 152,165 **** + + " If a match is found setup match highlighting. + if m_lnum > 0 && m_lnum >= stoplinetop && m_lnum <= stoplinebottom +! exe '3match MatchParen /\(\%' . c_lnum . 'l\%' . (c_col - before) . +! \ 'c\)\|\(\%' . m_lnum . 'l\%' . m_col . 'c\)/' + let w:paren_hl_on = 1 + endif + endfunction + + " Define commands that will disable and enable the plugin. +! command! NoMatchParen windo 3match none | unlet! g:loaded_matchparen | + \ au! matchparen + command! DoMatchParen runtime plugin/matchparen.vim | windo doau CursorMoved + +--- 152,169 ---- + + " If a match is found setup match highlighting. + if m_lnum > 0 && m_lnum >= stoplinetop && m_lnum <= stoplinebottom +! if exists('*matchaddpos') +! call matchaddpos('MatchParen', [[c_lnum, c_col - before], [m_lnum, m_col]], 10, 3) +! else +! exe '3match MatchParen /\(\%' . c_lnum . 'l\%' . (c_col - before) . +! \ 'c\)\|\(\%' . m_lnum . 'l\%' . m_col . 'c\)/' +! endif + let w:paren_hl_on = 1 + endif + endfunction + + " Define commands that will disable and enable the plugin. +! command! NoMatchParen windo silent! call matchdelete(3) | unlet! g:loaded_matchparen | + \ au! matchparen + command! DoMatchParen runtime plugin/matchparen.vim | windo doau CursorMoved + +*** ../vim-7.4.329/src/eval.c 2014-06-17 12:51:13.207953527 +0200 +--- src/eval.c 2014-06-17 17:02:25.388523729 +0200 +*************** +*** 622,627 **** +--- 622,628 ---- + static void f_mapcheck __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_match __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_matchadd __ARGS((typval_T *argvars, typval_T *rettv)); ++ static void f_matchaddpos __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_matcharg __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_matchdelete __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_matchend __ARGS((typval_T *argvars, typval_T *rettv)); +*************** +*** 8054,8059 **** +--- 8055,8061 ---- + {"mapcheck", 1, 3, f_mapcheck}, + {"match", 2, 4, f_match}, + {"matchadd", 2, 4, f_matchadd}, ++ {"matchaddpos", 2, 4, f_matchaddpos}, + {"matcharg", 1, 1, f_matcharg}, + {"matchdelete", 1, 1, f_matchdelete}, + {"matchend", 2, 4, f_matchend}, +*************** +*** 11767,11772 **** +--- 11769,11775 ---- + #ifdef FEAT_SEARCH_EXTRA + dict_T *dict; + matchitem_T *cur = curwin->w_match_head; ++ int i; + + if (rettv_list_alloc(rettv) == OK) + { +*************** +*** 11775,11782 **** + dict = dict_alloc(); + if (dict == NULL) + return; + dict_add_nr_str(dict, "group", 0L, syn_id2name(cur->hlg_id)); +- dict_add_nr_str(dict, "pattern", 0L, cur->pattern); + dict_add_nr_str(dict, "priority", (long)cur->priority, NULL); + dict_add_nr_str(dict, "id", (long)cur->id, NULL); + list_append_dict(rettv->vval.v_list, dict); +--- 11778,11813 ---- + dict = dict_alloc(); + if (dict == NULL) + return; ++ if (cur->match.regprog == NULL) ++ { ++ /* match added with matchaddpos() */ ++ for (i = 0; i < MAXPOSMATCH; ++i) ++ { ++ llpos_T *llpos; ++ char buf[6]; ++ list_T *l; ++ ++ llpos = &cur->pos.pos[i]; ++ if (llpos->lnum == 0) ++ break; ++ l = list_alloc(); ++ if (l == NULL) ++ break; ++ list_append_number(l, (varnumber_T)llpos->lnum); ++ if (llpos->col > 0) ++ { ++ list_append_number(l, (varnumber_T)llpos->col); ++ list_append_number(l, (varnumber_T)llpos->len); ++ } ++ sprintf(buf, "pos%d", i + 1); ++ dict_add_list(dict, buf, l); ++ } ++ } ++ else ++ { ++ dict_add_nr_str(dict, "pattern", 0L, cur->pattern); ++ } + dict_add_nr_str(dict, "group", 0L, syn_id2name(cur->hlg_id)); + dict_add_nr_str(dict, "priority", (long)cur->priority, NULL); + dict_add_nr_str(dict, "id", (long)cur->id, NULL); + list_append_dict(rettv->vval.v_list, dict); +*************** +*** 14313,14319 **** + return; + } + +! rettv->vval.v_number = match_add(curwin, grp, pat, prio, id); + #endif + } + +--- 14344,14401 ---- + return; + } + +! rettv->vval.v_number = match_add(curwin, grp, pat, prio, id, NULL); +! #endif +! } +! +! /* +! * "matchaddpos()" function +! */ +! static void +! f_matchaddpos(argvars, rettv) +! typval_T *argvars UNUSED; +! typval_T *rettv UNUSED; +! { +! #ifdef FEAT_SEARCH_EXTRA +! char_u buf[NUMBUFLEN]; +! char_u *group; +! int prio = 10; +! int id = -1; +! int error = FALSE; +! list_T *l; +! +! rettv->vval.v_number = -1; +! +! group = get_tv_string_buf_chk(&argvars[0], buf); +! if (group == NULL) +! return; +! +! if (argvars[1].v_type != VAR_LIST) +! { +! EMSG2(_(e_listarg), "matchaddpos()"); +! return; +! } +! l = argvars[1].vval.v_list; +! if (l == NULL) +! return; +! +! if (argvars[2].v_type != VAR_UNKNOWN) +! { +! prio = get_tv_number_chk(&argvars[2], &error); +! if (argvars[3].v_type != VAR_UNKNOWN) +! id = get_tv_number_chk(&argvars[3], &error); +! } +! if (error == TRUE) +! return; +! +! /* id == 3 is ok because matchaddpos() is supposed to substitute :3match */ +! if (id == 1 || id == 2) +! { +! EMSGN("E798: ID is reserved for \":match\": %ld", id); +! return; +! } +! +! rettv->vval.v_number = match_add(curwin, group, NULL, prio, id, l); + #endif + } + +*************** +*** 16816,16822 **** + match_add(curwin, get_dict_string(d, (char_u *)"group", FALSE), + get_dict_string(d, (char_u *)"pattern", FALSE), + (int)get_dict_number(d, (char_u *)"priority"), +! (int)get_dict_number(d, (char_u *)"id")); + li = li->li_next; + } + rettv->vval.v_number = 0; +--- 16898,16904 ---- + match_add(curwin, get_dict_string(d, (char_u *)"group", FALSE), + get_dict_string(d, (char_u *)"pattern", FALSE), + (int)get_dict_number(d, (char_u *)"priority"), +! (int)get_dict_number(d, (char_u *)"id"), NULL); + li = li->li_next; + } + rettv->vval.v_number = 0; +*** ../vim-7.4.329/src/ex_docmd.c 2014-05-28 18:22:37.876225054 +0200 +--- src/ex_docmd.c 2014-06-17 14:06:44.844124966 +0200 +*************** +*** 11489,11495 **** + + c = *end; + *end = NUL; +! match_add(curwin, g, p + 1, 10, id); + vim_free(g); + *end = c; + } +--- 11489,11495 ---- + + c = *end; + *end = NUL; +! match_add(curwin, g, p + 1, 10, id, NULL); + vim_free(g); + *end = c; + } +*** ../vim-7.4.329/src/proto/window.pro 2013-08-14 17:11:14.000000000 +0200 +--- src/proto/window.pro 2014-06-17 14:06:44.844124966 +0200 +*************** +*** 75,81 **** + void switch_buffer __ARGS((buf_T **save_curbuf, buf_T *buf)); + void restore_buffer __ARGS((buf_T *save_curbuf)); + int win_hasvertsplit __ARGS((void)); +! int match_add __ARGS((win_T *wp, char_u *grp, char_u *pat, int prio, int id)); + int match_delete __ARGS((win_T *wp, int id, int perr)); + void clear_matches __ARGS((win_T *wp)); + matchitem_T *get_match __ARGS((win_T *wp, int id)); +--- 75,81 ---- + void switch_buffer __ARGS((buf_T **save_curbuf, buf_T *buf)); + void restore_buffer __ARGS((buf_T *save_curbuf)); + int win_hasvertsplit __ARGS((void)); +! int match_add __ARGS((win_T *wp, char_u *grp, char_u *pat, int prio, int id, list_T *pos)); + int match_delete __ARGS((win_T *wp, int id, int perr)); + void clear_matches __ARGS((win_T *wp)); + matchitem_T *get_match __ARGS((win_T *wp, int id)); +*** ../vim-7.4.329/src/screen.c 2014-05-28 21:40:47.092329130 +0200 +--- src/screen.c 2014-06-17 17:04:08.064527614 +0200 +*************** +*** 144,150 **** + static void end_search_hl __ARGS((void)); + static void init_search_hl __ARGS((win_T *wp)); + static void prepare_search_hl __ARGS((win_T *wp, linenr_T lnum)); +! static void next_search_hl __ARGS((win_T *win, match_T *shl, linenr_T lnum, colnr_T mincol)); + #endif + static void screen_start_highlight __ARGS((int attr)); + static void screen_char __ARGS((unsigned off, int row, int col)); +--- 144,151 ---- + static void end_search_hl __ARGS((void)); + static void init_search_hl __ARGS((win_T *wp)); + static void prepare_search_hl __ARGS((win_T *wp, linenr_T lnum)); +! static void next_search_hl __ARGS((win_T *win, match_T *shl, linenr_T lnum, colnr_T mincol, matchitem_T *cur)); +! static int next_search_hl_pos __ARGS((match_T *shl, linenr_T lnum, posmatch_T *pos, colnr_T mincol)); + #endif + static void screen_start_highlight __ARGS((int attr)); + static void screen_char __ARGS((unsigned off, int row, int col)); +*************** +*** 2929,2934 **** +--- 2930,2937 ---- + match_T *shl; /* points to search_hl or a match */ + int shl_flag; /* flag to indicate whether search_hl + has been processed or not */ ++ int pos_inprogress; /* marks that position match search is ++ in progress */ + int prevcol_hl_flag; /* flag to indicate whether prevcol + equals startcol of search_hl or one + of the matches */ +*************** +*** 3439,3482 **** + shl->startcol = MAXCOL; + shl->endcol = MAXCOL; + shl->attr_cur = 0; +! if (shl->rm.regprog != NULL) +! { +! v = (long)(ptr - line); +! next_search_hl(wp, shl, lnum, (colnr_T)v); +! +! /* Need to get the line again, a multi-line regexp may have made it +! * invalid. */ +! line = ml_get_buf(wp->w_buffer, lnum, FALSE); +! ptr = line + v; + +! if (shl->lnum != 0 && shl->lnum <= lnum) + { +- if (shl->lnum == lnum) +- shl->startcol = shl->rm.startpos[0].col; +- else +- shl->startcol = 0; +- if (lnum == shl->lnum + shl->rm.endpos[0].lnum +- - shl->rm.startpos[0].lnum) +- shl->endcol = shl->rm.endpos[0].col; +- else +- shl->endcol = MAXCOL; +- /* Highlight one character for an empty match. */ +- if (shl->startcol == shl->endcol) +- { + #ifdef FEAT_MBYTE +! if (has_mbyte && line[shl->endcol] != NUL) +! shl->endcol += (*mb_ptr2len)(line + shl->endcol); +! else + #endif +! ++shl->endcol; +! } +! if ((long)shl->startcol < v) /* match at leftcol */ +! { +! shl->attr_cur = shl->attr; +! search_attr = shl->attr; +! } +! area_highlighting = TRUE; + } + } + if (shl != &search_hl && cur != NULL) + cur = cur->next; +--- 3442,3484 ---- + shl->startcol = MAXCOL; + shl->endcol = MAXCOL; + shl->attr_cur = 0; +! v = (long)(ptr - line); +! if (cur != NULL) +! cur->pos.cur = 0; +! next_search_hl(wp, shl, lnum, (colnr_T)v, cur); +! +! /* Need to get the line again, a multi-line regexp may have made it +! * invalid. */ +! line = ml_get_buf(wp->w_buffer, lnum, FALSE); +! ptr = line + v; + +! if (shl->lnum != 0 && shl->lnum <= lnum) +! { +! if (shl->lnum == lnum) +! shl->startcol = shl->rm.startpos[0].col; +! else +! shl->startcol = 0; +! if (lnum == shl->lnum + shl->rm.endpos[0].lnum +! - shl->rm.startpos[0].lnum) +! shl->endcol = shl->rm.endpos[0].col; +! else +! shl->endcol = MAXCOL; +! /* Highlight one character for an empty match. */ +! if (shl->startcol == shl->endcol) + { + #ifdef FEAT_MBYTE +! if (has_mbyte && line[shl->endcol] != NUL) +! shl->endcol += (*mb_ptr2len)(line + shl->endcol); +! else + #endif +! ++shl->endcol; + } ++ if ((long)shl->startcol < v) /* match at leftcol */ ++ { ++ shl->attr_cur = shl->attr; ++ search_attr = shl->attr; ++ } ++ area_highlighting = TRUE; + } + if (shl != &search_hl && cur != NULL) + cur = cur->next; +*************** +*** 3488,3494 **** + * when Visual mode is active, because it's not clear what is selected + * then. */ + if (wp->w_p_cul && lnum == wp->w_cursor.lnum +! && !(wp == curwin && VIsual_active)) + { + line_attr = hl_attr(HLF_CUL); + area_highlighting = TRUE; +--- 3490,3496 ---- + * when Visual mode is active, because it's not clear what is selected + * then. */ + if (wp->w_p_cul && lnum == wp->w_cursor.lnum +! && !(wp == curwin && VIsual_active)) + { + line_attr = hl_attr(HLF_CUL); + area_highlighting = TRUE; +*************** +*** 3792,3798 **** + } + else + shl = &cur->hl; +! while (shl->rm.regprog != NULL) + { + if (shl->startcol != MAXCOL + && v >= (long)shl->startcol +--- 3794,3804 ---- + } + else + shl = &cur->hl; +! if (cur != NULL) +! cur->pos.cur = 0; +! pos_inprogress = TRUE; +! while (shl->rm.regprog != NULL +! || (cur != NULL && pos_inprogress)) + { + if (shl->startcol != MAXCOL + && v >= (long)shl->startcol +*************** +*** 3803,3810 **** + else if (v == (long)shl->endcol) + { + shl->attr_cur = 0; +! +! next_search_hl(wp, shl, lnum, (colnr_T)v); + + /* Need to get the line again, a multi-line regexp + * may have made it invalid. */ +--- 3809,3817 ---- + else if (v == (long)shl->endcol) + { + shl->attr_cur = 0; +! next_search_hl(wp, shl, lnum, (colnr_T)v, cur); +! pos_inprogress = cur == NULL || cur->pos.cur == 0 +! ? FALSE : TRUE; + + /* Need to get the line again, a multi-line regexp + * may have made it invalid. */ +*************** +*** 7277,7282 **** +--- 7284,7291 ---- + match_T *shl; /* points to search_hl or a match */ + int shl_flag; /* flag to indicate whether search_hl + has been processed or not */ ++ int pos_inprogress; /* marks that position match search is ++ in progress */ + int n; + + /* +*************** +*** 7311,7320 **** + shl->first_lnum = wp->w_topline; + # endif + } + n = 0; +! while (shl->first_lnum < lnum && shl->rm.regprog != NULL) + { +! next_search_hl(wp, shl, shl->first_lnum, (colnr_T)n); + if (shl->lnum != 0) + { + shl->first_lnum = shl->lnum +--- 7320,7335 ---- + shl->first_lnum = wp->w_topline; + # endif + } ++ if (cur != NULL) ++ cur->pos.cur = 0; ++ pos_inprogress = TRUE; + n = 0; +! while (shl->first_lnum < lnum && (shl->rm.regprog != NULL +! || (cur != NULL && pos_inprogress))) + { +! next_search_hl(wp, shl, shl->first_lnum, (colnr_T)n, cur); +! pos_inprogress = cur == NULL || cur->pos.cur == 0 +! ? FALSE : TRUE; + if (shl->lnum != 0) + { + shl->first_lnum = shl->lnum +*************** +*** 7343,7353 **** + * Careful: Any pointers for buffer lines will become invalid. + */ + static void +! next_search_hl(win, shl, lnum, mincol) +! win_T *win; +! match_T *shl; /* points to search_hl or a match */ +! linenr_T lnum; +! colnr_T mincol; /* minimal column for a match */ + { + linenr_T l; + colnr_T matchcol; +--- 7358,7369 ---- + * Careful: Any pointers for buffer lines will become invalid. + */ + static void +! next_search_hl(win, shl, lnum, mincol, cur) +! win_T *win; +! match_T *shl; /* points to search_hl or a match */ +! linenr_T lnum; +! colnr_T mincol; /* minimal column for a match */ +! matchitem_T *cur; /* to retrieve match postions if any */ + { + linenr_T l; + colnr_T matchcol; +*************** +*** 7415,7440 **** + matchcol = shl->rm.endpos[0].col; + + shl->lnum = lnum; +! nmatched = vim_regexec_multi(&shl->rm, win, shl->buf, lnum, matchcol, + #ifdef FEAT_RELTIME +! &(shl->tm) + #else +! NULL + #endif +! ); +! if (called_emsg || got_int) +! { +! /* Error while handling regexp: stop using this regexp. */ +! if (shl == &search_hl) + { +! /* don't free regprog in the match list, it's a copy */ +! vim_regfree(shl->rm.regprog); +! SET_NO_HLSEARCH(TRUE); + } +! shl->rm.regprog = NULL; +! shl->lnum = 0; +! got_int = FALSE; /* avoid the "Type :quit to exit Vim" message */ +! break; + } + if (nmatched == 0) + { +--- 7431,7465 ---- + matchcol = shl->rm.endpos[0].col; + + shl->lnum = lnum; +! if (shl->rm.regprog != NULL) +! { +! nmatched = vim_regexec_multi(&shl->rm, win, shl->buf, lnum, +! matchcol, + #ifdef FEAT_RELTIME +! &(shl->tm) + #else +! NULL + #endif +! ); +! if (called_emsg || got_int) + { +! /* Error while handling regexp: stop using this regexp. */ +! if (shl == &search_hl) +! { +! /* don't free regprog in the match list, it's a copy */ +! vim_regfree(shl->rm.regprog); +! SET_NO_HLSEARCH(TRUE); +! } +! shl->rm.regprog = NULL; +! shl->lnum = 0; +! got_int = FALSE; /* avoid the "Type :quit to exit Vim" +! message */ +! break; + } +! } +! else if (cur != NULL) +! { +! nmatched = next_search_hl_pos(shl, lnum, &(cur->pos), matchcol); + } + if (nmatched == 0) + { +*************** +*** 7453,7458 **** +--- 7478,7539 ---- + } + #endif + ++ static int ++ next_search_hl_pos(shl, lnum, posmatch, mincol) ++ match_T *shl; /* points to a match */ ++ linenr_T lnum; ++ posmatch_T *posmatch; /* match positions */ ++ colnr_T mincol; /* minimal column for a match */ ++ { ++ int i; ++ int bot = -1; ++ ++ shl->lnum = 0; ++ for (i = posmatch->cur; i < MAXPOSMATCH; i++) ++ { ++ if (posmatch->pos[i].lnum == 0) ++ break; ++ if (posmatch->pos[i].col < mincol) ++ continue; ++ if (posmatch->pos[i].lnum == lnum) ++ { ++ if (shl->lnum == lnum) ++ { ++ /* partially sort positions by column numbers ++ * on the same line */ ++ if (posmatch->pos[i].col < posmatch->pos[bot].col) ++ { ++ llpos_T tmp = posmatch->pos[i]; ++ ++ posmatch->pos[i] = posmatch->pos[bot]; ++ posmatch->pos[bot] = tmp; ++ } ++ } ++ else ++ { ++ bot = i; ++ shl->lnum = lnum; ++ } ++ } ++ } ++ posmatch->cur = 0; ++ if (shl->lnum == lnum) ++ { ++ colnr_T start = posmatch->pos[bot].col == 0 ++ ? 0 : posmatch->pos[bot].col - 1; ++ colnr_T end = posmatch->pos[bot].col == 0 ++ ? MAXCOL : start + posmatch->pos[bot].len; ++ ++ shl->rm.startpos[0].lnum = 0; ++ shl->rm.startpos[0].col = start; ++ shl->rm.endpos[0].lnum = 0; ++ shl->rm.endpos[0].col = end; ++ posmatch->cur = bot + 1; ++ return TRUE; ++ } ++ return FALSE; ++ } ++ + static void + screen_start_highlight(attr) + int attr; +*** ../vim-7.4.329/src/structs.h 2014-05-28 18:22:37.876225054 +0200 +--- src/structs.h 2014-06-17 17:00:55.524520330 +0200 +*************** +*** 1927,1932 **** +--- 1927,1958 ---- + #endif + } match_T; + ++ /* number of positions supported by matchaddpos() */ ++ #define MAXPOSMATCH 8 ++ ++ /* ++ * Same as lpos_T, but with additional field len. ++ */ ++ typedef struct ++ { ++ linenr_T lnum; /* line number */ ++ colnr_T col; /* column number */ ++ int len; /* length: 0 - to the end of line */ ++ } llpos_T; ++ ++ /* ++ * posmatch_T provides an array for storing match items for matchaddpos() ++ * function. ++ */ ++ typedef struct posmatch posmatch_T; ++ struct posmatch ++ { ++ llpos_T pos[MAXPOSMATCH]; /* array of positions */ ++ int cur; /* internal position counter */ ++ linenr_T toplnum; /* top buffer line */ ++ linenr_T botlnum; /* bottom buffer line */ ++ }; ++ + /* + * matchitem_T provides a linked list for storing match items for ":match" and + * the match functions. +*************** +*** 1940,1945 **** +--- 1966,1972 ---- + char_u *pattern; /* pattern to highlight */ + int hlg_id; /* highlight group ID */ + regmmatch_T match; /* regexp program for pattern */ ++ posmatch_T pos; /* position matches */ + match_T hl; /* struct for doing the actual highlighting */ + }; + +*** ../vim-7.4.329/src/testdir/test63.in 2010-05-15 13:04:10.000000000 +0200 +--- src/testdir/test63.in 2014-06-17 16:29:36.056449227 +0200 +*************** +*** 1,5 **** + Test for ":match", ":2match", ":3match", "clearmatches()", "getmatches()", +! "matchadd()", "matcharg()", "matchdelete()", and "setmatches()". + + STARTTEST + :so small.vim +--- 1,5 ---- + Test for ":match", ":2match", ":3match", "clearmatches()", "getmatches()", +! "matchadd()", "matchaddpos", "matcharg()", "matchdelete()", and "setmatches()". + + STARTTEST + :so small.vim +*************** +*** 147,155 **** + :unlet rf1 + :unlet rf2 + :unlet rf3 +! :highlight clear MyGroup1 +! :highlight clear MyGroup2 +! :highlight clear MyGroup3 + G"rp + :/^Results/,$wq! test.out + ENDTEST +--- 147,172 ---- + :unlet rf1 + :unlet rf2 + :unlet rf3 +! :" --- Check that "matchaddpos()" positions matches correctly +! :let @r .= "*** Test 11:\n" +! :set nolazyredraw +! :call setline(1, 'abcdefghijklmnopq') +! :call matchaddpos("MyGroup1", [[1, 5], [1, 8, 3]], 10, 3) +! :1 +! :redraw! +! :let v1 = screenattr(1, 1) +! :let v5 = screenattr(1, 5) +! :let v6 = screenattr(1, 6) +! :let v8 = screenattr(1, 8) +! :let v10 = screenattr(1, 10) +! :let v11 = screenattr(1, 11) +! :let @r .= string(getmatches())."\n" +! :if v1 != v5 && v6 == v1 && v8 == v5 && v10 == v5 && v11 == v1 +! : let @r .= "OK\n" +! :else +! : let @r .= "FAILED\n" +! :endif +! :call clearmatches() + G"rp + :/^Results/,$wq! test.out + ENDTEST +*** ../vim-7.4.329/src/testdir/test63.ok 2010-05-15 13:04:10.000000000 +0200 +--- src/testdir/test63.ok 2014-06-17 17:32:57.036593023 +0200 +*************** +*** 9,11 **** +--- 9,14 ---- + *** Test 8: OK + *** Test 9: OK + *** Test 10: OK ++ *** Test 11: ++ [{'group': 'MyGroup1', 'id': 3, 'priority': 10, 'pos1': [1, 5, 1], 'pos2': [1, 8, 3]}] ++ OK +*** ../vim-7.4.329/src/window.c 2014-06-17 13:52:35.868092848 +0200 +--- src/window.c 2014-06-17 17:04:51.060529240 +0200 +*************** +*** 6751,6770 **** + * Return ID of added match, -1 on failure. + */ + int +! match_add(wp, grp, pat, prio, id) + win_T *wp; + char_u *grp; + char_u *pat; + int prio; + int id; + { +! matchitem_T *cur; +! matchitem_T *prev; +! matchitem_T *m; + int hlg_id; +! regprog_T *regprog; + +! if (*grp == NUL || *pat == NUL) + return -1; + if (id < -1 || id == 0) + { +--- 6751,6772 ---- + * Return ID of added match, -1 on failure. + */ + int +! match_add(wp, grp, pat, prio, id, pos_list) + win_T *wp; + char_u *grp; + char_u *pat; + int prio; + int id; ++ list_T *pos_list; + { +! matchitem_T *cur; +! matchitem_T *prev; +! matchitem_T *m; + int hlg_id; +! regprog_T *regprog = NULL; +! int rtype = SOME_VALID; + +! if (*grp == NUL || (pat != NULL && *pat == NUL)) + return -1; + if (id < -1 || id == 0) + { +*************** +*** 6789,6795 **** + EMSG2(_(e_nogroup), grp); + return -1; + } +! if ((regprog = vim_regcomp(pat, RE_MAGIC)) == NULL) + { + EMSG2(_(e_invarg2), pat); + return -1; +--- 6791,6797 ---- + EMSG2(_(e_nogroup), grp); + return -1; + } +! if (pat != NULL && (regprog = vim_regcomp(pat, RE_MAGIC)) == NULL) + { + EMSG2(_(e_invarg2), pat); + return -1; +*************** +*** 6810,6821 **** + m = (matchitem_T *)alloc(sizeof(matchitem_T)); + m->id = id; + m->priority = prio; +! m->pattern = vim_strsave(pat); + m->hlg_id = hlg_id; + m->match.regprog = regprog; + m->match.rmm_ic = FALSE; + m->match.rmm_maxcol = 0; + + /* Insert new match. The match list is in ascending order with regard to + * the match priorities. */ + cur = wp->w_match_head; +--- 6812,6922 ---- + m = (matchitem_T *)alloc(sizeof(matchitem_T)); + m->id = id; + m->priority = prio; +! m->pattern = pat == NULL ? NULL : vim_strsave(pat); +! m->pos.cur = 0; + m->hlg_id = hlg_id; + m->match.regprog = regprog; + m->match.rmm_ic = FALSE; + m->match.rmm_maxcol = 0; + ++ /* Set up position matches */ ++ if (pos_list != NULL) ++ { ++ linenr_T toplnum = 0; ++ linenr_T botlnum = 0; ++ listitem_T *li; ++ int i; ++ ++ for (i = 0, li = pos_list->lv_first; i < MAXPOSMATCH; ++ i++, li = li->li_next) ++ { ++ linenr_T lnum = 0; ++ colnr_T col = 0; ++ int len = 1; ++ list_T *subl; ++ listitem_T *subli; ++ int error; ++ ++ if (li == NULL) ++ { ++ m->pos.pos[i].lnum = 0; ++ break; ++ } ++ if (li->li_tv.v_type == VAR_LIST) ++ { ++ subl = li->li_tv.vval.v_list; ++ if (subl == NULL) ++ goto fail; ++ subli = subl->lv_first; ++ if (subli == NULL) ++ goto fail; ++ lnum = get_tv_number_chk(&subli->li_tv, &error); ++ if (error == TRUE) ++ goto fail; ++ m->pos.pos[i].lnum = lnum; ++ if (lnum == 0) ++ { ++ --i; ++ continue; ++ } ++ subli = subli->li_next; ++ if (subli != NULL) ++ { ++ col = get_tv_number_chk(&subli->li_tv, &error); ++ if (error == TRUE) ++ goto fail; ++ subli = subli->li_next; ++ if (subli != NULL) ++ { ++ len = get_tv_number_chk(&subli->li_tv, &error); ++ if (error == TRUE) ++ goto fail; ++ } ++ } ++ m->pos.pos[i].col = col; ++ m->pos.pos[i].len = len; ++ } ++ else if (li->li_tv.v_type == VAR_NUMBER) ++ { ++ if (li->li_tv.vval.v_number == 0) ++ continue; ++ m->pos.pos[i].lnum = li->li_tv.vval.v_number; ++ m->pos.pos[i].col = 0; ++ m->pos.pos[i].len = 0; ++ } ++ else ++ { ++ EMSG(_("List or number required")); ++ goto fail; ++ } ++ if (toplnum == 0 || lnum < toplnum) ++ toplnum = lnum; ++ if (botlnum == 0 || lnum > botlnum) ++ botlnum = lnum; ++ } ++ ++ /* Calculate top and bottom lines for redrawing area */ ++ if (toplnum != 0) ++ { ++ if (wp->w_buffer->b_mod_set) ++ { ++ if (wp->w_buffer->b_mod_top > toplnum) ++ wp->w_buffer->b_mod_top = toplnum; ++ if (wp->w_buffer->b_mod_bot < botlnum) ++ wp->w_buffer->b_mod_bot = botlnum; ++ } ++ else ++ { ++ wp->w_buffer->b_mod_top = toplnum; ++ wp->w_buffer->b_mod_bot = botlnum; ++ } ++ m->pos.toplnum = toplnum; ++ m->pos.botlnum = botlnum; ++ wp->w_buffer->b_mod_set = TRUE; ++ rtype = VALID; ++ } ++ } ++ + /* Insert new match. The match list is in ascending order with regard to + * the match priorities. */ + cur = wp->w_match_head; +*************** +*** 6831,6838 **** + prev->next = m; + m->next = cur; + +! redraw_later(SOME_VALID); + return id; + } + + /* +--- 6932,6943 ---- + prev->next = m; + m->next = cur; + +! redraw_later(rtype); + return id; ++ ++ fail: ++ vim_free(m); ++ return -1; + } + + /* +*************** +*** 6845,6852 **** + int id; + int perr; + { +! matchitem_T *cur = wp->w_match_head; +! matchitem_T *prev = cur; + + if (id < 1) + { +--- 6950,6958 ---- + int id; + int perr; + { +! matchitem_T *cur = wp->w_match_head; +! matchitem_T *prev = cur; +! int rtype = SOME_VALID; + + if (id < 1) + { +*************** +*** 6872,6879 **** + prev->next = cur->next; + vim_regfree(cur->match.regprog); + vim_free(cur->pattern); + vim_free(cur); +! redraw_later(SOME_VALID); + return 0; + } + +--- 6978,7002 ---- + prev->next = cur->next; + vim_regfree(cur->match.regprog); + vim_free(cur->pattern); ++ if (cur->pos.toplnum != 0) ++ { ++ if (wp->w_buffer->b_mod_set) ++ { ++ if (wp->w_buffer->b_mod_top > cur->pos.toplnum) ++ wp->w_buffer->b_mod_top = cur->pos.toplnum; ++ if (wp->w_buffer->b_mod_bot < cur->pos.botlnum) ++ wp->w_buffer->b_mod_bot = cur->pos.botlnum; ++ } ++ else ++ { ++ wp->w_buffer->b_mod_top = cur->pos.toplnum; ++ wp->w_buffer->b_mod_bot = cur->pos.botlnum; ++ } ++ wp->w_buffer->b_mod_set = TRUE; ++ rtype = VALID; ++ } + vim_free(cur); +! redraw_later(rtype); + return 0; + } + +*** ../vim-7.4.329/src/version.c 2014-06-17 13:52:35.868092848 +0200 +--- src/version.c 2014-06-17 14:11:53.764136653 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 330, + /**/ + +-- +I'd like to meet the man who invented sex and see what he's working on now. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.331 b/SOURCES/7.4.331 new file mode 100644 index 0000000..d8d526d --- /dev/null +++ b/SOURCES/7.4.331 @@ -0,0 +1,47 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.331 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.331 +Problem: Relative numbering not updated after a linewise yank. Issue 235. +Solution: Redraw after the yank. (Christian Brabandt) +Files: src/ops.c + + +*** ../vim-7.4.330/src/ops.c 2014-04-29 15:55:39.443801021 +0200 +--- src/ops.c 2014-06-17 18:14:36.584687585 +0200 +*************** +*** 3150,3155 **** +--- 3150,3157 ---- + vim_free(y_current->y_array); + y_current = curr; + } ++ if (curwin->w_p_rnu) ++ redraw_later(SOME_VALID); /* cursor moved to start */ + if (mess) /* Display message about yank? */ + { + if (yanktype == MCHAR +*** ../vim-7.4.330/src/version.c 2014-06-17 17:48:21.784628008 +0200 +--- src/version.c 2014-06-17 18:13:35.824685286 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 331, + /**/ + +-- +CONCORDE: Message for you, sir. + He falls forward revealing the arrow with the note. + "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.332 b/SOURCES/7.4.332 new file mode 100644 index 0000000..94e04d2 --- /dev/null +++ b/SOURCES/7.4.332 @@ -0,0 +1,118 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.332 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.332 +Problem: GTK: When a sign icon doesn't fit exactly there can be ugly gaps. +Solution: Scale the sign to fit when the aspect ratio is not too far off. + (Christian Brabandt) +Files: src/gui_gtk_x11.c + + +*** ../vim-7.4.331/src/gui_gtk_x11.c 2014-05-13 20:19:53.573808877 +0200 +--- src/gui_gtk_x11.c 2014-06-17 18:44:39.900755807 +0200 +*************** +*** 5965,5991 **** + * Decide whether we need to scale. Allow one pixel of border + * width to be cut off, in order to avoid excessive scaling for + * tiny differences in font size. + */ + need_scale = (width > SIGN_WIDTH + 2 +! || height > SIGN_HEIGHT + 2 + || (width < 3 * SIGN_WIDTH / 4 + && height < 3 * SIGN_HEIGHT / 4)); + if (need_scale) + { +! double aspect; + + /* Keep the original aspect ratio */ + aspect = (double)height / (double)width; + width = (double)SIGN_WIDTH * SIGN_ASPECT / aspect; + width = MIN(width, SIGN_WIDTH); +! height = (double)width * aspect; + +! /* This doesn't seem to be worth caching, and doing so +! * would complicate the code quite a bit. */ +! sign = gdk_pixbuf_scale_simple(sign, width, height, +! GDK_INTERP_BILINEAR); +! if (sign == NULL) +! return; /* out of memory */ + } + + /* The origin is the upper-left corner of the pixmap. Therefore +--- 5965,6012 ---- + * Decide whether we need to scale. Allow one pixel of border + * width to be cut off, in order to avoid excessive scaling for + * tiny differences in font size. ++ * Do scale to fit the height to avoid gaps because of linespacing. + */ + need_scale = (width > SIGN_WIDTH + 2 +! || height != SIGN_HEIGHT + || (width < 3 * SIGN_WIDTH / 4 + && height < 3 * SIGN_HEIGHT / 4)); + if (need_scale) + { +! double aspect; +! int w = width; +! int h = height; + + /* Keep the original aspect ratio */ + aspect = (double)height / (double)width; + width = (double)SIGN_WIDTH * SIGN_ASPECT / aspect; + width = MIN(width, SIGN_WIDTH); +! if (((double)(MAX(height, SIGN_HEIGHT)) / +! (double)(MIN(height, SIGN_HEIGHT))) < 1.15) +! { +! /* Change the aspect ratio by at most 15% to fill the +! * available space completly. */ +! height = (double)SIGN_HEIGHT * SIGN_ASPECT / aspect; +! height = MIN(height, SIGN_HEIGHT); +! } +! else +! height = (double)width * aspect; + +! if (w == width && h == height) +! { +! /* no change in dimensions; don't decrease reference counter +! * (below) */ +! need_scale = FALSE; +! } +! else +! { +! /* This doesn't seem to be worth caching, and doing so would +! * complicate the code quite a bit. */ +! sign = gdk_pixbuf_scale_simple(sign, width, height, +! GDK_INTERP_BILINEAR); +! if (sign == NULL) +! return; /* out of memory */ +! } + } + + /* The origin is the upper-left corner of the pixmap. Therefore +*** ../vim-7.4.331/src/version.c 2014-06-17 18:16:08.420691059 +0200 +--- src/version.c 2014-06-17 18:46:49.784760721 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 332, + /**/ + +-- + "To whoever finds this note - + I have been imprisoned by my father who wishes me to marry + against my will. Please please please please come and rescue me. + I am in the tall tower of Swamp Castle." + SIR LAUNCELOT's eyes light up with holy inspiration. + "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.333 b/SOURCES/7.4.333 new file mode 100644 index 0000000..d0b6171 --- /dev/null +++ b/SOURCES/7.4.333 @@ -0,0 +1,72 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.333 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.333 +Problem: Compiler warning for unused function. +Solution: Put the function inside the #ifdef. +Files: src/screen.c + + +*** ../vim-7.4.332/src/screen.c 2014-06-17 17:48:21.784628008 +0200 +--- src/screen.c 2014-06-17 23:16:24.121372619 +0200 +*************** +*** 139,145 **** + static void redraw_custom_statusline __ARGS((win_T *wp)); + #endif + #ifdef FEAT_SEARCH_EXTRA +! #define SEARCH_HL_PRIORITY 0 + static void start_search_hl __ARGS((void)); + static void end_search_hl __ARGS((void)); + static void init_search_hl __ARGS((win_T *wp)); +--- 139,145 ---- + static void redraw_custom_statusline __ARGS((win_T *wp)); + #endif + #ifdef FEAT_SEARCH_EXTRA +! # define SEARCH_HL_PRIORITY 0 + static void start_search_hl __ARGS((void)); + static void end_search_hl __ARGS((void)); + static void init_search_hl __ARGS((win_T *wp)); +*************** +*** 7476,7482 **** + } + } + } +- #endif + + static int + next_search_hl_pos(shl, lnum, posmatch, mincol) +--- 7476,7481 ---- +*************** +*** 7533,7538 **** +--- 7532,7538 ---- + } + return FALSE; + } ++ #endif + + static void + screen_start_highlight(attr) +*** ../vim-7.4.332/src/version.c 2014-06-17 18:46:57.880761027 +0200 +--- src/version.c 2014-06-17 23:17:14.949374542 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 333, + /**/ + +-- +You had connectors? Eeee, when I were a lad we 'ad to carry the +bits between the computer and the terminal with a spoon... + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.334 b/SOURCES/7.4.334 new file mode 100644 index 0000000..4f72bb2 --- /dev/null +++ b/SOURCES/7.4.334 @@ -0,0 +1,112 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.334 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.334 (after 7.4.330) +Problem: Unitialized variables, causing some problems. +Solution: Initialize the variables. (Dominique Pelle) +Files: src/screen.c, src/window.c + + +*** ../vim-7.4.333/src/screen.c 2014-06-17 23:17:56.489376113 +0200 +--- src/screen.c 2014-06-18 21:16:23.560368846 +0200 +*************** +*** 7363,7369 **** + match_T *shl; /* points to search_hl or a match */ + linenr_T lnum; + colnr_T mincol; /* minimal column for a match */ +! matchitem_T *cur; /* to retrieve match postions if any */ + { + linenr_T l; + colnr_T matchcol; +--- 7363,7369 ---- + match_T *shl; /* points to search_hl or a match */ + linenr_T lnum; + colnr_T mincol; /* minimal column for a match */ +! matchitem_T *cur; /* to retrieve match positions if any */ + { + linenr_T l; + colnr_T matchcol; +*************** +*** 7458,7466 **** + } + } + else if (cur != NULL) +- { + nmatched = next_search_hl_pos(shl, lnum, &(cur->pos), matchcol); +! } + if (nmatched == 0) + { + shl->lnum = 0; /* no match found */ +--- 7458,7466 ---- + } + } + else if (cur != NULL) + nmatched = next_search_hl_pos(shl, lnum, &(cur->pos), matchcol); +! else +! nmatched = 0; + if (nmatched == 0) + { + shl->lnum = 0; /* no match found */ +*** ../vim-7.4.333/src/window.c 2014-06-17 17:48:21.784628008 +0200 +--- src/window.c 2014-06-18 21:12:15.232359452 +0200 +*************** +*** 6809,6815 **** + } + + /* Build new match. */ +! m = (matchitem_T *)alloc(sizeof(matchitem_T)); + m->id = id; + m->priority = prio; + m->pattern = pat == NULL ? NULL : vim_strsave(pat); +--- 6809,6815 ---- + } + + /* Build new match. */ +! m = (matchitem_T *)alloc_clear(sizeof(matchitem_T)); + m->id = id; + m->priority = prio; + m->pattern = pat == NULL ? NULL : vim_strsave(pat); +*************** +*** 6835,6841 **** + int len = 1; + list_T *subl; + listitem_T *subli; +! int error; + + if (li == NULL) + { +--- 6835,6841 ---- + int len = 1; + list_T *subl; + listitem_T *subli; +! int error = FALSE; + + if (li == NULL) + { +*** ../vim-7.4.333/src/version.c 2014-06-17 23:17:56.493376113 +0200 +--- src/version.c 2014-06-18 21:14:16.516364040 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 334, + /**/ + +-- +You were lucky. We lived for three months in a brown paper bag in a +septic tank. We used to have to get up at six o'clock in the morning, +clean the bag, eat a crust of stale bread, go to work down mill for +fourteen hours a day week in-week out. When we got home, our Dad +would thrash us to sleep with his belt! + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.335 b/SOURCES/7.4.335 new file mode 100644 index 0000000..ef41bc8 --- /dev/null +++ b/SOURCES/7.4.335 @@ -0,0 +1,108 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.335 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.335 +Problem: No digraph for the new rouble sign. +Solution: Add the digraphs =R and =P. +Files: src/digraph.c, runtime/doc/digraph.txt + + +*** ../vim-7.4.334/src/digraph.c 2012-01-10 21:57:16.000000000 +0100 +--- src/digraph.c 2014-06-18 21:36:46.148415099 +0200 +*************** +*** 1425,1430 **** +--- 1425,1432 ---- + {'W', '=', 0x20a9}, + {'=', 'e', 0x20ac}, /* euro */ + {'E', 'u', 0x20ac}, /* euro */ ++ {'=', 'R', 0x20bd}, /* rouble */ ++ {'=', 'P', 0x20bd}, /* rouble */ + {'o', 'C', 0x2103}, + {'c', 'o', 0x2105}, + {'o', 'F', 0x2109}, +*** ../vim-7.4.334/runtime/doc/digraph.txt 2013-08-10 13:24:52.000000000 +0200 +--- runtime/doc/digraph.txt 2014-06-18 21:35:21.684411903 +0200 +*************** +*** 147,153 **** + Two 2 Hook + Nine 9 Horn + +! Equals = Cyrillic + Asterisk * Greek + Percent sign % Greek/Cyrillic special + Plus + smalls: Arabic, capitals: Hebrew +--- 147,153 ---- + Two 2 Hook + Nine 9 Horn + +! Equals = Cyrillic (= used as second char) + Asterisk * Greek + Percent sign % Greek/Cyrillic special + Plus + smalls: Arabic, capitals: Hebrew +*************** +*** 170,175 **** +--- 170,180 ---- + used for the euro sign, while both of them are the character 164, 0xa4. For + compatibility with zsh Eu can also be used for the euro sign. + ++ ROUBLE ++ ++ The rouble sign was added in 2014 as 0x20bd. Vim supports the digraphs =R and ++ =P for this. Note that R= and P= are other characters. ++ + *digraph-table* + char digraph hex dec official name ~ + ^@ NU 0x00 0 NULL (NUL) +*************** +*** 966,971 **** +--- 971,978 ---- + ₧ Pt 20A7 8359 PESETA SIGN + ₩ W= 20A9 8361 WON SIGN + € Eu 20AC 8364 EURO SIGN ++ ₽ =R 20AC 8381 ROUBLE SIGN ++ ₽ =P 20AC 8381 ROUBLE SIGN + ℃ oC 2103 8451 DEGREE CELSIUS + ℅ co 2105 8453 CARE OF + ℉ oF 2109 8457 DEGREE FAHRENHEIT +*************** +*** 1077,1083 **** + ⊥ -T 22A5 8869 UP TACK + ⋅ .P 22C5 8901 DOT OPERATOR + ⋮ :3 22EE 8942 VERTICAL ELLIPSIS +! ⋯ .3 22EF 8943 MIDLINE HORIZONTAL ELLIPSIS + ⌂ Eh 2302 8962 HOUSE + ⌈ <7 2308 8968 LEFT CEILING + ⌉ >7 2309 8969 RIGHT CEILING +--- 1084,1090 ---- + ⊥ -T 22A5 8869 UP TACK + ⋅ .P 22C5 8901 DOT OPERATOR + ⋮ :3 22EE 8942 VERTICAL ELLIPSIS +! ⋯ .3 22EF 8943 MIDLINE HORIZONTAL ELLIPSIS + ⌂ Eh 2302 8962 HOUSE + ⌈ <7 2308 8968 LEFT CEILING + ⌉ >7 2309 8969 RIGHT CEILING +*** ../vim-7.4.334/src/version.c 2014-06-18 21:20:07.240377308 +0200 +--- src/version.c 2014-06-18 21:36:14.632413906 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 335, + /**/ + +-- +You got to work at a mill? Lucky! I got sent back to work in the +acid-mines for my daily crust of stale bread... which not even the +birds would eat. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.336 b/SOURCES/7.4.336 new file mode 100644 index 0000000..6e5fe3f --- /dev/null +++ b/SOURCES/7.4.336 @@ -0,0 +1,100 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.336 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.336 +Problem: Setting 'history' to a big value causes out-of-memory errors. +Solution: Limit the value to 10000. (Hirohito Higashi) +Files: runtime/doc/options.txt, src/option.c + + +*** ../vim-7.4.335/runtime/doc/options.txt 2014-05-28 21:40:47.088329130 +0200 +--- runtime/doc/options.txt 2014-06-25 11:44:16.985950668 +0200 +*************** +*** 3920,3931 **** + NOTE: This option is reset when 'compatible' is set. + + *'history'* *'hi'* +! 'history' 'hi' number (Vim default: 20, Vi default: 0) + global + {not in Vi} + A history of ":" commands, and a history of previous search patterns +! are remembered. This option decides how many entries may be stored in + each of these histories (see |cmdline-editing|). + NOTE: This option is set to the Vi default value when 'compatible' is + set and to the Vim default value when 'compatible' is reset. + +--- 3920,3932 ---- + NOTE: This option is reset when 'compatible' is set. + + *'history'* *'hi'* +! 'history' 'hi' number (Vim default: 50, Vi default: 0) + global + {not in Vi} + A history of ":" commands, and a history of previous search patterns +! is remembered. This option decides how many entries may be stored in + each of these histories (see |cmdline-editing|). ++ The maximum value is 10000. + NOTE: This option is set to the Vi default value when 'compatible' is + set and to the Vim default value when 'compatible' is reset. + +*** ../vim-7.4.335/src/option.c 2014-05-13 12:16:44.037555110 +0200 +--- src/option.c 2014-06-25 11:44:48.349951855 +0200 +*************** +*** 1392,1398 **** + SCRIPTID_INIT}, + {"history", "hi", P_NUM|P_VIM, + (char_u *)&p_hi, PV_NONE, +! {(char_u *)0L, (char_u *)20L} SCRIPTID_INIT}, + {"hkmap", "hk", P_BOOL|P_VI_DEF|P_VIM, + #ifdef FEAT_RIGHTLEFT + (char_u *)&p_hkmap, PV_NONE, +--- 1392,1398 ---- + SCRIPTID_INIT}, + {"history", "hi", P_NUM|P_VIM, + (char_u *)&p_hi, PV_NONE, +! {(char_u *)0L, (char_u *)50L} SCRIPTID_INIT}, + {"hkmap", "hk", P_BOOL|P_VI_DEF|P_VIM, + #ifdef FEAT_RIGHTLEFT + (char_u *)&p_hkmap, PV_NONE, +*************** +*** 8595,8600 **** +--- 8595,8605 ---- + errmsg = e_positive; + p_hi = 0; + } ++ else if (p_hi > 10000) ++ { ++ errmsg = e_invarg; ++ p_hi = 10000; ++ } + if (p_re < 0 || p_re > 2) + { + errmsg = e_invarg; +*** ../vim-7.4.335/src/version.c 2014-06-18 21:38:12.216418355 +0200 +--- src/version.c 2014-06-25 11:45:08.141952604 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 336, + /**/ + +-- +ARTHUR: Well, it doesn't matter. Will you go and tell your master that + Arthur from the Court of Camelot is here. +GUARD #1: Listen, in order to maintain air-speed velocity, a swallow + needs to beat its wings 43 times every second, right? +ARTHUR: Please! + The Quest for the Holy Grail (Monty Python) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.337 b/SOURCES/7.4.337 new file mode 100644 index 0000000..80b8349 --- /dev/null +++ b/SOURCES/7.4.337 @@ -0,0 +1,51 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.337 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.337 +Problem: When there is an error preparing to edit the command line, the + command won't be executed. (Hirohito Higashi) +Solution: Reset did_emsg before editing. +Files: src/ex_getln.c + + +*** ../vim-7.4.336/src/ex_getln.c 2014-06-12 19:44:45.324549030 +0200 +--- src/ex_getln.c 2014-06-25 12:06:38.018001402 +0200 +*************** +*** 342,347 **** +--- 342,354 ---- + do_digraph(-1); /* init digraph typeahead */ + #endif + ++ /* If something above caused an error, reset the flags, we do want to type ++ * and execute commands. Display may be messed up a bit. */ ++ if (did_emsg) ++ redrawcmd(); ++ did_emsg = FALSE; ++ got_int = FALSE; ++ + /* + * Collect the command string, handling editing keys. + */ +*** ../vim-7.4.336/src/version.c 2014-06-25 11:48:40.733960646 +0200 +--- src/version.c 2014-06-25 12:24:39.442042313 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 337, + /**/ + +-- +Computers are not intelligent. They only think they are. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.338 b/SOURCES/7.4.338 new file mode 100644 index 0000000..f533693 --- /dev/null +++ b/SOURCES/7.4.338 @@ -0,0 +1,1830 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.338 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.338 +Problem: Cannot wrap lines taking indent into account. +Solution: Add the 'breakindent' option. (many authors, final improvements by + Christian Brabandt) +Files: runtime/doc/eval.txt, runtime/doc/options.txt, runtime/optwin.vim, + src/buffer.c, src/charset.c, src/edit.c, src/ex_getln.c, + src/getchar.c, src/misc1.c, src/misc2.c, src/ops.c, src/option.c, + src/option.h, src/proto/charset.pro, src/proto/misc1.pro, + src/proto/option.pro, src/screen.c, src/structs.h, + src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, + src/testdir/Make_ming.mak, src/testdir/Make_os2.mak, + src/testdir/Make_vms.mms, src/testdir/Makefile, + src/testdir/test_breakindent.in, src/testdir/test_breakindent.ok, + src/ui.c + + +*** ../vim-7.4.337/runtime/doc/eval.txt 2014-06-17 17:48:21.768628007 +0200 +--- runtime/doc/eval.txt 2014-06-25 12:57:00.986115765 +0200 +*************** +*** 6639,6646 **** + keymap Compiled with 'keymap' support. + langmap Compiled with 'langmap' support. + libcall Compiled with |libcall()| support. +! linebreak Compiled with 'linebreak', 'breakat' and 'showbreak' +! support. + lispindent Compiled with support for lisp indenting. + listcmds Compiled with commands for the buffer list |:files| + and the argument list |arglist|. +--- 6651,6658 ---- + keymap Compiled with 'keymap' support. + langmap Compiled with 'langmap' support. + libcall Compiled with |libcall()| support. +! linebreak Compiled with 'linebreak', 'breakat', 'showbreak' and +! 'breakindent' support. + lispindent Compiled with support for lisp indenting. + listcmds Compiled with commands for the buffer list |:files| + and the argument list |arglist|. +*** ../vim-7.4.337/runtime/doc/options.txt 2014-06-17 17:48:21.768628007 +0200 +--- runtime/doc/options.txt 2014-06-25 12:57:00.986115765 +0200 +*************** +*** 1200,1205 **** +--- 1200,1237 ---- + break if 'linebreak' is on. Only works for ASCII and also for 8-bit + characters when 'encoding' is an 8-bit encoding. + ++ *'breakindent'* *'bri'* ++ 'breakindent' 'bri' boolean (default off) ++ local to window ++ {not in Vi} ++ {not available when compiled without the |+linebreak| ++ feature} ++ Every wrapped line will continue visually indented (same amount of ++ space as the beginning of that line), thus preserving horizontal blocks ++ of text. ++ ++ *'breakindentopt'* *'briopt'* ++ 'breakindentopt' 'briopt' string (default empty) ++ local to window ++ {not in Vi} ++ {not available when compiled without the |+linebreak| ++ feature} ++ Settings for 'breakindent'. It can consist of the following optional ++ items and must be seperated by a comma: ++ min:{n} Minimum text width that will be kept after ++ applying 'breakindent', even if the resulting ++ text should normally be narrower. This prevents ++ text indented almost to the right window border ++ occupying lot of vertical space when broken. ++ shift:{n} After applying 'breakindent', wrapped line ++ beginning will be shift by given number of ++ characters. It permits dynamic French paragraph ++ indentation (negative) or emphasizing the line ++ continuation (positive). ++ sbr Display the 'showbreak' value before applying the ++ additional indent. ++ The default value for min is 20 and shift is 0. ++ + *'browsedir'* *'bsdir'* + 'browsedir' 'bsdir' string (default: "last") + global +*** ../vim-7.4.337/runtime/optwin.vim 2014-04-01 12:26:40.241157964 +0200 +--- runtime/optwin.vim 2014-06-25 12:57:00.990115765 +0200 +*************** +*** 324,329 **** +--- 324,335 ---- + call append("$", "linebreak\twrap long lines at a character in 'breakat'") + call append("$", "\t(local to window)") + call <SID>BinOptionL("lbr") ++ call append("$", "breakindent\tpreserve indentation in wrapped text") ++ call append("$", "\t(local to window)") ++ call <SID>BinOptionL("bri") ++ call append("$", "breakindentopt\tadjust breakindent behaviour") ++ call append("$", "\t(local to window)") ++ call <SID>OptionL("briopt") + call append("$", "breakat\twhich characters might cause a line break") + call <SID>OptionG("brk", &brk) + call append("$", "showbreak\tstring to put before wrapped screen lines") +*** ../vim-7.4.337/src/charset.c 2014-03-23 15:12:29.911264336 +0100 +--- src/charset.c 2014-06-25 13:23:05.842174966 +0200 +*************** +*** 867,875 **** + char_u *s; + { + colnr_T col = startcol; + + while (*s != NUL) +! col += lbr_chartabsize_adv(&s, col); + return (int)col; + } + +--- 867,876 ---- + char_u *s; + { + colnr_T col = startcol; ++ char_u *line = s; /* pointer to start of line, for breakindent */ + + while (*s != NUL) +! col += lbr_chartabsize_adv(line, &s, col); + return (int)col; + } + +*************** +*** 877,892 **** + * Like linetabsize(), but for a given window instead of the current one. + */ + int +! win_linetabsize(wp, p, len) + win_T *wp; +! char_u *p; + colnr_T len; + { + colnr_T col = 0; + char_u *s; + +! for (s = p; *s != NUL && (len == MAXCOL || s < p + len); mb_ptr_adv(s)) +! col += win_lbr_chartabsize(wp, s, col, NULL); + return (int)col; + } + +--- 878,894 ---- + * Like linetabsize(), but for a given window instead of the current one. + */ + int +! win_linetabsize(wp, line, len) + win_T *wp; +! char_u *line; + colnr_T len; + { + colnr_T col = 0; + char_u *s; + +! for (s = line; *s != NUL && (len == MAXCOL || s < line + len); +! mb_ptr_adv(s)) +! col += win_lbr_chartabsize(wp, line, s, col, NULL); + return (int)col; + } + +*************** +*** 1021,1032 **** + * like chartabsize(), but also check for line breaks on the screen + */ + int +! lbr_chartabsize(s, col) + unsigned char *s; + colnr_T col; + { + #ifdef FEAT_LINEBREAK +! if (!curwin->w_p_lbr && *p_sbr == NUL) + { + #endif + #ifdef FEAT_MBYTE +--- 1023,1035 ---- + * like chartabsize(), but also check for line breaks on the screen + */ + int +! lbr_chartabsize(line, s, col) +! char_u *line; /* start of the line */ + unsigned char *s; + colnr_T col; + { + #ifdef FEAT_LINEBREAK +! if (!curwin->w_p_lbr && *p_sbr == NUL && !curwin->w_p_bri) + { + #endif + #ifdef FEAT_MBYTE +*************** +*** 1036,1042 **** + RET_WIN_BUF_CHARTABSIZE(curwin, curbuf, s, col) + #ifdef FEAT_LINEBREAK + } +! return win_lbr_chartabsize(curwin, s, col, NULL); + #endif + } + +--- 1039,1045 ---- + RET_WIN_BUF_CHARTABSIZE(curwin, curbuf, s, col) + #ifdef FEAT_LINEBREAK + } +! return win_lbr_chartabsize(curwin, line == NULL ? s : line, s, col, NULL); + #endif + } + +*************** +*** 1044,1056 **** + * Call lbr_chartabsize() and advance the pointer. + */ + int +! lbr_chartabsize_adv(s, col) + char_u **s; + colnr_T col; + { + int retval; + +! retval = lbr_chartabsize(*s, col); + mb_ptr_adv(*s); + return retval; + } +--- 1047,1060 ---- + * Call lbr_chartabsize() and advance the pointer. + */ + int +! lbr_chartabsize_adv(line, s, col) +! char_u *line; /* start of the line */ + char_u **s; + colnr_T col; + { + int retval; + +! retval = lbr_chartabsize(line, *s, col); + mb_ptr_adv(*s); + return retval; + } +*************** +*** 1063,1070 **** + * value, init to 0 before calling. + */ + int +! win_lbr_chartabsize(wp, s, col, headp) + win_T *wp; + char_u *s; + colnr_T col; + int *headp UNUSED; +--- 1067,1075 ---- + * value, init to 0 before calling. + */ + int +! win_lbr_chartabsize(wp, line, s, col, headp) + win_T *wp; ++ char_u *line; /* start of the line */ + char_u *s; + colnr_T col; + int *headp UNUSED; +*************** +*** 1086,1094 **** + int n; + + /* +! * No 'linebreak' and 'showbreak': return quickly. + */ +! if (!wp->w_p_lbr && *p_sbr == NUL) + #endif + { + #ifdef FEAT_MBYTE +--- 1091,1099 ---- + int n; + + /* +! * No 'linebreak', 'showbreak' and 'breakindent': return quickly. + */ +! if (!wp->w_p_lbr && !wp->w_p_bri && *p_sbr == NUL) + #endif + { + #ifdef FEAT_MBYTE +*************** +*** 1163,1173 **** + # endif + + /* +! * May have to add something for 'showbreak' string at start of line + * Set *headp to the size of what we add. + */ + added = 0; +! if (*p_sbr != NUL && wp->w_p_wrap && col != 0) + { + numberextra = win_col_off(wp); + col += numberextra + mb_added; +--- 1168,1179 ---- + # endif + + /* +! * May have to add something for 'breakindent' and/or 'showbreak' +! * string at start of line. + * Set *headp to the size of what we add. + */ + added = 0; +! if ((*p_sbr != NUL || wp->w_p_bri) && wp->w_p_wrap && col != 0) + { + numberextra = win_col_off(wp); + col += numberextra + mb_added; +*************** +*** 1180,1186 **** + } + if (col == 0 || col + size > (colnr_T)W_WIDTH(wp)) + { +! added = vim_strsize(p_sbr); + if (tab_corr) + size += (added / wp->w_buffer->b_p_ts) * wp->w_buffer->b_p_ts; + else +--- 1186,1197 ---- + } + if (col == 0 || col + size > (colnr_T)W_WIDTH(wp)) + { +! added = 0; +! if (*p_sbr != NUL) +! added += vim_strsize(p_sbr); +! if (wp->w_p_bri) +! added += get_breakindent_win(wp, line); +! + if (tab_corr) + size += (added / wp->w_buffer->b_p_ts) * wp->w_buffer->b_p_ts; + else +*************** +*** 1274,1286 **** + colnr_T vcol; + char_u *ptr; /* points to current char */ + char_u *posptr; /* points to char at pos->col */ + int incr; + int head; + int ts = wp->w_buffer->b_p_ts; + int c; + + vcol = 0; +! ptr = ml_get_buf(wp->w_buffer, pos->lnum, FALSE); + if (pos->col == MAXCOL) + posptr = NULL; /* continue until the NUL */ + else +--- 1285,1298 ---- + colnr_T vcol; + char_u *ptr; /* points to current char */ + char_u *posptr; /* points to char at pos->col */ ++ char_u *line; /* start of the line */ + int incr; + int head; + int ts = wp->w_buffer->b_p_ts; + int c; + + vcol = 0; +! line = ptr = ml_get_buf(wp->w_buffer, pos->lnum, FALSE); + if (pos->col == MAXCOL) + posptr = NULL; /* continue until the NUL */ + else +*************** +*** 1288,1299 **** + + /* + * This function is used very often, do some speed optimizations. +! * When 'list', 'linebreak' and 'showbreak' are not set use a simple loop. + * Also use this when 'list' is set but tabs take their normal size. + */ + if ((!wp->w_p_list || lcs_tab1 != NUL) + #ifdef FEAT_LINEBREAK +! && !wp->w_p_lbr && *p_sbr == NUL + #endif + ) + { +--- 1300,1312 ---- + + /* + * This function is used very often, do some speed optimizations. +! * When 'list', 'linebreak', 'showbreak' and 'breakindent' are not set +! * use a simple loop. + * Also use this when 'list' is set but tabs take their normal size. + */ + if ((!wp->w_p_list || lcs_tab1 != NUL) + #ifdef FEAT_LINEBREAK +! && !wp->w_p_lbr && *p_sbr == NUL && !wp->w_p_bri + #endif + ) + { +*************** +*** 1355,1361 **** + { + /* A tab gets expanded, depending on the current column */ + head = 0; +! incr = win_lbr_chartabsize(wp, ptr, vcol, &head); + /* make sure we don't go past the end of the line */ + if (*ptr == NUL) + { +--- 1368,1374 ---- + { + /* A tab gets expanded, depending on the current column */ + head = 0; +! incr = win_lbr_chartabsize(wp, line, ptr, vcol, &head); + /* make sure we don't go past the end of the line */ + if (*ptr == NUL) + { +*** ../vim-7.4.337/src/edit.c 2014-05-28 21:40:47.092329130 +0200 +--- src/edit.c 2014-06-25 13:16:43.278160493 +0200 +*************** +*** 1956,1962 **** + else + #endif + ++new_cursor_col; +! vcol += lbr_chartabsize(ptr + new_cursor_col, (colnr_T)vcol); + } + vcol = last_vcol; + +--- 1956,1962 ---- + else + #endif + ++new_cursor_col; +! vcol += lbr_chartabsize(ptr, ptr + new_cursor_col, (colnr_T)vcol); + } + vcol = last_vcol; + +*************** +*** 7126,7134 **** + for (;;) + { + coladvance(v - width); +! /* getviscol() is slow, skip it when 'showbreak' is empty and +! * there are no multi-byte characters */ +! if ((*p_sbr == NUL + # ifdef FEAT_MBYTE + && !has_mbyte + # endif +--- 7126,7135 ---- + for (;;) + { + coladvance(v - width); +! /* getviscol() is slow, skip it when 'showbreak' is empty, +! * 'breakindent' is not set and there are no multi-byte +! * characters */ +! if ((*p_sbr == NUL && !curwin->w_p_bri + # ifdef FEAT_MBYTE + && !has_mbyte + # endif +*************** +*** 9758,9768 **** + getvcol(curwin, &fpos, &vcol, NULL, NULL); + getvcol(curwin, cursor, &want_vcol, NULL, NULL); + +! /* Use as many TABs as possible. Beware of 'showbreak' and +! * 'linebreak' adding extra virtual columns. */ + while (vim_iswhite(*ptr)) + { +! i = lbr_chartabsize((char_u *)"\t", vcol); + if (vcol + i > want_vcol) + break; + if (*ptr != TAB) +--- 9759,9769 ---- + getvcol(curwin, &fpos, &vcol, NULL, NULL); + getvcol(curwin, cursor, &want_vcol, NULL, NULL); + +! /* Use as many TABs as possible. Beware of 'breakindent', 'showbreak' +! * and 'linebreak' adding extra virtual columns. */ + while (vim_iswhite(*ptr)) + { +! i = lbr_chartabsize(NULL, (char_u *)"\t", vcol); + if (vcol + i > want_vcol) + break; + if (*ptr != TAB) +*************** +*** 9784,9794 **** + if (change_col >= 0) + { + int repl_off = 0; + + /* Skip over the spaces we need. */ + while (vcol < want_vcol && *ptr == ' ') + { +! vcol += lbr_chartabsize(ptr, vcol); + ++ptr; + ++repl_off; + } +--- 9785,9796 ---- + if (change_col >= 0) + { + int repl_off = 0; ++ char_u *line = ptr; + + /* Skip over the spaces we need. */ + while (vcol < want_vcol && *ptr == ' ') + { +! vcol += lbr_chartabsize(line, ptr, vcol); + ++ptr; + ++repl_off; + } +*************** +*** 10029,10034 **** +--- 10031,10037 ---- + int c; + int temp; + char_u *ptr, *prev_ptr; ++ char_u *line; + + if (lnum < 1 || lnum > curbuf->b_ml.ml_line_count) + { +*************** +*** 10038,10050 **** + + /* try to advance to the cursor column */ + temp = 0; +! ptr = ml_get(lnum); + prev_ptr = ptr; + validate_virtcol(); + while ((colnr_T)temp < curwin->w_virtcol && *ptr != NUL) + { + prev_ptr = ptr; +! temp += lbr_chartabsize_adv(&ptr, (colnr_T)temp); + } + if ((colnr_T)temp > curwin->w_virtcol) + ptr = prev_ptr; +--- 10041,10053 ---- + + /* try to advance to the cursor column */ + temp = 0; +! line = ptr = ml_get(lnum); + prev_ptr = ptr; + validate_virtcol(); + while ((colnr_T)temp < curwin->w_virtcol && *ptr != NUL) + { + prev_ptr = ptr; +! temp += lbr_chartabsize_adv(line, &ptr, (colnr_T)temp); + } + if ((colnr_T)temp > curwin->w_virtcol) + ptr = prev_ptr; +*** ../vim-7.4.337/src/ex_getln.c 2014-06-25 12:26:42.230046959 +0200 +--- src/ex_getln.c 2014-06-25 12:57:00.998115765 +0200 +*************** +*** 2302,2311 **** + + p = (char_u *)line_ga.ga_data; + p[line_ga.ga_len] = NUL; +! indent = get_indent_str(p, 8); + indent += sw - indent % sw; + add_indent: +! while (get_indent_str(p, 8) < indent) + { + char_u *s = skipwhite(p); + +--- 2302,2311 ---- + + p = (char_u *)line_ga.ga_data; + p[line_ga.ga_len] = NUL; +! indent = get_indent_str(p, 8, FALSE); + indent += sw - indent % sw; + add_indent: +! while (get_indent_str(p, 8, FALSE) < indent) + { + char_u *s = skipwhite(p); + +*************** +*** 2357,2367 **** + else + { + p[line_ga.ga_len] = NUL; +! indent = get_indent_str(p, 8); + --indent; + indent -= indent % get_sw_value(curbuf); + } +! while (get_indent_str(p, 8) > indent) + { + char_u *s = skipwhite(p); + +--- 2357,2367 ---- + else + { + p[line_ga.ga_len] = NUL; +! indent = get_indent_str(p, 8, FALSE); + --indent; + indent -= indent % get_sw_value(curbuf); + } +! while (get_indent_str(p, 8, FALSE) > indent) + { + char_u *s = skipwhite(p); + +*** ../vim-7.4.337/src/getchar.c 2014-05-22 18:59:54.510169240 +0200 +--- src/getchar.c 2014-06-25 13:16:53.946160896 +0200 +*************** +*** 2675,2681 **** + { + if (!vim_iswhite(ptr[col])) + curwin->w_wcol = vcol; +! vcol += lbr_chartabsize(ptr + col, + (colnr_T)vcol); + #ifdef FEAT_MBYTE + if (has_mbyte) +--- 2675,2681 ---- + { + if (!vim_iswhite(ptr[col])) + curwin->w_wcol = vcol; +! vcol += lbr_chartabsize(ptr, ptr + col, + (colnr_T)vcol); + #ifdef FEAT_MBYTE + if (has_mbyte) +*** ../vim-7.4.337/src/misc1.c 2014-05-22 14:00:12.698534712 +0200 +--- src/misc1.c 2014-06-25 13:39:43.598212712 +0200 +*************** +*** 32,38 **** + int + get_indent() + { +! return get_indent_str(ml_get_curline(), (int)curbuf->b_p_ts); + } + + /* +--- 32,38 ---- + int + get_indent() + { +! return get_indent_str(ml_get_curline(), (int)curbuf->b_p_ts, FALSE); + } + + /* +*************** +*** 42,48 **** + get_indent_lnum(lnum) + linenr_T lnum; + { +! return get_indent_str(ml_get(lnum), (int)curbuf->b_p_ts); + } + + #if defined(FEAT_FOLDING) || defined(PROTO) +--- 42,48 ---- + get_indent_lnum(lnum) + linenr_T lnum; + { +! return get_indent_str(ml_get(lnum), (int)curbuf->b_p_ts, FALSE); + } + + #if defined(FEAT_FOLDING) || defined(PROTO) +*************** +*** 55,61 **** + buf_T *buf; + linenr_T lnum; + { +! return get_indent_str(ml_get_buf(buf, lnum, FALSE), (int)buf->b_p_ts); + } + #endif + +--- 55,61 ---- + buf_T *buf; + linenr_T lnum; + { +! return get_indent_str(ml_get_buf(buf, lnum, FALSE), (int)buf->b_p_ts, FALSE); + } + #endif + +*************** +*** 64,79 **** + * 'tabstop' at "ts" + */ + int +! get_indent_str(ptr, ts) + char_u *ptr; + int ts; + { + int count = 0; + + for ( ; *ptr; ++ptr) + { +! if (*ptr == TAB) /* count a tab for what it is worth */ +! count += ts - (count % ts); + else if (*ptr == ' ') + ++count; /* count a space for one */ + else +--- 64,86 ---- + * 'tabstop' at "ts" + */ + int +! get_indent_str(ptr, ts, list) + char_u *ptr; + int ts; ++ int list; /* if TRUE, count only screen size for tabs */ + { + int count = 0; + + for ( ; *ptr; ++ptr) + { +! if (*ptr == TAB) +! { +! if (!list || lcs_tab1) /* count a tab for what it is worth */ +! count += ts - (count % ts); +! else +! /* in list mode, when tab is not set, count screen char width for Tab: ^I */ +! count += ptr2cells(ptr); +! } + else if (*ptr == ' ') + ++count; /* count a space for one */ + else +*************** +*** 476,481 **** +--- 483,540 ---- + return (int)col; + } + ++ #if defined(FEAT_LINEBREAK) || defined(PROTO) ++ /* ++ * Return appropriate space number for breakindent, taking influencing ++ * parameters into account. Window must be specified, since it is not ++ * necessarily always the current one. ++ */ ++ int ++ get_breakindent_win(wp, line) ++ win_T *wp; ++ char_u *line; /* start of the line */ ++ { ++ static int prev_indent = 0; /* cached indent value */ ++ static long prev_ts = 0L; /* cached tabstop value */ ++ static char_u *prev_line = NULL; /* cached pointer to line */ ++ int bri = 0; ++ /* window width minus window margin space, i.e. what rests for text */ ++ const int eff_wwidth = W_WIDTH(wp) ++ - ((wp->w_p_nu || wp->w_p_rnu) ++ && (vim_strchr(p_cpo, CPO_NUMCOL) == NULL) ++ ? number_width(wp) + 1 : 0); ++ ++ /* used cached indent, unless pointer or 'tabstop' changed */ ++ if (prev_line != line || prev_ts != wp->w_buffer->b_p_ts) ++ { ++ prev_line = line; ++ prev_ts = wp->w_buffer->b_p_ts; ++ prev_indent = get_indent_str(line, ++ (int)wp->w_buffer->b_p_ts, wp->w_p_list) + wp->w_p_brishift; ++ } ++ ++ /* indent minus the length of the showbreak string */ ++ bri = prev_indent; ++ if (wp->w_p_brisbr) ++ bri -= vim_strsize(p_sbr); ++ ++ /* Add offset for number column, if 'n' is in 'cpoptions' */ ++ bri += win_col_off2(wp); ++ ++ /* never indent past left window margin */ ++ if (bri < 0) ++ bri = 0; ++ /* always leave at least bri_min characters on the left, ++ * if text width is sufficient */ ++ else if (bri > eff_wwidth - wp->w_p_brimin) ++ bri = (eff_wwidth - wp->w_p_brimin < 0) ++ ? 0 : eff_wwidth - wp->w_p_brimin; ++ ++ return bri; ++ } ++ #endif ++ ++ + #if defined(FEAT_CINDENT) || defined(FEAT_SMARTINDENT) + + static int cin_is_cinword __ARGS((char_u *line)); +*************** +*** 678,684 **** + /* + * count white space on current line + */ +! newindent = get_indent_str(saved_line, (int)curbuf->b_p_ts); + if (newindent == 0 && !(flags & OPENLINE_COM_LIST)) + newindent = second_line_indent; /* for ^^D command in insert mode */ + +--- 737,743 ---- + /* + * count white space on current line + */ +! newindent = get_indent_str(saved_line, (int)curbuf->b_p_ts, FALSE); + if (newindent == 0 && !(flags & OPENLINE_COM_LIST)) + newindent = second_line_indent; /* for ^^D command in insert mode */ + +*************** +*** 1201,1207 **** + || do_si + #endif + ) +! newindent = get_indent_str(leader, (int)curbuf->b_p_ts); + + /* Add the indent offset */ + if (newindent + off < 0) +--- 1260,1266 ---- + || do_si + #endif + ) +! newindent = get_indent_str(leader, (int)curbuf->b_p_ts, FALSE); + + /* Add the indent offset */ + if (newindent + off < 0) +*************** +*** 1994,1999 **** +--- 2053,2059 ---- + char_u *s; + int lines = 0; + int width; ++ char_u *line; + + #ifdef FEAT_DIFF + /* Check for filler lines above this buffer line. When folded the result +*************** +*** 2009,2020 **** + return lines + 1; + #endif + +! s = ml_get_buf(wp->w_buffer, lnum, FALSE); + + col = 0; + while (*s != NUL && --column >= 0) + { +! col += win_lbr_chartabsize(wp, s, (colnr_T)col, NULL); + mb_ptr_adv(s); + } + +--- 2069,2080 ---- + return lines + 1; + #endif + +! line = s = ml_get_buf(wp->w_buffer, lnum, FALSE); + + col = 0; + while (*s != NUL && --column >= 0) + { +! col += win_lbr_chartabsize(wp, line, s, (colnr_T)col, NULL); + mb_ptr_adv(s); + } + +*************** +*** 2026,2032 **** + * 'ts') -- webb. + */ + if (*s == TAB && (State & NORMAL) && (!wp->w_p_list || lcs_tab1)) +! col += win_lbr_chartabsize(wp, s, (colnr_T)col, NULL) - 1; + + /* + * Add column offset for 'number', 'relativenumber', 'foldcolumn', etc. +--- 2086,2092 ---- + * 'ts') -- webb. + */ + if (*s == TAB && (State & NORMAL) && (!wp->w_p_list || lcs_tab1)) +! col += win_lbr_chartabsize(wp, line, s, (colnr_T)col, NULL) - 1; + + /* + * Add column offset for 'number', 'relativenumber', 'foldcolumn', etc. +*************** +*** 9002,9011 **** + amount = 2; + else + { + amount = 0; + while (*that && col) + { +! amount += lbr_chartabsize_adv(&that, (colnr_T)amount); + col--; + } + +--- 9062,9073 ---- + amount = 2; + else + { ++ char_u *line = that; ++ + amount = 0; + while (*that && col) + { +! amount += lbr_chartabsize_adv(line, &that, (colnr_T)amount); + col--; + } + +*************** +*** 9028,9034 **** + + while (vim_iswhite(*that)) + { +! amount += lbr_chartabsize(that, (colnr_T)amount); + ++that; + } + +--- 9090,9096 ---- + + while (vim_iswhite(*that)) + { +! amount += lbr_chartabsize(line, that, (colnr_T)amount); + ++that; + } + +*************** +*** 9066,9080 **** + && !quotecount) + --parencount; + if (*that == '\\' && *(that+1) != NUL) +! amount += lbr_chartabsize_adv(&that, +! (colnr_T)amount); +! amount += lbr_chartabsize_adv(&that, +! (colnr_T)amount); + } + } + while (vim_iswhite(*that)) + { +! amount += lbr_chartabsize(that, (colnr_T)amount); + that++; + } + if (!*that || *that == ';') +--- 9128,9143 ---- + && !quotecount) + --parencount; + if (*that == '\\' && *(that+1) != NUL) +! amount += lbr_chartabsize_adv( +! line, &that, (colnr_T)amount); +! amount += lbr_chartabsize_adv( +! line, &that, (colnr_T)amount); + } + } + while (vim_iswhite(*that)) + { +! amount += lbr_chartabsize( +! line, that, (colnr_T)amount); + that++; + } + if (!*that || *that == ';') +*** ../vim-7.4.337/src/misc2.c 2014-05-07 18:35:25.669216052 +0200 +--- src/misc2.c 2014-06-25 13:21:18.474170904 +0200 +*************** +*** 201,210 **** + { + /* Count a tab for what it's worth (if list mode not on) */ + #ifdef FEAT_LINEBREAK +! csize = win_lbr_chartabsize(curwin, ptr, col, &head); + mb_ptr_adv(ptr); + #else +! csize = lbr_chartabsize_adv(&ptr, col); + #endif + col += csize; + } +--- 201,210 ---- + { + /* Count a tab for what it's worth (if list mode not on) */ + #ifdef FEAT_LINEBREAK +! csize = win_lbr_chartabsize(curwin, line, ptr, col, &head); + mb_ptr_adv(ptr); + #else +! csize = lbr_chartabsize_adv(line, &ptr, col); + #endif + col += csize; + } +*************** +*** 2156,2162 **** + } + } + +! #if (defined(UNIX) && !defined(USE_SYSTEM)) || defined(WIN3264) + /* + * Append the text in "gap" below the cursor line and clear "gap". + */ +--- 2156,2163 ---- + } + } + +! #if (defined(UNIX) && !defined(USE_SYSTEM)) || defined(WIN3264) \ +! || defined(PROTO) + /* + * Append the text in "gap" below the cursor line and clear "gap". + */ +*** ../vim-7.4.337/src/ops.c 2014-06-17 18:16:08.420691059 +0200 +--- src/ops.c 2014-06-25 13:18:27.082164420 +0200 +*************** +*** 420,426 **** + } + for ( ; vim_iswhite(*bd.textstart); ) + { +! incr = lbr_chartabsize_adv(&bd.textstart, (colnr_T)(bd.start_vcol)); + total += incr; + bd.start_vcol += incr; + } +--- 420,428 ---- + } + for ( ; vim_iswhite(*bd.textstart); ) + { +! /* TODO: is passing bd.textstart for start of the line OK? */ +! incr = lbr_chartabsize_adv(bd.textstart, &bd.textstart, +! (colnr_T)(bd.start_vcol)); + total += incr; + bd.start_vcol += incr; + } +*************** +*** 480,486 **** + + while (vim_iswhite(*non_white)) + { +! incr = lbr_chartabsize_adv(&non_white, non_white_col); + non_white_col += incr; + } + +--- 482,488 ---- + + while (vim_iswhite(*non_white)) + { +! incr = lbr_chartabsize_adv(bd.textstart, &non_white, non_white_col); + non_white_col += incr; + } + +*************** +*** 505,511 **** + verbatim_copy_width -= bd.start_char_vcols; + while (verbatim_copy_width < destination_col) + { +! incr = lbr_chartabsize(verbatim_copy_end, verbatim_copy_width); + if (verbatim_copy_width + incr > destination_col) + break; + verbatim_copy_width += incr; +--- 507,517 ---- + verbatim_copy_width -= bd.start_char_vcols; + while (verbatim_copy_width < destination_col) + { +! char_u *line = verbatim_copy_end; +! +! /* TODO: is passing verbatim_copy_end for start of the line OK? */ +! incr = lbr_chartabsize(line, verbatim_copy_end, +! verbatim_copy_width); + if (verbatim_copy_width + incr > destination_col) + break; + verbatim_copy_width += incr; +*************** +*** 3617,3623 **** + for (ptr = oldp; vcol < col && *ptr; ) + { + /* Count a tab for what it's worth (if list mode not on) */ +! incr = lbr_chartabsize_adv(&ptr, (colnr_T)vcol); + vcol += incr; + } + bd.textcol = (colnr_T)(ptr - oldp); +--- 3623,3629 ---- + for (ptr = oldp; vcol < col && *ptr; ) + { + /* Count a tab for what it's worth (if list mode not on) */ +! incr = lbr_chartabsize_adv(oldp, &ptr, (colnr_T)vcol); + vcol += incr; + } + bd.textcol = (colnr_T)(ptr - oldp); +*************** +*** 3651,3657 **** + /* calculate number of spaces required to fill right side of block*/ + spaces = y_width + 1; + for (j = 0; j < yanklen; j++) +! spaces -= lbr_chartabsize(&y_array[i][j], 0); + if (spaces < 0) + spaces = 0; + +--- 3657,3663 ---- + /* calculate number of spaces required to fill right side of block*/ + spaces = y_width + 1; + for (j = 0; j < yanklen; j++) +! spaces -= lbr_chartabsize(NULL, &y_array[i][j], 0); + if (spaces < 0) + spaces = 0; + +*************** +*** 5203,5209 **** + while (bdp->start_vcol < oap->start_vcol && *pstart) + { + /* Count a tab for what it's worth (if list mode not on) */ +! incr = lbr_chartabsize(pstart, (colnr_T)bdp->start_vcol); + bdp->start_vcol += incr; + #ifdef FEAT_VISUALEXTRA + if (vim_iswhite(*pstart)) +--- 5209,5215 ---- + while (bdp->start_vcol < oap->start_vcol && *pstart) + { + /* Count a tab for what it's worth (if list mode not on) */ +! incr = lbr_chartabsize(line, pstart, (colnr_T)bdp->start_vcol); + bdp->start_vcol += incr; + #ifdef FEAT_VISUALEXTRA + if (vim_iswhite(*pstart)) +*************** +*** 5272,5278 **** + { + /* Count a tab for what it's worth (if list mode not on) */ + prev_pend = pend; +! incr = lbr_chartabsize_adv(&pend, (colnr_T)bdp->end_vcol); + bdp->end_vcol += incr; + } + if (bdp->end_vcol <= oap->end_vcol +--- 5278,5287 ---- + { + /* Count a tab for what it's worth (if list mode not on) */ + prev_pend = pend; +! /* TODO: is passing prev_pend for start of the line OK? +! * perhaps it should be "line". */ +! incr = lbr_chartabsize_adv(prev_pend, &pend, +! (colnr_T)bdp->end_vcol); + bdp->end_vcol += incr; + } + if (bdp->end_vcol <= oap->end_vcol +*************** +*** 6882,6888 **** + validate_virtcol(); + col_print(buf1, sizeof(buf1), (int)curwin->w_cursor.col + 1, + (int)curwin->w_virtcol + 1); +! col_print(buf2, sizeof(buf2), (int)STRLEN(p), linetabsize(p)); + + if (char_count_cursor == byte_count_cursor + && char_count == byte_count) +--- 6891,6898 ---- + validate_virtcol(); + col_print(buf1, sizeof(buf1), (int)curwin->w_cursor.col + 1, + (int)curwin->w_virtcol + 1); +! col_print(buf2, sizeof(buf2), (int)STRLEN(p), +! linetabsize(p)); + + if (char_count_cursor == byte_count_cursor + && char_count == byte_count) +*** ../vim-7.4.337/src/option.c 2014-06-25 11:48:40.733960646 +0200 +--- src/option.c 2014-06-25 14:31:41.630330672 +0200 +*************** +*** 188,193 **** +--- 188,197 ---- + #ifdef FEAT_ARABIC + # define PV_ARAB OPT_WIN(WV_ARAB) + #endif ++ #ifdef FEAT_LINEBREAK ++ # define PV_BRI OPT_WIN(WV_BRI) ++ # define PV_BRIOPT OPT_WIN(WV_BRIOPT) ++ #endif + #ifdef FEAT_DIFF + # define PV_DIFF OPT_WIN(WV_DIFF) + #endif +*************** +*** 648,653 **** +--- 652,675 ---- + {(char_u *)0L, (char_u *)0L} + #endif + SCRIPTID_INIT}, ++ {"breakindent", "bri", P_BOOL|P_VI_DEF|P_VIM|P_RWIN, ++ #ifdef FEAT_LINEBREAK ++ (char_u *)VAR_WIN, PV_BRI, ++ {(char_u *)FALSE, (char_u *)0L} ++ #else ++ (char_u *)NULL, PV_NONE, ++ {(char_u *)0L, (char_u *)0L} ++ #endif ++ SCRIPTID_INIT}, ++ {"breakindentopt", "briopt", P_STRING|P_ALLOCED|P_VI_DEF|P_RBUF|P_COMMA|P_NODUP, ++ #ifdef FEAT_LINEBREAK ++ (char_u *)VAR_WIN, PV_BRIOPT, ++ {(char_u *)"", (char_u *)NULL} ++ #else ++ (char_u *)NULL, PV_NONE, ++ {(char_u *)"", (char_u *)NULL} ++ #endif ++ SCRIPTID_INIT}, + {"browsedir", "bsdir",P_STRING|P_VI_DEF, + #ifdef FEAT_BROWSE + (char_u *)&p_bsdir, PV_NONE, +*************** +*** 5256,5261 **** +--- 5278,5286 ---- + /* set cedit_key */ + (void)check_cedit(); + #endif ++ #ifdef FEAT_LINEBREAK ++ briopt_check(); ++ #endif + } + + /* +*************** +*** 5709,5714 **** +--- 5734,5747 ---- + *p_pm == '.' ? p_pm + 1 : p_pm) == 0) + errmsg = (char_u *)N_("E589: 'backupext' and 'patchmode' are equal"); + } ++ #ifdef FEAT_LINEBREAK ++ /* 'breakindentopt' */ ++ else if (varp == &curwin->w_p_briopt) ++ { ++ if (briopt_check() == FAIL) ++ errmsg = e_invarg; ++ } ++ #endif + + /* + * 'isident', 'iskeyword', 'isprint or 'isfname' option: refill chartab[] +*************** +*** 10018,10023 **** +--- 10051,10058 ---- + case PV_WRAP: return (char_u *)&(curwin->w_p_wrap); + #ifdef FEAT_LINEBREAK + case PV_LBR: return (char_u *)&(curwin->w_p_lbr); ++ case PV_BRI: return (char_u *)&(curwin->w_p_bri); ++ case PV_BRIOPT: return (char_u *)&(curwin->w_p_briopt); + #endif + #ifdef FEAT_SCROLLBIND + case PV_SCBIND: return (char_u *)&(curwin->w_p_scb); +*************** +*** 10207,10212 **** +--- 10242,10249 ---- + #endif + #ifdef FEAT_LINEBREAK + to->wo_lbr = from->wo_lbr; ++ to->wo_bri = from->wo_bri; ++ to->wo_briopt = vim_strsave(from->wo_briopt); + #endif + #ifdef FEAT_SCROLLBIND + to->wo_scb = from->wo_scb; +*************** +*** 10294,10299 **** +--- 10331,10339 ---- + #ifdef FEAT_CONCEAL + check_string_option(&wop->wo_cocu); + #endif ++ #ifdef FEAT_LINEBREAK ++ check_string_option(&wop->wo_briopt); ++ #endif + } + + /* +*************** +*** 10313,10318 **** +--- 10353,10361 ---- + # endif + clear_string_option(&wop->wo_fmr); + #endif ++ #ifdef FEAT_LINEBREAK ++ clear_string_option(&wop->wo_briopt); ++ #endif + #ifdef FEAT_RIGHTLEFT + clear_string_option(&wop->wo_rlc); + #endif +*************** +*** 11927,11929 **** +--- 11970,12018 ---- + ++ptr; + } + } ++ ++ #if defined(FEAT_LINEBREAK) || defined(PROTO) ++ /* ++ * This is called when 'breakindentopt' is changed and when a window is ++ * initialized. ++ */ ++ int ++ briopt_check() ++ { ++ char_u *p; ++ int bri_shift = 0; ++ long bri_min = 20; ++ int bri_sbr = FALSE; ++ ++ p = curwin->w_p_briopt; ++ while (*p != NUL) ++ { ++ if (STRNCMP(p, "shift:", 6) == 0 ++ && ((p[6] == '-' && VIM_ISDIGIT(p[7])) || VIM_ISDIGIT(p[6]))) ++ { ++ p += 6; ++ bri_shift = getdigits(&p); ++ } ++ else if (STRNCMP(p, "min:", 4) == 0 && VIM_ISDIGIT(p[4])) ++ { ++ p += 4; ++ bri_min = getdigits(&p); ++ } ++ else if (STRNCMP(p, "sbr", 3) == 0) ++ { ++ p += 3; ++ bri_sbr = TRUE; ++ } ++ if (*p != ',' && *p != NUL) ++ return FAIL; ++ if (*p == ',') ++ ++p; ++ } ++ ++ curwin->w_p_brishift = bri_shift; ++ curwin->w_p_brimin = bri_min; ++ curwin->w_p_brisbr = bri_sbr; ++ ++ return OK; ++ } ++ #endif +*** ../vim-7.4.337/src/option.h 2014-05-28 21:40:47.092329130 +0200 +--- src/option.h 2014-06-25 12:57:01.002115765 +0200 +*************** +*** 1052,1057 **** +--- 1052,1061 ---- + #ifdef FEAT_CURSORBIND + , WV_CRBIND + #endif ++ #ifdef FEAT_LINEBREAK ++ , WV_BRI ++ , WV_BRIOPT ++ #endif + #ifdef FEAT_DIFF + , WV_DIFF + #endif +*** ../vim-7.4.337/src/proto/charset.pro 2013-08-10 13:37:07.000000000 +0200 +--- src/proto/charset.pro 2014-06-25 13:22:32.934173721 +0200 +*************** +*** 16,22 **** + int chartabsize __ARGS((char_u *p, colnr_T col)); + int linetabsize __ARGS((char_u *s)); + int linetabsize_col __ARGS((int startcol, char_u *s)); +! int win_linetabsize __ARGS((win_T *wp, char_u *p, colnr_T len)); + int vim_isIDc __ARGS((int c)); + int vim_iswordc __ARGS((int c)); + int vim_iswordc_buf __ARGS((int c, buf_T *buf)); +--- 16,22 ---- + int chartabsize __ARGS((char_u *p, colnr_T col)); + int linetabsize __ARGS((char_u *s)); + int linetabsize_col __ARGS((int startcol, char_u *s)); +! int win_linetabsize __ARGS((win_T *wp, char_u *line, colnr_T len)); + int vim_isIDc __ARGS((int c)); + int vim_iswordc __ARGS((int c)); + int vim_iswordc_buf __ARGS((int c, buf_T *buf)); +*************** +*** 26,34 **** + int vim_isfilec_or_wc __ARGS((int c)); + int vim_isprintc __ARGS((int c)); + int vim_isprintc_strict __ARGS((int c)); +! int lbr_chartabsize __ARGS((unsigned char *s, colnr_T col)); +! int lbr_chartabsize_adv __ARGS((char_u **s, colnr_T col)); +! int win_lbr_chartabsize __ARGS((win_T *wp, char_u *s, colnr_T col, int *headp)); + int in_win_border __ARGS((win_T *wp, colnr_T vcol)); + void getvcol __ARGS((win_T *wp, pos_T *pos, colnr_T *start, colnr_T *cursor, colnr_T *end)); + colnr_T getvcol_nolist __ARGS((pos_T *posp)); +--- 26,34 ---- + int vim_isfilec_or_wc __ARGS((int c)); + int vim_isprintc __ARGS((int c)); + int vim_isprintc_strict __ARGS((int c)); +! int lbr_chartabsize __ARGS((char_u *line, unsigned char *s, colnr_T col)); +! int lbr_chartabsize_adv __ARGS((char_u *line, char_u **s, colnr_T col)); +! int win_lbr_chartabsize __ARGS((win_T *wp, char_u *line, char_u *s, colnr_T col, int *headp)); + int in_win_border __ARGS((win_T *wp, colnr_T vcol)); + void getvcol __ARGS((win_T *wp, pos_T *pos, colnr_T *start, colnr_T *cursor, colnr_T *end)); + colnr_T getvcol_nolist __ARGS((pos_T *posp)); +*** ../vim-7.4.337/src/proto/misc1.pro 2014-05-07 15:10:17.661108310 +0200 +--- src/proto/misc1.pro 2014-06-25 12:57:01.002115765 +0200 +*************** +*** 2,10 **** + int get_indent __ARGS((void)); + int get_indent_lnum __ARGS((linenr_T lnum)); + int get_indent_buf __ARGS((buf_T *buf, linenr_T lnum)); +! int get_indent_str __ARGS((char_u *ptr, int ts)); + int set_indent __ARGS((int size, int flags)); + int get_number_indent __ARGS((linenr_T lnum)); + int open_line __ARGS((int dir, int flags, int second_line_indent)); + int get_leader_len __ARGS((char_u *line, char_u **flags, int backward, int include_space)); + int get_last_leader_offset __ARGS((char_u *line, char_u **flags)); +--- 2,11 ---- + int get_indent __ARGS((void)); + int get_indent_lnum __ARGS((linenr_T lnum)); + int get_indent_buf __ARGS((buf_T *buf, linenr_T lnum)); +! int get_indent_str __ARGS((char_u *ptr, int ts, int list)); + int set_indent __ARGS((int size, int flags)); + int get_number_indent __ARGS((linenr_T lnum)); ++ int get_breakindent_win __ARGS((win_T *wp, char_u *ptr)); + int open_line __ARGS((int dir, int flags, int second_line_indent)); + int get_leader_len __ARGS((char_u *line, char_u **flags, int backward, int include_space)); + int get_last_leader_offset __ARGS((char_u *line, char_u **flags)); +*** ../vim-7.4.337/src/proto/option.pro 2014-01-14 16:54:53.000000000 +0100 +--- src/proto/option.pro 2014-06-25 14:16:04.882295233 +0200 +*************** +*** 63,66 **** +--- 63,67 ---- + long get_sw_value __ARGS((buf_T *buf)); + long get_sts_value __ARGS((void)); + void find_mps_values __ARGS((int *initc, int *findc, int *backwards, int switchit)); ++ int briopt_check __ARGS((void)); + /* vim: set ft=c : */ +*** ../vim-7.4.337/src/screen.c 2014-06-18 21:20:07.232377308 +0200 +--- src/screen.c 2014-06-25 13:43:39.930221653 +0200 +*************** +*** 2962,2971 **** + # define WL_SIGN WL_FOLD /* column for signs */ + #endif + #define WL_NR WL_SIGN + 1 /* line number */ + #if defined(FEAT_LINEBREAK) || defined(FEAT_DIFF) +! # define WL_SBR WL_NR + 1 /* 'showbreak' or 'diff' */ + #else +! # define WL_SBR WL_NR + #endif + #define WL_LINE WL_SBR + 1 /* text in the line */ + int draw_state = WL_START; /* what to draw next */ +--- 2962,2976 ---- + # define WL_SIGN WL_FOLD /* column for signs */ + #endif + #define WL_NR WL_SIGN + 1 /* line number */ ++ #ifdef FEAT_LINEBREAK ++ # define WL_BRI WL_NR + 1 /* 'breakindent' */ ++ #else ++ # define WL_BRI WL_NR ++ #endif + #if defined(FEAT_LINEBREAK) || defined(FEAT_DIFF) +! # define WL_SBR WL_BRI + 1 /* 'showbreak' or 'diff' */ + #else +! # define WL_SBR WL_BRI + #endif + #define WL_LINE WL_SBR + 1 /* text in the line */ + int draw_state = WL_START; /* what to draw next */ +*************** +*** 3301,3307 **** + #endif + while (vcol < v && *ptr != NUL) + { +! c = win_lbr_chartabsize(wp, ptr, (colnr_T)vcol, NULL); + vcol += c; + #ifdef FEAT_MBYTE + prev_ptr = ptr; +--- 3306,3312 ---- + #endif + while (vcol < v && *ptr != NUL) + { +! c = win_lbr_chartabsize(wp, line, ptr, (colnr_T)vcol, NULL); + vcol += c; + #ifdef FEAT_MBYTE + prev_ptr = ptr; +*************** +*** 3670,3675 **** +--- 3675,3718 ---- + } + } + ++ #ifdef FEAT_LINEBREAK ++ if (wp->w_p_brisbr && draw_state == WL_BRI - 1 ++ && n_extra == 0 && *p_sbr != NUL) ++ /* draw indent after showbreak value */ ++ draw_state = WL_BRI; ++ else if (wp->w_p_brisbr && draw_state == WL_SBR && n_extra == 0) ++ /* After the showbreak, draw the breakindent */ ++ draw_state = WL_BRI - 1; ++ ++ /* draw 'breakindent': indent wrapped text accordingly */ ++ if (draw_state == WL_BRI - 1 && n_extra == 0) ++ { ++ draw_state = WL_BRI; ++ # ifdef FEAT_DIFF ++ # endif ++ if (wp->w_p_bri && n_extra == 0 && row != startrow ++ #ifdef FEAT_DIFF ++ && filler_lines == 0 ++ #endif ++ ) ++ { ++ char_attr = 0; /* was: hl_attr(HLF_AT); */ ++ #ifdef FEAT_DIFF ++ if (diff_hlf != (hlf_T)0) ++ char_attr = hl_attr(diff_hlf); ++ #endif ++ p_extra = NUL; ++ c_extra = ' '; ++ n_extra = get_breakindent_win(wp, ++ ml_get_buf(wp->w_buffer, lnum, FALSE)); ++ /* Correct end of highlighted area for 'breakindent', ++ * required when 'linebreak' is also set. */ ++ if (tocol == vcol) ++ tocol += n_extra; ++ } ++ } ++ #endif ++ + #if defined(FEAT_LINEBREAK) || defined(FEAT_DIFF) + if (draw_state == WL_SBR - 1 && n_extra == 0) + { +*************** +*** 4382,4392 **** + if (wp->w_p_lbr && vim_isbreak(c) && !vim_isbreak(*ptr) + && !wp->w_p_list) + { +! n_extra = win_lbr_chartabsize(wp, ptr - ( + # ifdef FEAT_MBYTE + has_mbyte ? mb_l : + # endif +! 1), (colnr_T)vcol, NULL) - 1; + c_extra = ' '; + if (vim_iswhite(c)) + { +--- 4425,4438 ---- + if (wp->w_p_lbr && vim_isbreak(c) && !vim_isbreak(*ptr) + && !wp->w_p_list) + { +! char_u *p = ptr - ( + # ifdef FEAT_MBYTE + has_mbyte ? mb_l : + # endif +! 1); +! /* TODO: is passing p for start of the line OK? */ +! n_extra = win_lbr_chartabsize(wp, p, p, (colnr_T)vcol, +! NULL) - 1; + c_extra = ' '; + if (vim_iswhite(c)) + { +*************** +*** 8916,8923 **** + { + if (noinvcurs) + screen_stop_highlight(); +! if (row == screen_cur_row && (col > screen_cur_col) && +! *T_CRI != NUL) + term_cursor_right(col - screen_cur_col); + else + term_windgoto(row, col); +--- 8962,8969 ---- + { + if (noinvcurs) + screen_stop_highlight(); +! if (row == screen_cur_row && (col > screen_cur_col) +! && *T_CRI != NUL) + term_cursor_right(col - screen_cur_col); + else + term_windgoto(row, col); +*** ../vim-7.4.337/src/structs.h 2014-06-17 17:48:21.784628008 +0200 +--- src/structs.h 2014-06-25 12:57:01.006115766 +0200 +*************** +*** 134,139 **** +--- 134,145 ---- + int wo_arab; + # define w_p_arab w_onebuf_opt.wo_arab /* 'arabic' */ + #endif ++ #ifdef FEAT_LINEBREAK ++ int wo_bri; ++ # define w_p_bri w_onebuf_opt.wo_bri /* 'breakindent' */ ++ char_u *wo_briopt; ++ # define w_p_briopt w_onebuf_opt.wo_briopt /* 'breakindentopt' */ ++ #endif + #ifdef FEAT_DIFF + int wo_diff; + # define w_p_diff w_onebuf_opt.wo_diff /* 'diff' */ +*************** +*** 2189,2194 **** +--- 2195,2205 ---- + #ifdef FEAT_SYN_HL + int *w_p_cc_cols; /* array of columns to highlight or NULL */ + #endif ++ #ifdef FEAT_LINEBREAK ++ int w_p_brimin; /* minimum width for breakindent */ ++ int w_p_brishift; /* additional shift for breakindent */ ++ int w_p_brisbr; /* sbr in 'briopt' */ ++ #endif + + /* transform a pointer to a "onebuf" option into a "allbuf" option */ + #define GLOBAL_WO(p) ((char *)p + sizeof(winopt_T)) +*** ../vim-7.4.337/src/testdir/Make_amiga.mak 2014-05-29 11:47:19.804773758 +0200 +--- src/testdir/Make_amiga.mak 2014-06-25 12:57:01.006115766 +0200 +*************** +*** 37,42 **** +--- 37,43 ---- + test99.out test100.out test101.out test102.out test103.out \ + test104.out test105.out test106.out test107.out \ + test_autoformat_join.out \ ++ test_breakindent.out \ + test_eval.out \ + test_options.out + +*************** +*** 163,167 **** +--- 164,169 ---- + test106.out: test106.in + test107.out: test107.in + test_autoformat_join.out: test_autoformat_join.in ++ test_breakindent.out: test_breakindent.in + test_eval.out: test_eval.in + test_options.out: test_options.in +*** ../vim-7.4.337/src/testdir/Make_dos.mak 2014-05-29 11:47:19.804773758 +0200 +--- src/testdir/Make_dos.mak 2014-06-25 12:57:01.006115766 +0200 +*************** +*** 36,41 **** +--- 36,42 ---- + test100.out test101.out test102.out test103.out test104.out \ + test105.out test106.out test107.out\ + test_autoformat_join.out \ ++ test_breakindent.out \ + test_eval.out \ + test_options.out + +*** ../vim-7.4.337/src/testdir/Make_ming.mak 2014-05-29 11:47:19.804773758 +0200 +--- src/testdir/Make_ming.mak 2014-06-25 12:57:01.006115766 +0200 +*************** +*** 56,61 **** +--- 56,62 ---- + test100.out test101.out test102.out test103.out test104.out \ + test105.out test106.out test107.out \ + test_autoformat_join.out \ ++ test_breakindent.out \ + test_eval.out \ + test_options.out + +*** ../vim-7.4.337/src/testdir/Make_os2.mak 2014-05-29 11:47:19.804773758 +0200 +--- src/testdir/Make_os2.mak 2014-06-25 12:59:45.774121999 +0200 +*************** +*** 39,44 **** +--- 39,45 ---- + test105.out test106.out test107.out \ + test_autoformat_join.out \ + test_eval.out \ ++ test_breakindent.out \ + test_options.out + + .SUFFIXES: .in .out +*** ../vim-7.4.337/src/testdir/Make_vms.mms 2014-05-29 11:47:19.804773758 +0200 +--- src/testdir/Make_vms.mms 2014-06-25 12:57:01.006115766 +0200 +*************** +*** 97,102 **** +--- 97,103 ---- + test100.out test101.out test103.out test104.out \ + test105.out test106.out test107.out \ + test_autoformat_join.out \ ++ test_breakindent.out \ + test_eval.out \ + test_options.out + +*** ../vim-7.4.337/src/testdir/Makefile 2014-05-29 11:47:19.804773758 +0200 +--- src/testdir/Makefile 2014-06-25 12:57:01.006115766 +0200 +*************** +*** 34,39 **** +--- 34,40 ---- + test99.out test100.out test101.out test102.out test103.out \ + test104.out test105.out test106.out test107.out \ + test_autoformat_join.out \ ++ test_breakindent.out \ + test_eval.out \ + test_options.out + +*** ../vim-7.4.337/src/testdir/test_breakindent.in 2014-06-25 14:36:28.690341532 +0200 +--- src/testdir/test_breakindent.in 2014-06-25 14:26:00.994317785 +0200 +*************** +*** 0 **** +--- 1,79 ---- ++ Test for breakindent ++ ++ STARTTEST ++ :so small.vim ++ :if !exists("+breakindent") | e! test.ok | w! test.out | qa! | endif ++ :10new|:vsp|:vert resize 20 ++ :put =\"\tabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOP\" ++ :set ts=4 sw=4 sts=4 breakindent ++ :fu! ScreenChar(width) ++ : let c='' ++ : for i in range(1,a:width) ++ : let c.=nr2char(screenchar(line('.'), i)) ++ : endfor ++ : let c.="\n" ++ : for i in range(1,a:width) ++ : let c.=nr2char(screenchar(line('.')+1, i)) ++ : endfor ++ : let c.="\n" ++ : for i in range(1,a:width) ++ : let c.=nr2char(screenchar(line('.')+2, i)) ++ : endfor ++ : return c ++ :endfu ++ :fu DoRecordScreen() ++ : wincmd l ++ : $put =printf(\"\n%s\", g:test) ++ : $put =g:line1 ++ : wincmd p ++ :endfu ++ :let g:test="Test 1: Simple breakindent" ++ :let line1=ScreenChar(8) ++ :call DoRecordScreen() ++ :let g:test="Test 2: Simple breakindent + sbr=>>" ++ :set sbr=>> ++ :let line1=ScreenChar(8) ++ :call DoRecordScreen() ++ :let g:test ="Test 3: Simple breakindent + briopt:sbr" ++ :set briopt=sbr,min:0 sbr=++ ++ :let line1=ScreenChar(8) ++ :call DoRecordScreen() ++ :let g:test ="Test 4: Simple breakindent + min width: 18" ++ :set sbr= briopt=min:18 ++ :let line1=ScreenChar(8) ++ :call DoRecordScreen() ++ :let g:test =" Test 5: Simple breakindent + shift by 2" ++ :set briopt=shift:2,min:0 ++ :let line1=ScreenChar(8) ++ :call DoRecordScreen() ++ :let g:test=" Test 6: Simple breakindent + shift by -1" ++ :set briopt=shift:-1,min:0 ++ :let line1=ScreenChar(8) ++ :call DoRecordScreen() ++ :let g:test=" Test 7: breakindent + shift by +1 + nu + sbr=? briopt:sbr" ++ :set briopt=shift:1,sbr,min:0 nu sbr=? nuw=4 ++ :let line1=ScreenChar(10) ++ :call DoRecordScreen() ++ :let g:test=" Test 8: breakindent + shift:1 + nu + sbr=# list briopt:sbr" ++ :set briopt=shift:1,sbr,min:0 nu sbr=# list ++ :let line1=ScreenChar(10) ++ :call DoRecordScreen() ++ :let g:test=" Test 9: breakindent + shift by +1 + 'nu' + sbr=# list" ++ :set briopt-=sbr ++ :let line1=ScreenChar(10) ++ :call DoRecordScreen() ++ :let g:test=" Test 10: breakindent + shift by +1 + 'nu' + sbr=~ cpo+=n" ++ :set cpo+=n sbr=~ nu nuw=4 nolist briopt=sbr,min:0 ++ :let line1=ScreenChar(10) ++ :call DoRecordScreen() ++ :wincmd p ++ :let g:test="\n Test 11: strdisplaywidth when breakindent is on" ++ :set cpo-=n sbr=>> nu nuw=4 nolist briopt= ts=4 ++ :let text=getline(2) "skip leading tab when calculating text width ++ :let width = strlen(text[1:])+indent(2)*4+strlen(&sbr)*3 " text wraps 3 times ++ :$put =g:test ++ :$put =printf(\"strdisplaywidth: %d == calculated: %d\", strdisplaywidth(text), width) ++ :%w! test.out ++ :qa! ++ ENDTEST ++ dummy text +*** ../vim-7.4.337/src/testdir/test_breakindent.ok 2014-06-25 14:36:28.698341532 +0200 +--- src/testdir/test_breakindent.ok 2014-06-25 12:57:01.006115766 +0200 +*************** +*** 0 **** +--- 1,55 ---- ++ ++ abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOP ++ ++ Test 1: Simple breakindent ++ abcd ++ qrst ++ GHIJ ++ ++ Test 2: Simple breakindent + sbr=>> ++ abcd ++ >>qr ++ >>EF ++ ++ Test 3: Simple breakindent + briopt:sbr ++ abcd ++ ++ qrst ++ ++ GHIJ ++ ++ Test 4: Simple breakindent + min width: 18 ++ abcd ++ qrstuv ++ IJKLMN ++ ++ Test 5: Simple breakindent + shift by 2 ++ abcd ++ qr ++ EF ++ ++ Test 6: Simple breakindent + shift by -1 ++ abcd ++ qrstu ++ HIJKL ++ ++ Test 7: breakindent + shift by +1 + nu + sbr=? briopt:sbr ++ 2 ab ++ ? m ++ ? x ++ ++ Test 8: breakindent + shift:1 + nu + sbr=# list briopt:sbr ++ 2 ^Iabcd ++ # opq ++ # BCD ++ ++ Test 9: breakindent + shift by +1 + 'nu' + sbr=# list ++ 2 ^Iabcd ++ #op ++ #AB ++ ++ Test 10: breakindent + shift by +1 + 'nu' + sbr=~ cpo+=n ++ 2 ab ++ ~ mn ++ ~ yz ++ ++ Test 11: strdisplaywidth when breakindent is on ++ strdisplaywidth: 46 == calculated: 64 +*** ../vim-7.4.337/src/ui.c 2014-06-12 13:28:26.771694851 +0200 +--- src/ui.c 2014-06-25 13:22:20.218173240 +0200 +*************** +*** 3162,3176 **** + /* try to advance to the specified column */ + int count = 0; + char_u *ptr; +! char_u *start; + +! start = ptr = ml_get_buf(wp->w_buffer, lnum, FALSE); + while (count < vcol && *ptr != NUL) + { +! count += win_lbr_chartabsize(wp, ptr, count, NULL); + mb_ptr_adv(ptr); + } +! return (int)(ptr - start); + } + #endif + +--- 3162,3176 ---- + /* try to advance to the specified column */ + int count = 0; + char_u *ptr; +! char_u *line; + +! line = ptr = ml_get_buf(wp->w_buffer, lnum, FALSE); + while (count < vcol && *ptr != NUL) + { +! count += win_lbr_chartabsize(wp, line, ptr, count, NULL); + mb_ptr_adv(ptr); + } +! return (int)(ptr - line); + } + #endif + +*** ../vim-7.4.337/src/version.c 2014-06-25 12:26:42.230046959 +0200 +--- src/version.c 2014-06-25 13:00:26.990123558 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 338, + /**/ + +-- +MORTICIAN: Bring out your dead! + [clang] + Bring out your dead! + [clang] + Bring out your dead! +CUSTOMER: Here's one -- nine pence. +DEAD PERSON: I'm not dead! + The Quest for the Holy Grail (Monty Python) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.339 b/SOURCES/7.4.339 new file mode 100644 index 0000000..ffe2d16 --- /dev/null +++ b/SOURCES/7.4.339 @@ -0,0 +1,79 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.339 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.339 +Problem: Local function is available globally. +Solution: Add "static". +Files: src/option.c, src/proto/option.pro + + +*** ../vim-7.4.338/src/option.c 2014-06-25 14:39:35.110348584 +0200 +--- src/option.c 2014-06-25 14:42:33.986355351 +0200 +*************** +*** 3074,3079 **** +--- 3074,3080 ---- + static char_u *get_varp_scope __ARGS((struct vimoption *p, int opt_flags)); + static char_u *get_varp __ARGS((struct vimoption *)); + static void option_value2string __ARGS((struct vimoption *, int opt_flags)); ++ static void check_winopt __ARGS((winopt_T *wop)); + static int wc_use_keyname __ARGS((char_u *varp, long *wcp)); + #ifdef FEAT_LANGMAP + static void langmap_init __ARGS((void)); +*************** +*** 10305,10311 **** + /* + * Check for NULL pointers in a winopt_T and replace them with empty_option. + */ +! void + check_winopt(wop) + winopt_T *wop UNUSED; + { +--- 10306,10312 ---- + /* + * Check for NULL pointers in a winopt_T and replace them with empty_option. + */ +! static void + check_winopt(wop) + winopt_T *wop UNUSED; + { +*** ../vim-7.4.338/src/proto/option.pro 2014-06-25 14:39:35.110348584 +0200 +--- src/proto/option.pro 2014-06-25 14:42:38.702355530 +0200 +*************** +*** 40,46 **** + void win_copy_options __ARGS((win_T *wp_from, win_T *wp_to)); + void copy_winopt __ARGS((winopt_T *from, winopt_T *to)); + void check_win_options __ARGS((win_T *win)); +- void check_winopt __ARGS((winopt_T *wop)); + void clear_winopt __ARGS((winopt_T *wop)); + void buf_copy_options __ARGS((buf_T *buf, int flags)); + void reset_modifiable __ARGS((void)); +--- 40,45 ---- +*** ../vim-7.4.338/src/version.c 2014-06-25 14:39:35.114348584 +0200 +--- src/version.c 2014-06-25 14:43:41.502357905 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 339, + /**/ + +-- +MORTICIAN: What? +CUSTOMER: Nothing -- here's your nine pence. +DEAD PERSON: I'm not dead! +MORTICIAN: Here -- he says he's not dead! +CUSTOMER: Yes, he is. +DEAD PERSON: I'm not! + The Quest for the Holy Grail (Monty Python) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.340 b/SOURCES/7.4.340 new file mode 100644 index 0000000..f469420 --- /dev/null +++ b/SOURCES/7.4.340 @@ -0,0 +1,97 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.340 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.340 +Problem: Error from sed about illegal bytes when installing Vim. +Solution: Prepend LC_ALL=C. (Itchyny) +Files: src/installman.sh + + +*** ../vim-7.4.339/src/installman.sh 2010-05-15 13:04:07.000000000 +0200 +--- src/installman.sh 2014-06-25 14:54:11.742381748 +0200 +*************** +*** 43,52 **** + fi + fi + + if test $what = "install"; then + # vim.1 + echo installing $destdir/$exename.1 +! sed -e s+/usr/local/lib/vim+$vimloc+ \ + -e s+$vimloc/doc+$helpsubloc+ \ + -e s+$vimloc/print+$printsubloc+ \ + -e s+$vimloc/syntax+$synsubloc+ \ +--- 43,55 ---- + fi + fi + ++ # Note: setting LC_ALL to C is required to avoid illegal byte errors from sed ++ # on some systems. ++ + if test $what = "install"; then + # vim.1 + echo installing $destdir/$exename.1 +! LC_ALL=C sed -e s+/usr/local/lib/vim+$vimloc+ \ + -e s+$vimloc/doc+$helpsubloc+ \ + -e s+$vimloc/print+$printsubloc+ \ + -e s+$vimloc/syntax+$synsubloc+ \ +*************** +*** 64,70 **** + + # vimtutor.1 + echo installing $destdir/$exename""tutor.1 +! sed -e s+/usr/local/lib/vim+$vimloc+ \ + -e s+$vimloc/tutor+$tutorsubloc+ \ + $helpsource/vimtutor$langadd.1 > $destdir/$exename""tutor.1 + chmod $manmod $destdir/$exename""tutor.1 +--- 67,73 ---- + + # vimtutor.1 + echo installing $destdir/$exename""tutor.1 +! LC_ALL=C sed -e s+/usr/local/lib/vim+$vimloc+ \ + -e s+$vimloc/tutor+$tutorsubloc+ \ + $helpsource/vimtutor$langadd.1 > $destdir/$exename""tutor.1 + chmod $manmod $destdir/$exename""tutor.1 +*************** +*** 76,82 **** + + # evim.1 + echo installing $destdir/$evimname.1 +! sed -e s+/usr/local/lib/vim+$vimloc+ \ + -e s+$vimloc/evim.vim+$scriptloc/evim.vim+ \ + $helpsource/evim$langadd.1 > $destdir/$evimname.1 + chmod $manmod $destdir/$evimname.1 +--- 79,85 ---- + + # evim.1 + echo installing $destdir/$evimname.1 +! LC_ALL=C sed -e s+/usr/local/lib/vim+$vimloc+ \ + -e s+$vimloc/evim.vim+$scriptloc/evim.vim+ \ + $helpsource/evim$langadd.1 > $destdir/$evimname.1 + chmod $manmod $destdir/$evimname.1 +*** ../vim-7.4.339/src/version.c 2014-06-25 14:44:04.458358774 +0200 +--- src/version.c 2014-06-25 14:55:14.198384111 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 340, + /**/ + +-- +DEAD PERSON: I'm getting better! +CUSTOMER: No, you're not -- you'll be stone dead in a moment. +MORTICIAN: Oh, I can't take him like that -- it's against regulations. + The Quest for the Holy Grail (Monty Python) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.341 b/SOURCES/7.4.341 new file mode 100644 index 0000000..061828a --- /dev/null +++ b/SOURCES/7.4.341 @@ -0,0 +1,178 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.341 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.341 +Problem: sort() doesn't handle numbers well. +Solution: Add an argument to specify sorting on numbers. (Christian Brabandt) +Files: runtime/doc/eval.txt, src/eval.c, src/testdir/test55.in, + src/testdir/test55.ok + + +*** ../vim-7.4.340/runtime/doc/eval.txt 2014-06-25 14:39:35.094348583 +0200 +--- runtime/doc/eval.txt 2014-06-25 17:05:50.606680574 +0200 +*************** +*** 5618,5628 **** + + If you want a list to remain unmodified make a copy first: > + :let sortedlist = sort(copy(mylist)) +- < Uses the string representation of each item to sort on. +- Numbers sort after Strings, |Lists| after Numbers. +- For sorting text in the current buffer use |:sort|. + +! When {func} is given and it is one then case is ignored. + When {func} is a |Funcref| or a function name, this function + is called to compare items. The function is invoked with two + items as argument and must return zero if they are equal, 1 or +--- 5628,5647 ---- + + If you want a list to remain unmodified make a copy first: > + :let sortedlist = sort(copy(mylist)) + +! < When {func} is omitted, is empty or zero, then sort() uses the +! string representation of each item to sort on. Numbers sort +! after Strings, |Lists| after Numbers. For sorting text in the +! current buffer use |:sort|. +! +! When {func} is given and it is is '1' or 'i' then case is +! ignored. +! +! When {func} is given and it is 'n' then all items will be +! sorted numerical (Implementation detail: This uses the +! strtod() function to parse numbers, Strings, Lists, Dicts and +! Funcrefs will be considered as being 0). +! + When {func} is a |Funcref| or a function name, this function + is called to compare items. The function is invoked with two + items as argument and must return zero if they are equal, 1 or +*** ../vim-7.4.340/src/eval.c 2014-06-17 17:48:21.776628008 +0200 +--- src/eval.c 2014-06-25 17:23:05.466719724 +0200 +*************** +*** 17330,17335 **** +--- 17330,17336 ---- + item_compare2 __ARGS((const void *s1, const void *s2)); + + static int item_compare_ic; ++ static int item_compare_numeric; + static char_u *item_compare_func; + static dict_T *item_compare_selfdict; + static int item_compare_func_err; +*************** +*** 17359,17368 **** + p1 = (char_u *)""; + if (p2 == NULL) + p2 = (char_u *)""; +! if (item_compare_ic) +! res = STRICMP(p1, p2); + else +! res = STRCMP(p1, p2); + vim_free(tofree1); + vim_free(tofree2); + return res; +--- 17360,17379 ---- + p1 = (char_u *)""; + if (p2 == NULL) + p2 = (char_u *)""; +! if (!item_compare_numeric) +! { +! if (item_compare_ic) +! res = STRICMP(p1, p2); +! else +! res = STRCMP(p1, p2); +! } + else +! { +! double n1, n2; +! n1 = strtod((char *)p1, (char **)&p1); +! n2 = strtod((char *)p2, (char **)&p2); +! res = n1 == n2 ? 0 : n1 > n2 ? 1 : -1; +! } + vim_free(tofree1); + vim_free(tofree2); + return res; +*************** +*** 17439,17444 **** +--- 17450,17456 ---- + return; /* short list sorts pretty quickly */ + + item_compare_ic = FALSE; ++ item_compare_numeric = FALSE; + item_compare_func = NULL; + item_compare_selfdict = NULL; + if (argvars[1].v_type != VAR_UNKNOWN) +*************** +*** 17457,17462 **** +--- 17469,17487 ---- + item_compare_ic = TRUE; + else + item_compare_func = get_tv_string(&argvars[1]); ++ if (item_compare_func != NULL) ++ { ++ if (STRCMP(item_compare_func, "n") == 0) ++ { ++ item_compare_func = NULL; ++ item_compare_numeric = TRUE; ++ } ++ else if (STRCMP(item_compare_func, "i") == 0) ++ { ++ item_compare_func = NULL; ++ item_compare_ic = TRUE; ++ } ++ } + } + + if (argvars[2].v_type != VAR_UNKNOWN) +*** ../vim-7.4.340/src/testdir/test55.in 2014-03-25 18:23:27.062087691 +0100 +--- src/testdir/test55.in 2014-06-25 17:20:47.006714486 +0200 +*************** +*** 332,337 **** +--- 332,342 ---- + :$put =string(reverse(sort(l))) + :$put =string(sort(reverse(sort(l)))) + :$put =string(uniq(sort(l))) ++ :let l=[7, 9, 18, 12, 22, 10.0e-16, -1, 0xff, 0, -0, 0.22, 'foo', 'FOOBAR',{}, []] ++ :$put =string(sort(copy(l), 'n')) ++ :$put =string(sort(copy(l), 1)) ++ :$put =string(sort(copy(l), 'i')) ++ :$put =string(sort(copy(l))) + :" + :" splitting a string to a List + :$put =string(split(' aa bb ')) +*** ../vim-7.4.340/src/testdir/test55.ok 2014-03-25 18:23:27.062087691 +0100 +--- src/testdir/test55.ok 2014-06-25 17:23:31.382720704 +0200 +*************** +*** 101,106 **** +--- 101,110 ---- + [[0, 1, 2], [0, 1, 2], 4, 2, 2, 1.5, 'xaaa', 'x8', 'foo6', 'foo', 'foo', 'A11', '-0'] + ['-0', 'A11', 'foo', 'foo', 'foo6', 'x8', 'xaaa', 1.5, 2, 2, 4, [0, 1, 2], [0, 1, 2]] + ['-0', 'A11', 'foo', 'foo6', 'x8', 'xaaa', 1.5, 2, 4, [0, 1, 2]] ++ [-1, 0, 0, 'foo', 'FOOBAR', {}, [], 1.0e-15, 0.22, 7, 9, 12, 18, 22, 255] ++ ['foo', 'FOOBAR', -1, 0, 0, 0.22, 1.0e-15, 12, 18, 22, 255, 7, 9, [], {}] ++ ['foo', 'FOOBAR', -1, 0, 0, 0.22, 1.0e-15, 12, 18, 22, 255, 7, 9, [], {}] ++ ['FOOBAR', 'foo', -1, 0, 0, 0.22, 1.0e-15, 12, 18, 22, 255, 7, 9, [], {}] + ['aa', 'bb'] + ['aa', 'bb'] + ['', 'aa', 'bb', ''] +*** ../vim-7.4.340/src/version.c 2014-06-25 15:02:29.250400570 +0200 +--- src/version.c 2014-06-25 16:46:45.438637250 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 341, + /**/ + +-- +We do not stumble over mountains, but over molehills. + Confucius + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.342 b/SOURCES/7.4.342 new file mode 100644 index 0000000..8bdc72e --- /dev/null +++ b/SOURCES/7.4.342 @@ -0,0 +1,67 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.342 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.342 +Problem: Clang gives warnings. +Solution: Add an else block. (Dominique Pelle) +Files: src/gui_beval.c + + +*** ../vim-7.4.341/src/gui_beval.c 2013-05-06 04:06:04.000000000 +0200 +--- src/gui_beval.c 2014-06-25 17:40:40.818759649 +0200 +*************** +*** 1193,1203 **** + XmFontList fl; + + fl = gui_motif_fontset2fontlist(&gui.tooltip_fontset); +! if (fl != NULL) + { +! XmStringExtent(fl, s, &w, &h); +! XmFontListFree(fl); + } + } + w += gui.border_offset << 1; + h += gui.border_offset << 1; +--- 1193,1205 ---- + XmFontList fl; + + fl = gui_motif_fontset2fontlist(&gui.tooltip_fontset); +! if (fl == NULL) + { +! XmStringFree(s); +! return; + } ++ XmStringExtent(fl, s, &w, &h); ++ XmFontListFree(fl); + } + w += gui.border_offset << 1; + h += gui.border_offset << 1; +*** ../vim-7.4.341/src/version.c 2014-06-25 17:31:04.942737863 +0200 +--- src/version.c 2014-06-25 17:40:56.902760258 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 342, + /**/ + +-- +CUSTOMER: Well, can you hang around a couple of minutes? He won't be + long. +MORTICIAN: Naaah, I got to go on to Robinson's -- they've lost nine today. +CUSTOMER: Well, when is your next round? +MORTICIAN: Thursday. +DEAD PERSON: I think I'll go for a walk. + The Quest for the Holy Grail (Monty Python) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.343 b/SOURCES/7.4.343 new file mode 100644 index 0000000..141d981 --- /dev/null +++ b/SOURCES/7.4.343 @@ -0,0 +1,60 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.343 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.343 +Problem: matchdelete() does not always update the right lines. +Solution: Fix off-by-one error. (Ozaki Kiichi) +Files: src/window.c + + +*** ../vim-7.4.342/src/window.c 2014-06-18 21:20:07.236377308 +0200 +--- src/window.c 2014-06-25 17:55:34.190793447 +0200 +*************** +*** 6891,6898 **** + } + if (toplnum == 0 || lnum < toplnum) + toplnum = lnum; +! if (botlnum == 0 || lnum > botlnum) +! botlnum = lnum; + } + + /* Calculate top and bottom lines for redrawing area */ +--- 6891,6898 ---- + } + if (toplnum == 0 || lnum < toplnum) + toplnum = lnum; +! if (botlnum == 0 || lnum >= botlnum) +! botlnum = lnum + 1; + } + + /* Calculate top and bottom lines for redrawing area */ +*** ../vim-7.4.342/src/version.c 2014-06-25 17:44:45.850768919 +0200 +--- src/version.c 2014-06-25 17:54:14.258790423 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 343, + /**/ + +-- +CUSTOMER: You're not fooling anyone y'know. Look, isn't there something + you can do? +DEAD PERSON: I feel happy... I feel happy. + [whop] +CUSTOMER: Ah, thanks very much. +MORTICIAN: Not at all. See you on Thursday. +CUSTOMER: Right. + The Quest for the Holy Grail (Monty Python) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.344 b/SOURCES/7.4.344 new file mode 100644 index 0000000..3b619e7 --- /dev/null +++ b/SOURCES/7.4.344 @@ -0,0 +1,180 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.344 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.344 +Problem: Unessecary initializations and other things related to + matchaddpos(). +Solution: Code cleanup. (Alexey Radkov) +Files: runtime/doc/eval.txt, src/screen.c, src/window.c + + +*** ../vim-7.4.343/runtime/doc/eval.txt 2014-06-25 17:31:04.934737863 +0200 +--- runtime/doc/eval.txt 2014-06-25 18:08:50.790823583 +0200 +*************** +*** 4353,4369 **** + required, for example to highlight matching parentheses. + + The list {pos} can contain one of these items: +! - A number. This while line will be highlighted. The first + line has number 1. + - A list with one number, e.g., [23]. The whole line with this + number will be highlighted. + - A list with two numbers, e.g., [23, 11]. The first number is +! the line number, the second one the column number (first +! column is 1). The character at this position will be +! highlighted. + - A list with three numbers, e.g., [23, 11, 3]. As above, but +! the third number gives the length of the highlight in screen +! cells. + + The maximum number of positions is 8. + +--- 4391,4407 ---- + required, for example to highlight matching parentheses. + + The list {pos} can contain one of these items: +! - A number. This whole line will be highlighted. The first + line has number 1. + - A list with one number, e.g., [23]. The whole line with this + number will be highlighted. + - A list with two numbers, e.g., [23, 11]. The first number is +! the line number, the second one is the column number (first +! column is 1, the value must correspond to the byte index as +! |col()| would return). The character at this position will +! be highlighted. + - A list with three numbers, e.g., [23, 11, 3]. As above, but +! the third number gives the length of the highlight in bytes. + + The maximum number of positions is 8. + +*** ../vim-7.4.343/src/screen.c 2014-06-25 14:39:35.110348584 +0200 +--- src/screen.c 2014-06-25 18:10:11.906826652 +0200 +*************** +*** 7531,7537 **** + colnr_T mincol; /* minimal column for a match */ + { + int i; +! int bot = -1; + + shl->lnum = 0; + for (i = posmatch->cur; i < MAXPOSMATCH; i++) +--- 7531,7537 ---- + colnr_T mincol; /* minimal column for a match */ + { + int i; +! int bot = -1; + + shl->lnum = 0; + for (i = posmatch->cur; i < MAXPOSMATCH; i++) +*** ../vim-7.4.343/src/window.c 2014-06-25 17:58:07.346799241 +0200 +--- src/window.c 2014-06-25 18:10:45.698827930 +0200 +*************** +*** 6813,6819 **** + m->id = id; + m->priority = prio; + m->pattern = pat == NULL ? NULL : vim_strsave(pat); +- m->pos.cur = 0; + m->hlg_id = hlg_id; + m->match.regprog = regprog; + m->match.rmm_ic = FALSE; +--- 6813,6818 ---- +*************** +*** 6827,6833 **** + listitem_T *li; + int i; + +! for (i = 0, li = pos_list->lv_first; i < MAXPOSMATCH; + i++, li = li->li_next) + { + linenr_T lnum = 0; +--- 6826,6832 ---- + listitem_T *li; + int i; + +! for (i = 0, li = pos_list->lv_first; li != NULL && i < MAXPOSMATCH; + i++, li = li->li_next) + { + linenr_T lnum = 0; +*************** +*** 6837,6847 **** + listitem_T *subli; + int error = FALSE; + +- if (li == NULL) +- { +- m->pos.pos[i].lnum = 0; +- break; +- } + if (li->li_tv.v_type == VAR_LIST) + { + subl = li->li_tv.vval.v_list; +--- 6836,6841 ---- +*************** +*** 6853,6864 **** + lnum = get_tv_number_chk(&subli->li_tv, &error); + if (error == TRUE) + goto fail; +- m->pos.pos[i].lnum = lnum; + if (lnum == 0) + { + --i; + continue; + } + subli = subli->li_next; + if (subli != NULL) + { +--- 6847,6858 ---- + lnum = get_tv_number_chk(&subli->li_tv, &error); + if (error == TRUE) + goto fail; + if (lnum == 0) + { + --i; + continue; + } ++ m->pos.pos[i].lnum = lnum; + subli = subli->li_next; + if (subli != NULL) + { +*************** +*** 6879,6885 **** +--- 6873,6882 ---- + else if (li->li_tv.v_type == VAR_NUMBER) + { + if (li->li_tv.vval.v_number == 0) ++ { ++ --i; + continue; ++ } + m->pos.pos[i].lnum = li->li_tv.vval.v_number; + m->pos.pos[i].col = 0; + m->pos.pos[i].len = 0; +*** ../vim-7.4.343/src/version.c 2014-06-25 17:58:07.346799241 +0200 +--- src/version.c 2014-06-25 18:07:06.170819625 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 344, + /**/ + +-- + [clop clop] +MORTICIAN: Who's that then? +CUSTOMER: I don't know. +MORTICIAN: Must be a king. +CUSTOMER: Why? +MORTICIAN: He hasn't got shit all over him. + The Quest for the Holy Grail (Monty Python) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.345 b/SOURCES/7.4.345 new file mode 100644 index 0000000..7cac5f6 --- /dev/null +++ b/SOURCES/7.4.345 @@ -0,0 +1,73 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.345 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.345 (after 7.4.338) +Problem: Indent is not updated when deleting indent. +Solution: Remember changedtick. +Files: src/misc1.c + + +*** ../vim-7.4.344/src/misc1.c 2014-06-25 14:39:35.106348584 +0200 +--- src/misc1.c 2014-06-25 22:51:32.955465286 +0200 +*************** +*** 497,502 **** +--- 497,503 ---- + static int prev_indent = 0; /* cached indent value */ + static long prev_ts = 0L; /* cached tabstop value */ + static char_u *prev_line = NULL; /* cached pointer to line */ ++ static int 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) +*************** +*** 505,514 **** + ? number_width(wp) + 1 : 0); + + /* used cached indent, unless pointer or 'tabstop' changed */ +! if (prev_line != line || prev_ts != wp->w_buffer->b_p_ts) + { + prev_line = line; + prev_ts = wp->w_buffer->b_p_ts; + prev_indent = get_indent_str(line, + (int)wp->w_buffer->b_p_ts, wp->w_p_list) + wp->w_p_brishift; + } +--- 506,517 ---- + ? number_width(wp) + 1 : 0); + + /* used cached indent, unless pointer or 'tabstop' changed */ +! if (prev_line != line || prev_ts != wp->w_buffer->b_p_ts +! || prev_tick != wp->w_buffer->b_changedtick) + { + prev_line = line; + prev_ts = wp->w_buffer->b_p_ts; ++ prev_tick = wp->w_buffer->b_changedtick; + prev_indent = get_indent_str(line, + (int)wp->w_buffer->b_p_ts, wp->w_p_list) + wp->w_p_brishift; + } +*** ../vim-7.4.344/src/version.c 2014-06-25 18:15:18.446838249 +0200 +--- src/version.c 2014-06-25 22:52:55.971468427 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 345, + /**/ + +-- +ARTHUR: Well, I can't just call you `Man'. +DENNIS: Well, you could say `Dennis'. +ARTHUR: Well, I didn't know you were called `Dennis.' +DENNIS: Well, you didn't bother to find out, did you? + The Quest for the Holy Grail (Monty Python) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.346 b/SOURCES/7.4.346 new file mode 100644 index 0000000..a40278e --- /dev/null +++ b/SOURCES/7.4.346 @@ -0,0 +1,61 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.346 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.346 (after 7.4.338) +Problem: Indent is not updated when changing 'breakindentopt'. (itchyny) +Solution: Do not cache "brishift". (Christian Brabandt) +Files: src/misc1.c + + +*** ../vim-7.4.345/src/misc1.c 2014-06-25 22:55:34.783474435 +0200 +--- src/misc1.c 2014-06-26 21:15:46.970516542 +0200 +*************** +*** 513,523 **** + prev_ts = wp->w_buffer->b_p_ts; + prev_tick = wp->w_buffer->b_changedtick; + prev_indent = get_indent_str(line, +! (int)wp->w_buffer->b_p_ts, wp->w_p_list) + wp->w_p_brishift; + } + + /* indent minus the length of the showbreak string */ +- bri = prev_indent; + if (wp->w_p_brisbr) + bri -= vim_strsize(p_sbr); + +--- 513,523 ---- + prev_ts = wp->w_buffer->b_p_ts; + prev_tick = wp->w_buffer->b_changedtick; + prev_indent = get_indent_str(line, +! (int)wp->w_buffer->b_p_ts, wp->w_p_list); + } ++ bri = prev_indent + wp->w_p_brishift; + + /* indent minus the length of the showbreak string */ + if (wp->w_p_brisbr) + bri -= vim_strsize(p_sbr); + +*** ../vim-7.4.345/src/version.c 2014-06-25 22:55:34.783474435 +0200 +--- src/version.c 2014-06-26 21:17:10.342519697 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 346, + /**/ + +-- +A computer programmer is a device for turning requirements into +undocumented features. It runs on cola, pizza and Dilbert cartoons. + Bram Moolenaar + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.347 b/SOURCES/7.4.347 new file mode 100644 index 0000000..7b6b6dd --- /dev/null +++ b/SOURCES/7.4.347 @@ -0,0 +1,74 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.347 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.347 +Problem: test55 fails on some systems. +Solution: Remove the elements that all result in zero and can end up in an + arbitrary position. +Files: src/testdir/test55.in, src/testdir/test55.ok + + +*** ../vim-7.4.346/src/testdir/test55.in 2014-06-25 17:31:04.942737863 +0200 +--- src/testdir/test55.in 2014-06-26 22:25:33.078674909 +0200 +*************** +*** 332,339 **** + :$put =string(reverse(sort(l))) + :$put =string(sort(reverse(sort(l)))) + :$put =string(uniq(sort(l))) +! :let l=[7, 9, 18, 12, 22, 10.0e-16, -1, 0xff, 0, -0, 0.22, 'foo', 'FOOBAR',{}, []] + :$put =string(sort(copy(l), 'n')) + :$put =string(sort(copy(l), 1)) + :$put =string(sort(copy(l), 'i')) + :$put =string(sort(copy(l))) +--- 332,340 ---- + :$put =string(reverse(sort(l))) + :$put =string(sort(reverse(sort(l)))) + :$put =string(uniq(sort(l))) +! :let l=[7, 9, 18, 12, 22, 10.0e-16, -1, 0xff, 0.22, 'foo'] + :$put =string(sort(copy(l), 'n')) ++ :let l=[7, 9, 18, 12, 22, 10.0e-16, -1, 0xff, 0, -0, 0.22, 'foo', 'FOOBAR',{}, []] + :$put =string(sort(copy(l), 1)) + :$put =string(sort(copy(l), 'i')) + :$put =string(sort(copy(l))) +*** ../vim-7.4.346/src/testdir/test55.ok 2014-06-25 17:31:04.942737863 +0200 +--- src/testdir/test55.ok 2014-06-26 22:26:38.662677390 +0200 +*************** +*** 101,107 **** + [[0, 1, 2], [0, 1, 2], 4, 2, 2, 1.5, 'xaaa', 'x8', 'foo6', 'foo', 'foo', 'A11', '-0'] + ['-0', 'A11', 'foo', 'foo', 'foo6', 'x8', 'xaaa', 1.5, 2, 2, 4, [0, 1, 2], [0, 1, 2]] + ['-0', 'A11', 'foo', 'foo6', 'x8', 'xaaa', 1.5, 2, 4, [0, 1, 2]] +! [-1, 0, 0, 'foo', 'FOOBAR', {}, [], 1.0e-15, 0.22, 7, 9, 12, 18, 22, 255] + ['foo', 'FOOBAR', -1, 0, 0, 0.22, 1.0e-15, 12, 18, 22, 255, 7, 9, [], {}] + ['foo', 'FOOBAR', -1, 0, 0, 0.22, 1.0e-15, 12, 18, 22, 255, 7, 9, [], {}] + ['FOOBAR', 'foo', -1, 0, 0, 0.22, 1.0e-15, 12, 18, 22, 255, 7, 9, [], {}] +--- 101,107 ---- + [[0, 1, 2], [0, 1, 2], 4, 2, 2, 1.5, 'xaaa', 'x8', 'foo6', 'foo', 'foo', 'A11', '-0'] + ['-0', 'A11', 'foo', 'foo', 'foo6', 'x8', 'xaaa', 1.5, 2, 2, 4, [0, 1, 2], [0, 1, 2]] + ['-0', 'A11', 'foo', 'foo6', 'x8', 'xaaa', 1.5, 2, 4, [0, 1, 2]] +! [-1, 'foo', 1.0e-15, 0.22, 7, 9, 12, 18, 22, 255] + ['foo', 'FOOBAR', -1, 0, 0, 0.22, 1.0e-15, 12, 18, 22, 255, 7, 9, [], {}] + ['foo', 'FOOBAR', -1, 0, 0, 0.22, 1.0e-15, 12, 18, 22, 255, 7, 9, [], {}] + ['FOOBAR', 'foo', -1, 0, 0, 0.22, 1.0e-15, 12, 18, 22, 255, 7, 9, [], {}] +*** ../vim-7.4.346/src/version.c 2014-06-26 21:24:53.134537205 +0200 +--- src/version.c 2014-06-26 22:28:15.402681050 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 347, + /**/ + +-- +Witches prefer brooms: vacuum-cleaners need extension cords! + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.348 b/SOURCES/7.4.348 new file mode 100644 index 0000000..c881719 --- /dev/null +++ b/SOURCES/7.4.348 @@ -0,0 +1,58 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.348 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.348 +Problem: When using "J1" in 'cinoptions' a line below a continuation line + gets too much indent. +Solution: Fix parenthesis in condition. +Files: src/misc1.c + + +*** ../vim-7.4.347/src/misc1.c 2014-06-26 21:24:53.134537205 +0200 +--- src/misc1.c 2014-07-02 16:58:08.854208322 +0200 +*************** +*** 7497,7505 **** + * ldfd) { + * } + */ +! if (curbuf->b_ind_js || (curbuf->b_ind_keep_case_label +! && cin_iscase(skipwhite(ml_get_curline()), FALSE))) + amount = get_indent(); + else + amount = skip_label(lnum, &l); + +--- 7497,7507 ---- + * ldfd) { + * } + */ +! if ((curbuf->b_ind_js || curbuf->b_ind_keep_case_label) +! && cin_iscase(skipwhite(ml_get_curline()), FALSE)) + amount = get_indent(); ++ else if (curbuf->b_ind_js) ++ amount = get_indent_lnum(lnum); + else + amount = skip_label(lnum, &l); + +*** ../vim-7.4.347/src/version.c 2014-06-26 22:33:47.850693627 +0200 +--- src/version.c 2014-07-02 16:46:14.934197383 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 348, + /**/ + +-- +5 out of 4 people have trouble with fractions. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.349 b/SOURCES/7.4.349 new file mode 100644 index 0000000..ce23202 --- /dev/null +++ b/SOURCES/7.4.349 @@ -0,0 +1,111 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.349 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.349 +Problem: When there are matches to highlight the whole window is redrawn, + which is slow. +Solution: Only redraw everything when lines were inserted or deleted. + Reset b_mod_xlines when needed. (Alexey Radkov) +Files: src/screen.c, src/window.c + + +*** ../vim-7.4.348/src/screen.c 2014-06-25 18:15:18.446838249 +0200 +--- src/screen.c 2014-06-28 15:35:18.868836570 +0200 +*************** +*** 1769,1776 **** + syntax_check_changed(lnum))) + #endif + #ifdef FEAT_SEARCH_EXTRA +! /* match in fixed position might need redraw */ +! || wp->w_match_head != NULL + #endif + ))))) + { +--- 1769,1778 ---- + syntax_check_changed(lnum))) + #endif + #ifdef FEAT_SEARCH_EXTRA +! /* match in fixed position might need redraw +! * if lines were inserted or deleted */ +! || (wp->w_match_head != NULL +! && buf->b_mod_xlines != 0) + #endif + ))))) + { +*** ../vim-7.4.348/src/window.c 2014-06-25 18:15:18.446838249 +0200 +--- src/window.c 2014-06-28 15:38:51.952839835 +0200 +*************** +*** 6904,6915 **** + } + else + { + wp->w_buffer->b_mod_top = toplnum; + wp->w_buffer->b_mod_bot = botlnum; + } + m->pos.toplnum = toplnum; + m->pos.botlnum = botlnum; +- wp->w_buffer->b_mod_set = TRUE; + rtype = VALID; + } + } +--- 6904,6916 ---- + } + else + { ++ wp->w_buffer->b_mod_set = TRUE; + wp->w_buffer->b_mod_top = toplnum; + wp->w_buffer->b_mod_bot = botlnum; ++ wp->w_buffer->b_mod_xlines = 0; + } + m->pos.toplnum = toplnum; + m->pos.botlnum = botlnum; + rtype = VALID; + } + } +*************** +*** 6986,6995 **** + } + else + { + wp->w_buffer->b_mod_top = cur->pos.toplnum; + wp->w_buffer->b_mod_bot = cur->pos.botlnum; + } +- wp->w_buffer->b_mod_set = TRUE; + rtype = VALID; + } + vim_free(cur); +--- 6987,6997 ---- + } + else + { ++ wp->w_buffer->b_mod_set = TRUE; + wp->w_buffer->b_mod_top = cur->pos.toplnum; + wp->w_buffer->b_mod_bot = cur->pos.botlnum; ++ wp->w_buffer->b_mod_xlines = 0; + } + rtype = VALID; + } + vim_free(cur); +*** ../vim-7.4.348/src/version.c 2014-07-02 17:02:29.726212319 +0200 +--- src/version.c 2014-07-02 17:15:58.646224714 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 349, + /**/ + +-- +Trees moving back and forth is what makes the wind blow. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.350 b/SOURCES/7.4.350 new file mode 100644 index 0000000..1c4a5a3 --- /dev/null +++ b/SOURCES/7.4.350 @@ -0,0 +1,139 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.350 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.350 +Problem: Using C indenting for Javascript does not work well for a {} block + inside parenthesis. +Solution: When looking for a matching paren ignore one that is before the + start of a {} block. +Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok + + +*** ../vim-7.4.349/src/misc1.c 2014-07-02 17:02:29.722212319 +0200 +--- src/misc1.c 2014-07-02 18:09:39.670274070 +0200 +*************** +*** 6614,6620 **** + } + + /* +! * Find the matching '(', failing if it is in a comment. + * Return NULL if no match found. + */ + static pos_T * +--- 6614,6620 ---- + } + + /* +! * Find the matching '(', ignoring it if it is in a comment. + * Return NULL if no match found. + */ + static pos_T * +*************** +*** 6645,6650 **** +--- 6645,6676 ---- + } + + /* ++ * Find the matching '(', ignoring it if it is in a comment or before an ++ * unmatched {. ++ * Return NULL if no match found. ++ */ ++ static pos_T * ++ find_match_paren_after_brace(ind_maxparen) /* XXX */ ++ int ind_maxparen; ++ { ++ pos_T *trypos = find_match_paren(ind_maxparen); ++ ++ if (trypos != NULL) ++ { ++ pos_T *tryposBrace = find_start_brace(); ++ ++ /* If both an unmatched '(' and '{' is found. Ignore the '(' ++ * position if the '{' is further down. */ ++ if (tryposBrace != NULL ++ && (trypos->lnum != tryposBrace->lnum ++ ? trypos->lnum < tryposBrace->lnum ++ : trypos->col < tryposBrace->col)) ++ trypos = NULL; ++ } ++ return trypos; ++ } ++ ++ /* + * Return ind_maxparen corrected for the difference in line number between the + * cursor position and "startpos". This makes sure that searching for a + * matching paren above the cursor line doesn't find a match because of +*************** +*** 7419,7425 **** + { + curwin->w_cursor.lnum = our_paren_pos.lnum; + curwin->w_cursor.col = col; +! if (find_match_paren(curbuf->b_ind_maxparen) != NULL) + amount += curbuf->b_ind_unclosed2; + else + { +--- 7445,7452 ---- + { + curwin->w_cursor.lnum = our_paren_pos.lnum; + curwin->w_cursor.col = col; +! if (find_match_paren_after_brace(curbuf->b_ind_maxparen) +! != NULL) + amount += curbuf->b_ind_unclosed2; + else + { +*** ../vim-7.4.349/src/testdir/test3.in 2013-03-07 12:39:35.000000000 +0100 +--- src/testdir/test3.in 2014-07-02 18:08:06.430272641 +0200 +*************** +*** 1950,1955 **** +--- 1950,1959 ---- + JSSTART + (function($){ + ++ if (cond && ++ cond) { ++ stmt; ++ } + var class_name='myclass'; + + function private_method() { +*** ../vim-7.4.349/src/testdir/test3.ok 2013-03-07 12:40:03.000000000 +0100 +--- src/testdir/test3.ok 2014-07-02 18:09:14.470273684 +0200 +*************** +*** 1728,1733 **** +--- 1728,1737 ---- + JSSTART + (function($){ + ++ if (cond && ++ cond) { ++ stmt; ++ } + var class_name='myclass'; + + function private_method() { +*** ../vim-7.4.349/src/version.c 2014-07-02 17:16:51.334225522 +0200 +--- src/version.c 2014-07-02 18:06:31.330271184 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 350, + /**/ + +-- +FATHER: You killed eight wedding guests in all! +LAUNCELOT: Er, Well ... the thing is ... I thought your son was a lady. +FATHER: I can understand that. + "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.351 b/SOURCES/7.4.351 new file mode 100644 index 0000000..0ace333 --- /dev/null +++ b/SOURCES/7.4.351 @@ -0,0 +1,160 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.351 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.351 +Problem: sort() is not stable. +Solution: When the items are identical, compare the pointers. +Files: src/eval.c, src/testdir/test55.in, src/testdir/test55.ok + + +*** ../vim-7.4.350/src/eval.c 2014-06-25 17:31:04.942737863 +0200 +--- src/eval.c 2014-07-02 18:52:19.102313288 +0200 +*************** +*** 17334,17339 **** +--- 17334,17340 ---- + static char_u *item_compare_func; + static dict_T *item_compare_selfdict; + static int item_compare_func_err; ++ static int item_compare_keep_zero; + static void do_sort_uniq __ARGS((typval_T *argvars, typval_T *rettv, int sort)); + #define ITEM_COMPARE_FAIL 999 + +*************** +*** 17374,17379 **** +--- 17375,17386 ---- + n2 = strtod((char *)p2, (char **)&p2); + res = n1 == n2 ? 0 : n1 > n2 ? 1 : -1; + } ++ ++ /* When the result would be zero, compare the pointers themselves. Makes ++ * the sort stable. */ ++ if (res == 0 && !item_compare_keep_zero) ++ res = s1 > s2 ? 1 : -1; ++ + vim_free(tofree1); + vim_free(tofree2); + return res; +*************** +*** 17396,17402 **** + if (item_compare_func_err) + return 0; + +! /* copy the values. This is needed to be able to set v_lock to VAR_FIXED + * in the copy without changing the original list items. */ + copy_tv(&(*(listitem_T **)s1)->li_tv, &argv[0]); + copy_tv(&(*(listitem_T **)s2)->li_tv, &argv[1]); +--- 17403,17409 ---- + if (item_compare_func_err) + return 0; + +! /* Copy the values. This is needed to be able to set v_lock to VAR_FIXED + * in the copy without changing the original list items. */ + copy_tv(&(*(listitem_T **)s1)->li_tv, &argv[0]); + copy_tv(&(*(listitem_T **)s2)->li_tv, &argv[1]); +*************** +*** 17415,17420 **** +--- 17422,17433 ---- + if (item_compare_func_err) + res = ITEM_COMPARE_FAIL; /* return value has wrong type */ + clear_tv(&rettv); ++ ++ /* When the result would be zero, compare the pointers themselves. Makes ++ * the sort stable. */ ++ if (res == 0 && !item_compare_keep_zero) ++ res = s1 > s2 ? 1 : -1; ++ + return res; + } + +*************** +*** 17509,17514 **** +--- 17522,17528 ---- + ptrs[i++] = li; + + item_compare_func_err = FALSE; ++ item_compare_keep_zero = FALSE; + /* test the compare function */ + if (item_compare_func != NULL + && item_compare2((void *)&ptrs[0], (void *)&ptrs[1]) +*************** +*** 17536,17541 **** +--- 17550,17556 ---- + + /* f_uniq(): ptrs will be a stack of items to remove */ + item_compare_func_err = FALSE; ++ item_compare_keep_zero = TRUE; + item_compare_func_ptr = item_compare_func + ? item_compare2 : item_compare; + +*** ../vim-7.4.350/src/testdir/test55.in 2014-06-26 22:33:47.850693627 +0200 +--- src/testdir/test55.in 2014-07-02 19:00:09.238320492 +0200 +*************** +*** 332,340 **** + :$put =string(reverse(sort(l))) + :$put =string(sort(reverse(sort(l)))) + :$put =string(uniq(sort(l))) +! :let l=[7, 9, 18, 12, 22, 10.0e-16, -1, 0xff, 0.22, 'foo'] + :$put =string(sort(copy(l), 'n')) +! :let l=[7, 9, 18, 12, 22, 10.0e-16, -1, 0xff, 0, -0, 0.22, 'foo', 'FOOBAR',{}, []] + :$put =string(sort(copy(l), 1)) + :$put =string(sort(copy(l), 'i')) + :$put =string(sort(copy(l))) +--- 332,340 ---- + :$put =string(reverse(sort(l))) + :$put =string(sort(reverse(sort(l)))) + :$put =string(uniq(sort(l))) +! :let l=[7, 9, 'one', 18, 12, 22, 'two', 10.0e-16, -1, 'three', 0xff, 0.22, 'four'] + :$put =string(sort(copy(l), 'n')) +! :let l=[7, 9, 18, 12, 22, 10.0e-16, -1, 0xff, 0, -0, 0.22, 'bar', 'BAR', 'Bar', 'Foo', 'FOO', 'foo', 'FOOBAR', {}, []] + :$put =string(sort(copy(l), 1)) + :$put =string(sort(copy(l), 'i')) + :$put =string(sort(copy(l))) +*** ../vim-7.4.350/src/testdir/test55.ok 2014-06-26 22:33:47.850693627 +0200 +--- src/testdir/test55.ok 2014-07-02 19:00:57.078321225 +0200 +*************** +*** 101,110 **** + [[0, 1, 2], [0, 1, 2], 4, 2, 2, 1.5, 'xaaa', 'x8', 'foo6', 'foo', 'foo', 'A11', '-0'] + ['-0', 'A11', 'foo', 'foo', 'foo6', 'x8', 'xaaa', 1.5, 2, 2, 4, [0, 1, 2], [0, 1, 2]] + ['-0', 'A11', 'foo', 'foo6', 'x8', 'xaaa', 1.5, 2, 4, [0, 1, 2]] +! [-1, 'foo', 1.0e-15, 0.22, 7, 9, 12, 18, 22, 255] +! ['foo', 'FOOBAR', -1, 0, 0, 0.22, 1.0e-15, 12, 18, 22, 255, 7, 9, [], {}] +! ['foo', 'FOOBAR', -1, 0, 0, 0.22, 1.0e-15, 12, 18, 22, 255, 7, 9, [], {}] +! ['FOOBAR', 'foo', -1, 0, 0, 0.22, 1.0e-15, 12, 18, 22, 255, 7, 9, [], {}] + ['aa', 'bb'] + ['aa', 'bb'] + ['', 'aa', 'bb', ''] +--- 101,110 ---- + [[0, 1, 2], [0, 1, 2], 4, 2, 2, 1.5, 'xaaa', 'x8', 'foo6', 'foo', 'foo', 'A11', '-0'] + ['-0', 'A11', 'foo', 'foo', 'foo6', 'x8', 'xaaa', 1.5, 2, 2, 4, [0, 1, 2], [0, 1, 2]] + ['-0', 'A11', 'foo', 'foo6', 'x8', 'xaaa', 1.5, 2, 4, [0, 1, 2]] +! [-1, 'one', 'two', 'three', 'four', 1.0e-15, 0.22, 7, 9, 12, 18, 22, 255] +! ['bar', 'BAR', 'Bar', 'Foo', 'FOO', 'foo', 'FOOBAR', -1, 0, 0, 0.22, 1.0e-15, 12, 18, 22, 255, 7, 9, [], {}] +! ['bar', 'BAR', 'Bar', 'Foo', 'FOO', 'foo', 'FOOBAR', -1, 0, 0, 0.22, 1.0e-15, 12, 18, 22, 255, 7, 9, [], {}] +! ['BAR', 'Bar', 'FOO', 'FOOBAR', 'Foo', 'bar', 'foo', -1, 0, 0, 0.22, 1.0e-15, 12, 18, 22, 255, 7, 9, [], {}] + ['aa', 'bb'] + ['aa', 'bb'] + ['', 'aa', 'bb', ''] +*** ../vim-7.4.350/src/version.c 2014-07-02 18:27:44.662290695 +0200 +--- src/version.c 2014-07-02 18:46:38.230308065 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 351, + /**/ + +-- +The early bird gets the worm. If you want something else for +breakfast, get up later. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.352 b/SOURCES/7.4.352 new file mode 100644 index 0000000..ecfabb3 --- /dev/null +++ b/SOURCES/7.4.352 @@ -0,0 +1,101 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.352 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.352 +Problem: With 'linebreak' a tab causes missing line break. +Solution: Count a tab for what it's worth also for shorter lines. + (Christian Brabandt) +Files: src/charset.c + + +*** ../vim-7.4.351/src/charset.c 2014-06-25 14:39:35.098348584 +0200 +--- src/charset.c 2014-07-02 19:34:28.142352040 +0200 +*************** +*** 1078,1083 **** +--- 1078,1084 ---- + int c; + int size; + colnr_T col2; ++ colnr_T col_adj = 0; /* col + screen size of tab */ + colnr_T colmax; + int added; + # ifdef FEAT_MBYTE +*************** +*** 1109,1114 **** +--- 1110,1117 ---- + */ + size = win_chartabsize(wp, s, col); + c = *s; ++ if (tab_corr) ++ col_adj = size - 1; + + /* + * If 'linebreak' set check at a blank before a non-blank if the line +*************** +*** 1130,1141 **** + */ + numberextra = win_col_off(wp); + col2 = col; +! colmax = (colnr_T)(W_WIDTH(wp) - numberextra); + if (col >= colmax) + { +! n = colmax + win_col_off2(wp); + if (n > 0) +! colmax += (((col - colmax) / n) + 1) * n; + } + + for (;;) +--- 1133,1145 ---- + */ + numberextra = win_col_off(wp); + col2 = col; +! colmax = (colnr_T)(W_WIDTH(wp) - numberextra - col_adj); + if (col >= colmax) + { +! colmax += col_adj; +! n = colmax + win_col_off2(wp); + if (n > 0) +! colmax += (((col - colmax) / n) + 1) * n - col_adj; + } + + for (;;) +*************** +*** 1152,1158 **** + col2 += win_chartabsize(wp, s, col2); + if (col2 >= colmax) /* doesn't fit */ + { +! size = colmax - col; + tab_corr = FALSE; + break; + } +--- 1156,1162 ---- + col2 += win_chartabsize(wp, s, col2); + if (col2 >= colmax) /* doesn't fit */ + { +! size = colmax - col + col_adj; + tab_corr = FALSE; + break; + } +*** ../vim-7.4.351/src/version.c 2014-07-02 19:06:14.686326091 +0200 +--- src/version.c 2014-07-02 19:32:50.218350540 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 352, + /**/ + +-- +The early bird gets the worm. The second mouse gets the cheese. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.353 b/SOURCES/7.4.353 new file mode 100644 index 0000000..a099d04 --- /dev/null +++ b/SOURCES/7.4.353 @@ -0,0 +1,446 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.353 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.353 +Problem: 'linebreak' doesn't work with the 'list' option. +Solution: Make it work. (Christian Brabandt) +Files: src/charset.c, src/screen.c, + src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, + src/testdir/Make_ming.mak, src/testdir/Make_os2.mak, + src/testdir/Make_vms.mms, src/testdir/Makefile, + src/testdir/test_listlbr.in, src/testdir/test_listlbr.ok + + +*** ../vim-7.4.352/src/charset.c 2014-07-02 19:37:38.462354956 +0200 +--- src/charset.c 2014-07-02 19:47:21.602363892 +0200 +*************** +*** 1120,1126 **** + if (wp->w_p_lbr + && vim_isbreak(c) + && !vim_isbreak(s[1]) +- && !wp->w_p_list + && wp->w_p_wrap + # ifdef FEAT_VERTSPLIT + && wp->w_width != 0 +--- 1120,1125 ---- +*** ../vim-7.4.352/src/screen.c 2014-07-02 17:16:51.330225522 +0200 +--- src/screen.c 2014-07-02 19:51:42.082367883 +0200 +*************** +*** 2843,2848 **** +--- 2843,2849 ---- + char_u extra[18]; /* "%ld" and 'fdc' must fit in here */ + int n_extra = 0; /* number of extra chars */ + char_u *p_extra = NULL; /* string of extra chars, plus NUL */ ++ char_u *p_extra_free = NULL; /* p_extra needs to be freed */ + int c_extra = NUL; /* extra chars, all the same */ + int extra_attr = 0; /* attributes when n_extra != 0 */ + static char_u *at_end_str = (char_u *)""; /* used for p_extra when +*************** +*** 4053,4058 **** +--- 4054,4064 ---- + } + else + { ++ if (p_extra_free != NULL) ++ { ++ vim_free(p_extra_free); ++ p_extra_free = NULL; ++ } + /* + * Get a character from the line itself. + */ +*************** +*** 4424,4431 **** + /* + * Found last space before word: check for line break. + */ +! if (wp->w_p_lbr && vim_isbreak(c) && !vim_isbreak(*ptr) +! && !wp->w_p_list) + { + char_u *p = ptr - ( + # ifdef FEAT_MBYTE +--- 4430,4436 ---- + /* + * Found last space before word: check for line break. + */ +! if (wp->w_p_lbr && vim_isbreak(c) && !vim_isbreak(*ptr)) + { + char_u *p = ptr - ( + # ifdef FEAT_MBYTE +*************** +*** 4433,4439 **** + # endif + 1); + /* TODO: is passing p for start of the line OK? */ +! n_extra = win_lbr_chartabsize(wp, p, p, (colnr_T)vcol, + NULL) - 1; + c_extra = ' '; + if (vim_iswhite(c)) +--- 4438,4444 ---- + # endif + 1); + /* TODO: is passing p for start of the line OK? */ +! n_extra = win_lbr_chartabsize(wp, line, p, (colnr_T)vcol, + NULL) - 1; + c_extra = ' '; + if (vim_iswhite(c)) +*************** +*** 4443,4449 **** + /* See "Tab alignment" below. */ + FIX_FOR_BOGUSCOLS; + #endif +! c = ' '; + } + } + #endif +--- 4448,4455 ---- + /* See "Tab alignment" below. */ + FIX_FOR_BOGUSCOLS; + #endif +! if (!wp->w_p_list) +! c = ' '; + } + } + #endif +*************** +*** 4483,4491 **** + */ + if (c == TAB && (!wp->w_p_list || lcs_tab1)) + { + /* tab amount depends on current column */ +! n_extra = (int)wp->w_buffer->b_p_ts + - vcol % (int)wp->w_buffer->b_p_ts - 1; + #ifdef FEAT_CONCEAL + /* Tab alignment should be identical regardless of + * 'conceallevel' value. So tab compensates of all +--- 4489,4538 ---- + */ + if (c == TAB && (!wp->w_p_list || lcs_tab1)) + { ++ int tab_len = 0; + /* tab amount depends on current column */ +! tab_len = (int)wp->w_buffer->b_p_ts + - vcol % (int)wp->w_buffer->b_p_ts - 1; ++ #ifdef FEAT_LINEBREAK ++ if (!wp->w_p_lbr) ++ #endif ++ /* tab amount depends on current column */ ++ n_extra = tab_len; ++ #ifdef FEAT_LINEBREAK ++ else ++ { ++ char_u *p; ++ int len = n_extra; ++ int i; ++ int saved_nextra = n_extra; ++ ++ /* if n_extra > 0, it gives the number of chars, to ++ * use for a tab, else we need to calculate the width ++ * for a tab */ ++ #ifdef FEAT_MBYTE ++ len = (tab_len * mb_char2len(lcs_tab2)); ++ if (n_extra > 0) ++ len += n_extra - tab_len; ++ #endif ++ c = lcs_tab1; ++ p = alloc((unsigned)(len + 1)); ++ vim_memset(p, ' ', len); ++ p[len] = NUL; ++ p_extra_free = p; ++ for (i = 0; i < tab_len; i++) ++ { ++ #ifdef FEAT_MBYTE ++ mb_char2bytes(lcs_tab2, p); ++ p += mb_char2len(lcs_tab2); ++ n_extra += mb_char2len(lcs_tab2) ++ - (saved_nextra > 0 ? 1 : 0); ++ #else ++ p[i] = lcs_tab2; ++ #endif ++ } ++ p_extra = p_extra_free; ++ } ++ #endif + #ifdef FEAT_CONCEAL + /* Tab alignment should be identical regardless of + * 'conceallevel' value. So tab compensates of all +*************** +*** 4501,4508 **** + if (wp->w_p_list) + { + c = lcs_tab1; +! c_extra = lcs_tab2; +! n_attr = n_extra + 1; + extra_attr = hl_attr(HLF_8); + saved_attr2 = char_attr; /* save current attr */ + #ifdef FEAT_MBYTE +--- 4548,4560 ---- + if (wp->w_p_list) + { + c = lcs_tab1; +! #ifdef FEAT_LINEBREAK +! if (wp->w_p_lbr) +! c_extra = NUL; /* using p_extra from above */ +! else +! #endif +! c_extra = lcs_tab2; +! n_attr = tab_len + 1; + extra_attr = hl_attr(HLF_8); + saved_attr2 = char_attr; /* save current attr */ + #ifdef FEAT_MBYTE +*************** +*** 4598,4606 **** + if ((dy_flags & DY_UHEX) && wp->w_p_rl) + rl_mirror(p_extra); /* reverse "<12>" */ + #endif +- n_extra = byte2cells(c) - 1; + c_extra = NUL; +! c = *p_extra++; + if (!attr_pri) + { + n_attr = n_extra + 1; +--- 4650,4674 ---- + if ((dy_flags & DY_UHEX) && wp->w_p_rl) + rl_mirror(p_extra); /* reverse "<12>" */ + #endif + c_extra = NUL; +! #ifdef FEAT_LINEBREAK +! if (wp->w_p_lbr) +! { +! char_u *p; +! +! c = *p_extra; +! p = alloc((unsigned)n_extra + 1); +! vim_memset(p, ' ', n_extra); +! STRNCPY(p, p_extra + 1, STRLEN(p_extra) - 1); +! p[n_extra] = NUL; +! p_extra_free = p_extra = p; +! } +! else +! #endif +! { +! n_extra = byte2cells(c) - 1; +! c = *p_extra++; +! } + if (!attr_pri) + { + n_attr = n_extra + 1; +*** ../vim-7.4.352/src/testdir/Make_amiga.mak 2014-06-25 14:39:35.110348584 +0200 +--- src/testdir/Make_amiga.mak 2014-07-02 19:47:21.610363892 +0200 +*************** +*** 38,43 **** +--- 38,44 ---- + test104.out test105.out test106.out test107.out \ + test_autoformat_join.out \ + test_breakindent.out \ ++ test_listlbr.out \ + test_eval.out \ + test_options.out + +*************** +*** 165,169 **** +--- 166,171 ---- + test107.out: test107.in + test_autoformat_join.out: test_autoformat_join.in + test_breakindent.out: test_breakindent.in ++ test_listlbr.out: test_listlbr.in + test_eval.out: test_eval.in + test_options.out: test_options.in +*** ../vim-7.4.352/src/testdir/Make_dos.mak 2014-06-25 14:39:35.110348584 +0200 +--- src/testdir/Make_dos.mak 2014-07-02 19:47:21.610363892 +0200 +*************** +*** 37,42 **** +--- 37,43 ---- + test105.out test106.out test107.out\ + test_autoformat_join.out \ + test_breakindent.out \ ++ test_listlbr \ + test_eval.out \ + test_options.out + +*** ../vim-7.4.352/src/testdir/Make_ming.mak 2014-06-25 14:39:35.110348584 +0200 +--- src/testdir/Make_ming.mak 2014-07-02 19:47:21.610363892 +0200 +*************** +*** 57,62 **** +--- 57,63 ---- + test105.out test106.out test107.out \ + test_autoformat_join.out \ + test_breakindent.out \ ++ test_listlbr.out \ + test_eval.out \ + test_options.out + +*** ../vim-7.4.352/src/testdir/Make_os2.mak 2014-06-25 14:39:35.114348584 +0200 +--- src/testdir/Make_os2.mak 2014-07-02 19:47:21.610363892 +0200 +*************** +*** 40,45 **** +--- 40,46 ---- + test_autoformat_join.out \ + test_eval.out \ + test_breakindent.out \ ++ test_listlbr.out \ + test_options.out + + .SUFFIXES: .in .out +*** ../vim-7.4.352/src/testdir/Make_vms.mms 2014-06-25 14:39:35.114348584 +0200 +--- src/testdir/Make_vms.mms 2014-07-02 19:47:21.610363892 +0200 +*************** +*** 98,103 **** +--- 98,104 ---- + test105.out test106.out test107.out \ + test_autoformat_join.out \ + test_breakindent.out \ ++ test_listlbr.out \ + test_eval.out \ + test_options.out + +*** ../vim-7.4.352/src/testdir/Makefile 2014-06-25 14:39:35.114348584 +0200 +--- src/testdir/Makefile 2014-07-02 19:47:21.610363892 +0200 +*************** +*** 35,40 **** +--- 35,41 ---- + test104.out test105.out test106.out test107.out \ + test_autoformat_join.out \ + test_breakindent.out \ ++ test_listlbr.out \ + test_eval.out \ + test_options.out + +*** ../vim-7.4.352/src/testdir/test_listlbr.in 2014-07-02 19:58:25.642374067 +0200 +--- src/testdir/test_listlbr.in 2014-07-02 19:47:21.610363892 +0200 +*************** +*** 0 **** +--- 1,62 ---- ++ Test for linebreak and list option ++ ++ STARTTEST ++ :so small.vim ++ :if !exists("+linebreak") | e! test.ok | w! test.out | qa! | endif ++ :10new|:vsp|:vert resize 20 ++ :put =\"\tabcdef hijklmn\tpqrstuvwxyz\u00a01060ABCDEFGHIJKLMNOP \" ++ :norm! zt ++ :set ts=4 sw=4 sts=4 linebreak sbr=+ wrap ++ :fu! ScreenChar(width) ++ : let c='' ++ : for j in range(1,4) ++ : for i in range(1,a:width) ++ : let c.=nr2char(screenchar(j, i)) ++ : endfor ++ : let c.="\n" ++ : endfor ++ : return c ++ :endfu ++ :fu! DoRecordScreen() ++ : wincmd l ++ : $put =printf(\"\n%s\", g:test) ++ : $put =g:line ++ : wincmd p ++ :endfu ++ :let g:test="Test 1: set linebreak" ++ :redraw! ++ :let line=ScreenChar(winwidth(0)) ++ :call DoRecordScreen() ++ :let g:test="Test 2: set linebreak + set list" ++ :set linebreak list listchars= ++ :redraw! ++ :let line=ScreenChar(winwidth(0)) ++ :call DoRecordScreen() ++ :let g:test ="Test 3: set linebreak + set list + fancy listchars" ++ :exe "set linebreak list listchars=nbsp:\u2423,tab:\u2595\u2014,trail:\u02d1,eol:\ub6" ++ :redraw! ++ :let line=ScreenChar(winwidth(0)) ++ :call DoRecordScreen() ++ :let g:test ="Test 4: set linebreak nolist" ++ :set nolist linebreak ++ :redraw! ++ :let line=ScreenChar(winwidth(0)) ++ :call DoRecordScreen() ++ :let g:test ="Test 5: set nolinebreak list" ++ :set list nolinebreak ++ :redraw! ++ :let line=ScreenChar(winwidth(0)) ++ :call DoRecordScreen() ++ :let g:test ="Test 6: set linebreak with tab and 1 line as long as screen: should break!" ++ :set nolist linebreak ts=8 ++ :let line="1\t".repeat('a', winwidth(0)-2) ++ :$put =line ++ :$ ++ :norm! zt ++ :redraw! ++ :let line=ScreenChar(winwidth(0)) ++ :call DoRecordScreen() ++ :%w! test.out ++ :qa! ++ ENDTEST ++ dummy text +*** ../vim-7.4.352/src/testdir/test_listlbr.ok 2014-07-02 19:58:25.646374067 +0200 +--- src/testdir/test_listlbr.ok 2014-07-02 19:47:21.610363892 +0200 +*************** +*** 0 **** +--- 1,39 ---- ++ ++ abcdef hijklmn pqrstuvwxyz 1060ABCDEFGHIJKLMNOP ++ ++ Test 1: set linebreak ++ abcdef ++ +hijklmn ++ +pqrstuvwxyz 1060ABC ++ +DEFGHIJKLMNOP ++ ++ Test 2: set linebreak + set list ++ ^Iabcdef hijklmn^I ++ +pqrstuvwxyz 1060ABC ++ +DEFGHIJKLMNOP ++ ++ ++ Test 3: set linebreak + set list + fancy listchars ++ ▕———abcdef ++ +hijklmn▕——— ++ +pqrstuvwxyz␣1060ABC ++ +DEFGHIJKLMNOPˑ¶ ++ ++ Test 4: set linebreak nolist ++ abcdef ++ +hijklmn ++ +pqrstuvwxyz 1060ABC ++ +DEFGHIJKLMNOP ++ ++ Test 5: set nolinebreak list ++ ▕———abcdef hijklmn▕— ++ +pqrstuvwxyz␣1060ABC ++ +DEFGHIJKLMNOPˑ¶ ++ ¶ ++ 1 aaaaaaaaaaaaaaaaaa ++ ++ Test 6: set linebreak with tab and 1 line as long as screen: should break! ++ 1 ++ +aaaaaaaaaaaaaaaaaa ++ ~ ++ ~ +*** ../vim-7.4.352/src/version.c 2014-07-02 19:37:38.462354956 +0200 +--- src/version.c 2014-07-02 19:57:44.066373430 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 353, + /**/ + +-- +FATHER: You only killed the bride's father - that's all - +LAUNCELOT: Oh dear, I didn't really mean to... +FATHER: Didn't mean to? You put your sword right through his head! +LAUNCELOT: Gosh - Is he all right? + "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.354 b/SOURCES/7.4.354 new file mode 100644 index 0000000..1bbcf6d --- /dev/null +++ b/SOURCES/7.4.354 @@ -0,0 +1,56 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.354 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.354 +Problem: Compiler warning. +Solution: Change NUL to NULL. (Ken Takata) +Files: src/screen.c + + +*** ../vim-7.4.353/src/screen.c 2014-07-02 19:59:35.454375136 +0200 +--- src/screen.c 2014-07-03 14:08:03.579375847 +0200 +*************** +*** 3704,3710 **** + if (diff_hlf != (hlf_T)0) + char_attr = hl_attr(diff_hlf); + #endif +! p_extra = NUL; + c_extra = ' '; + n_extra = get_breakindent_win(wp, + ml_get_buf(wp->w_buffer, lnum, FALSE)); +--- 3704,3710 ---- + if (diff_hlf != (hlf_T)0) + char_attr = hl_attr(diff_hlf); + #endif +! p_extra = NULL; + c_extra = ' '; + n_extra = get_breakindent_win(wp, + ml_get_buf(wp->w_buffer, lnum, FALSE)); +*** ../vim-7.4.353/src/version.c 2014-07-02 19:59:35.454375136 +0200 +--- src/version.c 2014-07-03 14:08:38.875376388 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 354, + /**/ + +-- + [SIR LAUNCELOT runs back up the stairs, grabs a rope + of the wall and swings out over the heads of the CROWD in a + swashbuckling manner towards a large window. He stops just short + of the window and is left swing pathetically back and forth.] +LAUNCELOT: Excuse me ... could somebody give me a push ... + "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.355 b/SOURCES/7.4.355 new file mode 100644 index 0000000..49d4276 --- /dev/null +++ b/SOURCES/7.4.355 @@ -0,0 +1,929 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.355 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.355 +Problem: Several problems with Javascript indenting. +Solution: Improve Javascript indenting. +Files: src/misc1.c + + +*** ../vim-7.4.354/src/misc1.c 2014-07-02 18:27:44.662290695 +0200 +--- src/misc1.c 2014-07-03 22:42:20.315848662 +0200 +*************** +*** 5382,5387 **** +--- 5382,5388 ---- + static char_u *cin_skipcomment __ARGS((char_u *)); + static int cin_nocode __ARGS((char_u *)); + static pos_T *find_line_comment __ARGS((void)); ++ static int cin_has_js_key __ARGS((char_u *text)); + static int cin_islabel_skip __ARGS((char_u **)); + static int cin_isdefault __ARGS((char_u *)); + static char_u *after_label __ARGS((char_u *l)); +*************** +*** 5410,5415 **** +--- 5411,5417 ---- + static int cin_skip2pos __ARGS((pos_T *trypos)); + static pos_T *find_start_brace __ARGS((void)); + static pos_T *find_match_paren __ARGS((int)); ++ static pos_T *find_match_char __ARGS((int c, int ind_maxparen)); + static int corr_ind_maxparen __ARGS((pos_T *startpos)); + static int find_last_paren __ARGS((char_u *l, int start, int end)); + static int find_match __ARGS((int lookfor, linenr_T ourscope)); +*************** +*** 5494,5500 **** +--- 5496,5533 ---- + } + + /* ++ * Return TRUE if "text" starts with "key:". ++ */ ++ static int ++ cin_has_js_key(text) ++ char_u *text; ++ { ++ char_u *s = skipwhite(text); ++ int quote = 0; ++ ++ if (*s == '\'' || *s == '"') ++ { ++ /* can be 'key': or "key": */ ++ quote = *s; ++ ++s; ++ } ++ if (!vim_isIDc(*s)) /* need at least one ID character */ ++ return FALSE; ++ ++ while (vim_isIDc(*s)) ++ ++s; ++ if (*s == quote) ++ ++s; ++ ++ s = cin_skipcomment(s); ++ ++ /* "::" is not a label, it's C++ */ ++ return (*s == ':' && s[1] != ':'); ++ } ++ ++ /* + * Check if string matches "label:"; move to character after ':' if true. ++ * "*s" must point to the start of the label, if there is one. + */ + static int + cin_islabel_skip(s) +*************** +*** 6621,6632 **** + find_match_paren(ind_maxparen) /* XXX */ + int ind_maxparen; + { + pos_T cursor_save; + pos_T *trypos; + static pos_T pos_copy; + + cursor_save = curwin->w_cursor; +! if ((trypos = findmatchlimit(NULL, '(', 0, ind_maxparen)) != NULL) + { + /* check if the ( is in a // comment */ + if ((colnr_T)cin_skip2pos(trypos) > trypos->col) +--- 6654,6673 ---- + find_match_paren(ind_maxparen) /* XXX */ + int ind_maxparen; + { ++ return find_match_char('(', ind_maxparen); ++ } ++ ++ static pos_T * ++ find_match_char(c, ind_maxparen) /* XXX */ ++ int c; ++ int ind_maxparen; ++ { + pos_T cursor_save; + pos_T *trypos; + static pos_T pos_copy; + + cursor_save = curwin->w_cursor; +! if ((trypos = findmatchlimit(NULL, c, 0, ind_maxparen)) != NULL) + { + /* check if the ( is in a // comment */ + if ((colnr_T)cin_skip2pos(trypos) > trypos->col) +*************** +*** 6976,6981 **** +--- 7017,7024 ---- + #define LOOKFOR_NOBREAK 8 + #define LOOKFOR_CPP_BASECLASS 9 + #define LOOKFOR_ENUM_OR_INIT 10 ++ #define LOOKFOR_JS_KEY 11 ++ #define LOOKFOR_NO_COMMA 12 + + int whilelevel; + linenr_T lnum; +*************** +*** 6986,6991 **** +--- 7029,7035 ---- + int cont_amount = 0; /* amount for continuation line */ + int original_line_islabel; + int added_to_amount = 0; ++ int js_cur_has_key = 0; + + /* make a copy, value is changed below */ + int ind_continuation = curbuf->b_ind_continuation; +*************** +*** 7209,7214 **** +--- 7253,7268 ---- + } + + /* ++ * Are we looking at a ']' that has a match? ++ */ ++ else if (*skipwhite(theline) == ']' ++ && (trypos = find_match_char('[', curbuf->b_ind_maxparen)) != NULL) ++ { ++ /* align with the line containing the '['. */ ++ amount = get_indent_lnum(trypos->lnum); ++ } ++ ++ /* + * Are we inside parentheses or braces? + */ /* XXX */ + else if (((trypos = find_match_paren(curbuf->b_ind_maxparen)) != NULL +*************** +*** 7473,7486 **** + if (cin_iscomment(theline)) + amount += curbuf->b_ind_comment; + } +- +- /* +- * Are we at least inside braces, then? +- */ + else + { + trypos = tryposBrace; +- + ourscope = trypos->lnum; + start = ml_get(ourscope); + +--- 7527,7539 ---- + if (cin_iscomment(theline)) + amount += curbuf->b_ind_comment; + } + else + { ++ /* ++ * We are inside braces, there is a { before this line at the position ++ * stored in tryposBrace. ++ */ + trypos = tryposBrace; + ourscope = trypos->lnum; + start = ml_get(ourscope); + +*************** +*** 7502,7525 **** + } + else + { +! /* +! * that opening brace might have been on a continuation +! * line. if so, find the start of the line. +! */ + curwin->w_cursor.lnum = ourscope; + +! /* +! * position the cursor over the rightmost paren, so that +! * matching it will take us back to the start of the line. +! */ + lnum = ourscope; + if (find_last_paren(start, '(', ')') + && (trypos = find_match_paren(curbuf->b_ind_maxparen)) + != NULL) + lnum = trypos->lnum; + +! /* +! * It could have been something like + * case 1: if (asdf && + * ldfd) { + * } +--- 7555,7573 ---- + } + else + { +! /* That opening brace might have been on a continuation +! * line. if so, find the start of the line. */ + curwin->w_cursor.lnum = ourscope; + +! /* Position the cursor over the rightmost paren, so that +! * matching it will take us back to the start of the line. */ + lnum = ourscope; + if (find_last_paren(start, '(', ')') + && (trypos = find_match_paren(curbuf->b_ind_maxparen)) + != NULL) + lnum = trypos->lnum; + +! /* It could have been something like + * case 1: if (asdf && + * ldfd) { + * } +*************** +*** 7535,7542 **** + start_brace = BRACE_AT_END; + } + + /* +! * if we're looking at a closing brace, that's where + * we want to be. otherwise, add the amount of room + * that an indent is supposed to be. + */ +--- 7583,7594 ---- + start_brace = BRACE_AT_END; + } + ++ /* For Javascript check if the line starts with "key:". */ ++ if (curbuf->b_ind_js) ++ js_cur_has_key = cin_has_js_key(theline); ++ + /* +! * If we're looking at a closing brace, that's where + * we want to be. otherwise, add the amount of room + * that an indent is supposed to be. + */ +*************** +*** 7643,7649 **** + * Search backwards. If we find something we recognize, line up + * with that. + * +! * if we're looking at an open brace, indent + * the usual amount relative to the conditional + * that opens the block. + */ +--- 7695,7701 ---- + * Search backwards. If we find something we recognize, line up + * with that. + * +! * If we're looking at an open brace, indent + * the usual amount relative to the conditional + * that opens the block. + */ +*************** +*** 8051,8056 **** +--- 8103,8143 ---- + */ + terminated = cin_isterminated(l, FALSE, TRUE); + ++ if (js_cur_has_key) ++ { ++ js_cur_has_key = 0; /* only check the first line */ ++ if (curbuf->b_ind_js && terminated == ',') ++ { ++ /* For Javascript we might be inside an object: ++ * key: something, <- align with this ++ * key: something ++ * or: ++ * key: something + <- align with this ++ * something, ++ * key: something ++ */ ++ lookfor = LOOKFOR_JS_KEY; ++ } ++ } ++ if (lookfor == LOOKFOR_JS_KEY && cin_has_js_key(l)) ++ { ++ amount = get_indent(); ++ break; ++ } ++ if (lookfor == LOOKFOR_NO_COMMA) ++ { ++ if (terminated != ',') ++ /* line below current line is the one that starts a ++ * (possibly broken) line ending in a comma. */ ++ break; ++ amount = get_indent(); ++ if (curwin->w_cursor.lnum - 1 == ourscope) ++ /* line above is start of the scope, thus current line ++ * is the one that stars a (possibly broken) line ++ * ending in a comma. */ ++ break; ++ } ++ + if (terminated == 0 || (lookfor != LOOKFOR_UNTERM + && terminated == ',')) + { +*************** +*** 8062,8072 **** + * bar ) + */ + /* +! * position the cursor over the rightmost paren, so that + * matching it will take us back to the start of the line. + */ + (void)find_last_paren(l, '(', ')'); + trypos = find_match_paren(corr_ind_maxparen(&cur_curpos)); + + /* + * If we are looking for ',', we also look for matching +--- 8149,8164 ---- + * bar ) + */ + /* +! * Position the cursor over the rightmost paren, so that + * matching it will take us back to the start of the line. ++ * Ignore a match before the start of the block. + */ + (void)find_last_paren(l, '(', ')'); + trypos = find_match_paren(corr_ind_maxparen(&cur_curpos)); ++ if (trypos != NULL && (trypos->lnum < tryposBrace->lnum ++ || (trypos->lnum == tryposBrace->lnum ++ && trypos->col < tryposBrace->col))) ++ trypos = NULL; + + /* + * If we are looking for ',', we also look for matching +*************** +*** 8117,8126 **** + * Get indent and pointer to text for current line, + * ignoring any jump label. XXX + */ +! if (!curbuf->b_ind_js) +! cur_amount = skip_label(curwin->w_cursor.lnum, &l); +! else + cur_amount = get_indent(); + /* + * If this is just above the line we are indenting, and it + * starts with a '{', line it up with this line. +--- 8209,8218 ---- + * Get indent and pointer to text for current line, + * ignoring any jump label. XXX + */ +! if (curbuf->b_ind_js) + cur_amount = get_indent(); ++ else ++ cur_amount = skip_label(curwin->w_cursor.lnum, &l); + /* + * If this is just above the line we are indenting, and it + * starts with a '{', line it up with this line. +*************** +*** 8142,8148 **** + if (*skipwhite(l) != '{') + amount += curbuf->b_ind_open_extra; + +! if (curbuf->b_ind_cpp_baseclass) + { + /* have to look back, whether it is a cpp base + * class declaration or initialization */ +--- 8234,8240 ---- + if (*skipwhite(l) != '{') + amount += curbuf->b_ind_open_extra; + +! if (curbuf->b_ind_cpp_baseclass && !curbuf->b_ind_js) + { + /* have to look back, whether it is a cpp base + * class declaration or initialization */ +*************** +*** 8302,8309 **** + */ + if (lookfor == LOOKFOR_INITIAL && terminated == ',') + { +! lookfor = LOOKFOR_ENUM_OR_INIT; +! cont_amount = cin_first_id_amount(); + } + else + { +--- 8394,8434 ---- + */ + if (lookfor == LOOKFOR_INITIAL && terminated == ',') + { +! if (curbuf->b_ind_js) +! { +! /* Search for a line ending in a comma +! * and line up with the line below it +! * (could be the current line). +! * some = [ +! * 1, <- line up here +! * 2, +! * some = [ +! * 3 + <- line up here +! * 4 * +! * 5, +! * 6, +! */ +! lookfor = LOOKFOR_NO_COMMA; +! amount = get_indent(); /* XXX */ +! trypos = find_match_char('[', +! curbuf->b_ind_maxparen); +! if (trypos != NULL) +! { +! if (trypos->lnum +! == curwin->w_cursor.lnum - 1) +! { +! /* Current line is first inside +! * [], line up with it. */ +! break; +! } +! ourscope = trypos->lnum; +! } +! } +! else +! { +! lookfor = LOOKFOR_ENUM_OR_INIT; +! cont_amount = cin_first_id_amount(); +! } + } + else + { +*************** +*** 8313,8319 **** + /* XXX */ + cont_amount = cin_get_equal_amount( + curwin->w_cursor.lnum); +! if (lookfor != LOOKFOR_TERM) + lookfor = LOOKFOR_UNTERM; + } + } +--- 8438,8445 ---- + /* XXX */ + cont_amount = cin_get_equal_amount( + curwin->w_cursor.lnum); +! if (lookfor != LOOKFOR_TERM +! && lookfor != LOOKFOR_JS_KEY) + lookfor = LOOKFOR_UNTERM; + } + } +*************** +*** 8324,8331 **** + * Check if we are after a while (cond); + * If so: Ignore until the matching "do". + */ +! /* XXX */ +! else if (cin_iswhileofdo_end(terminated)) + { + /* + * Found an unterminated line after a while ();, line up +--- 8450,8456 ---- + * Check if we are after a while (cond); + * If so: Ignore until the matching "do". + */ +! else if (cin_iswhileofdo_end(terminated)) /* XXX */ + { + /* + * Found an unterminated line after a while ();, line up +*************** +*** 8538,8555 **** + if (curbuf->b_ind_jump_label > 0 && original_line_islabel) + amount -= curbuf->b_ind_jump_label; + } +- +- /* +- * ok -- we're not inside any sort of structure at all! +- * +- * this means we're at the top level, and everything should +- * basically just match where the previous line is, except +- * for the lines immediately following a function declaration, +- * which are K&R-style parameters and need to be indented. +- */ + else + { + /* + * if our line starts with an open brace, forget about any + * prevailing indent and make sure it looks like the start + * of a function +--- 8663,8678 ---- + if (curbuf->b_ind_jump_label > 0 && original_line_islabel) + amount -= curbuf->b_ind_jump_label; + } + else + { + /* ++ * ok -- we're not inside any sort of structure at all! ++ * ++ * This means we're at the top level, and everything should ++ * basically just match where the previous line is, except ++ * for the lines immediately following a function declaration, ++ * which are K&R-style parameters and need to be indented. ++ * + * if our line starts with an open brace, forget about any + * prevailing indent and make sure it looks like the start + * of a function +*************** +*** 8700,8705 **** +--- 8823,8840 ---- + break; + + /* ++ * If the previous line ends on '[' we are probably in an ++ * array constant: ++ * something = [ ++ * 234, <- extra indent ++ */ ++ if (cin_ends_in(l, (char_u *)"[", NULL)) ++ { ++ amount = get_indent() + ind_continuation; ++ break; ++ } ++ ++ /* + * Find a line only has a semicolon that belongs to a previous + * line ending in '}', e.g. before an #endif. Don't increase + * indent then. +*** ../vim-7.4.354/src/testdir/test3.in 2014-07-02 18:27:44.662290695 +0200 +--- src/testdir/test3.in 2014-07-03 22:41:38.743848025 +0200 +*************** +*** 1432,1438 **** + + STARTTEST + :set cino=(0,ts +! 2kdd=][ + ENDTEST + + void func(int a +--- 1432,1438 ---- + + STARTTEST + :set cino=(0,ts +! 2kdd2j=][ + ENDTEST + + void func(int a +*************** +*** 1446,1452 **** + + STARTTEST + :set cino=(0 +! 2kdd=][ + ENDTEST + + void +--- 1446,1452 ---- + + STARTTEST + :set cino=(0 +! 2kdd2j=][ + ENDTEST + + void +*************** +*** 1461,1467 **** + + STARTTEST + :set cino& +! 2kdd=7][ + ENDTEST + + void func(void) +--- 1461,1467 ---- + + STARTTEST + :set cino& +! 2kdd2j=7][ + ENDTEST + + void func(void) +*************** +*** 1538,1544 **** + STARTTEST + :set cino& + :set cino+=l1 +! 2kdd=][ + ENDTEST + + void func(void) +--- 1538,1544 ---- + STARTTEST + :set cino& + :set cino+=l1 +! 2kdd2j=][ + ENDTEST + + void func(void) +*************** +*** 1567,1573 **** + + STARTTEST + :set cino& +! 2kdd=][ + ENDTEST + + void func(void) +--- 1567,1573 ---- + + STARTTEST + :set cino& +! 2kdd2j=][ + ENDTEST + + void func(void) +*************** +*** 1592,1598 **** + + STARTTEST + :set cino& +! 2kdd=][ + ENDTEST + + void func(void) +--- 1592,1598 ---- + + STARTTEST + :set cino& +! 2kdd2j=][ + ENDTEST + + void func(void) +*************** +*** 1919,1928 **** + + JSSTART + var foo = [ +! 1, // indent 8 more + 2, + 3 +! ]; // indent 8 less + JSEND + + STARTTEST +--- 1919,1928 ---- + + JSSTART + var foo = [ +! 1, + 2, + 3 +! ]; + JSEND + + STARTTEST +*************** +*** 1937,1943 **** + 1, + 2, + 3 +! ]; // indent 16 less + } + JSEND + +--- 1937,1943 ---- + 1, + 2, + 3 +! ]; + } + JSEND + +*************** +*** 1954,1959 **** +--- 1954,1961 ---- + cond) { + stmt; + } ++ window.something.left = ++ (width - 50 + offset) + "px"; + var class_name='myclass'; + + function private_method() { +*************** +*** 1969,1983 **** + + $(this).data(class_name+'_public',$.extend({},{ + foo: 'bar', +! bar: 2, // indent 8 more +! foobar: [ // indent 8 more +! 1, // indent 8 more +! 2, // indent 16 more +! 3 // indent 16 more + ], +! callback: function(){ // indent 8 more +! return true; // indent 8 more +! } // indent 8 more + }, options||{})); + } + +--- 1971,1985 ---- + + $(this).data(class_name+'_public',$.extend({},{ + foo: 'bar', +! bar: 2, +! foobar: [ +! 1, +! 2, +! 3 + ], +! callback: function(){ +! return true; +! } + }, options||{})); + } + +*************** +*** 2018,2026 **** + foo: 'bar', + bar: 2, + foobar: [ +! 1, // indent 8 more +! 2, // indent 8 more +! 3 // indent 8 more + ], + callback: function(){ + return true; +--- 2020,2028 ---- + foo: 'bar', + bar: 2, + foobar: [ +! 1, +! 2, +! 3 + ], + callback: function(){ + return true; +*************** +*** 2040,2054 **** + function init(options) { + $(this).data(class_name+'_public',$.extend({},{ + foo: 'bar', +! bar: 2, // indent 8 more +! foobar: [ // indent 8 more +! 1, // indent 8 more +! 2, // indent 16 more +! 3 // indent 16 more + ], +! callback: function(){ // indent 8 more +! return true; // indent 8 more +! } // indent 8 more + }, options||{})); + } + })(jQuery); +--- 2042,2056 ---- + function init(options) { + $(this).data(class_name+'_public',$.extend({},{ + foo: 'bar', +! bar: 2, +! foobar: [ +! 1, +! 2, +! 3 + ], +! callback: function(){ +! return true; +! } + }, options||{})); + } + })(jQuery); +*** ../vim-7.4.354/src/testdir/test3.ok 2014-07-02 18:27:44.662290695 +0200 +--- src/testdir/test3.ok 2014-07-03 22:18:58.167827177 +0200 +*************** +*** 1707,1716 **** + + JSSTART + var foo = [ +! 1, // indent 8 more + 2, + 3 +! ]; // indent 8 less + JSEND + + +--- 1707,1716 ---- + + JSSTART + var foo = [ +! 1, + 2, + 3 +! ]; + JSEND + + +*************** +*** 1720,1726 **** + 1, + 2, + 3 +! ]; // indent 16 less + } + JSEND + +--- 1720,1726 ---- + 1, + 2, + 3 +! ]; + } + JSEND + +*************** +*** 1732,1737 **** +--- 1732,1739 ---- + cond) { + stmt; + } ++ window.something.left = ++ (width - 50 + offset) + "px"; + var class_name='myclass'; + + function private_method() { +*************** +*** 1747,1761 **** + + $(this).data(class_name+'_public',$.extend({},{ + foo: 'bar', +! bar: 2, // indent 8 more +! foobar: [ // indent 8 more +! 1, // indent 8 more +! 2, // indent 16 more +! 3 // indent 16 more + ], +! callback: function(){ // indent 8 more +! return true; // indent 8 more +! } // indent 8 more + }, options||{})); + } + +--- 1749,1763 ---- + + $(this).data(class_name+'_public',$.extend({},{ + foo: 'bar', +! bar: 2, +! foobar: [ +! 1, +! 2, +! 3 + ], +! callback: function(){ +! return true; +! } + }, options||{})); + } + +*************** +*** 1791,1799 **** + foo: 'bar', + bar: 2, + foobar: [ +! 1, // indent 8 more +! 2, // indent 8 more +! 3 // indent 8 more + ], + callback: function(){ + return true; +--- 1793,1801 ---- + foo: 'bar', + bar: 2, + foobar: [ +! 1, +! 2, +! 3 + ], + callback: function(){ + return true; +*************** +*** 1808,1822 **** + function init(options) { + $(this).data(class_name+'_public',$.extend({},{ + foo: 'bar', +! bar: 2, // indent 8 more +! foobar: [ // indent 8 more +! 1, // indent 8 more +! 2, // indent 16 more +! 3 // indent 16 more + ], +! callback: function(){ // indent 8 more +! return true; // indent 8 more +! } // indent 8 more + }, options||{})); + } + })(jQuery); +--- 1810,1824 ---- + function init(options) { + $(this).data(class_name+'_public',$.extend({},{ + foo: 'bar', +! bar: 2, +! foobar: [ +! 1, +! 2, +! 3 + ], +! callback: function(){ +! return true; +! } + }, options||{})); + } + })(jQuery); +*** ../vim-7.4.354/src/version.c 2014-07-03 22:54:04.911859458 +0200 +--- src/version.c 2014-07-03 22:54:40.971860011 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 355, + /**/ + +-- +MESKIMEN'S LAW + There's never time to do it right, but always time to do it over. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.356 b/SOURCES/7.4.356 new file mode 100644 index 0000000..58af038 --- /dev/null +++ b/SOURCES/7.4.356 @@ -0,0 +1,38 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.356 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.356 +Problem: Mercurial does not ignore memfile_test. (Daniel Hahler) +Solution: Add memfile_test to ignored files, remove trailing spaces. +Files: .hgignore + + +Note: This patch was made empty, because .hgignore is not part of the +distributed files. + + +*** ../vim-7.4.355/src/version.c 2014-07-03 22:57:51.299862927 +0200 +--- src/version.c 2014-07-09 13:41:39.855060005 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 356, + /**/ + +-- +In Africa some of the native tribes have a custom of beating the ground +with clubs and uttering spine chilling cries. Anthropologists call +this a form of primitive self-expression. In America we call it golf. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.357 b/SOURCES/7.4.357 new file mode 100644 index 0000000..e1d638f --- /dev/null +++ b/SOURCES/7.4.357 @@ -0,0 +1,52 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.357 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.357 +Problem: After completion some characters are not redrawn. +Solution: Clear the command line unconditionally. (Jacob Niehus) +Files: src/edit.c + + +*** ../vim-7.4.356/src/edit.c 2014-06-25 14:39:35.102348584 +0200 +--- src/edit.c 2014-07-09 13:22:22.747075922 +0200 +*************** +*** 3854,3861 **** + ins_compl_free(); + compl_started = FALSE; + compl_matches = 0; +! if (!shortmess(SHM_COMPLETIONMENU)) +! msg_clr_cmdline(); /* necessary for "noshowmode" */ + ctrl_x_mode = 0; + compl_enter_selects = FALSE; + if (edit_submode != NULL) +--- 3854,3860 ---- + ins_compl_free(); + compl_started = FALSE; + compl_matches = 0; +! msg_clr_cmdline(); /* necessary for "noshowmode" */ + ctrl_x_mode = 0; + compl_enter_selects = FALSE; + if (edit_submode != NULL) +*** ../vim-7.4.356/src/version.c 2014-07-09 13:43:18.399058649 +0200 +--- src/version.c 2014-07-09 13:58:35.483046034 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 357, + /**/ + +-- +Why isn't there mouse-flavored cat food? + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.358 b/SOURCES/7.4.358 new file mode 100644 index 0000000..a36803d --- /dev/null +++ b/SOURCES/7.4.358 @@ -0,0 +1,290 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.358 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.358 (after 7.4.351) +Problem: Sort is not always stable. +Solution: Add an index instead of relying on the pointer to remain the same. + Idea by Jun Takimoto. +Files: src/eval.c + + +*** ../vim-7.4.357/src/eval.c 2014-07-02 19:06:14.686326091 +0200 +--- src/eval.c 2014-07-09 17:42:05.699813489 +0200 +*************** +*** 17329,17334 **** +--- 17329,17341 ---- + #endif + item_compare2 __ARGS((const void *s1, const void *s2)); + ++ /* struct used in the array that's given to qsort() */ ++ typedef struct ++ { ++ listitem_T *item; ++ int idx; ++ } sortItem_T; ++ + static int item_compare_ic; + static int item_compare_numeric; + static char_u *item_compare_func; +*************** +*** 17349,17362 **** + const void *s1; + const void *s2; + { + char_u *p1, *p2; + char_u *tofree1, *tofree2; + int res; + char_u numbuf1[NUMBUFLEN]; + char_u numbuf2[NUMBUFLEN]; + +! p1 = tv2string(&(*(listitem_T **)s1)->li_tv, &tofree1, numbuf1, 0); +! p2 = tv2string(&(*(listitem_T **)s2)->li_tv, &tofree2, numbuf2, 0); + if (p1 == NULL) + p1 = (char_u *)""; + if (p2 == NULL) +--- 17356,17372 ---- + const void *s1; + const void *s2; + { ++ sortItem_T *si1, *si2; + char_u *p1, *p2; + char_u *tofree1, *tofree2; + int res; + char_u numbuf1[NUMBUFLEN]; + char_u numbuf2[NUMBUFLEN]; + +! si1 = (sortItem_T *)s1; +! si2 = (sortItem_T *)s2; +! p1 = tv2string(&si1->item->li_tv, &tofree1, numbuf1, 0); +! p2 = tv2string(&si2->item->li_tv, &tofree2, numbuf2, 0); + if (p1 == NULL) + p1 = (char_u *)""; + if (p2 == NULL) +*************** +*** 17379,17385 **** + /* When the result would be zero, compare the pointers themselves. Makes + * the sort stable. */ + if (res == 0 && !item_compare_keep_zero) +! res = s1 > s2 ? 1 : -1; + + vim_free(tofree1); + vim_free(tofree2); +--- 17389,17395 ---- + /* When the result would be zero, compare the pointers themselves. Makes + * the sort stable. */ + if (res == 0 && !item_compare_keep_zero) +! res = si1->idx > si2->idx ? 1 : -1; + + vim_free(tofree1); + vim_free(tofree2); +*************** +*** 17394,17399 **** +--- 17404,17410 ---- + const void *s1; + const void *s2; + { ++ sortItem_T *si1, *si2; + int res; + typval_T rettv; + typval_T argv[3]; +*************** +*** 17403,17412 **** + if (item_compare_func_err) + return 0; + + /* Copy the values. This is needed to be able to set v_lock to VAR_FIXED + * in the copy without changing the original list items. */ +! copy_tv(&(*(listitem_T **)s1)->li_tv, &argv[0]); +! copy_tv(&(*(listitem_T **)s2)->li_tv, &argv[1]); + + rettv.v_type = VAR_UNKNOWN; /* clear_tv() uses this */ + res = call_func(item_compare_func, (int)STRLEN(item_compare_func), +--- 17414,17426 ---- + if (item_compare_func_err) + return 0; + ++ si1 = (sortItem_T *)s1; ++ si2 = (sortItem_T *)s2; ++ + /* Copy the values. This is needed to be able to set v_lock to VAR_FIXED + * in the copy without changing the original list items. */ +! copy_tv(&si1->item->li_tv, &argv[0]); +! copy_tv(&si2->item->li_tv, &argv[1]); + + rettv.v_type = VAR_UNKNOWN; /* clear_tv() uses this */ + res = call_func(item_compare_func, (int)STRLEN(item_compare_func), +*************** +*** 17426,17432 **** + /* When the result would be zero, compare the pointers themselves. Makes + * the sort stable. */ + if (res == 0 && !item_compare_keep_zero) +! res = s1 > s2 ? 1 : -1; + + return res; + } +--- 17440,17446 ---- + /* When the result would be zero, compare the pointers themselves. Makes + * the sort stable. */ + if (res == 0 && !item_compare_keep_zero) +! res = si1->idx > si2->idx ? 1 : -1; + + return res; + } +*************** +*** 17442,17448 **** + { + list_T *l; + listitem_T *li; +! listitem_T **ptrs; + long len; + long i; + +--- 17456,17462 ---- + { + list_T *l; + listitem_T *li; +! sortItem_T *ptrs; + long len; + long i; + +*************** +*** 17510,17516 **** + } + + /* Make an array with each entry pointing to an item in the List. */ +! ptrs = (listitem_T **)alloc((int)(len * sizeof(listitem_T *))); + if (ptrs == NULL) + return; + +--- 17524,17530 ---- + } + + /* Make an array with each entry pointing to an item in the List. */ +! ptrs = (sortItem_T *)alloc((int)(len * sizeof(sortItem_T))); + if (ptrs == NULL) + return; + +*************** +*** 17519,17525 **** + { + /* sort(): ptrs will be the list to sort */ + for (li = l->lv_first; li != NULL; li = li->li_next) +! ptrs[i++] = li; + + item_compare_func_err = FALSE; + item_compare_keep_zero = FALSE; +--- 17533,17543 ---- + { + /* sort(): ptrs will be the list to sort */ + for (li = l->lv_first; li != NULL; li = li->li_next) +! { +! ptrs[i].item = li; +! ptrs[i].idx = i; +! ++i; +! } + + item_compare_func_err = FALSE; + item_compare_keep_zero = FALSE; +*************** +*** 17531,17537 **** + else + { + /* Sort the array with item pointers. */ +! qsort((void *)ptrs, (size_t)len, sizeof(listitem_T *), + item_compare_func == NULL ? item_compare : item_compare2); + + if (!item_compare_func_err) +--- 17549,17555 ---- + else + { + /* Sort the array with item pointers. */ +! qsort((void *)ptrs, (size_t)len, sizeof(sortItem_T), + item_compare_func == NULL ? item_compare : item_compare2); + + if (!item_compare_func_err) +*************** +*** 17540,17546 **** + l->lv_first = l->lv_last = l->lv_idx_item = NULL; + l->lv_len = 0; + for (i = 0; i < len; ++i) +! list_append(l, ptrs[i]); + } + } + } +--- 17558,17564 ---- + l->lv_first = l->lv_last = l->lv_idx_item = NULL; + l->lv_len = 0; + for (i = 0; i < len; ++i) +! list_append(l, ptrs[i].item); + } + } + } +*************** +*** 17559,17565 **** + { + if (item_compare_func_ptr((void *)&li, (void *)&li->li_next) + == 0) +! ptrs[i++] = li; + if (item_compare_func_err) + { + EMSG(_("E882: Uniq compare function failed")); +--- 17577,17583 ---- + { + if (item_compare_func_ptr((void *)&li, (void *)&li->li_next) + == 0) +! ptrs[i++].item = li; + if (item_compare_func_err) + { + EMSG(_("E882: Uniq compare function failed")); +*************** +*** 17571,17582 **** + { + while (--i >= 0) + { +! li = ptrs[i]->li_next; +! ptrs[i]->li_next = li->li_next; + if (li->li_next != NULL) +! li->li_next->li_prev = ptrs[i]; + else +! l->lv_last = ptrs[i]; + list_fix_watch(l, li); + listitem_free(li); + l->lv_len--; +--- 17589,17600 ---- + { + while (--i >= 0) + { +! li = ptrs[i].item->li_next; +! ptrs[i].item->li_next = li->li_next; + if (li->li_next != NULL) +! li->li_next->li_prev = ptrs[i].item; + else +! l->lv_last = ptrs[i].item; + list_fix_watch(l, li); + listitem_free(li); + l->lv_len--; +*** ../vim-7.4.357/src/version.c 2014-07-09 14:00:45.175044250 +0200 +--- src/version.c 2014-07-09 17:23:12.791836515 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 358, + /**/ + +-- +An indication you must be a manager: +You can explain to somebody the difference between "re-engineering", +"down-sizing", "right-sizing", and "firing people's asses". + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.359 b/SOURCES/7.4.359 new file mode 100644 index 0000000..ab695d5 --- /dev/null +++ b/SOURCES/7.4.359 @@ -0,0 +1,103 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.359 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.359 +Problem: When 'ttymouse' is set to 'uxterm' the xterm version is not + requested. (Tomas Janousek) +Solution: Do not mark uxterm as a conflict mouse and add + resume_get_esc_sequence(). +Files: src/term.c, src/os_unix.c, src/proto/term.pro + + +*** ../vim-7.4.358/src/term.c 2014-05-22 21:22:15.361995652 +0200 +--- src/term.c 2014-07-09 18:49:57.127730739 +0200 +*************** +*** 3330,3335 **** +--- 3330,3348 ---- + return crv_status == CRV_SENT || u7_status == U7_SENT + || xt_index_out > xt_index_in; + } ++ ++ /* ++ * If requesting the version was disabled in did_request_esc_sequence(), ++ * enable it again. ++ */ ++ void ++ resume_get_esc_sequence() ++ { ++ if (crv_status == 0) ++ crv_status = CRV_GET; ++ if (u7_status == 0) ++ u7_status = U7_GET; ++ } + # endif + + +*** ../vim-7.4.358/src/os_unix.c 2014-05-22 21:22:15.361995652 +0200 +--- src/os_unix.c 2014-07-09 18:56:58.483722175 +0200 +*************** +*** 3780,3788 **** + # ifdef FEAT_MOUSE_URXVT + /* same as the dec mouse */ + if (use_xterm_mouse() == 3 +- # ifdef FEAT_TERMRESPONSE +- && !did_request_esc_sequence() +- # endif + # ifdef FEAT_GUI + && !gui.in_use + # endif +--- 3780,3785 ---- +*************** +*** 3797,3803 **** + mch_setmouse(FALSE); + setmouse(); + } +! xterm_conflict_mouse = TRUE; + } + else + del_mouse_termcode(KS_URXVT_MOUSE); +--- 3794,3801 ---- + mch_setmouse(FALSE); + setmouse(); + } +! /* It's OK to request the xterm version for uxterm. */ +! resume_get_esc_sequence(); + } + else + del_mouse_termcode(KS_URXVT_MOUSE); +*** ../vim-7.4.358/src/proto/term.pro 2014-05-22 18:14:27.570224664 +0200 +--- src/proto/term.pro 2014-07-09 18:53:31.827726375 +0200 +*************** +*** 35,40 **** +--- 35,41 ---- + void starttermcap __ARGS((void)); + void stoptermcap __ARGS((void)); + int did_request_esc_sequence __ARGS((void)); ++ void resume_get_esc_sequence __ARGS((void)); + void may_req_termresponse __ARGS((void)); + void may_req_ambiguous_char_width __ARGS((void)); + int swapping_screen __ARGS((void)); +*** ../vim-7.4.358/src/version.c 2014-07-09 17:51:46.075801693 +0200 +--- src/version.c 2014-07-09 18:50:55.515729552 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 359, + /**/ + +-- +An indication you must be a manager: +You give constructive feedback to your dog. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.360 b/SOURCES/7.4.360 new file mode 100644 index 0000000..9bd5212 --- /dev/null +++ b/SOURCES/7.4.360 @@ -0,0 +1,80 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.360 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.360 +Problem: In a regexp pattern a "$" followed by \v or \V is not seen as the + end-of-line. +Solution: Handle the situation. (Ozaki Kiichi) +Files: src/regexp.c + + +*** ../vim-7.4.359/src/regexp.c 2014-05-13 19:37:19.489786520 +0200 +--- src/regexp.c 2014-07-09 19:28:51.871683287 +0200 +*************** +*** 3109,3123 **** + if (reg_magic >= MAGIC_OFF) + { + char_u *p = regparse + 1; + +! /* ignore \c \C \m and \M after '$' */ + while (p[0] == '\\' && (p[1] == 'c' || p[1] == 'C' +! || p[1] == 'm' || p[1] == 'M' || p[1] == 'Z')) + p += 2; + if (p[0] == NUL + || (p[0] == '\\' + && (p[1] == '|' || p[1] == '&' || p[1] == ')' + || p[1] == 'n')) + || reg_magic == MAGIC_ALL) + curchr = Magic('$'); + } +--- 3109,3133 ---- + if (reg_magic >= MAGIC_OFF) + { + char_u *p = regparse + 1; ++ int is_magic_all = (reg_magic == MAGIC_ALL); + +! /* ignore \c \C \m \M \v \V and \Z after '$' */ + while (p[0] == '\\' && (p[1] == 'c' || p[1] == 'C' +! || p[1] == 'm' || p[1] == 'M' +! || p[1] == 'v' || p[1] == 'V' || p[1] == 'Z')) +! { +! if (p[1] == 'v') +! is_magic_all = TRUE; +! else if (p[1] == 'm' || p[1] == 'M' || p[1] == 'V') +! is_magic_all = FALSE; + p += 2; ++ } + if (p[0] == NUL + || (p[0] == '\\' + && (p[1] == '|' || p[1] == '&' || p[1] == ')' + || p[1] == 'n')) ++ || (is_magic_all ++ && (p[0] == '|' || p[0] == '&' || p[0] == ')')) + || reg_magic == MAGIC_ALL) + curchr = Magic('$'); + } +*** ../vim-7.4.359/src/version.c 2014-07-09 19:13:45.007701718 +0200 +--- src/version.c 2014-07-09 19:18:36.599695792 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 360, + /**/ + +-- +An indication you must be a manager: +You believe you never have any problems in your life, just +"issues" and "improvement opportunities". + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.361 b/SOURCES/7.4.361 new file mode 100644 index 0000000..7629b12 --- /dev/null +++ b/SOURCES/7.4.361 @@ -0,0 +1,48 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.361 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.361 +Problem: Lots of flickering when filling the preview window for 'omnifunc'. +Solution: Disable redrawing. (Hirohito Higashi) +Files: src/popupmnu.c + + +*** ../vim-7.4.360/src/popupmnu.c 2013-11-06 04:04:29.000000000 +0100 +--- src/popupmnu.c 2014-07-09 19:56:25.663649674 +0200 +*************** +*** 567,573 **** +--- 567,575 ---- + g_do_tagpreview = 3; + if (p_pvh > 0 && p_pvh < g_do_tagpreview) + g_do_tagpreview = p_pvh; ++ ++RedrawingDisabled; + resized = prepare_tagpreview(FALSE); ++ --RedrawingDisabled; + g_do_tagpreview = 0; + + if (curwin->w_p_pvw) +*** ../vim-7.4.360/src/version.c 2014-07-09 19:32:30.939678834 +0200 +--- src/version.c 2014-07-09 19:55:48.995650419 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 361, + /**/ + +-- +Lose weight, NEVER Diet again with + The "Invisible Weight Loss Patch" + (spam e-mail) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.362 b/SOURCES/7.4.362 new file mode 100644 index 0000000..beeb6dd --- /dev/null +++ b/SOURCES/7.4.362 @@ -0,0 +1,53 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.362 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.362 +Problem: When matchaddpos() uses a length smaller than the number of bytes + in the (last) character the highlight continues until the end of + the line. +Solution: Change condition from equal to larger-or-equal. +Files: src/screen.c + + +*** ../vim-7.4.361/src/screen.c 2014-07-03 22:54:04.911859458 +0200 +--- src/screen.c 2014-07-09 20:14:46.611627298 +0200 +*************** +*** 3852,3858 **** + { + shl->attr_cur = shl->attr; + } +! else if (v == (long)shl->endcol) + { + shl->attr_cur = 0; + next_search_hl(wp, shl, lnum, (colnr_T)v, cur); +--- 3852,3858 ---- + { + shl->attr_cur = shl->attr; + } +! else if (v >= (long)shl->endcol) + { + shl->attr_cur = 0; + next_search_hl(wp, shl, lnum, (colnr_T)v, cur); +*** ../vim-7.4.361/src/version.c 2014-07-09 19:58:21.115647328 +0200 +--- src/version.c 2014-07-09 20:20:14.423620635 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 362, + /**/ + +-- +Compilation process failed successfully. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.363 b/SOURCES/7.4.363 new file mode 100644 index 0000000..d225cdb --- /dev/null +++ b/SOURCES/7.4.363 @@ -0,0 +1,160 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.363 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.363 +Problem: In Windows console typing 0xCE does not work. +Solution: Convert 0xCE to K_NUL 3. (Nobuhiro Takasaki et al.) +Files: src/os_win32.c, src/term.c + + +*** ../vim-7.4.362/src/os_win32.c 2014-04-01 21:00:45.436733663 +0200 +--- src/os_win32.c 2014-07-09 20:29:30.787609327 +0200 +*************** +*** 619,625 **** + return FALSE; + } + +! tokenPrivileges.PrivilegeCount = 1; + tokenPrivileges.Privileges[0].Luid = luid; + tokenPrivileges.Privileges[0].Attributes = bEnable ? + SE_PRIVILEGE_ENABLED : 0; +--- 619,625 ---- + return FALSE; + } + +! tokenPrivileges.PrivilegeCount = 1; + tokenPrivileges.Privileges[0].Luid = luid; + tokenPrivileges.Privileges[0].Attributes = bEnable ? + SE_PRIVILEGE_ENABLED : 0; +*************** +*** 1785,1797 **** + #endif + { + int n = 1; + +- /* A key may have one or two bytes. */ + typeahead[typeaheadlen] = c; + if (ch2 != NUL) + { +! typeahead[typeaheadlen + 1] = ch2; +! ++n; + } + #ifdef FEAT_MBYTE + /* Only convert normal characters, not special keys. Need to +--- 1785,1798 ---- + #endif + { + int n = 1; ++ int conv = FALSE; + + typeahead[typeaheadlen] = c; + if (ch2 != NUL) + { +! typeahead[typeaheadlen + 1] = 3; +! typeahead[typeaheadlen + 2] = ch2; +! n += 2; + } + #ifdef FEAT_MBYTE + /* Only convert normal characters, not special keys. Need to +*************** +*** 1800,1805 **** +--- 1801,1807 ---- + if (input_conv.vc_type != CONV_NONE + && (ch2 == NUL || c != K_NUL)) + { ++ conv = TRUE; + typeaheadlen -= unconverted; + n = convert_input_safe(typeahead + typeaheadlen, + n + unconverted, TYPEAHEADLEN - typeaheadlen, +*************** +*** 1807,1812 **** +--- 1809,1832 ---- + } + #endif + ++ if (conv) ++ { ++ char_u *p = typeahead + typeaheadlen; ++ char_u *e = typeahead + TYPEAHEADLEN; ++ ++ while (*p && p < e) ++ { ++ if (*p == K_NUL) ++ { ++ ++p; ++ mch_memmove(p + 1, p, ((size_t)(e - p)) - 1); ++ *p = 3; ++ ++n; ++ } ++ ++p; ++ } ++ } ++ + /* Use the ALT key to set the 8th bit of the character + * when it's one byte, the 8th bit isn't set yet and not + * using a double-byte encoding (would become a lead +*** ../vim-7.4.362/src/term.c 2014-07-09 19:13:45.003701718 +0200 +--- src/term.c 2014-07-09 20:26:28.655613029 +0200 +*************** +*** 3724,3730 **** +--- 3724,3734 ---- + return; + } + ++ #if defined(WIN3264) && !defined(FEAT_GUI) ++ s = vim_strnsave(string, (int)STRLEN(string) + 1); ++ #else + s = vim_strsave(string); ++ #endif + if (s == NULL) + return; + +*************** +*** 3734,3739 **** +--- 3738,3752 ---- + STRMOVE(s, s + 1); + s[0] = term_7to8bit(string); + } ++ ++ #if defined(WIN3264) && !defined(FEAT_GUI) ++ if (s[0] == K_NUL) ++ { ++ STRMOVE(s + 1, s); ++ s[1] = 3; ++ } ++ #endif ++ + len = (int)STRLEN(s); + + need_gather = TRUE; /* need to fill termleader[] */ +*** ../vim-7.4.362/src/version.c 2014-07-09 20:20:40.359620108 +0200 +--- src/version.c 2014-07-09 20:26:38.903612821 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 363, + /**/ + +-- +BROTHER MAYNARD: Armaments Chapter Two Verses Nine to Twenty One. +ANOTHER MONK: And St. Attila raised his hand grenade up on high saying "O + Lord bless this thy hand grenade that with it thou mayest + blow thine enemies to tiny bits, in thy mercy. "and the Lord + did grin and people did feast upon the lambs and sloths and + carp and anchovies and orang-utans and breakfast cereals and + fruit bats and... +BROTHER MAYNARD: Skip a bit brother ... + "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.364 b/SOURCES/7.4.364 new file mode 100644 index 0000000..493056c --- /dev/null +++ b/SOURCES/7.4.364 @@ -0,0 +1,70 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.364 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.364 +Problem: When the viminfo file can't be renamed there is no error message. + (Vladimir Berezhnoy) +Solution: Check for the rename to fail. +Files: src/ex_cmds.c + + +*** ../vim-7.4.363/src/ex_cmds.c 2014-05-22 14:00:12.694534712 +0200 +--- src/ex_cmds.c 2014-07-09 21:11:44.531557830 +0200 +*************** +*** 2004,2014 **** + { + fclose(fp_in); + +! /* +! * In case of an error keep the original viminfo file. +! * Otherwise rename the newly written file. +! */ +! if (viminfo_errcnt || vim_rename(tempname, fname) == -1) + mch_remove(tempname); + + #ifdef WIN3264 +--- 2004,2017 ---- + { + fclose(fp_in); + +! /* In case of an error keep the original viminfo file. Otherwise +! * rename the newly written file. Give an error if that fails. */ +! if (viminfo_errcnt == 0 && vim_rename(tempname, fname) == -1) +! { +! ++viminfo_errcnt; +! EMSG2(_("E886: Can't rename viminfo file to %s!"), fname); +! } +! if (viminfo_errcnt > 0) + mch_remove(tempname); + + #ifdef WIN3264 +*** ../vim-7.4.363/src/version.c 2014-07-09 20:51:04.519583033 +0200 +--- src/version.c 2014-07-09 21:13:18.575555919 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 364, + /**/ + +-- +MONK: ... and the Lord spake, saying, "First shalt thou take out the Holy Pin, + then shalt thou count to three, no more, no less. Three shalt be the + number thou shalt count, and the number of the counting shalt be three. + Four shalt thou not count, neither count thou two, excepting that thou + then proceed to three. Five is right out. Once the number three, being + the third number, be reached, then lobbest thou thy Holy Hand Grenade of + Antioch towards thou foe, who being naughty in my sight, shall snuff it. + "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.365 b/SOURCES/7.4.365 new file mode 100644 index 0000000..196e66e --- /dev/null +++ b/SOURCES/7.4.365 @@ -0,0 +1,159 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.365 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.365 +Problem: Crash when using ":botright split" when there isn't much space. +Solution: Add a check for the minimum width/height. (Yukihiro Nakadaira) +Files: src/window.c + + +*** ../vim-7.4.364/src/window.c 2014-07-02 17:16:51.334225522 +0200 +--- src/window.c 2014-07-16 14:14:37.751774230 +0200 +*************** +*** 686,691 **** +--- 686,693 ---- + int layout; + frame_T *frp, *curfrp; + int before; ++ int minwidth; ++ int minheight; + + if (flags & WSP_TOP) + oldwin = firstwin; +*************** +*** 725,735 **** + needed += p_wiw - p_wmw; + if (p_ea || (flags & (WSP_BOT | WSP_TOP))) + { + available = topframe->fr_width; +! needed += frame_minwidth(topframe, NULL); + } + else + available = oldwin->w_width; + if (available < needed && new_wp == NULL) + { + EMSG(_(e_noroom)); +--- 727,741 ---- + needed += p_wiw - p_wmw; + if (p_ea || (flags & (WSP_BOT | WSP_TOP))) + { ++ minwidth = frame_minwidth(topframe, NULL); + available = topframe->fr_width; +! needed += minwidth; + } + else ++ { ++ minwidth = frame_minwidth(oldwin->w_frame, NULL); + available = oldwin->w_width; ++ } + if (available < needed && new_wp == NULL) + { + EMSG(_(e_noroom)); +*************** +*** 739,744 **** +--- 745,752 ---- + new_size = oldwin->w_width / 2; + if (new_size > oldwin->w_width - p_wmw - 1) + new_size = oldwin->w_width - p_wmw - 1; ++ if (new_size > available - minwidth - 1) ++ new_size = available - minwidth - 1; + if (new_size < p_wmw) + new_size = p_wmw; + +*************** +*** 786,796 **** + needed += p_wh - p_wmh; + if (p_ea || (flags & (WSP_BOT | WSP_TOP))) + { + available = topframe->fr_height; +! needed += frame_minheight(topframe, NULL); + } + else + { + available = oldwin->w_height; + needed += p_wmh; + } +--- 794,806 ---- + needed += p_wh - p_wmh; + if (p_ea || (flags & (WSP_BOT | WSP_TOP))) + { ++ minheight = frame_minheight(topframe, NULL); + available = topframe->fr_height; +! needed += minheight; + } + else + { ++ minheight = frame_minheight(oldwin->w_frame, NULL); + available = oldwin->w_height; + needed += p_wmh; + } +*************** +*** 810,815 **** +--- 820,827 ---- + + if (new_size > oldwin_height - p_wmh - STATUS_HEIGHT) + new_size = oldwin_height - p_wmh - STATUS_HEIGHT; ++ if (new_size > available - minheight - STATUS_HEIGHT) ++ new_size = available - minheight - STATUS_HEIGHT; + if (new_size < p_wmh) + new_size = p_wmh; + +*************** +*** 5732,5738 **** + --wp->w_wrow; + } + } +! set_topline(wp, lnum); + } + else if (sline > 0) + { +--- 5744,5750 ---- + --wp->w_wrow; + } + } +! set_topline(wp, lnum); + } + else if (sline > 0) + { +*************** +*** 5778,5784 **** + wp->w_wrow -= sline; + } + +! set_topline(wp, lnum); + } + } + +--- 5790,5796 ---- + wp->w_wrow -= sline; + } + +! set_topline(wp, lnum); + } + } + +*** ../vim-7.4.364/src/version.c 2014-07-09 21:17:59.755550204 +0200 +--- src/version.c 2014-07-16 14:10:41.191779038 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 365, + /**/ + +-- +"Software is like sex... it's better when it's free." + -- Linus Torvalds, initiator of the free Linux OS +Makes me wonder what FSF stands for...? + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.366 b/SOURCES/7.4.366 new file mode 100644 index 0000000..76097be --- /dev/null +++ b/SOURCES/7.4.366 @@ -0,0 +1,53 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.366 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.366 +Problem: Can't run the linebreak test on MS-Windows. +Solution: Fix the output file name. (Taro Muraoka) +Files: src/testdir/Make_dos.mak + + +*** ../vim-7.4.365/src/testdir/Make_dos.mak 2014-07-02 19:59:35.454375136 +0200 +--- src/testdir/Make_dos.mak 2014-07-16 14:19:39.719768093 +0200 +*************** +*** 37,43 **** + test105.out test106.out test107.out\ + test_autoformat_join.out \ + test_breakindent.out \ +! test_listlbr \ + test_eval.out \ + test_options.out + +--- 37,43 ---- + test105.out test106.out test107.out\ + test_autoformat_join.out \ + test_breakindent.out \ +! test_listlbr.out \ + test_eval.out \ + test_options.out + +*** ../vim-7.4.365/src/version.c 2014-07-16 14:16:41.519771715 +0200 +--- src/version.c 2014-07-16 14:18:43.307769239 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 366, + /**/ + +-- +<Beeth> Girls are like internet domain names, + the ones I like are already taken. +<honx> Well, you can stil get one from a strange country :-P + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.367 b/SOURCES/7.4.367 new file mode 100644 index 0000000..c184192 --- /dev/null +++ b/SOURCES/7.4.367 @@ -0,0 +1,67 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.367 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.367 (after 7.4.357) +Problem: Other solution for redrawing after completion. +Solution: Schedule a window redraw instead of just clearing the command + line. (Jacob Niehus) +Files: src/edit.c + + +*** ../vim-7.4.366/src/edit.c 2014-07-09 14:00:45.175044250 +0200 +--- src/edit.c 2014-07-16 14:36:00.679748155 +0200 +*************** +*** 3854,3860 **** + ins_compl_free(); + compl_started = FALSE; + compl_matches = 0; +! msg_clr_cmdline(); /* necessary for "noshowmode" */ + ctrl_x_mode = 0; + compl_enter_selects = FALSE; + if (edit_submode != NULL) +--- 3854,3861 ---- + ins_compl_free(); + compl_started = FALSE; + compl_matches = 0; +! if (!shortmess(SHM_COMPLETIONMENU)) +! msg_clr_cmdline(); /* necessary for "noshowmode" */ + ctrl_x_mode = 0; + compl_enter_selects = FALSE; + if (edit_submode != NULL) +*************** +*** 4591,4597 **** +--- 4592,4601 ---- + */ + i = compl_col + (compl_cont_status & CONT_ADDING ? compl_length : 0); + backspace_until_column(i); ++ ++ /* Not sure what is still valid, better redraw everything. */ + changed_cline_bef_curs(); ++ redraw_curbuf_later(NOT_VALID); + } + + /* Insert the new text being completed. */ +*** ../vim-7.4.366/src/version.c 2014-07-16 14:20:38.255766903 +0200 +--- src/version.c 2014-07-16 14:42:23.059740384 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 367, + /**/ + +-- +No children may attend school with their breath smelling of "wild onions." + [real standing law in West Virginia, United States of America] + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.368 b/SOURCES/7.4.368 new file mode 100644 index 0000000..0dd85e3 --- /dev/null +++ b/SOURCES/7.4.368 @@ -0,0 +1,79 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.368 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.368 +Problem: Restoring the window sizes after closing the command line window + doesn't work properly if there are nested splits. +Solution: Restore the sizes twice. (Hirohito Higashi) +Files: src/window.c + + +*** ../vim-7.4.367/src/window.c 2014-07-16 14:16:41.519771715 +0200 +--- src/window.c 2014-07-16 15:13:52.895701974 +0200 +*************** +*** 4848,4862 **** + garray_T *gap; + { + win_T *wp; +! int i; + + if (win_count() * 2 == gap->ga_len) + { +! i = 0; +! for (wp = firstwin; wp != NULL; wp = wp->w_next) + { +! frame_setwidth(wp->w_frame, ((int *)gap->ga_data)[i++]); +! win_setheight_win(((int *)gap->ga_data)[i++], wp); + } + /* recompute the window positions */ + (void)win_comp_pos(); +--- 4848,4867 ---- + garray_T *gap; + { + win_T *wp; +! int i, j; + + if (win_count() * 2 == gap->ga_len) + { +! /* The order matters, because frames contain other frames, but it's +! * difficult to get right. The easy way out is to do it twice. */ +! for (j = 0; j < 2; ++j) + { +! i = 0; +! for (wp = firstwin; wp != NULL; wp = wp->w_next) +! { +! frame_setwidth(wp->w_frame, ((int *)gap->ga_data)[i++]); +! win_setheight_win(((int *)gap->ga_data)[i++], wp); +! } + } + /* recompute the window positions */ + (void)win_comp_pos(); +*** ../vim-7.4.367/src/version.c 2014-07-16 14:42:37.923740082 +0200 +--- src/version.c 2014-07-16 15:14:46.035700894 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 368, + /**/ + +-- +FROG: How you English say: I one more time, mac, I unclog my nose towards + you, sons of a window-dresser, so, you think you could out-clever us + French fellows with your silly knees-bent creeping about advancing + behaviour. (blows a raspberry) I wave my private parts at your aunties, + you brightly-coloured, mealy-templed, cranberry-smelling, electric + donkey-bottom biters. + "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.369 b/SOURCES/7.4.369 new file mode 100644 index 0000000..c501c64 --- /dev/null +++ b/SOURCES/7.4.369 @@ -0,0 +1,70 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.369 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.369 +Problem: Using freed memory when exiting while compiled with EXITFREE. +Solution: Set curwin to NULL and check for that. (Dominique Pelle) +Files: src/buffer.c, src/window.c + + +*** ../vim-7.4.368/src/buffer.c 2014-06-12 14:01:27.571769788 +0200 +--- src/buffer.c 2014-07-16 16:20:04.443621254 +0200 +*************** +*** 5702,5709 **** + signlist_T *next; + + /* When deleting the last sign need to redraw the windows to remove the +! * sign column. */ +! if (buf->b_signlist != NULL) + { + redraw_buf_later(buf, NOT_VALID); + changed_cline_bef_curs(); +--- 5702,5709 ---- + signlist_T *next; + + /* When deleting the last sign need to redraw the windows to remove the +! * sign column. Not when curwin is NULL (this means we're exiting). */ +! if (buf->b_signlist != NULL && curwin != NULL) + { + redraw_buf_later(buf, NOT_VALID); + changed_cline_bef_curs(); +*** ../vim-7.4.368/src/window.c 2014-07-16 15:18:22.903696486 +0200 +--- src/window.c 2014-07-16 16:15:41.063626607 +0200 +*************** +*** 2489,2494 **** +--- 2489,2498 ---- + + while (firstwin != NULL) + (void)win_free_mem(firstwin, &dummy, NULL); ++ ++ /* No window should be used after this. Set curwin to NULL to crash ++ * instead of using freed memory. */ ++ curwin = NULL; + } + #endif + +*** ../vim-7.4.368/src/version.c 2014-07-16 15:18:22.907696486 +0200 +--- src/version.c 2014-07-16 16:18:36.827623035 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 369, + /**/ + +-- +ARTHUR: If you do not open these doors, we will take this castle by force ... + [A bucket of slops land on ARTHUR. He tries to retain his dignity.] + "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.370 b/SOURCES/7.4.370 new file mode 100644 index 0000000..5da13f4 --- /dev/null +++ b/SOURCES/7.4.370 @@ -0,0 +1,316 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.370 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.370 +Problem: Linebreak test fails when encoding is not utf-8. (Danek Duvall) +Solution: Split the test in a single byte one and a utf-8 one. (Christian + Brabandt) +Files: src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, + src/testdir/Make_ming.mak, src/testdir/Make_os2.mak, + src/testdir/Make_vms.mms, src/testdir/Makefile, + src/testdir/test_listlbr.in, src/testdir/test_listlbr.ok, + src/testdir/test_listlbr_utf8.in, src/testdir/test_listlbr_utf8.ok + + +*** ../vim-7.4.369/src/testdir/Make_amiga.mak 2014-07-02 19:59:35.454375136 +0200 +--- src/testdir/Make_amiga.mak 2014-07-16 16:55:15.311578352 +0200 +*************** +*** 39,44 **** +--- 39,45 ---- + test_autoformat_join.out \ + test_breakindent.out \ + test_listlbr.out \ ++ test_listlbr_utf8.out \ + test_eval.out \ + test_options.out + +*************** +*** 167,171 **** +--- 168,173 ---- + test_autoformat_join.out: test_autoformat_join.in + test_breakindent.out: test_breakindent.in + test_listlbr.out: test_listlbr.in ++ test_listlbr_utf8.out: test_listlbr_utf8.in + test_eval.out: test_eval.in + test_options.out: test_options.in +*** ../vim-7.4.369/src/testdir/Make_dos.mak 2014-07-16 14:20:38.255766903 +0200 +--- src/testdir/Make_dos.mak 2014-07-16 16:56:02.423577394 +0200 +*************** +*** 38,43 **** +--- 38,44 ---- + test_autoformat_join.out \ + test_breakindent.out \ + test_listlbr.out \ ++ test_listlbr_utf8.out \ + test_eval.out \ + test_options.out + +*** ../vim-7.4.369/src/testdir/Make_ming.mak 2014-07-02 19:59:35.454375136 +0200 +--- src/testdir/Make_ming.mak 2014-07-16 16:55:15.311578352 +0200 +*************** +*** 58,63 **** +--- 58,64 ---- + test_autoformat_join.out \ + test_breakindent.out \ + test_listlbr.out \ ++ test_listlbr_utf8.out \ + test_eval.out \ + test_options.out + +*** ../vim-7.4.369/src/testdir/Make_os2.mak 2014-07-02 19:59:35.454375136 +0200 +--- src/testdir/Make_os2.mak 2014-07-16 16:55:15.311578352 +0200 +*************** +*** 40,45 **** +--- 40,46 ---- + test_autoformat_join.out \ + test_eval.out \ + test_breakindent.out \ ++ test_listlbr_utf8.out \ + test_listlbr.out \ + test_options.out + +*** ../vim-7.4.369/src/testdir/Make_vms.mms 2014-07-02 19:59:35.454375136 +0200 +--- src/testdir/Make_vms.mms 2014-07-16 16:55:15.311578352 +0200 +*************** +*** 99,104 **** +--- 99,105 ---- + test_autoformat_join.out \ + test_breakindent.out \ + test_listlbr.out \ ++ test_listlbr_utf8.out \ + test_eval.out \ + test_options.out + +*** ../vim-7.4.369/src/testdir/Makefile 2014-07-02 19:59:35.454375136 +0200 +--- src/testdir/Makefile 2014-07-16 16:55:15.311578352 +0200 +*************** +*** 36,41 **** +--- 36,42 ---- + test_autoformat_join.out \ + test_breakindent.out \ + test_listlbr.out \ ++ test_listlbr_utf8.out \ + test_eval.out \ + test_options.out + +*** ../vim-7.4.369/src/testdir/test_listlbr.in 2014-07-02 19:59:35.454375136 +0200 +--- src/testdir/test_listlbr.in 2014-07-16 16:55:15.311578352 +0200 +*************** +*** 1,10 **** +! Test for linebreak and list option + + STARTTEST + :so small.vim + :if !exists("+linebreak") | e! test.ok | w! test.out | qa! | endif + :10new|:vsp|:vert resize 20 +! :put =\"\tabcdef hijklmn\tpqrstuvwxyz\u00a01060ABCDEFGHIJKLMNOP \" + :norm! zt + :set ts=4 sw=4 sts=4 linebreak sbr=+ wrap + :fu! ScreenChar(width) +--- 1,10 ---- +! Test for linebreak and list option (non-utf8) + + STARTTEST + :so small.vim + :if !exists("+linebreak") | e! test.ok | w! test.out | qa! | endif + :10new|:vsp|:vert resize 20 +! :put =\"\tabcdef hijklmn\tpqrstuvwxyz_1060ABCDEFGHIJKLMNOP \" + :norm! zt + :set ts=4 sw=4 sts=4 linebreak sbr=+ wrap + :fu! ScreenChar(width) +*************** +*** 32,53 **** + :redraw! + :let line=ScreenChar(winwidth(0)) + :call DoRecordScreen() +! :let g:test ="Test 3: set linebreak + set list + fancy listchars" +! :exe "set linebreak list listchars=nbsp:\u2423,tab:\u2595\u2014,trail:\u02d1,eol:\ub6" +! :redraw! +! :let line=ScreenChar(winwidth(0)) +! :call DoRecordScreen() +! :let g:test ="Test 4: set linebreak nolist" + :set nolist linebreak + :redraw! + :let line=ScreenChar(winwidth(0)) + :call DoRecordScreen() +! :let g:test ="Test 5: set nolinebreak list" +! :set list nolinebreak +! :redraw! +! :let line=ScreenChar(winwidth(0)) +! :call DoRecordScreen() +! :let g:test ="Test 6: set linebreak with tab and 1 line as long as screen: should break!" + :set nolist linebreak ts=8 + :let line="1\t".repeat('a', winwidth(0)-2) + :$put =line +--- 32,43 ---- + :redraw! + :let line=ScreenChar(winwidth(0)) + :call DoRecordScreen() +! :let g:test ="Test 3: set linebreak nolist" + :set nolist linebreak + :redraw! + :let line=ScreenChar(winwidth(0)) + :call DoRecordScreen() +! :let g:test ="Test 4: set linebreak with tab and 1 line as long as screen: should break!" + :set nolist linebreak ts=8 + :let line="1\t".repeat('a', winwidth(0)-2) + :$put =line +*** ../vim-7.4.369/src/testdir/test_listlbr.ok 2014-07-02 19:59:35.454375136 +0200 +--- src/testdir/test_listlbr.ok 2014-07-16 16:55:15.315578352 +0200 +*************** +*** 1,38 **** + +! abcdef hijklmn pqrstuvwxyz 1060ABCDEFGHIJKLMNOP + + Test 1: set linebreak + abcdef + +hijklmn +! +pqrstuvwxyz 1060ABC + +DEFGHIJKLMNOP + + Test 2: set linebreak + set list + ^Iabcdef hijklmn^I +! +pqrstuvwxyz 1060ABC + +DEFGHIJKLMNOP + + +! Test 3: set linebreak + set list + fancy listchars +! ▕———abcdef +! +hijklmn▕——— +! +pqrstuvwxyz␣1060ABC +! +DEFGHIJKLMNOPˑ¶ +! +! Test 4: set linebreak nolist + abcdef + +hijklmn +! +pqrstuvwxyz 1060ABC + +DEFGHIJKLMNOP +- +- Test 5: set nolinebreak list +- ▕———abcdef hijklmn▕— +- +pqrstuvwxyz␣1060ABC +- +DEFGHIJKLMNOPˑ¶ +- ¶ + 1 aaaaaaaaaaaaaaaaaa + +! Test 6: set linebreak with tab and 1 line as long as screen: should break! + 1 + +aaaaaaaaaaaaaaaaaa + ~ +--- 1,26 ---- + +! abcdef hijklmn pqrstuvwxyz_1060ABCDEFGHIJKLMNOP + + Test 1: set linebreak + abcdef + +hijklmn +! +pqrstuvwxyz_1060ABC + +DEFGHIJKLMNOP + + Test 2: set linebreak + set list + ^Iabcdef hijklmn^I +! +pqrstuvwxyz_1060ABC + +DEFGHIJKLMNOP + + +! Test 3: set linebreak nolist + abcdef + +hijklmn +! +pqrstuvwxyz_1060ABC + +DEFGHIJKLMNOP + 1 aaaaaaaaaaaaaaaaaa + +! Test 4: set linebreak with tab and 1 line as long as screen: should break! + 1 + +aaaaaaaaaaaaaaaaaa + ~ +*** ../vim-7.4.369/src/testdir/test_listlbr_utf8.in 2014-07-16 17:01:25.415570829 +0200 +--- src/testdir/test_listlbr_utf8.in 2014-07-16 16:55:15.315578352 +0200 +*************** +*** 0 **** +--- 1,41 ---- ++ Test for linebreak and list option in utf-8 mode ++ ++ STARTTEST ++ :so small.vim ++ :if !exists("+linebreak") | e! test.ok | w! test.out | qa! | endif ++ :so mbyte.vim ++ :if &enc !=? 'utf-8'|:e! test.ok|:w! test.out|qa!|endif ++ :10new|:vsp|:vert resize 20 ++ :put =\"\tabcdef hijklmn\tpqrstuvwxyz\u00a01060ABCDEFGHIJKLMNOP \" ++ :norm! zt ++ :set ts=4 sw=4 sts=4 linebreak sbr=+ wrap ++ :fu! ScreenChar(width) ++ : let c='' ++ : for j in range(1,4) ++ : for i in range(1,a:width) ++ : let c.=nr2char(screenchar(j, i)) ++ : endfor ++ : let c.="\n" ++ : endfor ++ : return c ++ :endfu ++ :fu! DoRecordScreen() ++ : wincmd l ++ : $put =printf(\"\n%s\", g:test) ++ : $put =g:line ++ : wincmd p ++ :endfu ++ :let g:test ="Test 1: set linebreak + set list + fancy listchars" ++ :exe "set linebreak list listchars=nbsp:\u2423,tab:\u2595\u2014,trail:\u02d1,eol:\ub6" ++ :redraw! ++ :let line=ScreenChar(winwidth(0)) ++ :call DoRecordScreen() ++ :let g:test ="Test 2: set nolinebreak list" ++ :set list nolinebreak ++ :redraw! ++ :let line=ScreenChar(winwidth(0)) ++ :call DoRecordScreen() ++ :%w! test.out ++ :qa! ++ ENDTEST ++ dummy text +*** ../vim-7.4.369/src/testdir/test_listlbr_utf8.ok 2014-07-16 17:01:25.419570829 +0200 +--- src/testdir/test_listlbr_utf8.ok 2014-07-16 16:55:15.315578352 +0200 +*************** +*** 0 **** +--- 1,14 ---- ++ ++ abcdef hijklmn pqrstuvwxyz 1060ABCDEFGHIJKLMNOP ++ ++ Test 1: set linebreak + set list + fancy listchars ++ ▕———abcdef ++ +hijklmn▕——— ++ +pqrstuvwxyz␣1060ABC ++ +DEFGHIJKLMNOPˑ¶ ++ ++ Test 2: set nolinebreak list ++ ▕———abcdef hijklmn▕— ++ +pqrstuvwxyz␣1060ABC ++ +DEFGHIJKLMNOPˑ¶ ++ ¶ +*** ../vim-7.4.369/src/version.c 2014-07-16 16:30:21.647608710 +0200 +--- src/version.c 2014-07-16 16:56:38.755576656 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 370, + /**/ + +-- + Another bucket of what can only be described as human ordure hits ARTHUR. +ARTHUR: ... Right! (to the KNIGHTS) That settles it! + "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.371 b/SOURCES/7.4.371 new file mode 100644 index 0000000..f915a8f --- /dev/null +++ b/SOURCES/7.4.371 @@ -0,0 +1,59 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.371 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.371 +Problem: When 'linebreak' is set control characters are not correctly + displayed. (Kimmy Lindvall) +Solution: Set n_extra. (Christian Brabandt) +Files: src/screen.c + + +*** ../vim-7.4.370/src/screen.c 2014-07-09 20:20:40.359620108 +0200 +--- src/screen.c 2014-07-16 17:12:38.599557147 +0200 +*************** +*** 4646,4651 **** +--- 4646,4653 ---- + else if (c != NUL) + { + p_extra = transchar(c); ++ if (n_extra == 0) ++ n_extra = byte2cells(c) - 1; + #ifdef FEAT_RIGHTLEFT + if ((dy_flags & DY_UHEX) && wp->w_p_rl) + rl_mirror(p_extra); /* reverse "<12>" */ +*** ../vim-7.4.370/src/version.c 2014-07-16 17:01:38.279570568 +0200 +--- src/version.c 2014-07-16 17:13:21.815556269 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 371, + /**/ + +-- +LETTERS TO THE EDITOR (The Times of London) + +Dear Sir, + +I am firmly opposed to the spread of microchips either to the home or +to the office. We have more than enough of them foisted upon us in +public places. They are a disgusting Americanism, and can only result +in the farmers being forced to grow smaller potatoes, which in turn +will cause massive unemployment in the already severely depressed +agricultural industry. + +Yours faithfully, + Capt. Quinton D'Arcy, J. P. + Sevenoaks + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.372 b/SOURCES/7.4.372 new file mode 100644 index 0000000..11d0254 --- /dev/null +++ b/SOURCES/7.4.372 @@ -0,0 +1,188 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.372 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.372 +Problem: When 'winminheight' is zero there might not be one line for the + current window. +Solution: Change the size computations. (Yukihiro Nakadaira) +Files: src/window.c + + +*** ../vim-7.4.371/src/window.c 2014-07-16 16:30:21.647608710 +0200 +--- src/window.c 2014-07-16 18:06:53.123491001 +0200 +*************** +*** 688,693 **** +--- 688,695 ---- + int before; + int minwidth; + int minheight; ++ int wmw1; ++ int wmh1; + + if (flags & WSP_TOP) + oldwin = firstwin; +*************** +*** 722,740 **** + * Check if we are able to split the current window and compute its + * width. + */ +! needed = p_wmw + 1; + if (flags & WSP_ROOM) +! needed += p_wiw - p_wmw; + if (p_ea || (flags & (WSP_BOT | WSP_TOP))) + { +! minwidth = frame_minwidth(topframe, NULL); + available = topframe->fr_width; + needed += minwidth; + } + else + { +! minwidth = frame_minwidth(oldwin->w_frame, NULL); +! available = oldwin->w_width; + } + if (available < needed && new_wp == NULL) + { +--- 724,745 ---- + * Check if we are able to split the current window and compute its + * width. + */ +! /* Current window requires at least 1 space. */ +! wmw1 = (p_wmw == 0 ? 1 : p_wmw); +! needed = wmw1 + 1; + if (flags & WSP_ROOM) +! needed += p_wiw - wmw1; + if (p_ea || (flags & (WSP_BOT | WSP_TOP))) + { +! minwidth = frame_minwidth(topframe, NOWIN); + available = topframe->fr_width; + needed += minwidth; + } + else + { +! minwidth = frame_minwidth(oldwin->w_frame, NOWIN); +! available = oldwin->w_frame->fr_width; +! needed += minwidth; + } + if (available < needed && new_wp == NULL) + { +*************** +*** 743,754 **** + } + if (new_size == 0) + new_size = oldwin->w_width / 2; +- if (new_size > oldwin->w_width - p_wmw - 1) +- new_size = oldwin->w_width - p_wmw - 1; + if (new_size > available - minwidth - 1) + new_size = available - minwidth - 1; +! if (new_size < p_wmw) +! new_size = p_wmw; + + /* if it doesn't fit in the current window, need win_equal() */ + if (oldwin->w_width - new_size - 1 < p_wmw) +--- 748,757 ---- + } + if (new_size == 0) + new_size = oldwin->w_width / 2; + if (new_size > available - minwidth - 1) + new_size = available - minwidth - 1; +! if (new_size < wmw1) +! new_size = wmw1; + + /* if it doesn't fit in the current window, need win_equal() */ + if (oldwin->w_width - new_size - 1 < p_wmw) +*************** +*** 789,808 **** + * Check if we are able to split the current window and compute its + * height. + */ +! needed = p_wmh + STATUS_HEIGHT + need_status; + if (flags & WSP_ROOM) +! needed += p_wh - p_wmh; + if (p_ea || (flags & (WSP_BOT | WSP_TOP))) + { +! minheight = frame_minheight(topframe, NULL); + available = topframe->fr_height; + needed += minheight; + } + else + { +! minheight = frame_minheight(oldwin->w_frame, NULL); +! available = oldwin->w_height; +! needed += p_wmh; + } + if (available < needed && new_wp == NULL) + { +--- 792,813 ---- + * Check if we are able to split the current window and compute its + * height. + */ +! /* Current window requires at least 1 space. */ +! wmh1 = (p_wmh == 0 ? 1 : p_wmh); +! needed = wmh1 + STATUS_HEIGHT; + if (flags & WSP_ROOM) +! needed += p_wh - wmh1; + if (p_ea || (flags & (WSP_BOT | WSP_TOP))) + { +! minheight = frame_minheight(topframe, NOWIN) + need_status; + available = topframe->fr_height; + needed += minheight; + } + else + { +! minheight = frame_minheight(oldwin->w_frame, NOWIN) + need_status; +! available = oldwin->w_frame->fr_height; +! needed += minheight; + } + if (available < needed && new_wp == NULL) + { +*************** +*** 817,829 **** + } + if (new_size == 0) + new_size = oldwin_height / 2; +- +- if (new_size > oldwin_height - p_wmh - STATUS_HEIGHT) +- new_size = oldwin_height - p_wmh - STATUS_HEIGHT; + if (new_size > available - minheight - STATUS_HEIGHT) + new_size = available - minheight - STATUS_HEIGHT; +! if (new_size < p_wmh) +! new_size = p_wmh; + + /* if it doesn't fit in the current window, need win_equal() */ + if (oldwin_height - new_size - STATUS_HEIGHT < p_wmh) +--- 822,831 ---- + } + if (new_size == 0) + new_size = oldwin_height / 2; + if (new_size > available - minheight - STATUS_HEIGHT) + new_size = available - minheight - STATUS_HEIGHT; +! if (new_size < wmh1) +! new_size = wmh1; + + /* if it doesn't fit in the current window, need win_equal() */ + if (oldwin_height - new_size - STATUS_HEIGHT < p_wmh) +*** ../vim-7.4.371/src/version.c 2014-07-16 17:29:46.691536252 +0200 +--- src/version.c 2014-07-16 17:34:14.795530803 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 372, + /**/ + +-- + [The rest of the ARMY stand around looking at a loss.] +INSPECTOR END OF FILM: (picks up megaphone) All right! Clear off! Go on! + "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.373 b/SOURCES/7.4.373 new file mode 100644 index 0000000..0d2841d --- /dev/null +++ b/SOURCES/7.4.373 @@ -0,0 +1,98 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.373 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.373 +Problem: Compiler warning for unused argument and unused variable. +Solution: Add UNUSED. Move variable inside #ifdef. +Files: src/charset.c, src/window.c + + +*** ../vim-7.4.372/src/charset.c 2014-07-02 19:59:35.450375136 +0200 +--- src/charset.c 2014-07-16 23:36:51.211088615 +0200 +*************** +*** 1024,1030 **** + */ + int + lbr_chartabsize(line, s, col) +! char_u *line; /* start of the line */ + unsigned char *s; + colnr_T col; + { +--- 1024,1030 ---- + */ + int + lbr_chartabsize(line, s, col) +! char_u *line UNUSED; /* start of the line */ + unsigned char *s; + colnr_T col; + { +*************** +*** 1069,1075 **** + int + win_lbr_chartabsize(wp, line, s, col, headp) + win_T *wp; +! char_u *line; /* start of the line */ + char_u *s; + colnr_T col; + int *headp UNUSED; +--- 1069,1075 ---- + int + win_lbr_chartabsize(wp, line, s, col, headp) + win_T *wp; +! char_u *line UNUSED; /* start of the line */ + char_u *s; + colnr_T col; + int *headp UNUSED; +*** ../vim-7.4.372/src/window.c 2014-07-16 18:19:22.911475762 +0200 +--- src/window.c 2014-07-16 23:38:31.567086575 +0200 +*************** +*** 686,694 **** + int layout; + frame_T *frp, *curfrp; + int before; +- int minwidth; + int minheight; +- int wmw1; + int wmh1; + + if (flags & WSP_TOP) +--- 686,692 ---- +*************** +*** 718,723 **** +--- 716,724 ---- + #ifdef FEAT_VERTSPLIT + if (flags & WSP_VERT) + { ++ int wmw1; ++ int minwidth; ++ + layout = FR_ROW; + + /* +*** ../vim-7.4.372/src/version.c 2014-07-16 18:19:22.915475762 +0200 +--- src/version.c 2014-07-16 23:36:20.775089233 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 373, + /**/ + +-- +INSPECTOR END OF FILM: Move along. There's nothing to see! Keep moving! + [Suddenly he notices the cameras.] +INSPECTOR END OF FILM: (to Camera) All right, put that away sonny. + [He walks over to it and puts his hand over the lens.] + "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.374 b/SOURCES/7.4.374 new file mode 100644 index 0000000..1657477 --- /dev/null +++ b/SOURCES/7.4.374 @@ -0,0 +1,71 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.374 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.374 +Problem: Character after "fb" command not mapped if it might be a composing + character. +Solution: Don't disable mapping when looking for a composing character. + (Jacob Niehus) +Files: src/normal.c + + +*** ../vim-7.4.373/src/normal.c 2014-04-29 12:15:22.856032651 +0200 +--- src/normal.c 2014-07-23 12:26:26.811992854 +0200 +*************** +*** 1076,1082 **** + #ifdef FEAT_MBYTE + /* When getting a text character and the next character is a + * multi-byte character, it could be a composing character. +! * However, don't wait for it to arrive. */ + while (enc_utf8 && lang && (c = vpeekc()) > 0 + && (c >= 0x100 || MB_BYTE2LEN(vpeekc()) > 1)) + { +--- 1076,1085 ---- + #ifdef FEAT_MBYTE + /* When getting a text character and the next character is a + * multi-byte character, it could be a composing character. +! * However, don't wait for it to arrive. Also, do enable mapping, +! * because if it's put back with vungetc() it's too late to apply +! * mapping. */ +! --no_mapping; + while (enc_utf8 && lang && (c = vpeekc()) > 0 + && (c >= 0x100 || MB_BYTE2LEN(vpeekc()) > 1)) + { +*************** +*** 1091,1096 **** +--- 1094,1100 ---- + else + ca.ncharC2 = c; + } ++ ++no_mapping; + #endif + } + --no_mapping; +*** ../vim-7.4.373/src/version.c 2014-07-16 23:39:50.251084976 +0200 +--- src/version.c 2014-07-23 12:27:50.483992253 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 374, + /**/ + +-- +CART DRIVER: Bring out your dead! + There are legs stick out of windows and doors. Two MEN are fighting in the + mud - covered from head to foot in it. Another MAN is on his hands in + knees shovelling mud into his mouth. We just catch sight of a MAN falling + into a well. + "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.375 b/SOURCES/7.4.375 new file mode 100644 index 0000000..5ccfecf --- /dev/null +++ b/SOURCES/7.4.375 @@ -0,0 +1,59 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.375 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.375 +Problem: Test 63 fails when run with GUI-only Vim. +Solution: Add guibg attributes. (suggested by Mike Soyka) +Files: src/testdir/test63.in + + +*** ../vim-7.4.374/src/testdir/test63.in 2014-06-17 17:48:21.784628008 +0200 +--- src/testdir/test63.in 2014-07-23 13:12:20.727973060 +0200 +*************** +*** 6,14 **** + :" --- Check that "matcharg()" returns the correct group and pattern if a match + :" --- is defined. + :let @r = "*** Test 1: " +! :highlight MyGroup1 ctermbg=red +! :highlight MyGroup2 ctermbg=green +! :highlight MyGroup3 ctermbg=blue + :match MyGroup1 /TODO/ + :2match MyGroup2 /FIXME/ + :3match MyGroup3 /XXX/ +--- 6,14 ---- + :" --- Check that "matcharg()" returns the correct group and pattern if a match + :" --- is defined. + :let @r = "*** Test 1: " +! :highlight MyGroup1 ctermbg=red guibg=red +! :highlight MyGroup2 ctermbg=green guibg=green +! :highlight MyGroup3 ctermbg=blue guibg=blue + :match MyGroup1 /TODO/ + :2match MyGroup2 /FIXME/ + :3match MyGroup3 /XXX/ +*** ../vim-7.4.374/src/version.c 2014-07-23 12:31:17.207990767 +0200 +--- src/version.c 2014-07-23 13:13:15.167972669 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 375, + /**/ + +-- +BODY: I'm not dead! +CART DRIVER: 'Ere. He says he's not dead. +LARGE MAN: Yes he is. +BODY: I'm not! + "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.376 b/SOURCES/7.4.376 new file mode 100644 index 0000000..93098cb --- /dev/null +++ b/SOURCES/7.4.376 @@ -0,0 +1,57 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.376 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.376 (after 7.4.367) +Problem: Popup menu flickers too much. +Solution: Remove the forced redraw. (Hirohito Higashi) +Files: src/edit.c + + +*** ../vim-7.4.375/src/edit.c 2014-07-16 14:42:37.923740082 +0200 +--- src/edit.c 2014-07-23 13:49:03.535957228 +0200 +*************** +*** 4593,4601 **** + i = compl_col + (compl_cont_status & CONT_ADDING ? compl_length : 0); + backspace_until_column(i); + +! /* Not sure what is still valid, better redraw everything. */ + changed_cline_bef_curs(); +- redraw_curbuf_later(NOT_VALID); + } + + /* Insert the new text being completed. */ +--- 4593,4601 ---- + i = compl_col + (compl_cont_status & CONT_ADDING ? compl_length : 0); + backspace_until_column(i); + +! /* TODO: is this sufficient for redrawing? Redrawing everything causes +! * flicker, thus we can't do that. */ + changed_cline_bef_curs(); + } + + /* Insert the new text being completed. */ +*** ../vim-7.4.375/src/version.c 2014-07-23 13:16:26.727971292 +0200 +--- src/version.c 2014-07-23 13:48:02.031957670 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 376, + /**/ + +-- +Why I like vim: +> I like VIM because, when I ask a question in this newsgroup, I get a +> one-line answer. With xemacs, I get a 1Kb lisp script with bugs in it ;-) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.377 b/SOURCES/7.4.377 new file mode 100644 index 0000000..e5d86bd --- /dev/null +++ b/SOURCES/7.4.377 @@ -0,0 +1,144 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.377 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.377 +Problem: When 'equalalways' is set a split may report "no room" even though + there is plenty of room. +Solution: Compute the available room properly. (Yukihiro Nakadaira) +Files: src/window.c + + +*** ../vim-7.4.376/src/window.c 2014-07-16 23:39:50.251084976 +0200 +--- src/window.c 2014-07-23 15:19:10.491918366 +0200 +*************** +*** 684,690 **** + int available; + int oldwin_height = 0; + int layout; +! frame_T *frp, *curfrp; + int before; + int minheight; + int wmh1; +--- 684,690 ---- + int available; + int oldwin_height = 0; + int layout; +! frame_T *frp, *curfrp, *frp2, *prevfrp; + int before; + int minheight; + int wmh1; +*************** +*** 730,741 **** + needed = wmw1 + 1; + if (flags & WSP_ROOM) + needed += p_wiw - wmw1; +! if (p_ea || (flags & (WSP_BOT | WSP_TOP))) + { + minwidth = frame_minwidth(topframe, NOWIN); + available = topframe->fr_width; + needed += minwidth; + } + else + { + minwidth = frame_minwidth(oldwin->w_frame, NOWIN); +--- 730,758 ---- + needed = wmw1 + 1; + if (flags & WSP_ROOM) + needed += p_wiw - wmw1; +! if (flags & (WSP_BOT | WSP_TOP)) + { + minwidth = frame_minwidth(topframe, NOWIN); + available = topframe->fr_width; + needed += minwidth; + } ++ else if (p_ea) ++ { ++ minwidth = frame_minwidth(oldwin->w_frame, NOWIN); ++ prevfrp = oldwin->w_frame; ++ for (frp = oldwin->w_frame->fr_parent; frp != NULL; ++ frp = frp->fr_parent) ++ { ++ if (frp->fr_layout == FR_ROW) ++ for (frp2 = frp->fr_child; frp2 != NULL; ++ frp2 = frp2->fr_next) ++ if (frp2 != prevfrp) ++ minwidth += frame_minwidth(frp2, NOWIN); ++ prevfrp = frp; ++ } ++ available = topframe->fr_width; ++ needed += minwidth; ++ } + else + { + minwidth = frame_minwidth(oldwin->w_frame, NOWIN); +*************** +*** 798,809 **** + needed = wmh1 + STATUS_HEIGHT; + if (flags & WSP_ROOM) + needed += p_wh - wmh1; +! if (p_ea || (flags & (WSP_BOT | WSP_TOP))) + { + minheight = frame_minheight(topframe, NOWIN) + need_status; + available = topframe->fr_height; + needed += minheight; + } + else + { + minheight = frame_minheight(oldwin->w_frame, NOWIN) + need_status; +--- 815,843 ---- + needed = wmh1 + STATUS_HEIGHT; + if (flags & WSP_ROOM) + needed += p_wh - wmh1; +! if (flags & (WSP_BOT | WSP_TOP)) + { + minheight = frame_minheight(topframe, NOWIN) + need_status; + available = topframe->fr_height; + needed += minheight; + } ++ else if (p_ea) ++ { ++ minheight = frame_minheight(oldwin->w_frame, NOWIN) + need_status; ++ prevfrp = oldwin->w_frame; ++ for (frp = oldwin->w_frame->fr_parent; frp != NULL; ++ frp = frp->fr_parent) ++ { ++ if (frp->fr_layout == FR_COL) ++ for (frp2 = frp->fr_child; frp2 != NULL; ++ frp2 = frp2->fr_next) ++ if (frp2 != prevfrp) ++ minheight += frame_minheight(frp2, NOWIN); ++ prevfrp = frp; ++ } ++ available = topframe->fr_height; ++ needed += minheight; ++ } + else + { + minheight = frame_minheight(oldwin->w_frame, NOWIN) + need_status; +*** ../vim-7.4.376/src/version.c 2014-07-23 13:50:41.839956521 +0200 +--- src/version.c 2014-07-23 15:20:33.227917771 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 377, + /**/ + +-- +LARGE MAN: Who's that then? +CART DRIVER: (Grudgingly) I dunno, Must be a king. +LARGE MAN: Why? +CART DRIVER: He hasn't got shit all over him. + "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.378 b/SOURCES/7.4.378 new file mode 100644 index 0000000..659f18f --- /dev/null +++ b/SOURCES/7.4.378 @@ -0,0 +1,336 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.378 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.378 +Problem: Title of quickfist list is not kept for setqflist(list, 'r'). +Solution: Keep the title. Add a test. (Lcd) +Files: src/quickfix.c, src/testdir/Make_amiga.mak, + src/testdir/Make_dos.mak, src/testdir/Make_ming.mak, + src/testdir/Make_os2.mak, src/testdir/Make_vms.mms, + src/testdir/Makefile, src/testdir/test_qf_title.in, + src/testdir/test_qf_title.ok + + +*** ../vim-7.4.377/src/quickfix.c 2014-03-27 17:02:22.080660944 +0100 +--- src/quickfix.c 2014-07-23 15:37:30.551910459 +0200 +*************** +*** 107,112 **** +--- 107,113 ---- + }; + + static int qf_init_ext __ARGS((qf_info_T *qi, char_u *efile, buf_T *buf, typval_T *tv, char_u *errorformat, int newlist, linenr_T lnumfirst, linenr_T lnumlast, char_u *qf_title)); ++ static void qf_store_title __ARGS((qf_info_T *qi, char_u *title)); + static void qf_new_list __ARGS((qf_info_T *qi, char_u *qf_title)); + static void ll_free_all __ARGS((qf_info_T **pqi)); + static int qf_add_entry __ARGS((qf_info_T *qi, qfline_T **prevp, char_u *dir, char_u *fname, int bufnum, char_u *mesg, long lnum, int col, int vis_col, char_u *pattern, int nr, int type, int valid)); +*************** +*** 126,132 **** + static win_T *qf_find_win __ARGS((qf_info_T *qi)); + static buf_T *qf_find_buf __ARGS((qf_info_T *qi)); + static void qf_update_buffer __ARGS((qf_info_T *qi)); +! static void qf_set_title __ARGS((qf_info_T *qi)); + static void qf_fill_buffer __ARGS((qf_info_T *qi)); + #endif + static char_u *get_mef_name __ARGS((void)); +--- 127,133 ---- + static win_T *qf_find_win __ARGS((qf_info_T *qi)); + static buf_T *qf_find_buf __ARGS((qf_info_T *qi)); + static void qf_update_buffer __ARGS((qf_info_T *qi)); +! static void qf_set_title_var __ARGS((qf_info_T *qi)); + static void qf_fill_buffer __ARGS((qf_info_T *qi)); + #endif + static char_u *get_mef_name __ARGS((void)); +*************** +*** 884,889 **** +--- 885,905 ---- + return retval; + } + ++ static void ++ qf_store_title(qi, title) ++ qf_info_T *qi; ++ char_u *title; ++ { ++ if (title != NULL) ++ { ++ char_u *p = alloc((int)STRLEN(title) + 2); ++ ++ qi->qf_lists[qi->qf_curlist].qf_title = p; ++ if (p != NULL) ++ sprintf((char *)p, ":%s", (char *)title); ++ } ++ } ++ + /* + * Prepare for adding a new quickfix list. + */ +*************** +*** 895,901 **** + int i; + + /* +! * If the current entry is not the last entry, delete entries below + * the current entry. This makes it possible to browse in a tree-like + * way with ":grep'. + */ +--- 911,917 ---- + int i; + + /* +! * If the current entry is not the last entry, delete entries beyond + * the current entry. This makes it possible to browse in a tree-like + * way with ":grep'. + */ +*************** +*** 916,929 **** + else + qi->qf_curlist = qi->qf_listcount++; + vim_memset(&qi->qf_lists[qi->qf_curlist], 0, (size_t)(sizeof(qf_list_T))); +! if (qf_title != NULL) +! { +! char_u *p = alloc((int)STRLEN(qf_title) + 2); +! +! qi->qf_lists[qi->qf_curlist].qf_title = p; +! if (p != NULL) +! sprintf((char *)p, ":%s", (char *)qf_title); +! } + } + + /* +--- 932,938 ---- + else + qi->qf_curlist = qi->qf_listcount++; + vim_memset(&qi->qf_lists[qi->qf_curlist], 0, (size_t)(sizeof(qf_list_T))); +! qf_store_title(qi, qf_title); + } + + /* +*************** +*** 2444,2450 **** + qf_fill_buffer(qi); + + if (qi->qf_lists[qi->qf_curlist].qf_title != NULL) +! qf_set_title(qi); + + curwin->w_cursor.lnum = qi->qf_lists[qi->qf_curlist].qf_index; + curwin->w_cursor.col = 0; +--- 2453,2459 ---- + qf_fill_buffer(qi); + + if (qi->qf_lists[qi->qf_curlist].qf_title != NULL) +! qf_set_title_var(qi); + + curwin->w_cursor.lnum = qi->qf_lists[qi->qf_curlist].qf_index; + curwin->w_cursor.col = 0; +*************** +*** 2599,2605 **** + { + curwin_save = curwin; + curwin = win; +! qf_set_title(qi); + curwin = curwin_save; + + } +--- 2608,2614 ---- + { + curwin_save = curwin; + curwin = win; +! qf_set_title_var(qi); + curwin = curwin_save; + + } +*************** +*** 2612,2618 **** + } + + static void +! qf_set_title(qi) + qf_info_T *qi; + { + set_internal_string_var((char_u *)"w:quickfix_title", +--- 2621,2627 ---- + } + + static void +! qf_set_title_var(qi) + qf_info_T *qi; + { + set_internal_string_var((char_u *)"w:quickfix_title", +*************** +*** 3845,3851 **** +--- 3854,3863 ---- + prevp->qf_next != prevp; prevp = prevp->qf_next) + ; + else if (action == 'r') ++ { + qf_free(qi, qi->qf_curlist); ++ qf_store_title(qi, title); ++ } + + for (li = list->lv_first; li != NULL; li = li->li_next) + { +*** ../vim-7.4.377/src/testdir/Make_amiga.mak 2014-07-16 17:01:38.275570568 +0200 +--- src/testdir/Make_amiga.mak 2014-07-23 15:26:51.455915053 +0200 +*************** +*** 40,45 **** +--- 40,46 ---- + test_breakindent.out \ + test_listlbr.out \ + test_listlbr_utf8.out \ ++ test_qf_title.out \ + test_eval.out \ + test_options.out + +*************** +*** 169,173 **** +--- 170,175 ---- + test_breakindent.out: test_breakindent.in + test_listlbr.out: test_listlbr.in + test_listlbr_utf8.out: test_listlbr_utf8.in ++ test_qf_title.out: test_qf_title.in + test_eval.out: test_eval.in + test_options.out: test_options.in +*** ../vim-7.4.377/src/testdir/Make_dos.mak 2014-07-16 17:01:38.279570568 +0200 +--- src/testdir/Make_dos.mak 2014-07-23 15:27:01.231914983 +0200 +*************** +*** 39,44 **** +--- 39,45 ---- + test_breakindent.out \ + test_listlbr.out \ + test_listlbr_utf8.out \ ++ test_qf_title.out \ + test_eval.out \ + test_options.out + +*** ../vim-7.4.377/src/testdir/Make_ming.mak 2014-07-16 17:01:38.279570568 +0200 +--- src/testdir/Make_ming.mak 2014-07-23 15:27:13.163914897 +0200 +*************** +*** 59,64 **** +--- 59,65 ---- + test_breakindent.out \ + test_listlbr.out \ + test_listlbr_utf8.out \ ++ test_qf_title.out \ + test_eval.out \ + test_options.out + +*** ../vim-7.4.377/src/testdir/Make_os2.mak 2014-07-16 17:01:38.279570568 +0200 +--- src/testdir/Make_os2.mak 2014-07-23 15:27:25.999914805 +0200 +*************** +*** 40,47 **** + test_autoformat_join.out \ + test_eval.out \ + test_breakindent.out \ +- test_listlbr_utf8.out \ + test_listlbr.out \ + test_options.out + + .SUFFIXES: .in .out +--- 40,48 ---- + test_autoformat_join.out \ + test_eval.out \ + test_breakindent.out \ + test_listlbr.out \ ++ test_listlbr_utf8.out \ ++ test_qf_title.out \ + test_options.out + + .SUFFIXES: .in .out +*** ../vim-7.4.377/src/testdir/Make_vms.mms 2014-07-16 17:01:38.279570568 +0200 +--- src/testdir/Make_vms.mms 2014-07-23 15:27:34.787914741 +0200 +*************** +*** 4,10 **** + # Authors: Zoltan Arpadffy, <arpadffy@polarhome.com> + # Sandor Kopanyi, <sandor.kopanyi@mailbox.hu> + # +! # Last change: 2014 May 28 + # + # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64. + # Edit the lines in the Configuration section below to select. +--- 4,10 ---- + # Authors: Zoltan Arpadffy, <arpadffy@polarhome.com> + # Sandor Kopanyi, <sandor.kopanyi@mailbox.hu> + # +! # Last change: 2014 Jul 23 + # + # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64. + # Edit the lines in the Configuration section below to select. +*************** +*** 100,105 **** +--- 100,106 ---- + test_breakindent.out \ + test_listlbr.out \ + test_listlbr_utf8.out \ ++ test_qf_title.out \ + test_eval.out \ + test_options.out + +*** ../vim-7.4.377/src/testdir/Makefile 2014-07-16 17:01:38.279570568 +0200 +--- src/testdir/Makefile 2014-07-23 15:27:46.947914654 +0200 +*************** +*** 37,42 **** +--- 37,43 ---- + test_breakindent.out \ + test_listlbr.out \ + test_listlbr_utf8.out \ ++ test_qf_title.out \ + test_eval.out \ + test_options.out + +*** ../vim-7.4.377/src/testdir/test_qf_title.in 2014-07-23 15:53:26.279903590 +0200 +--- src/testdir/test_qf_title.in 2014-07-23 15:26:02.495915405 +0200 +*************** +*** 0 **** +--- 1,18 ---- ++ Tests for quickfix window's title vim: set ft=vim : ++ ++ STARTTEST ++ :so small.vim ++ :if !has('quickfix') | e! test.ok | wq! test.out | endif ++ :set efm=%E%f:%l:%c:%m ++ :cgetexpr ['file:1:1:message'] ++ :let qflist=getqflist() ++ :call setqflist(qflist, 'r') ++ :copen ++ :let g:quickfix_title=w:quickfix_title ++ :wincmd p ++ :$put =g:quickfix_title ++ :/^Results/,$w test.out ++ :qa! ++ ENDTEST ++ ++ Results of test_qf_title: +*** ../vim-7.4.377/src/testdir/test_qf_title.ok 2014-07-23 15:53:26.283903590 +0200 +--- src/testdir/test_qf_title.ok 2014-07-23 15:25:55.303915456 +0200 +*************** +*** 0 **** +--- 1,2 ---- ++ Results of test_qf_title: ++ :setqflist() +*** ../vim-7.4.377/src/version.c 2014-07-23 15:21:16.247917462 +0200 +--- src/version.c 2014-07-23 15:28:57.251914149 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 378, + /**/ + +-- +ARTHUR: Old woman! +DENNIS: Man! +ARTHUR: Man. I'm sorry. Old man, What knight live in that castle over there? +DENNIS: I'm thirty-seven. + "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.379 b/SOURCES/7.4.379 new file mode 100644 index 0000000..79d8593 --- /dev/null +++ b/SOURCES/7.4.379 @@ -0,0 +1,45 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.379 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.379 +Problem: Accessing freed memory after using setqflist(list, 'r'). (Lcd) +Solution: Reset qf_index. +Files: src/quickfix.c + + +*** ../vim-7.4.378/src/quickfix.c 2014-07-23 15:54:43.443903036 +0200 +--- src/quickfix.c 2014-07-23 16:11:59.915895586 +0200 +*************** +*** 2173,2178 **** +--- 2173,2179 ---- + } + vim_free(qi->qf_lists[idx].qf_title); + qi->qf_lists[idx].qf_title = NULL; ++ qi->qf_lists[idx].qf_index = 0; + } + + /* +*** ../vim-7.4.378/src/version.c 2014-07-23 15:54:43.443903036 +0200 +--- src/version.c 2014-07-23 16:14:43.995894407 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 379, + /**/ + +-- +"Lisp has all the visual appeal of oatmeal with nail clippings thrown in." + -- Larry Wall + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.380 b/SOURCES/7.4.380 new file mode 100644 index 0000000..8c93e07 --- /dev/null +++ b/SOURCES/7.4.380 @@ -0,0 +1,115 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.380 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.380 +Problem: Loading python may cause Vim to exit. +Solution: Avoid loading the "site" module. (Taro Muraoka) +Files: src/if_python.c + + +*** ../vim-7.4.379/src/if_python.c 2014-03-30 16:11:37.176530823 +0200 +--- src/if_python.c 2014-07-23 16:46:42.863880615 +0200 +*************** +*** 295,300 **** +--- 295,303 ---- + # define PyCObject_FromVoidPtr dll_PyCObject_FromVoidPtr + # define PyCObject_AsVoidPtr dll_PyCObject_AsVoidPtr + # endif ++ # if defined(PY_VERSION_HEX) && PY_VERSION_HEX >= 0x02070000 ++ # define Py_NoSiteFlag (*dll_Py_NoSiteFlag) ++ # endif + + /* + * Pointers for dynamic link +*************** +*** 440,445 **** +--- 443,451 ---- + static PyObject* (*dll_PyCObject_FromVoidPtr)(void *cobj, void (*destr)(void *)); + static void* (*dll_PyCObject_AsVoidPtr)(PyObject *); + # endif ++ # if defined(PY_VERSION_HEX) && PY_VERSION_HEX >= 0x02070000 ++ static int* dll_Py_NoSiteFlag; ++ # endif + + static HINSTANCE hinstPython = 0; /* Instance of python.dll */ + +*************** +*** 633,638 **** +--- 639,647 ---- + {"PyCObject_FromVoidPtr", (PYTHON_PROC*)&dll_PyCObject_FromVoidPtr}, + {"PyCObject_AsVoidPtr", (PYTHON_PROC*)&dll_PyCObject_AsVoidPtr}, + # endif ++ # if defined(PY_VERSION_HEX) && PY_VERSION_HEX >= 0x02070000 ++ {"Py_NoSiteFlag", (PYTHON_PROC*)&dll_Py_NoSiteFlag}, ++ # endif + {"", NULL}, + }; + +*************** +*** 901,906 **** +--- 910,919 ---- + { + if (!initialised) + { ++ #if defined(PY_VERSION_HEX) && PY_VERSION_HEX >= 0x02070000 ++ PyObject *site; ++ #endif ++ + #ifdef DYNAMIC_PYTHON + if (!python_enabled(TRUE)) + { +*************** +*** 915,925 **** +--- 928,956 ---- + + init_structs(); + ++ #if defined(PY_VERSION_HEX) && PY_VERSION_HEX >= 0x02070000 ++ /* Disable implicit 'import site', because it may cause Vim to exit ++ * when it can't be found. */ ++ Py_NoSiteFlag++; ++ #endif ++ + #if !defined(MACOS) || defined(MACOS_X_UNIX) + Py_Initialize(); + #else + PyMac_Initialize(); + #endif ++ ++ #if defined(PY_VERSION_HEX) && PY_VERSION_HEX >= 0x02070000 ++ /* 'import site' explicitly. */ ++ site = PyImport_ImportModule("site"); ++ if (site == NULL) ++ { ++ EMSG(_("E887: Sorry, this command is disabled, the Python's site module could not be loaded.")); ++ goto fail; ++ } ++ Py_DECREF(site); ++ #endif ++ + /* Initialise threads, and below save the state using + * PyEval_SaveThread. Without the call to PyEval_SaveThread, thread + * specific state (such as the system trace hook), will be lost +*** ../vim-7.4.379/src/version.c 2014-07-23 16:33:04.079886500 +0200 +--- src/version.c 2014-07-23 16:43:47.939881872 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 380, + /**/ + +-- +Looking at Perl through Lisp glasses, Perl looks atrocious. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.381 b/SOURCES/7.4.381 new file mode 100644 index 0000000..188124e --- /dev/null +++ b/SOURCES/7.4.381 @@ -0,0 +1,45 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.381 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.381 +Problem: Get u_undo error when backspacing in Insert mode deletes more than + one line break. (Ayberk Ozgur) +Solution: Also decrement Insstart.lnum. +Files: src/edit.c + + +*** ../vim-7.4.380/src/edit.c 2014-07-23 13:50:41.839956521 +0200 +--- src/edit.c 2014-07-23 17:35:05.747859751 +0200 +*************** +*** 8833,8838 **** +--- 8833,8839 ---- + return FALSE; + --Insstart_orig.lnum; + Insstart_orig.col = MAXCOL; ++ Insstart = Insstart_orig; + } + /* + * In replace mode: +*** ../vim-7.4.380/src/version.c 2014-07-23 16:56:56.587876204 +0200 +--- src/version.c 2014-07-23 17:38:54.467858107 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 381, + /**/ + +-- +Friends? I have lots of friends! In fact, I have all episodes ever made. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.382 b/SOURCES/7.4.382 new file mode 100644 index 0000000..e1ca90b --- /dev/null +++ b/SOURCES/7.4.382 @@ -0,0 +1,52 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.382 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.382 +Problem: Mapping characters may not work after typing Esc in Insert mode. +Solution: Fix the noremap flags for inserted characters. (Jacob Niehus) +Files: src/getchar.c + + +*** ../vim-7.4.381/src/getchar.c 2014-06-25 14:39:35.102348584 +0200 +--- src/getchar.c 2014-07-23 20:10:25.651792765 +0200 +*************** +*** 2731,2736 **** +--- 2731,2741 ---- + } + if (c < 0) + continue; /* end of input script reached */ ++ ++ /* Allow mapping for just typed characters. When we get here c ++ * is the number of extra bytes and typebuf.tb_len is 1. */ ++ for (n = 1; n <= c; ++n) ++ typebuf.tb_noremap[typebuf.tb_off + n] = RM_YES; + typebuf.tb_len += c; + + /* buffer full, don't map */ +*** ../vim-7.4.381/src/version.c 2014-07-23 17:39:21.815857910 +0200 +--- src/version.c 2014-07-23 18:26:42.663837492 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 382, + /**/ + +-- +DENNIS: Oh, very nice. King, eh! I expect you've got a palace and fine + clothes and courtiers and plenty of food. And how d'you get that? By + exploiting the workers! By hanging on to outdated imperialist dogma + which perpetuates the social and economic differences in our society! + "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.383 b/SOURCES/7.4.383 new file mode 100644 index 0000000..f022812 --- /dev/null +++ b/SOURCES/7.4.383 @@ -0,0 +1,52 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.383 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.383 +Problem: Bad interaction between preview window and omnifunc. +Solution: Avoid redrawing the status line. (Hirohito Higashi) +Files: src/popupmnu.c + + +*** ../vim-7.4.382/src/popupmnu.c 2014-07-09 19:58:21.111647328 +0200 +--- src/popupmnu.c 2014-07-23 20:56:17.131772989 +0200 +*************** +*** 643,648 **** +--- 643,654 ---- + + if (curwin != curwin_save && win_valid(curwin_save)) + { ++ /* When the first completion is done and the preview ++ * window is not resized, skip the preview window's ++ * status line redrawing. */ ++ if (ins_compl_active() && !resized) ++ curwin->w_redr_status = FALSE; ++ + /* Return cursor to where we were */ + validate_cursor(); + redraw_later(SOME_VALID); +*** ../vim-7.4.382/src/version.c 2014-07-23 20:41:09.895779510 +0200 +--- src/version.c 2014-07-23 20:58:12.079772163 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 383, + /**/ + +-- +ARTHUR: ... and I am your king .... +OLD WOMAN: Ooooh! I didn't know we had a king. I thought we were an + autonomous collective ... + "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.384 b/SOURCES/7.4.384 new file mode 100644 index 0000000..6c2b046 --- /dev/null +++ b/SOURCES/7.4.384 @@ -0,0 +1,47 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.384 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.384 +Problem: Test 102 fails when compiled with small features. +Solution: Source small.vim. (Jacob Niehus) +Files: src/testdir/test102.in + + +*** ../vim-7.4.383/src/testdir/test102.in 2013-11-12 05:28:08.000000000 +0100 +--- src/testdir/test102.in 2014-07-27 21:10:34.881282860 +0200 +*************** +*** 1,6 **** +--- 1,7 ---- + Test if fnameescape is correct for special chars like ! + + STARTTEST ++ :so small.vim + :%d + :let fname = 'Xspa ce' + :try | exe "w! " . fnameescape(fname) | put='Space' | endtry +*** ../vim-7.4.383/src/version.c 2014-07-23 21:10:39.867766788 +0200 +--- src/version.c 2014-07-30 13:15:18.047624849 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 384, + /**/ + +-- +An easy way to determine if you have enough teamwork to be doomed is simply to +measure how long it takes from the time you decide to go to lunch together +until the time you actually eat. + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.385 b/SOURCES/7.4.385 new file mode 100644 index 0000000..8cfe098 --- /dev/null +++ b/SOURCES/7.4.385 @@ -0,0 +1,76 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.385 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.385 +Problem: When building with tiny or small features building the .mo files + fails. +Solution: In autoconf do not setup for building the .mo files when it would + fail. +Files: src/configure.in, src/auto/configure + + +*** ../vim-7.4.384/src/configure.in 2014-05-22 14:44:08.094481148 +0200 +--- src/configure.in 2014-07-27 21:26:39.349275928 +0200 +*************** +*** 3818,3824 **** + else + AC_MSG_RESULT([msgfmt not found - disabled]); + fi +! if test $have_gettext = "yes"; then + AC_DEFINE(HAVE_GETTEXT) + MAKEMO=yes + AC_SUBST(MAKEMO) +--- 3818,3824 ---- + else + AC_MSG_RESULT([msgfmt not found - disabled]); + fi +! if test $have_gettext = "yes" -a "x$features" != "xtiny" -a "x$features" != "xsmall"; then + AC_DEFINE(HAVE_GETTEXT) + MAKEMO=yes + AC_SUBST(MAKEMO) +*** ../vim-7.4.384/src/auto/configure 2014-05-22 14:44:08.098481148 +0200 +--- src/auto/configure 2014-07-27 21:26:41.969275909 +0200 +*************** +*** 12966,12972 **** + { $as_echo "$as_me:${as_lineno-$LINENO}: result: msgfmt not found - disabled" >&5 + $as_echo "msgfmt not found - disabled" >&6; }; + fi +! if test $have_gettext = "yes"; then + $as_echo "#define HAVE_GETTEXT 1" >>confdefs.h + + MAKEMO=yes +--- 12966,12972 ---- + { $as_echo "$as_me:${as_lineno-$LINENO}: result: msgfmt not found - disabled" >&5 + $as_echo "msgfmt not found - disabled" >&6; }; + fi +! if test $have_gettext = "yes" -a "x$features" != "xtiny" -a "x$features" != "xsmall"; then + $as_echo "#define HAVE_GETTEXT 1" >>confdefs.h + + MAKEMO=yes +*** ../vim-7.4.384/src/version.c 2014-07-30 13:20:35.719622565 +0200 +--- src/version.c 2014-07-30 13:22:07.295621907 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 385, + /**/ + +-- +"You're fired." (1980) +"You're laid off." (1985) +"You're downsized." (1990) +"You're rightsized." (1992) + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.386 b/SOURCES/7.4.386 new file mode 100644 index 0000000..2b0db1f --- /dev/null +++ b/SOURCES/7.4.386 @@ -0,0 +1,186 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.386 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.386 +Problem: When splitting a window the changelist position is wrong. +Solution: Copy the changelist position. (Jacob Niehus) +Files: src/window.c, src/testdir/Make_amiga.mak, + src/testdir/Make_dos.mak, src/testdir/Make_ming.mak, + src/testdir/Make_os2.mak, src/testdir/Make_vms.mms, + src/testdir/Makefile, src/testdir/test_changelist.in, + src/testdir/test_changelist.ok + + +*** ../vim-7.4.385/src/window.c 2014-07-23 15:21:16.247917462 +0200 +--- src/window.c 2014-07-30 13:55:49.275607374 +0200 +*************** +*** 1178,1183 **** +--- 1178,1188 ---- + p_wh = size; + } + ++ #ifdef FEAT_JUMPLIST ++ /* Keep same changelist position in new window. */ ++ wp->w_changelistidx = oldwin->w_changelistidx; ++ #endif ++ + /* + * make the new window the current window + */ +*** ../vim-7.4.385/src/testdir/Make_amiga.mak 2014-07-23 15:54:43.443903036 +0200 +--- src/testdir/Make_amiga.mak 2014-07-30 13:54:06.871608110 +0200 +*************** +*** 41,46 **** +--- 41,47 ---- + test_listlbr.out \ + test_listlbr_utf8.out \ + test_qf_title.out \ ++ test_changelist.out \ + test_eval.out \ + test_options.out + +*************** +*** 171,175 **** +--- 172,177 ---- + test_listlbr.out: test_listlbr.in + test_listlbr_utf8.out: test_listlbr_utf8.in + test_qf_title.out: test_qf_title.in ++ test_changelist.out: test_changelist.in + test_eval.out: test_eval.in + test_options.out: test_options.in +*** ../vim-7.4.385/src/testdir/Make_dos.mak 2014-07-23 15:54:43.443903036 +0200 +--- src/testdir/Make_dos.mak 2014-07-30 13:54:16.091608044 +0200 +*************** +*** 40,45 **** +--- 40,46 ---- + test_listlbr.out \ + test_listlbr_utf8.out \ + test_qf_title.out \ ++ test_changelist.out \ + test_eval.out \ + test_options.out + +*** ../vim-7.4.385/src/testdir/Make_ming.mak 2014-07-23 15:54:43.443903036 +0200 +--- src/testdir/Make_ming.mak 2014-07-30 13:54:19.775608018 +0200 +*************** +*** 60,65 **** +--- 60,66 ---- + test_listlbr.out \ + test_listlbr_utf8.out \ + test_qf_title.out \ ++ test_changelist.out \ + test_eval.out \ + test_options.out + +*** ../vim-7.4.385/src/testdir/Make_os2.mak 2014-07-23 15:54:43.443903036 +0200 +--- src/testdir/Make_os2.mak 2014-07-30 13:54:24.207607986 +0200 +*************** +*** 38,43 **** +--- 38,44 ---- + test100.out test101.out test102.out test103.out test104.out \ + test105.out test106.out test107.out \ + test_autoformat_join.out \ ++ test_changelist.out \ + test_eval.out \ + test_breakindent.out \ + test_listlbr.out \ +*** ../vim-7.4.385/src/testdir/Make_vms.mms 2014-07-23 15:54:43.443903036 +0200 +--- src/testdir/Make_vms.mms 2014-07-30 13:54:31.151607936 +0200 +*************** +*** 4,10 **** + # Authors: Zoltan Arpadffy, <arpadffy@polarhome.com> + # Sandor Kopanyi, <sandor.kopanyi@mailbox.hu> + # +! # Last change: 2014 Jul 23 + # + # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64. + # Edit the lines in the Configuration section below to select. +--- 4,10 ---- + # Authors: Zoltan Arpadffy, <arpadffy@polarhome.com> + # Sandor Kopanyi, <sandor.kopanyi@mailbox.hu> + # +! # Last change: 2014 Jul 30 + # + # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64. + # Edit the lines in the Configuration section below to select. +*************** +*** 101,106 **** +--- 101,107 ---- + test_listlbr.out \ + test_listlbr_utf8.out \ + test_qf_title.out \ ++ test_changelist.out \ + test_eval.out \ + test_options.out + +*** ../vim-7.4.385/src/testdir/Makefile 2014-07-23 15:54:43.443903036 +0200 +--- src/testdir/Makefile 2014-07-30 13:54:45.291607834 +0200 +*************** +*** 38,43 **** +--- 38,44 ---- + test_listlbr.out \ + test_listlbr_utf8.out \ + test_qf_title.out \ ++ test_changelist.out \ + test_eval.out \ + test_options.out + +*** ../vim-7.4.385/src/testdir/test_changelist.in 2014-07-30 14:04:27.507603650 +0200 +--- src/testdir/test_changelist.in 2014-07-30 13:52:21.363608869 +0200 +*************** +*** 0 **** +--- 1,22 ---- ++ Test changelist position after splitting window ++ Set 'undolevels' to make changelist for sourced file ++ ++ STARTTEST ++ :so small.vim ++ Gkylp:set ul=100 ++ Gylp:set ul=100 ++ gg ++ :vsplit ++ :try ++ : normal g; ++ : normal ggVGcpass ++ :catch ++ : normal ggVGcfail ++ :finally ++ : %w! test.out ++ :endtry ++ :qa! ++ ENDTEST ++ ++ 1 ++ 2 +*** ../vim-7.4.385/src/testdir/test_changelist.ok 2014-07-30 14:04:27.515603650 +0200 +--- src/testdir/test_changelist.ok 2014-07-30 13:53:41.991608289 +0200 +*************** +*** 0 **** +--- 1 ---- ++ pass +*** ../vim-7.4.385/src/version.c 2014-07-30 13:22:48.271621613 +0200 +--- src/version.c 2014-07-30 13:56:49.951606938 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 386, + /**/ + +-- +Our job was to build a computer information system for the branch banks. We +were the perfect people for the job: Dean had seen a computer once, and I had +heard Dean talk about it. + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.387 b/SOURCES/7.4.387 new file mode 100644 index 0000000..ff0b2a0 --- /dev/null +++ b/SOURCES/7.4.387 @@ -0,0 +1,199 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.387 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.387 +Problem: "4gro" replaces one character then executes "ooo". (Urtica Dioica) +Solution: Write the ESC in the second stuff buffer. +Files: src/getchar.c, src/proto/getchar.pro, src/edit.c, + src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, + src/testdir/Make_ming.mak, src/testdir/Make_os2.mak, + src/testdir/Make_vms.mms, src/testdir/Makefile, + src/testdir/test_insertcount.in, src/testdir/test_insertcount.ok + + +*** ../vim-7.4.386/src/getchar.c 2014-07-23 20:41:09.891779510 +0200 +--- src/getchar.c 2014-07-30 14:35:08.831590415 +0200 +*************** +*** 678,683 **** +--- 678,694 ---- + add_buff(&readbuf1, s, -1L); + } + ++ /* ++ * Append string "s" to the redo stuff buffer. ++ * CSI and K_SPECIAL must already have been escaped. ++ */ ++ void ++ stuffRedoReadbuff(s) ++ char_u *s; ++ { ++ add_buff(&readbuf2, s, -1L); ++ } ++ + void + stuffReadbuffLen(s, len) + char_u *s; +*** ../vim-7.4.386/src/proto/getchar.pro 2014-02-11 15:10:38.134111836 +0100 +--- src/proto/getchar.pro 2014-07-30 14:36:18.851589912 +0200 +*************** +*** 15,20 **** +--- 15,21 ---- + void AppendCharToRedobuff __ARGS((int c)); + void AppendNumberToRedobuff __ARGS((long n)); + void stuffReadbuff __ARGS((char_u *s)); ++ void stuffRedoReadbuff __ARGS((char_u *s)); + void stuffReadbuffLen __ARGS((char_u *s, long len)); + void stuffReadbuffSpec __ARGS((char_u *s)); + void stuffcharReadbuff __ARGS((int c)); +*** ../vim-7.4.386/src/edit.c 2014-07-23 17:39:21.815857910 +0200 +--- src/edit.c 2014-07-30 14:47:56.875584895 +0200 +*************** +*** 8389,8395 **** + + (void)start_redo_ins(); + if (cmdchar == 'r' || cmdchar == 'v') +! stuffReadbuff(ESC_STR); /* no ESC in redo buffer */ + ++RedrawingDisabled; + disabled_redraw = TRUE; + return FALSE; /* repeat the insert */ +--- 8389,8395 ---- + + (void)start_redo_ins(); + if (cmdchar == 'r' || cmdchar == 'v') +! stuffRedoReadbuff(ESC_STR); /* no ESC in redo buffer */ + ++RedrawingDisabled; + disabled_redraw = TRUE; + return FALSE; /* repeat the insert */ +*** ../vim-7.4.386/src/testdir/Make_amiga.mak 2014-07-30 14:04:49.131603494 +0200 +--- src/testdir/Make_amiga.mak 2014-07-30 15:57:52.819554737 +0200 +*************** +*** 43,48 **** +--- 43,49 ---- + test_qf_title.out \ + test_changelist.out \ + test_eval.out \ ++ test_insertcount.out \ + test_options.out + + .SUFFIXES: .in .out +*************** +*** 174,177 **** +--- 175,179 ---- + test_qf_title.out: test_qf_title.in + test_changelist.out: test_changelist.in + test_eval.out: test_eval.in ++ test_insertcount.out: test_insertcount.in + test_options.out: test_options.in +*** ../vim-7.4.386/src/testdir/Make_dos.mak 2014-07-30 14:04:49.131603494 +0200 +--- src/testdir/Make_dos.mak 2014-07-30 15:57:59.071554692 +0200 +*************** +*** 42,47 **** +--- 42,48 ---- + test_qf_title.out \ + test_changelist.out \ + test_eval.out \ ++ test_insertcount.out \ + test_options.out + + SCRIPTS32 = test50.out test70.out +*** ../vim-7.4.386/src/testdir/Make_ming.mak 2014-07-30 14:04:49.131603494 +0200 +--- src/testdir/Make_ming.mak 2014-07-30 15:58:02.351554669 +0200 +*************** +*** 62,67 **** +--- 62,68 ---- + test_qf_title.out \ + test_changelist.out \ + test_eval.out \ ++ test_insertcount.out \ + test_options.out + + SCRIPTS32 = test50.out test70.out +*** ../vim-7.4.386/src/testdir/Make_os2.mak 2014-07-30 14:04:49.131603494 +0200 +--- src/testdir/Make_os2.mak 2014-07-30 15:58:05.975554643 +0200 +*************** +*** 40,45 **** +--- 40,46 ---- + test_autoformat_join.out \ + test_changelist.out \ + test_eval.out \ ++ test_insertcount.out \ + test_breakindent.out \ + test_listlbr.out \ + test_listlbr_utf8.out \ +*** ../vim-7.4.386/src/testdir/Make_vms.mms 2014-07-30 14:04:49.131603494 +0200 +--- src/testdir/Make_vms.mms 2014-07-30 15:58:10.099554613 +0200 +*************** +*** 103,108 **** +--- 103,109 ---- + test_qf_title.out \ + test_changelist.out \ + test_eval.out \ ++ test_insertcount.out \ + test_options.out + + # Known problems: +*** ../vim-7.4.386/src/testdir/Makefile 2014-07-30 14:04:49.131603494 +0200 +--- src/testdir/Makefile 2014-07-30 15:58:16.539554567 +0200 +*************** +*** 40,45 **** +--- 40,46 ---- + test_qf_title.out \ + test_changelist.out \ + test_eval.out \ ++ test_insertcount.out \ + test_options.out + + SCRIPTS_GUI = test16.out +*** ../vim-7.4.386/src/testdir/test_insertcount.in 2014-07-30 15:56:12.087555461 +0200 +--- src/testdir/test_insertcount.in 2014-07-30 14:47:36.335585043 +0200 +*************** +*** 0 **** +--- 1,14 ---- ++ Tests for repeating insert and replace. ++ ++ STARTTEST ++ :so small.vim ++ :/Second ++ 4gro ++ :/^First/,$wq! test.out ++ :" get here when failed and in Insert mode ++ :.wq! test.out ++ ENDTEST ++ ++ First line ++ Second line ++ Last line +*** ../vim-7.4.386/src/testdir/test_insertcount.ok 2014-07-30 15:56:12.091555461 +0200 +--- src/testdir/test_insertcount.ok 2014-07-30 14:45:43.491585854 +0200 +*************** +*** 0 **** +--- 1,3 ---- ++ First line ++ ooooecond line ++ Last line +*** ../vim-7.4.386/src/version.c 2014-07-30 14:04:49.131603494 +0200 +--- src/version.c 2014-07-30 14:48:45.039584549 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 387, + /**/ + +-- +If your company is not involved in something called "ISO 9000" you probably +have no idea what it is. If your company _is_ involved in ISO 9000 then you +definitely have no idea what it is. + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.388 b/SOURCES/7.4.388 new file mode 100644 index 0000000..21db642 --- /dev/null +++ b/SOURCES/7.4.388 @@ -0,0 +1,98 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.388 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.388 +Problem: With 'linebreak' set and 'list' unset a Tab is not counted + properly. (Kent Sibilev) +Solution: Check the 'list' option. (Christian Brabandt) +Files: src/screen.c, src/testdir/test_listlbr_utf8.in, + src/testdir/test_listlbr_utf8.ok + + +*** ../vim-7.4.387/src/screen.c 2014-07-16 17:29:46.691536252 +0200 +--- src/screen.c 2014-07-30 16:41:15.167536033 +0200 +*************** +*** 4494,4500 **** + tab_len = (int)wp->w_buffer->b_p_ts + - vcol % (int)wp->w_buffer->b_p_ts - 1; + #ifdef FEAT_LINEBREAK +! if (!wp->w_p_lbr) + #endif + /* tab amount depends on current column */ + n_extra = tab_len; +--- 4494,4500 ---- + tab_len = (int)wp->w_buffer->b_p_ts + - vcol % (int)wp->w_buffer->b_p_ts - 1; + #ifdef FEAT_LINEBREAK +! if (!wp->w_p_lbr || !wp->w_p_list) + #endif + /* tab amount depends on current column */ + n_extra = tab_len; +*** ../vim-7.4.387/src/testdir/test_listlbr_utf8.in 2014-07-16 17:01:38.279570568 +0200 +--- src/testdir/test_listlbr_utf8.in 2014-07-30 16:37:26.703537675 +0200 +*************** +*** 30,40 **** +--- 30,51 ---- + :redraw! + :let line=ScreenChar(winwidth(0)) + :call DoRecordScreen() ++ :" + :let g:test ="Test 2: set nolinebreak list" + :set list nolinebreak + :redraw! + :let line=ScreenChar(winwidth(0)) + :call DoRecordScreen() ++ :" ++ :let g:test ="Test 3: set linebreak nolist" ++ :$put =\"\t*mask = nil;\" ++ :$ ++ :norm! zt ++ :set nolist linebreak ++ :redraw! ++ :let line=ScreenChar(winwidth(0)) ++ :call DoRecordScreen() ++ :" + :%w! test.out + :qa! + ENDTEST +*** ../vim-7.4.387/src/testdir/test_listlbr_utf8.ok 2014-07-16 17:01:38.279570568 +0200 +--- src/testdir/test_listlbr_utf8.ok 2014-07-30 16:40:17.043536451 +0200 +*************** +*** 12,14 **** +--- 12,21 ---- + +pqrstuvwxyz␣1060ABC + +DEFGHIJKLMNOPˑ¶ + ¶ ++ *mask = nil; ++ ++ Test 3: set linebreak nolist ++ *mask = nil; ++ ~ ++ ~ ++ ~ +*** ../vim-7.4.387/src/version.c 2014-07-30 16:00:45.551553496 +0200 +--- src/version.c 2014-07-30 16:40:57.659536159 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 388, + /**/ + +-- +You can test a person's importance in the organization by asking how much RAM +his computer has. Anybody who knows the answer to that question is not a +decision-maker. + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.389 b/SOURCES/7.4.389 new file mode 100644 index 0000000..6778941 --- /dev/null +++ b/SOURCES/7.4.389 @@ -0,0 +1,490 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.389 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.389 +Problem: Still sometimes Vim enters Replace mode when starting up. +Solution: Use a different solution in detecting the termresponse and + location response. (Hayaki Saito) +Files: src/globals.h, src/os_unix.c, src/term.c, src/proto/term.pro + + +*** ../vim-7.4.388/src/globals.h 2014-06-12 14:01:27.575769788 +0200 +--- src/globals.h 2014-07-30 17:02:57.711526671 +0200 +*************** +*** 1336,1344 **** + #if defined(UNIX) || defined(VMS) + EXTERN int term_is_xterm INIT(= FALSE); /* xterm-like 'term' */ + #endif +- #if defined(UNIX) +- EXTERN int xterm_conflict_mouse INIT(= FALSE); +- #endif + + #ifdef BACKSLASH_IN_FILENAME + EXTERN char psepc INIT(= '\\'); /* normal path separator character */ +--- 1336,1341 ---- +*** ../vim-7.4.388/src/os_unix.c 2014-07-09 19:13:45.007701718 +0200 +--- src/os_unix.c 2014-07-30 17:06:02.375525344 +0200 +*************** +*** 3667,3674 **** + void + check_mouse_termcode() + { +- xterm_conflict_mouse = FALSE; +- + # ifdef FEAT_MOUSE_XTERM + if (use_xterm_mouse() + # ifdef FEAT_MOUSE_URXVT +--- 3667,3672 ---- +*************** +*** 3713,3719 **** + # endif + + # ifdef FEAT_MOUSE_JSB +! /* There is no conflict, but it was disabled for xterm before. */ + if (!use_xterm_mouse() + # ifdef FEAT_GUI + && !gui.in_use +--- 3711,3717 ---- + # endif + + # ifdef FEAT_MOUSE_JSB +! /* Conflicts with xterm mouse: "\033[" and "\033[M" ??? */ + if (!use_xterm_mouse() + # ifdef FEAT_GUI + && !gui.in_use +*************** +*** 3740,3784 **** + # endif + + # ifdef FEAT_MOUSE_DEC +! /* Conflicts with xterm mouse: "\033[" and "\033[M". +! * Also conflicts with the xterm termresponse, skip this if it was +! * requested already. */ + if (!use_xterm_mouse() +- # ifdef FEAT_TERMRESPONSE +- && !did_request_esc_sequence() +- # endif + # ifdef FEAT_GUI + && !gui.in_use + # endif + ) +- { + set_mouse_termcode(KS_DEC_MOUSE, (char_u *)(term_is_8bit(T_NAME) + ? IF_EB("\233", CSI_STR) : IF_EB("\033[", ESC_STR "["))); +- xterm_conflict_mouse = TRUE; +- } + else + del_mouse_termcode(KS_DEC_MOUSE); + # endif + # ifdef FEAT_MOUSE_PTERM +! /* same as the dec mouse */ + if (!use_xterm_mouse() +- # ifdef FEAT_TERMRESPONSE +- && !did_request_esc_sequence() +- # endif + # ifdef FEAT_GUI + && !gui.in_use + # endif + ) +- { + set_mouse_termcode(KS_PTERM_MOUSE, + (char_u *) IF_EB("\033[", ESC_STR "[")); +- xterm_conflict_mouse = TRUE; +- } + else + del_mouse_termcode(KS_PTERM_MOUSE); + # endif + # ifdef FEAT_MOUSE_URXVT +! /* same as the dec mouse */ + if (use_xterm_mouse() == 3 + # ifdef FEAT_GUI + && !gui.in_use +--- 3738,3768 ---- + # endif + + # ifdef FEAT_MOUSE_DEC +! /* Conflicts with xterm mouse: "\033[" and "\033[M" */ + if (!use_xterm_mouse() + # ifdef FEAT_GUI + && !gui.in_use + # endif + ) + set_mouse_termcode(KS_DEC_MOUSE, (char_u *)(term_is_8bit(T_NAME) + ? IF_EB("\233", CSI_STR) : IF_EB("\033[", ESC_STR "["))); + else + del_mouse_termcode(KS_DEC_MOUSE); + # endif + # ifdef FEAT_MOUSE_PTERM +! /* same conflict as the dec mouse */ + if (!use_xterm_mouse() + # ifdef FEAT_GUI + && !gui.in_use + # endif + ) + set_mouse_termcode(KS_PTERM_MOUSE, + (char_u *) IF_EB("\033[", ESC_STR "[")); + else + del_mouse_termcode(KS_PTERM_MOUSE); + # endif + # ifdef FEAT_MOUSE_URXVT +! /* same conflict as the dec mouse */ + if (use_xterm_mouse() == 3 + # ifdef FEAT_GUI + && !gui.in_use +*************** +*** 3794,3801 **** + mch_setmouse(FALSE); + setmouse(); + } +- /* It's OK to request the xterm version for uxterm. */ +- resume_get_esc_sequence(); + } + else + del_mouse_termcode(KS_URXVT_MOUSE); +--- 3778,3783 ---- +*** ../vim-7.4.388/src/term.c 2014-07-09 20:51:04.519583033 +0200 +--- src/term.c 2014-07-30 17:20:54.915518929 +0200 +*************** +*** 153,163 **** + static char_u *vim_tgetstr __ARGS((char *s, char_u **pp)); + #endif /* HAVE_TGETENT */ + +- #if defined(FEAT_TERMRESPONSE) +- static int xt_index_in = 0; +- static int xt_index_out = 0; +- #endif +- + static int detected_8bit = FALSE; /* detected 8-bit terminal */ + + static struct builtin_term builtin_termcaps[] = +--- 153,158 ---- +*************** +*** 3312,3351 **** + } + + #if defined(FEAT_TERMRESPONSE) || defined(PROTO) +- # if defined(UNIX) || defined(PROTO) +- /* +- * Return TRUE when the xterm version was requested or anything else that +- * would send an ESC sequence back to Vim. +- * If not sent yet, prevent it from being sent soon. +- * Used to check whether it is OK to enable checking for DEC mouse codes, +- * which conflict with may xterm ESC sequences. +- */ +- int +- did_request_esc_sequence() +- { +- if (crv_status == CRV_GET) +- crv_status = 0; +- if (u7_status == U7_GET) +- u7_status = 0; +- return crv_status == CRV_SENT || u7_status == U7_SENT +- || xt_index_out > xt_index_in; +- } +- +- /* +- * If requesting the version was disabled in did_request_esc_sequence(), +- * enable it again. +- */ +- void +- resume_get_esc_sequence() +- { +- if (crv_status == 0) +- crv_status = CRV_GET; +- if (u7_status == 0) +- u7_status = U7_GET; +- } +- # endif +- +- + /* + * Request version string (for xterm) when needed. + * Only do this after switching to raw mode, otherwise the result will be +--- 3307,3312 ---- +*************** +*** 3358,3365 **** + * Insert mode. + * On Unix only do it when both output and input are a tty (avoid writing + * request to terminal while reading from a file). +- * Do not do this when a mouse is being detected that starts with the same ESC +- * sequence as the termresponse. + * The result is caught in check_termcode(). + */ + void +--- 3319,3324 ---- +*************** +*** 3373,3379 **** + # ifdef UNIX + && isatty(1) + && isatty(read_cmd_fd) +- && !xterm_conflict_mouse + # endif + && *T_CRV != NUL) + { +--- 3332,3337 ---- +*************** +*** 3742,3749 **** + #if defined(WIN3264) && !defined(FEAT_GUI) + if (s[0] == K_NUL) + { +! STRMOVE(s + 1, s); +! s[1] = 3; + } + #endif + +--- 3700,3707 ---- + #if defined(WIN3264) && !defined(FEAT_GUI) + if (s[0] == K_NUL) + { +! STRMOVE(s + 1, s); +! s[1] = 3; + } + #endif + +*************** +*** 4212,4235 **** + + #ifdef FEAT_TERMRESPONSE + if (key_name[0] == NUL +! /* URXVT mouse uses <ESC>[#;#;#M, but we are matching <ESC>[ */ + || key_name[0] == KS_URXVT_MOUSE +- # ifdef FEAT_MBYTE +- || u7_status == U7_SENT + # endif +! ) + { +! /* Check for some responses from terminal start with "<Esc>[" or +! * CSI. + * +! * - xterm version string: <Esc>[>{x};{vers};{y}c + * Also eat other possible responses to t_RV, rxvt returns + * "<Esc>[?1;2c". Also accept CSI instead of <Esc>[. + * mrxvt has been reported to have "+" in the version. Assume + * the escape sequence ends with a letter or one of "{|}~". + * +! * - cursor position report: <Esc>[{row};{col}R +! * The final byte is 'R'. now it is only used for checking for + * ambiguous-width character state. + */ + p = tp[0] == CSI ? tp + 1 : tp + 2; +--- 4170,4200 ---- + + #ifdef FEAT_TERMRESPONSE + if (key_name[0] == NUL +! /* Mouse codes of DEC, pterm, and URXVT start with <ESC>[. When +! * detecting the start of these mouse codes they might as well be +! * another key code or terminal response. */ +! # ifdef FEAT_MOUSE_DEC +! || key_name[0] == KS_DEC_MOUSE +! # endif +! # ifdef FEAT_MOUSE_PTERM +! || key_name[0] == KS_PTERM_MOUSE +! # endif +! # ifdef FEAT_MOUSE_URXVT + || key_name[0] == KS_URXVT_MOUSE + # endif +! ) + { +! /* Check for some responses from the terminal starting with +! * "<Esc>[" or CSI: + * +! * - Xterm version string: <Esc>[>{x};{vers};{y}c + * Also eat other possible responses to t_RV, rxvt returns + * "<Esc>[?1;2c". Also accept CSI instead of <Esc>[. + * mrxvt has been reported to have "+" in the version. Assume + * the escape sequence ends with a letter or one of "{|}~". + * +! * - Cursor position report: <Esc>[{row};{col}R +! * The final byte must be 'R'. It is used for checking the + * ambiguous-width character state. + */ + p = tp[0] == CSI ? tp + 1 : tp + 2; +*************** +*** 4269,4304 **** + * u7_status is not "sent", it may be from a previous Vim that + * just exited. But not for <S-F3>, it sends something + * similar, check for row and column to make sense. */ +! if (j == 1 && tp[i] == 'R' && row_char == '2' && col >= 2) + { +! char *aw = NULL; + +! LOG_TR("Received U7 status"); +! u7_status = U7_GOT; + # ifdef FEAT_AUTOCMD +! did_cursorhold = TRUE; + # endif +! if (col == 2) +! aw = "single"; +! else if (col == 3) +! aw = "double"; +! if (aw != NULL && STRCMP(aw, p_ambw) != 0) +! { +! /* Setting the option causes a screen redraw. Do that +! * right away if possible, keeping any messages. */ +! set_option_value((char_u *)"ambw", 0L, (char_u *)aw, 0); +! # ifdef DEBUG_TERMRESPONSE + { +! char buf[100]; +! int r = redraw_asap(CLEAR); + +! sprintf(buf, "set 'ambiwidth', redraw_asap(): %d", +! r); +! log_tr(buf); +! } + # else +! redraw_asap(CLEAR); + # endif + } + key_name[0] = (int)KS_EXTRA; + key_name[1] = (int)KE_IGNORE; +--- 4234,4275 ---- + * u7_status is not "sent", it may be from a previous Vim that + * just exited. But not for <S-F3>, it sends something + * similar, check for row and column to make sense. */ +! if (j == 1 && tp[i] == 'R') + { +! if (row_char == '2' && col >= 2) +! { +! char *aw = NULL; + +! LOG_TR("Received U7 status"); +! u7_status = U7_GOT; + # ifdef FEAT_AUTOCMD +! did_cursorhold = TRUE; + # endif +! if (col == 2) +! aw = "single"; +! else if (col == 3) +! aw = "double"; +! if (aw != NULL && STRCMP(aw, p_ambw) != 0) + { +! /* Setting the option causes a screen redraw. Do +! * that right away if possible, keeping any +! * messages. */ +! set_option_value((char_u *)"ambw", 0L, +! (char_u *)aw, 0); +! # ifdef DEBUG_TERMRESPONSE +! { +! char buf[100]; +! int r = redraw_asap(CLEAR); + +! sprintf(buf, +! "set 'ambiwidth', redraw_asap(): %d", +! r); +! log_tr(buf); +! } + # else +! redraw_asap(CLEAR); + # endif ++ } + } + key_name[0] = (int)KS_EXTRA; + key_name[1] = (int)KE_IGNORE; +*************** +*** 4563,4581 **** + return -1; + + /* when mouse reporting is SGR, add 32 to mouse code */ +! if (key_name[0] == KS_SGR_MOUSE) +! mouse_code += 32; + + mouse_col = getdigits(&p) - 1; + if (*p++ != ';') + return -1; + + mouse_row = getdigits(&p) - 1; +! if (key_name[0] == KS_SGR_MOUSE && *p == 'm') + mouse_code |= MOUSE_RELEASE; +! else if (*p != 'M') + return -1; +! p++; + + slen += (int)(p - (tp + slen)); + +--- 4534,4552 ---- + return -1; + + /* when mouse reporting is SGR, add 32 to mouse code */ +! if (key_name[0] == KS_SGR_MOUSE) +! mouse_code += 32; + + mouse_col = getdigits(&p) - 1; + if (*p++ != ';') + return -1; + + mouse_row = getdigits(&p) - 1; +! if (key_name[0] == KS_SGR_MOUSE && *p == 'm') + mouse_code |= MOUSE_RELEASE; +! else if (*p != 'M') + return -1; +! p++; + + slen += (int)(p - (tp + slen)); + +*************** +*** 4592,4598 **** + for (slen2 = slen; slen2 < len; slen2++) + { + if (tp[slen2] == 'M' +! || (key_name[0] == KS_SGR_MOUSE + && tp[slen2] == 'm')) + { + cmd_complete = 1; +--- 4563,4569 ---- + for (slen2 = slen; slen2 < len; slen2++) + { + if (tp[slen2] == 'M' +! || (key_name[0] == KS_SGR_MOUSE + && tp[slen2] == 'm')) + { + cmd_complete = 1; +*************** +*** 5769,5774 **** +--- 5740,5748 ---- + * termcap codes from the terminal itself. + * We get them one by one to avoid a very long response string. + */ ++ static int xt_index_in = 0; ++ static int xt_index_out = 0; ++ + static void + req_codes_from_term() + { +*** ../vim-7.4.388/src/proto/term.pro 2014-07-09 19:13:45.007701718 +0200 +--- src/proto/term.pro 2014-07-30 17:04:40.791525930 +0200 +*************** +*** 34,41 **** + void settmode __ARGS((int tmode)); + void starttermcap __ARGS((void)); + void stoptermcap __ARGS((void)); +- int did_request_esc_sequence __ARGS((void)); +- void resume_get_esc_sequence __ARGS((void)); + void may_req_termresponse __ARGS((void)); + void may_req_ambiguous_char_width __ARGS((void)); + int swapping_screen __ARGS((void)); +--- 34,39 ---- +*** ../vim-7.4.388/src/version.c 2014-07-30 16:44:17.503534723 +0200 +--- src/version.c 2014-07-30 17:03:13.715526556 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 389, + /**/ + +-- +The only way the average employee can speak to an executive is by taking a +second job as a golf caddie. + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.390 b/SOURCES/7.4.390 new file mode 100644 index 0000000..5dcc9c5 --- /dev/null +++ b/SOURCES/7.4.390 @@ -0,0 +1,51 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.390 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.390 +Problem: Advancing pointer over end of a string. +Solution: Init quote character to -1 instead of zero. (Dominique Pelle) +Files: src/misc1.c + + +*** ../vim-7.4.389/src/misc1.c 2014-07-03 22:57:51.299862927 +0200 +--- src/misc1.c 2014-08-06 12:43:33.191291602 +0200 +*************** +*** 5503,5509 **** + char_u *text; + { + char_u *s = skipwhite(text); +! int quote = 0; + + if (*s == '\'' || *s == '"') + { +--- 5503,5509 ---- + char_u *text; + { + char_u *s = skipwhite(text); +! int quote = -1; + + if (*s == '\'' || *s == '"') + { +*** ../vim-7.4.389/src/version.c 2014-07-30 17:21:53.819518506 +0200 +--- src/version.c 2014-08-06 12:44:31.643291182 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 390, + /**/ + +-- +A radioactive cat has eighteen half-lives. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.391 b/SOURCES/7.4.391 new file mode 100644 index 0000000..e2edae0 --- /dev/null +++ b/SOURCES/7.4.391 @@ -0,0 +1,118 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.391 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.391 +Problem: No 'cursorline' highlighting when the cursor is on a line with + diff highlighting. (Benjamin Fritz) +Solution: Combine the highlight attributes. (Christian Brabandt) +Files: src/screen.c + + +*** ../vim-7.4.390/src/screen.c 2014-07-30 16:44:17.499534723 +0200 +--- src/screen.c 2014-08-06 13:14:02.163278457 +0200 +*************** +*** 3702,3708 **** +--- 3702,3713 ---- + char_attr = 0; /* was: hl_attr(HLF_AT); */ + #ifdef FEAT_DIFF + if (diff_hlf != (hlf_T)0) ++ { + char_attr = hl_attr(diff_hlf); ++ if (wp->w_p_cul && lnum == wp->w_cursor.lnum) ++ char_attr = hl_combine_attr(char_attr, ++ hl_attr(HLF_CUL)); ++ } + #endif + p_extra = NULL; + c_extra = ' '; +*************** +*** 3753,3759 **** + #ifdef FEAT_SYN_HL + /* combine 'showbreak' with 'cursorline' */ + if (wp->w_p_cul && lnum == wp->w_cursor.lnum) +! char_attr = hl_combine_attr(char_attr, HLF_CLN); + #endif + } + # endif +--- 3758,3765 ---- + #ifdef FEAT_SYN_HL + /* combine 'showbreak' with 'cursorline' */ + if (wp->w_p_cul && lnum == wp->w_cursor.lnum) +! char_attr = hl_combine_attr(char_attr, +! hl_attr(HLF_CUL)); + #endif + } + # endif +*************** +*** 3931,3936 **** +--- 3937,3944 ---- + && n_extra == 0) + diff_hlf = HLF_CHD; /* changed line */ + line_attr = hl_attr(diff_hlf); ++ if (wp->w_p_cul && lnum == wp->w_cursor.lnum) ++ line_attr = hl_combine_attr(line_attr, hl_attr(HLF_CUL)); + } + #endif + +*************** +*** 4729,4735 **** +--- 4737,4748 ---- + { + diff_hlf = HLF_CHD; + if (attr == 0 || char_attr != attr) ++ { + char_attr = hl_attr(diff_hlf); ++ if (wp->w_p_cul && lnum == wp->w_cursor.lnum) ++ char_attr = hl_combine_attr(char_attr, ++ hl_attr(HLF_CUL)); ++ } + } + # endif + } +*************** +*** 10174,10182 **** + break; + screen_puts_len(NameBuff, len, 0, col, + #if defined(FEAT_SYN_HL) +! hl_combine_attr(attr, hl_attr(HLF_T)) + #else +! attr + #endif + ); + col += len; +--- 10187,10195 ---- + break; + screen_puts_len(NameBuff, len, 0, col, + #if defined(FEAT_SYN_HL) +! hl_combine_attr(attr, hl_attr(HLF_T)) + #else +! attr + #endif + ); + col += len; +*** ../vim-7.4.390/src/version.c 2014-08-06 12:49:06.711289205 +0200 +--- src/version.c 2014-08-06 13:19:19.135276179 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 391, + /**/ + +-- +It's totally unfair to suggest - as many have - that engineers are socially +inept. Engineers simply have different objectives when it comes to social +interaction. + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.392 b/SOURCES/7.4.392 new file mode 100644 index 0000000..48a7328 --- /dev/null +++ b/SOURCES/7.4.392 @@ -0,0 +1,86 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.392 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.392 +Problem: Not easy to detect type of command line window. +Solution: Add the getcmdwintype() function. (Jacob Niehus) +Files: src/eval.c + + +*** ../vim-7.4.391/src/eval.c 2014-07-09 17:51:46.075801693 +0200 +--- src/eval.c 2014-08-06 13:35:59.303268990 +0200 +*************** +*** 554,559 **** +--- 554,560 ---- + static void f_getcmdline __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_getcmdpos __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_getcmdtype __ARGS((typval_T *argvars, typval_T *rettv)); ++ static void f_getcmdwintype __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_getcwd __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_getfontname __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_getfperm __ARGS((typval_T *argvars, typval_T *rettv)); +*************** +*** 7984,7989 **** +--- 7985,7991 ---- + {"getcmdline", 0, 0, f_getcmdline}, + {"getcmdpos", 0, 0, f_getcmdpos}, + {"getcmdtype", 0, 0, f_getcmdtype}, ++ {"getcmdwintype", 0, 0, f_getcmdwintype}, + {"getcurpos", 0, 0, f_getcurpos}, + {"getcwd", 0, 0, f_getcwd}, + {"getfontname", 0, 1, f_getfontname}, +*************** +*** 11503,11508 **** +--- 11505,11530 ---- + } + + /* ++ * "getcmdwintype()" function ++ */ ++ static void ++ f_getcmdwintype(argvars, rettv) ++ typval_T *argvars UNUSED; ++ typval_T *rettv; ++ { ++ rettv->v_type = VAR_STRING; ++ rettv->vval.v_string = NULL; ++ #ifdef FEAT_CMDWIN ++ rettv->vval.v_string = alloc(2); ++ if (rettv->vval.v_string != NULL) ++ { ++ rettv->vval.v_string[0] = cmdwin_type; ++ rettv->vval.v_string[1] = NUL; ++ } ++ #endif ++ } ++ ++ /* + * "getcwd()" function + */ + static void +*** ../vim-7.4.391/src/version.c 2014-08-06 13:20:51.799275513 +0200 +--- src/version.c 2014-08-06 13:34:42.903269539 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 392, + /**/ + +-- +I learned the customs and mannerisms of engineers by observing them, much the +way Jane Goodall learned about the great apes, but without the hassle of +grooming. + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.393 b/SOURCES/7.4.393 new file mode 100644 index 0000000..957ce24 --- /dev/null +++ b/SOURCES/7.4.393 @@ -0,0 +1,1946 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.393 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.393 +Problem: Text drawing on newer MS-Windows systems is suboptimal. Some + multi-byte characters are not displayed, even though the same font + in Notepad can display them. (Srinath Avadhanula) +Solution: Add the 'renderoptions' option to enable Direct-X drawing. (Taro + Muraoka) +Files: runtime/doc/eval.txt, runtime/doc/options.txt, + runtime/doc/various.txt, src/Make_cyg.mak, src/Make_ming.mak, + src/Make_mvc.mak, src/eval.c, src/gui_dwrite.cpp, + src/gui_dwrite.h, src/gui_w32.c, src/gui_w48.c, src/option.c, + src/option.h, src/version.c, src/vim.h, src/proto/gui_w32.pro + + +*** ../vim-7.4.392/runtime/doc/eval.txt 2014-06-25 18:15:18.442838249 +0200 +--- runtime/doc/eval.txt 2014-08-06 14:35:24.871243363 +0200 +*************** +*** 6606,6611 **** +--- 6622,6628 ---- + dialog_gui Compiled with GUI dialog support. + diff Compiled with |vimdiff| and 'diff' support. + digraphs Compiled with support for digraphs. ++ directx Compiled with support for Direct-X and 'renderoptions'. + dnd Compiled with support for the "~ register |quote_~|. + dos16 16 bits DOS version of Vim. + dos32 32 bits DOS (DJGPP) version of Vim. +*************** +*** 6744,6750 **** + writebackup Compiled with 'writebackup' default on. + xfontset Compiled with X fontset support |xfontset|. + xim Compiled with X input method support |xim|. +! xpm_w32 Compiled with pixmap support for Win32. + xsmp Compiled with X session management support. + xsmp_interact Compiled with interactive X session management support. + xterm_clipboard Compiled with support for xterm clipboard. +--- 6761,6769 ---- + writebackup Compiled with 'writebackup' default on. + xfontset Compiled with X fontset support |xfontset|. + xim Compiled with X input method support |xim|. +! xpm Compiled with pixmap support. +! xpm_w32 Compiled with pixmap support for Win32. (Only for +! backward compatibility. Use "xpm" instead.) + xsmp Compiled with X session management support. + xsmp_interact Compiled with interactive X session management support. + xterm_clipboard Compiled with support for xterm clipboard. +*** ../vim-7.4.392/runtime/doc/options.txt 2014-07-02 19:59:35.446375136 +0200 +--- runtime/doc/options.txt 2014-08-06 14:36:59.591242682 +0200 +*************** +*** 5647,5652 **** +--- 5650,5726 ---- + this option at the default "on". Only switch it off when working with + old Vi scripts. + ++ *'renderoptions'* *'rop'* ++ 'renderoptions' 'rop' string (default: empty) ++ global ++ {not in Vi} ++ {only available when compiled with GUI and DIRECTX on ++ MS-Windows} ++ Select a text renderer and set its options. The options depend on the ++ renderer. ++ ++ Syntax: > ++ set rop=type:{renderer}(,{name}:{value})* ++ < ++ Currently, only one optional renderer is available. ++ ++ render behavior ~ ++ directx Vim will draw text using DirectX (DirectWrite). It makes ++ drawn glyphs more beautiful than default GDI. ++ It requires 'encoding' is "utf-8", and only works on ++ MS-Windows Vista or newer version. ++ ++ Options: ++ name meaning type value ~ ++ gamma gamma float 1.0 - 2.2 (maybe) ++ contrast enhancedContrast float (unknown) ++ level clearTypeLevel float (unknown) ++ geom pixelGeometry int 0 - 2 (see below) ++ renmode renderingMode int 0 - 6 (see below) ++ taamode textAntialiasMode int 0 - 3 (see below) ++ ++ See this URL for detail: ++ http://msdn.microsoft.com/en-us/library/dd368190.aspx ++ ++ For geom: structure of a device pixel. ++ 0 - DWRITE_PIXEL_GEOMETRY_FLAT ++ 1 - DWRITE_PIXEL_GEOMETRY_RGB ++ 2 - DWRITE_PIXEL_GEOMETRY_BGR ++ ++ See this URL for detail: ++ http://msdn.microsoft.com/en-us/library/dd368114.aspx ++ ++ For renmode: method of rendering glyphs. ++ 0 - DWRITE_RENDERING_MODE_DEFAULT ++ 1 - DWRITE_RENDERING_MODE_ALIASED ++ 2 - DWRITE_RENDERING_MODE_GDI_CLASSIC ++ 3 - DWRITE_RENDERING_MODE_GDI_NATURAL ++ 4 - DWRITE_RENDERING_MODE_NATURAL ++ 5 - DWRITE_RENDERING_MODE_NATURAL_SYMMETRIC ++ 6 - DWRITE_RENDERING_MODE_OUTLINE ++ ++ See this URL for detail: ++ http://msdn.microsoft.com/en-us/library/dd368118.aspx ++ ++ For taamode: antialiasing mode used for drawing text. ++ 0 - D2D1_TEXT_ANTIALIAS_MODE_DEFAULT ++ 1 - D2D1_TEXT_ANTIALIAS_MODE_CLEARTYPE ++ 2 - D2D1_TEXT_ANTIALIAS_MODE_GRAYSCALE ++ 3 - D2D1_TEXT_ANTIALIAS_MODE_ALIASED ++ ++ See this URL for detail: ++ http://msdn.microsoft.com/en-us/library/dd368170.aspx ++ ++ Example: > ++ set encoding=utf-8 ++ set gfn=Ricty_Diminished:h12:cSHIFTJIS ++ set rop=type:directx ++ < ++ If select a raster font (Courier, Terminal or FixedSys) to ++ 'guifont', it fallbacks to be drawn by GDI automatically. ++ ++ Other render types are currently not supported. ++ + *'report'* + 'report' number (default 2) + global +*** ../vim-7.4.392/runtime/doc/various.txt 2013-08-10 13:25:06.000000000 +0200 +--- runtime/doc/various.txt 2014-08-06 14:37:28.843242472 +0200 +*************** +*** 320,325 **** +--- 337,343 ---- + N *+dialog_con_gui* Support for |:confirm| with GUI and console dialog. + N *+diff* |vimdiff| and 'diff' + N *+digraphs* |digraphs| *E196* ++ m *+directx* Win32 GUI only: DirectX and |'renderoptions'| + *+dnd* Support for DnD into the "~ register |quote_~|. + B *+emacs_tags* |emacs-tags| files + N *+eval* expression evaluation |eval.txt| +*************** +*** 426,431 **** +--- 445,451 ---- + m *+writebackup* |'writebackup'| is default on + m *+xim* X input method |xim| + *+xfontset* X fontset support |xfontset| ++ *+xpm* pixmap support + m *+xpm_w32* Win32 GUI only: pixmap support |w32-xpm-support| + *+xsmp* XSMP (X session management) support + *+xsmp_interact* interactive XSMP (X session management) support +*** ../vim-7.4.392/src/Make_cyg.mak 2013-12-11 15:06:36.000000000 +0100 +--- src/Make_cyg.mak 2014-08-06 14:21:57.455249166 +0200 +*************** +*** 8,13 **** +--- 8,14 ---- + # Cygwin application use the Makefile (just like on Unix). + # + # GUI no or yes: set to yes if you want the GUI version (yes) ++ # DIRECTX no or yes: set to yes if you want use DirectWrite (no) + # PERL define to path to Perl dir to get Perl support (not defined) + # PERL_VER define to version of Perl being used (56) + # DYNAMIC_PERL no or yes: set to yes to load the Perl DLL dynamically (yes) +*************** +*** 88,93 **** +--- 89,98 ---- + ARCH = i386 + endif + ++ ifndef DIRECTX ++ DIRECTX = no ++ endif ++ + ifndef WINVER + WINVER = 0x0500 + endif +*************** +*** 470,475 **** +--- 475,489 ---- + endif + + ############################## ++ ifeq (yes, $(DIRECTX)) ++ # Only allow DIRECTX for a GUI build. ++ DEFINES += -DFEAT_DIRECTX -DDYNAMIC_DIRECTX ++ EXTRA_OBJS += $(OUTDIR)/gui_dwrite.o ++ EXTRA_LIBS += -ld2d1 -ldwrite ++ USE_STDCPLUS = yes ++ endif ++ ++ ############################## + ifdef XPM + # Only allow XPM for a GUI build. + DEFINES += -DFEAT_XPM_W32 +*************** +*** 495,505 **** + DEFINES += -DFEAT_OLE + EXTRA_OBJS += $(OUTDIR)/if_ole.o + EXTRA_LIBS += -loleaut32 +! ifeq (yes, $(STATIC_STDCPLUS)) +! EXTRA_LIBS += -Wl,-Bstatic -lstdc++ -Wl,-Bdynamic +! else +! EXTRA_LIBS += -lstdc++ +! endif + endif + + ############################## +--- 509,515 ---- + DEFINES += -DFEAT_OLE + EXTRA_OBJS += $(OUTDIR)/if_ole.o + EXTRA_LIBS += -loleaut32 +! USE_STDCPLUS = yes + endif + + ############################## +*************** +*** 513,518 **** +--- 523,537 ---- + DIRSLASH = \\ + endif + ++ ############################## ++ ifeq (yes, $(USE_STDCPLUS)) ++ ifeq (yes, $(STATIC_STDCPLUS)) ++ EXTRA_LIBS += -Wl,-Bstatic -lstdc++ -Wl,-Bdynamic ++ else ++ EXTRA_LIBS += -lstdc++ ++ endif ++ endif ++ + #>>>>> end of choices + ########################################################################### + +*************** +*** 643,648 **** +--- 662,670 ---- + $(OUTDIR)/gui_w32.o: gui_w32.c gui_w48.c $(INCL) + $(CC) -c $(CFLAGS) gui_w32.c -o $(OUTDIR)/gui_w32.o + ++ $(OUTDIR)/gui_dwrite.o: gui_dwrite.cpp $(INCL) gui_dwrite.h ++ $(CC) -c $(CFLAGS) gui_dwrite.cpp -o $(OUTDIR)/gui_dwrite.o ++ + $(OUTDIR)/if_cscope.o: if_cscope.c $(INCL) if_cscope.h + $(CC) -c $(CFLAGS) if_cscope.c -o $(OUTDIR)/if_cscope.o + +*** ../vim-7.4.392/src/Make_ming.mak 2014-01-06 15:44:59.000000000 +0100 +--- src/Make_ming.mak 2014-08-06 14:21:57.455249166 +0200 +*************** +*** 31,36 **** +--- 31,38 ---- + OPTIMIZE=MAXSPEED + # set to yes to make gvim, no for vim + GUI=yes ++ # set to yes if you want to use DirectWrite (DirectX) ++ DIRECTX=no + # FEATURES=[TINY | SMALL | NORMAL | BIG | HUGE] + # Set to TINY to make minimal version (few features). + FEATURES=BIG +*************** +*** 456,461 **** +--- 458,471 ---- + endif + endif + ++ # DirectWrite (DirectX) ++ ifeq ($(DIRECTX),yes) ++ # Only allow DirectWrite for a GUI build. ++ ifeq (yes, $(GUI)) ++ DEFINES += -DFEAT_DIRECTX -DDYNAMIC_DIRECTX ++ endif ++ endif ++ + # Only allow XPM for a GUI build. + ifeq (yes, $(GUI)) + +*************** +*** 593,598 **** +--- 603,616 ---- + LIB += -lwsock32 + endif + endif ++ ifeq ($(DIRECTX),yes) ++ # Only allow DIRECTX for a GUI build. ++ ifeq (yes, $(GUI)) ++ OBJ += $(OUTDIR)/gui_dwrite.o ++ LIB += -ld2d1 -ldwrite ++ USE_STDCPLUS = yes ++ endif ++ endif + ifdef XPM + # Only allow XPM for a GUI build. + ifeq (yes, $(GUI)) +*************** +*** 650,660 **** + ifeq (yes, $(OLE)) + LIB += -loleaut32 + OBJ += $(OUTDIR)/if_ole.o +! ifeq (yes, $(STATIC_STDCPLUS)) +! LIB += -Wl,-Bstatic -lstdc++ -Wl,-Bdynamic +! else +! LIB += -lstdc++ +! endif + endif + + ifeq (yes, $(MBYTE)) +--- 668,674 ---- + ifeq (yes, $(OLE)) + LIB += -loleaut32 + OBJ += $(OUTDIR)/if_ole.o +! USE_STDCPLUS = yes + endif + + ifeq (yes, $(MBYTE)) +*************** +*** 678,683 **** +--- 692,705 ---- + DEFINES+=-DDYNAMIC_ICONV + endif + ++ ifeq (yes, $(USE_STDCPLUS)) ++ ifeq (yes, $(STATIC_STDCPLUS)) ++ LIB += -Wl,-Bstatic -lstdc++ -Wl,-Bdynamic ++ else ++ LIB += -lstdc++ ++ endif ++ endif ++ + all: $(TARGET) vimrun.exe xxd/xxd.exe install.exe uninstal.exe GvimExt/gvimext.dll + + vimrun.exe: vimrun.c +*************** +*** 751,756 **** +--- 773,781 ---- + $(OUTDIR)/gui_w32.o: gui_w32.c gui_w48.c $(INCL) + $(CC) -c $(CFLAGS) gui_w32.c -o $(OUTDIR)/gui_w32.o + ++ $(OUTDIR)/gui_dwrite.o: gui_dwrite.cpp $(INCL) gui_dwrite.h ++ $(CC) -c $(CFLAGS) gui_dwrite.cpp -o $(OUTDIR)/gui_dwrite.o ++ + $(OUTDIR)/if_cscope.o: if_cscope.c $(INCL) if_cscope.h + $(CC) -c $(CFLAGS) if_cscope.c -o $(OUTDIR)/if_cscope.o + +*** ../vim-7.4.392/src/Make_mvc.mak 2014-05-22 16:29:03.374353200 +0200 +--- src/Make_mvc.mak 2014-08-06 14:21:57.455249166 +0200 +*************** +*** 24,29 **** +--- 24,32 ---- + # + # GUI interface: GUI=yes (default is no) + # ++ # GUI with DirectWrite(DirectX): DIRECTX=yes ++ # (default is no, requires GUI=yes) ++ # + # OLE interface: OLE=yes (usually with GUI=yes) + # + # Multibyte support: MBYTE=yes (default is no) +*************** +*** 168,173 **** +--- 171,179 ---- + !else + OBJDIR = .\ObjC + !endif ++ !if "$(DIRECTX)" == "yes" ++ OBJDIR = $(OBJDIR)X ++ !endif + !if "$(OLE)" == "yes" + OBJDIR = $(OBJDIR)O + !endif +*************** +*** 292,297 **** +--- 298,310 ---- + NETBEANS_LIB = WSock32.lib + !endif + ++ # DirectWrite(DirectX) ++ !if "$(DIRECTX)" == "yes" ++ DIRECTX_DEFS = -DFEAT_DIRECTX -DDYNAMIC_DIRECTX ++ DIRECTX_INCL = gui_dwrite.h ++ DIRECTX_OBJ = $(OUTDIR)\gui_dwrite.obj ++ !endif ++ + !ifndef XPM + # XPM is not set, use the included xpm files, depending on the architecture. + !if "$(CPU)" == "AMD64" +*************** +*** 642,647 **** +--- 655,666 ---- + SUBSYSTEM = console + !endif + ++ !if "$(GUI)" == "yes" && "$(DIRECTX)" == "yes" ++ CFLAGS = $(CFLAGS) $(DIRECTX_DEFS) ++ GUI_INCL = $(GUI_INCL) $(DIRECTX_INCL) ++ GUI_OBJ = $(GUI_OBJ) $(DIRECTX_OBJ) ++ !endif ++ + # iconv.dll library (dynamically loaded) + !ifndef ICONV + ICONV = yes +*************** +*** 1107,1112 **** +--- 1126,1133 ---- + + $(OUTDIR)/gui_w32.obj: $(OUTDIR) gui_w32.c gui_w48.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_lua.obj: $(OUTDIR) if_lua.c $(INCL) +*** ../vim-7.4.392/src/eval.c 2014-08-06 13:36:56.091268582 +0200 +--- src/eval.c 2014-08-06 14:21:57.459249166 +0200 +*************** +*** 12464,12469 **** +--- 12464,12472 ---- + #ifdef FEAT_DIGRAPHS + "digraphs", + #endif ++ #ifdef FEAT_DIRECTX ++ "directx", ++ #endif + #ifdef FEAT_DND + "dnd", + #endif +*** ../vim-7.4.392/src/gui_dwrite.cpp 2014-08-06 14:49:19.663237363 +0200 +--- src/gui_dwrite.cpp 2014-08-06 14:39:48.775241466 +0200 +*************** +*** 0 **** +--- 1,901 ---- ++ /* vi:set ts=8 sts=4 sw=4 noet: */ ++ /* ++ * Author: MURAOKA Taro <koron.kaoriya@gmail.com> ++ * ++ * Contributors: ++ * - Ken Takata ++ * ++ * Copyright (C) 2013 MURAOKA Taro <koron.kaoriya@gmail.com> ++ * THIS FILE IS DISTRIBUTED UNDER THE VIM LICENSE. ++ */ ++ ++ #define WIN32_LEAN_AND_MEAN ++ ++ #ifndef DYNAMIC_DIRECTX ++ # if WINVER < 0x0600 ++ # error WINVER must be 0x0600 or above to use DirectWrite(DirectX) ++ # endif ++ #endif ++ ++ #include <windows.h> ++ #include <crtdbg.h> ++ #include <assert.h> ++ #include <math.h> ++ #include <d2d1.h> ++ #include <d2d1helper.h> ++ #include <dwrite.h> ++ ++ #include "gui_dwrite.h" ++ ++ #ifdef __MINGW32__ ++ # define __maybenull SAL__maybenull ++ # define __in SAL__in ++ # define __out SAL__out ++ #endif ++ ++ #ifdef DYNAMIC_DIRECTX ++ extern "C" HINSTANCE vimLoadLib(char *name); ++ ++ typedef int (WINAPI *PGETUSERDEFAULTLOCALENAME)(LPWSTR, int); ++ typedef HRESULT (WINAPI *PD2D1CREATEFACTORY)(D2D1_FACTORY_TYPE, ++ REFIID, const D2D1_FACTORY_OPTIONS *, void **); ++ typedef HRESULT (WINAPI *PDWRITECREATEFACTORY)(DWRITE_FACTORY_TYPE, ++ REFIID, IUnknown **); ++ ++ static HINSTANCE hD2D1DLL = NULL; ++ static HINSTANCE hDWriteDLL = NULL; ++ ++ static PGETUSERDEFAULTLOCALENAME pGetUserDefaultLocaleName = NULL; ++ static PD2D1CREATEFACTORY pD2D1CreateFactory = NULL; ++ static PDWRITECREATEFACTORY pDWriteCreateFactory = NULL; ++ ++ #define GetUserDefaultLocaleName (*pGetUserDefaultLocaleName) ++ #define D2D1CreateFactory (*pD2D1CreateFactory) ++ #define DWriteCreateFactory (*pDWriteCreateFactory) ++ ++ static void ++ unload(HINSTANCE &hinst) ++ { ++ if (hinst != NULL) ++ { ++ FreeLibrary(hinst); ++ hinst = NULL; ++ } ++ } ++ #endif // DYNAMIC_DIRECTX ++ ++ template <class T> inline void SafeRelease(T **ppT) ++ { ++ if (*ppT) ++ { ++ (*ppT)->Release(); ++ *ppT = NULL; ++ } ++ } ++ ++ struct GdiTextRendererContext ++ { ++ // const fields. ++ COLORREF color; ++ FLOAT cellWidth; ++ ++ // working fields. ++ FLOAT offsetX; ++ }; ++ ++ static DWRITE_PIXEL_GEOMETRY ++ ToPixelGeometry(int value) ++ { ++ switch (value) ++ { ++ default: ++ case 0: ++ return DWRITE_PIXEL_GEOMETRY_FLAT; ++ case 1: ++ return DWRITE_PIXEL_GEOMETRY_RGB; ++ case 2: ++ return DWRITE_PIXEL_GEOMETRY_BGR; ++ } ++ } ++ ++ static int ++ ToInt(DWRITE_PIXEL_GEOMETRY value) ++ { ++ switch (value) ++ { ++ case DWRITE_PIXEL_GEOMETRY_FLAT: ++ return 0; ++ case DWRITE_PIXEL_GEOMETRY_RGB: ++ return 1; ++ case DWRITE_PIXEL_GEOMETRY_BGR: ++ return 2; ++ default: ++ return -1; ++ } ++ } ++ ++ static DWRITE_RENDERING_MODE ++ ToRenderingMode(int value) ++ { ++ switch (value) ++ { ++ default: ++ case 0: ++ return DWRITE_RENDERING_MODE_DEFAULT; ++ case 1: ++ return DWRITE_RENDERING_MODE_ALIASED; ++ case 2: ++ return DWRITE_RENDERING_MODE_CLEARTYPE_GDI_CLASSIC; ++ case 3: ++ return DWRITE_RENDERING_MODE_CLEARTYPE_GDI_NATURAL; ++ case 4: ++ return DWRITE_RENDERING_MODE_CLEARTYPE_NATURAL; ++ case 5: ++ return DWRITE_RENDERING_MODE_CLEARTYPE_NATURAL_SYMMETRIC; ++ case 6: ++ return DWRITE_RENDERING_MODE_OUTLINE; ++ } ++ } ++ ++ static D2D1_TEXT_ANTIALIAS_MODE ++ ToTextAntialiasMode(int value) ++ { ++ switch (value) ++ { ++ default: ++ case 0: ++ return D2D1_TEXT_ANTIALIAS_MODE_DEFAULT; ++ case 1: ++ return D2D1_TEXT_ANTIALIAS_MODE_CLEARTYPE; ++ case 2: ++ return D2D1_TEXT_ANTIALIAS_MODE_GRAYSCALE; ++ case 3: ++ return D2D1_TEXT_ANTIALIAS_MODE_ALIASED; ++ } ++ } ++ ++ static int ++ ToInt(DWRITE_RENDERING_MODE value) ++ { ++ switch (value) ++ { ++ case DWRITE_RENDERING_MODE_DEFAULT: ++ return 0; ++ case DWRITE_RENDERING_MODE_ALIASED: ++ return 1; ++ case DWRITE_RENDERING_MODE_CLEARTYPE_GDI_CLASSIC: ++ return 2; ++ case DWRITE_RENDERING_MODE_CLEARTYPE_GDI_NATURAL: ++ return 3; ++ case DWRITE_RENDERING_MODE_CLEARTYPE_NATURAL: ++ return 4; ++ case DWRITE_RENDERING_MODE_CLEARTYPE_NATURAL_SYMMETRIC: ++ return 5; ++ case DWRITE_RENDERING_MODE_OUTLINE: ++ return 6; ++ default: ++ return -1; ++ } ++ } ++ ++ class AdjustedGlyphRun : public DWRITE_GLYPH_RUN ++ { ++ private: ++ FLOAT mDelta; ++ FLOAT *mAdjustedAdvances; ++ ++ public: ++ AdjustedGlyphRun( ++ const DWRITE_GLYPH_RUN *glyphRun, ++ FLOAT cellWidth) : ++ DWRITE_GLYPH_RUN(*glyphRun), ++ mDelta(0.0f), ++ mAdjustedAdvances(new FLOAT[glyphRun->glyphCount]) ++ { ++ assert(cellWidth != 0.0f); ++ for (UINT32 i = 0; i < glyphRun->glyphCount; ++i) ++ { ++ FLOAT orig = glyphRun->glyphAdvances[i]; ++ FLOAT adjusted = adjustToCell(orig, cellWidth); ++ mAdjustedAdvances[i] = adjusted; ++ mDelta += adjusted - orig; ++ } ++ glyphAdvances = mAdjustedAdvances; ++ } ++ ++ ~AdjustedGlyphRun(void) ++ { ++ delete[] mAdjustedAdvances; ++ } ++ ++ FLOAT getDelta(void) const ++ { ++ return mDelta; ++ } ++ ++ static FLOAT adjustToCell(FLOAT value, FLOAT cellWidth) ++ { ++ int cellCount = (int)floor(value / cellWidth + 0.5f); ++ if (cellCount < 1) ++ cellCount = 1; ++ return cellCount * cellWidth; ++ } ++ }; ++ ++ class GdiTextRenderer : public IDWriteTextRenderer ++ { ++ public: ++ GdiTextRenderer( ++ IDWriteBitmapRenderTarget* bitmapRenderTarget, ++ IDWriteRenderingParams* renderingParams) : ++ cRefCount_(0), ++ pRenderTarget_(bitmapRenderTarget), ++ pRenderingParams_(renderingParams) ++ { ++ pRenderTarget_->AddRef(); ++ pRenderingParams_->AddRef(); ++ AddRef(); ++ } ++ ++ ~GdiTextRenderer() ++ { ++ SafeRelease(&pRenderTarget_); ++ SafeRelease(&pRenderingParams_); ++ } ++ ++ IFACEMETHOD(IsPixelSnappingDisabled)( ++ __maybenull void* clientDrawingContext, ++ __out BOOL* isDisabled) ++ { ++ *isDisabled = FALSE; ++ return S_OK; ++ } ++ ++ IFACEMETHOD(GetCurrentTransform)( ++ __maybenull void* clientDrawingContext, ++ __out DWRITE_MATRIX* transform) ++ { ++ //forward the render target's transform ++ pRenderTarget_->GetCurrentTransform(transform); ++ return S_OK; ++ } ++ ++ IFACEMETHOD(GetPixelsPerDip)( ++ __maybenull void* clientDrawingContext, ++ __out FLOAT* pixelsPerDip) ++ { ++ *pixelsPerDip = pRenderTarget_->GetPixelsPerDip(); ++ return S_OK; ++ } ++ ++ IFACEMETHOD(DrawGlyphRun)( ++ __maybenull void* clientDrawingContext, ++ FLOAT baselineOriginX, ++ FLOAT baselineOriginY, ++ DWRITE_MEASURING_MODE measuringMode, ++ __in DWRITE_GLYPH_RUN const* glyphRun, ++ __in DWRITE_GLYPH_RUN_DESCRIPTION const* glyphRunDescription, ++ IUnknown* clientDrawingEffect) ++ { ++ HRESULT hr = S_OK; ++ ++ GdiTextRendererContext *context = ++ reinterpret_cast<GdiTextRendererContext*>(clientDrawingContext); ++ ++ AdjustedGlyphRun adjustedGlyphRun(glyphRun, context->cellWidth); ++ ++ // Pass on the drawing call to the render target to do the real work. ++ RECT dirtyRect = {0}; ++ ++ hr = pRenderTarget_->DrawGlyphRun( ++ baselineOriginX + context->offsetX, ++ baselineOriginY, ++ measuringMode, ++ &adjustedGlyphRun, ++ pRenderingParams_, ++ context->color, ++ &dirtyRect); ++ ++ context->offsetX += adjustedGlyphRun.getDelta(); ++ ++ return hr; ++ } ++ ++ IFACEMETHOD(DrawUnderline)( ++ __maybenull void* clientDrawingContext, ++ FLOAT baselineOriginX, ++ FLOAT baselineOriginY, ++ __in DWRITE_UNDERLINE const* underline, ++ IUnknown* clientDrawingEffect) ++ { ++ return E_NOTIMPL; ++ } ++ ++ IFACEMETHOD(DrawStrikethrough)( ++ __maybenull void* clientDrawingContext, ++ FLOAT baselineOriginX, ++ FLOAT baselineOriginY, ++ __in DWRITE_STRIKETHROUGH const* strikethrough, ++ IUnknown* clientDrawingEffect) ++ { ++ return E_NOTIMPL; ++ } ++ ++ IFACEMETHOD(DrawInlineObject)( ++ __maybenull void* clientDrawingContext, ++ FLOAT originX, ++ FLOAT originY, ++ IDWriteInlineObject* inlineObject, ++ BOOL isSideways, ++ BOOL isRightToLeft, ++ IUnknown* clientDrawingEffect) ++ { ++ return E_NOTIMPL; ++ } ++ ++ public: ++ IFACEMETHOD_(unsigned long, AddRef) () ++ { ++ return InterlockedIncrement(&cRefCount_); ++ } ++ ++ IFACEMETHOD_(unsigned long, Release) () ++ { ++ long newCount = InterlockedDecrement(&cRefCount_); ++ ++ if (newCount == 0) ++ { ++ delete this; ++ return 0; ++ } ++ return newCount; ++ } ++ ++ IFACEMETHOD(QueryInterface)( ++ IID const& riid, ++ void** ppvObject) ++ { ++ if (__uuidof(IDWriteTextRenderer) == riid) ++ { ++ *ppvObject = this; ++ } ++ else if (__uuidof(IDWritePixelSnapping) == riid) ++ { ++ *ppvObject = this; ++ } ++ else if (__uuidof(IUnknown) == riid) ++ { ++ *ppvObject = this; ++ } ++ else ++ { ++ *ppvObject = NULL; ++ return E_FAIL; ++ } ++ ++ return S_OK; ++ } ++ ++ private: ++ unsigned long cRefCount_; ++ IDWriteBitmapRenderTarget* pRenderTarget_; ++ IDWriteRenderingParams* pRenderingParams_; ++ }; ++ ++ struct DWriteContext { ++ FLOAT mDpiScaleX; ++ FLOAT mDpiScaleY; ++ bool mDrawing; ++ ++ ID2D1Factory *mD2D1Factory; ++ ++ ID2D1DCRenderTarget *mRT; ++ ID2D1SolidColorBrush *mBrush; ++ ++ IDWriteFactory *mDWriteFactory; ++ IDWriteGdiInterop *mGdiInterop; ++ IDWriteRenderingParams *mRenderingParams; ++ IDWriteTextFormat *mTextFormat; ++ ++ HFONT mLastHFont; ++ DWRITE_FONT_WEIGHT mFontWeight; ++ DWRITE_FONT_STYLE mFontStyle; ++ ++ D2D1_TEXT_ANTIALIAS_MODE mTextAntialiasMode; ++ ++ // METHODS ++ ++ DWriteContext(); ++ ++ virtual ~DWriteContext(); ++ ++ HRESULT SetLOGFONT(const LOGFONTW &logFont, float fontSize); ++ ++ void SetFont(HFONT hFont); ++ ++ void SetFont(const LOGFONTW &logFont); ++ ++ void DrawText(HDC hdc, const WCHAR* text, int len, ++ int x, int y, int w, int h, int cellWidth, COLORREF color); ++ ++ float PixelsToDipsX(int x); ++ ++ float PixelsToDipsY(int y); ++ ++ void SetRenderingParams( ++ const DWriteRenderingParams *params); ++ ++ DWriteRenderingParams *GetRenderingParams( ++ DWriteRenderingParams *params); ++ }; ++ ++ DWriteContext::DWriteContext() : ++ mDpiScaleX(1.f), ++ mDpiScaleY(1.f), ++ mDrawing(false), ++ mD2D1Factory(NULL), ++ mRT(NULL), ++ mBrush(NULL), ++ mDWriteFactory(NULL), ++ mGdiInterop(NULL), ++ mRenderingParams(NULL), ++ mTextFormat(NULL), ++ mLastHFont(NULL), ++ mFontWeight(DWRITE_FONT_WEIGHT_NORMAL), ++ mFontStyle(DWRITE_FONT_STYLE_NORMAL), ++ mTextAntialiasMode(D2D1_TEXT_ANTIALIAS_MODE_DEFAULT) ++ { ++ HRESULT hr; ++ ++ HDC screen = ::GetDC(0); ++ mDpiScaleX = ::GetDeviceCaps(screen, LOGPIXELSX) / 96.0f; ++ mDpiScaleY = ::GetDeviceCaps(screen, LOGPIXELSY) / 96.0f; ++ ::ReleaseDC(0, screen); ++ ++ hr = D2D1CreateFactory(D2D1_FACTORY_TYPE_SINGLE_THREADED, ++ __uuidof(ID2D1Factory), NULL, ++ reinterpret_cast<void**>(&mD2D1Factory)); ++ _RPT2(_CRT_WARN, "D2D1CreateFactory: hr=%p p=%p\n", hr, mD2D1Factory); ++ ++ if (SUCCEEDED(hr)) ++ { ++ D2D1_RENDER_TARGET_PROPERTIES props = { ++ D2D1_RENDER_TARGET_TYPE_DEFAULT, ++ { DXGI_FORMAT_B8G8R8A8_UNORM, D2D1_ALPHA_MODE_IGNORE }, ++ 0, 0, ++ D2D1_RENDER_TARGET_USAGE_NONE, ++ D2D1_FEATURE_LEVEL_DEFAULT ++ }; ++ hr = mD2D1Factory->CreateDCRenderTarget(&props, &mRT); ++ _RPT2(_CRT_WARN, "CreateDCRenderTarget: hr=%p p=%p\n", hr, mRT); ++ } ++ ++ if (SUCCEEDED(hr)) ++ { ++ hr = mRT->CreateSolidColorBrush( ++ D2D1::ColorF(D2D1::ColorF::Black), ++ &mBrush); ++ _RPT2(_CRT_WARN, "CreateSolidColorBrush: hr=%p p=%p\n", hr, mBrush); ++ } ++ ++ if (SUCCEEDED(hr)) ++ { ++ hr = DWriteCreateFactory( ++ DWRITE_FACTORY_TYPE_SHARED, ++ __uuidof(IDWriteFactory), ++ reinterpret_cast<IUnknown**>(&mDWriteFactory)); ++ _RPT2(_CRT_WARN, "DWriteCreateFactory: hr=%p p=%p\n", hr, ++ mDWriteFactory); ++ } ++ ++ if (SUCCEEDED(hr)) ++ { ++ hr = mDWriteFactory->GetGdiInterop(&mGdiInterop); ++ _RPT2(_CRT_WARN, "GetGdiInterop: hr=%p p=%p\n", hr, mGdiInterop); ++ } ++ ++ if (SUCCEEDED(hr)) ++ { ++ hr = mDWriteFactory->CreateRenderingParams(&mRenderingParams); ++ _RPT2(_CRT_WARN, "CreateRenderingParams: hr=%p p=%p\n", hr, ++ mRenderingParams); ++ } ++ } ++ ++ DWriteContext::~DWriteContext() ++ { ++ SafeRelease(&mTextFormat); ++ SafeRelease(&mRenderingParams); ++ SafeRelease(&mGdiInterop); ++ SafeRelease(&mDWriteFactory); ++ SafeRelease(&mBrush); ++ SafeRelease(&mRT); ++ SafeRelease(&mD2D1Factory); ++ } ++ ++ HRESULT ++ DWriteContext::SetLOGFONT(const LOGFONTW &logFont, float fontSize) ++ { ++ // Most of this function is copy from: http://msdn.microsoft.com/en-us/library/windows/desktop/dd941783(v=vs.85).aspx ++ HRESULT hr = S_OK; ++ ++ IDWriteFont *font = NULL; ++ IDWriteFontFamily *fontFamily = NULL; ++ IDWriteLocalizedStrings *localizedFamilyNames = NULL; ++ ++ if (SUCCEEDED(hr)) ++ { ++ hr = mGdiInterop->CreateFontFromLOGFONT(&logFont, &font); ++ } ++ ++ // Get the font family to which this font belongs. ++ if (SUCCEEDED(hr)) ++ { ++ hr = font->GetFontFamily(&fontFamily); ++ } ++ ++ // Get the family names. This returns an object that encapsulates one or ++ // more names with the same meaning but in different languages. ++ if (SUCCEEDED(hr)) ++ { ++ hr = fontFamily->GetFamilyNames(&localizedFamilyNames); ++ } ++ ++ // Get the family name at index zero. If we were going to display the name ++ // we'd want to try to find one that matched the use locale, but for ++ // purposes of creating a text format object any language will do. ++ ++ wchar_t familyName[100]; ++ if (SUCCEEDED(hr)) ++ { ++ hr = localizedFamilyNames->GetString(0, familyName, ++ ARRAYSIZE(familyName)); ++ } ++ ++ if (SUCCEEDED(hr)) ++ { ++ // If no font size was passed in use the lfHeight of the LOGFONT. ++ if (fontSize == 0) ++ { ++ // Convert from pixels to DIPs. ++ fontSize = PixelsToDipsY(logFont.lfHeight); ++ if (fontSize < 0) ++ { ++ // Negative lfHeight represents the size of the em unit. ++ fontSize = -fontSize; ++ } ++ else ++ { ++ // Positive lfHeight represents the cell height (ascent + ++ // descent). ++ DWRITE_FONT_METRICS fontMetrics; ++ font->GetMetrics(&fontMetrics); ++ ++ // Convert the cell height (ascent + descent) from design units ++ // to ems. ++ float cellHeight = static_cast<float>( ++ fontMetrics.ascent + fontMetrics.descent) ++ / fontMetrics.designUnitsPerEm; ++ ++ // Divide the font size by the cell height to get the font em ++ // size. ++ fontSize /= cellHeight; ++ } ++ } ++ } ++ ++ // The text format includes a locale name. Ideally, this would be the ++ // language of the text, which may or may not be the same as the primary ++ // language of the user. However, for our purposes the user locale will do. ++ wchar_t localeName[LOCALE_NAME_MAX_LENGTH]; ++ if (SUCCEEDED(hr)) ++ { ++ if (GetUserDefaultLocaleName(localeName, LOCALE_NAME_MAX_LENGTH) == 0) ++ hr = HRESULT_FROM_WIN32(GetLastError()); ++ } ++ ++ if (SUCCEEDED(hr)) ++ { ++ // Create the text format object. ++ hr = mDWriteFactory->CreateTextFormat( ++ familyName, ++ NULL, // no custom font collection ++ font->GetWeight(), ++ font->GetStyle(), ++ font->GetStretch(), ++ fontSize, ++ localeName, ++ &mTextFormat); ++ } ++ ++ if (SUCCEEDED(hr)) ++ { ++ mFontWeight = static_cast<DWRITE_FONT_WEIGHT>(logFont.lfWeight); ++ mFontStyle = logFont.lfItalic ? DWRITE_FONT_STYLE_ITALIC ++ : DWRITE_FONT_STYLE_NORMAL; ++ } ++ ++ SafeRelease(&localizedFamilyNames); ++ SafeRelease(&fontFamily); ++ SafeRelease(&font); ++ ++ return hr; ++ } ++ ++ void ++ DWriteContext::SetFont(HFONT hFont) ++ { ++ if (mLastHFont != hFont) ++ { ++ LOGFONTW lf; ++ if (GetObjectW(hFont, sizeof(lf), &lf)) ++ { ++ SetFont(lf); ++ mLastHFont = hFont; ++ } ++ } ++ } ++ ++ void ++ DWriteContext::SetFont(const LOGFONTW &logFont) ++ { ++ SafeRelease(&mTextFormat); ++ mLastHFont = NULL; ++ ++ HRESULT hr = SetLOGFONT(logFont, 0.f); ++ ++ if (SUCCEEDED(hr)) ++ hr = mTextFormat->SetTextAlignment(DWRITE_TEXT_ALIGNMENT_LEADING); ++ ++ if (SUCCEEDED(hr)) ++ hr = mTextFormat->SetParagraphAlignment( ++ DWRITE_PARAGRAPH_ALIGNMENT_CENTER); ++ ++ if (SUCCEEDED(hr)) ++ hr = mTextFormat->SetWordWrapping(DWRITE_WORD_WRAPPING_NO_WRAP); ++ } ++ ++ void ++ DWriteContext::DrawText(HDC hdc, const WCHAR* text, int len, ++ int x, int y, int w, int h, int cellWidth, COLORREF color) ++ { ++ HRESULT hr = S_OK; ++ IDWriteBitmapRenderTarget *bmpRT = NULL; ++ ++ // Skip when any fonts are not set. ++ if (mTextFormat == NULL) ++ return; ++ ++ // Check possibility of zero divided error. ++ if (cellWidth == 0 || mDpiScaleX == 0.0f || mDpiScaleY == 0.0f) ++ return; ++ ++ if (SUCCEEDED(hr)) ++ hr = mGdiInterop->CreateBitmapRenderTarget(hdc, w, h, &bmpRT); ++ ++ if (SUCCEEDED(hr)) ++ { ++ IDWriteTextLayout *textLayout = NULL; ++ ++ HDC memdc = bmpRT->GetMemoryDC(); ++ BitBlt(memdc, 0, 0, w, h, hdc, x, y, SRCCOPY); ++ ++ hr = mDWriteFactory->CreateGdiCompatibleTextLayout( ++ text, len, mTextFormat, PixelsToDipsX(w), ++ PixelsToDipsY(h), mDpiScaleX, NULL, TRUE, &textLayout); ++ ++ if (SUCCEEDED(hr)) ++ { ++ DWRITE_TEXT_RANGE textRange = { 0, len }; ++ textLayout->SetFontWeight(mFontWeight, textRange); ++ textLayout->SetFontStyle(mFontStyle, textRange); ++ } ++ ++ if (SUCCEEDED(hr)) ++ { ++ GdiTextRenderer *renderer = new GdiTextRenderer(bmpRT, ++ mRenderingParams); ++ GdiTextRendererContext data = { ++ color, ++ PixelsToDipsX(cellWidth), ++ 0.0f ++ }; ++ textLayout->Draw(&data, renderer, 0, 0); ++ SafeRelease(&renderer); ++ } ++ ++ BitBlt(hdc, x, y, w, h, memdc, 0, 0, SRCCOPY); ++ ++ SafeRelease(&textLayout); ++ } ++ ++ SafeRelease(&bmpRT); ++ } ++ ++ float ++ DWriteContext::PixelsToDipsX(int x) ++ { ++ return x / mDpiScaleX; ++ } ++ ++ float ++ DWriteContext::PixelsToDipsY(int y) ++ { ++ return y / mDpiScaleY; ++ } ++ ++ void ++ DWriteContext::SetRenderingParams( ++ const DWriteRenderingParams *params) ++ { ++ if (mDWriteFactory == NULL) ++ return; ++ ++ IDWriteRenderingParams *renderingParams = NULL; ++ D2D1_TEXT_ANTIALIAS_MODE textAntialiasMode = ++ D2D1_TEXT_ANTIALIAS_MODE_DEFAULT; ++ HRESULT hr; ++ if (params != NULL) ++ { ++ hr = mDWriteFactory->CreateCustomRenderingParams(params->gamma, ++ params->enhancedContrast, params->clearTypeLevel, ++ ToPixelGeometry(params->pixelGeometry), ++ ToRenderingMode(params->renderingMode), &renderingParams); ++ textAntialiasMode = ToTextAntialiasMode(params->textAntialiasMode); ++ } ++ else ++ hr = mDWriteFactory->CreateRenderingParams(&renderingParams); ++ if (SUCCEEDED(hr) && renderingParams != NULL) ++ { ++ SafeRelease(&mRenderingParams); ++ mRenderingParams = renderingParams; ++ mTextAntialiasMode = textAntialiasMode; ++ } ++ } ++ ++ DWriteRenderingParams * ++ DWriteContext::GetRenderingParams( ++ DWriteRenderingParams *params) ++ { ++ if (params != NULL && mRenderingParams != NULL) ++ { ++ params->gamma = mRenderingParams->GetGamma(); ++ params->enhancedContrast = mRenderingParams->GetEnhancedContrast(); ++ params->clearTypeLevel = mRenderingParams->GetClearTypeLevel(); ++ params->pixelGeometry = ToInt(mRenderingParams->GetPixelGeometry()); ++ params->renderingMode = ToInt(mRenderingParams->GetRenderingMode()); ++ params->textAntialiasMode = mTextAntialiasMode; ++ } ++ return params; ++ } ++ ++ //////////////////////////////////////////////////////////////////////////// ++ // PUBLIC C INTERFACES ++ ++ void ++ DWrite_Init(void) ++ { ++ #ifdef DYNAMIC_DIRECTX ++ // Load libraries. ++ hD2D1DLL = vimLoadLib(const_cast<char*>("d2d1.dll")); ++ hDWriteDLL = vimLoadLib(const_cast<char*>("dwrite.dll")); ++ if (hD2D1DLL == NULL || hDWriteDLL == NULL) ++ { ++ DWrite_Final(); ++ return; ++ } ++ // Get address of procedures. ++ pGetUserDefaultLocaleName = (PGETUSERDEFAULTLOCALENAME)GetProcAddress( ++ GetModuleHandle("kernel32.dll"), "GetUserDefaultLocaleName"); ++ pD2D1CreateFactory = (PD2D1CREATEFACTORY)GetProcAddress(hD2D1DLL, ++ "D2D1CreateFactory"); ++ pDWriteCreateFactory = (PDWRITECREATEFACTORY)GetProcAddress(hDWriteDLL, ++ "DWriteCreateFactory"); ++ #endif ++ } ++ ++ void ++ DWrite_Final(void) ++ { ++ #ifdef DYNAMIC_DIRECTX ++ pGetUserDefaultLocaleName = NULL; ++ pD2D1CreateFactory = NULL; ++ pDWriteCreateFactory = NULL; ++ unload(hDWriteDLL); ++ unload(hD2D1DLL); ++ #endif ++ } ++ ++ DWriteContext * ++ DWriteContext_Open(void) ++ { ++ #ifdef DYNAMIC_DIRECTX ++ if (pGetUserDefaultLocaleName == NULL || pD2D1CreateFactory == NULL ++ || pDWriteCreateFactory == NULL) ++ return NULL; ++ #endif ++ return new DWriteContext(); ++ } ++ ++ void ++ DWriteContext_BeginDraw(DWriteContext *ctx) ++ { ++ if (ctx != NULL && ctx->mRT != NULL) ++ { ++ ctx->mRT->BeginDraw(); ++ ctx->mRT->SetTransform(D2D1::IdentityMatrix()); ++ ctx->mDrawing = true; ++ } ++ } ++ ++ void ++ DWriteContext_BindDC(DWriteContext *ctx, HDC hdc, RECT *rect) ++ { ++ if (ctx != NULL && ctx->mRT != NULL) ++ { ++ ctx->mRT->BindDC(hdc, rect); ++ ctx->mRT->SetTextAntialiasMode(ctx->mTextAntialiasMode); ++ } ++ } ++ ++ void ++ DWriteContext_SetFont(DWriteContext *ctx, HFONT hFont) ++ { ++ if (ctx != NULL) ++ { ++ ctx->SetFont(hFont); ++ } ++ } ++ ++ void ++ DWriteContext_DrawText( ++ DWriteContext *ctx, ++ HDC hdc, ++ const WCHAR* text, ++ int len, ++ int x, ++ int y, ++ int w, ++ int h, ++ int cellWidth, ++ COLORREF color) ++ { ++ if (ctx != NULL) ++ ctx->DrawText(hdc, text, len, x, y, w, h, cellWidth, color); ++ } ++ ++ void ++ DWriteContext_EndDraw(DWriteContext *ctx) ++ { ++ if (ctx != NULL && ctx->mRT != NULL) ++ { ++ ctx->mRT->EndDraw(); ++ ctx->mDrawing = false; ++ } ++ } ++ ++ void ++ DWriteContext_Close(DWriteContext *ctx) ++ { ++ delete ctx; ++ } ++ ++ void ++ DWriteContext_SetRenderingParams( ++ DWriteContext *ctx, ++ const DWriteRenderingParams *params) ++ { ++ if (ctx != NULL) ++ ctx->SetRenderingParams(params); ++ } ++ ++ DWriteRenderingParams * ++ DWriteContext_GetRenderingParams( ++ DWriteContext *ctx, ++ DWriteRenderingParams *params) ++ { ++ if (ctx != NULL) ++ return ctx->GetRenderingParams(params); ++ else ++ return NULL; ++ } +*** ../vim-7.4.392/src/gui_dwrite.h 2014-08-06 14:49:19.667237363 +0200 +--- src/gui_dwrite.h 2014-08-06 14:21:57.459249166 +0200 +*************** +*** 0 **** +--- 1,85 ---- ++ /* vi:set ts=8 sts=4 sw=4 noet: */ ++ /* ++ * Author: MURAOKA Taro <koron.kaoriya@gmail.com> ++ * ++ * Contributors: ++ * - Ken Takata ++ * ++ * Copyright (C) 2013 MURAOKA Taro <koron.kaoriya@gmail.com> ++ * THIS FILE IS DISTRIBUTED UNDER THE VIM LICENSE. ++ */ ++ ++ #ifndef GUI_DWRITE_H ++ #define GUI_DWRITE_H ++ ++ #ifdef __cplusplus ++ extern "C" { ++ #endif ++ ++ typedef struct DWriteContext DWriteContext; ++ ++ typedef struct DWriteRenderingParams { ++ float gamma; ++ float enhancedContrast; ++ float clearTypeLevel; ++ /* ++ * pixelGeometry: ++ * 0 - DWRITE_PIXEL_GEOMETRY_FLAT ++ * 1 - DWRITE_PIXEL_GEOMETRY_RGB ++ * 2 - DWRITE_PIXEL_GEOMETRY_BGR ++ */ ++ int pixelGeometry; ++ /* ++ * renderingMode: ++ * 0 - DWRITE_RENDERING_MODE_DEFAULT ++ * 1 - DWRITE_RENDERING_MODE_ALIASED ++ * 2 - DWRITE_RENDERING_MODE_CLEARTYPE_GDI_CLASSIC ++ * 3 - DWRITE_RENDERING_MODE_CLEARTYPE_GDI_NATURAL ++ * 4 - DWRITE_RENDERING_MODE_CLEARTYPE_NATURAL ++ * 5 - DWRITE_RENDERING_MODE_CLEARTYPE_NATURAL_SYMMETRIC ++ * 6 - DWRITE_RENDERING_MODE_OUTLINE ++ */ ++ int renderingMode; ++ /* ++ * antialiasMode: ++ * 0 - D2D1_TEXT_ANTIALIAS_MODE_DEFAULT ++ * 1 - D2D1_TEXT_ANTIALIAS_MODE_CLEARTYPE ++ * 2 - D2D1_TEXT_ANTIALIAS_MODE_GRAYSCALE ++ * 3 - D2D1_TEXT_ANTIALIAS_MODE_ALIASED ++ */ ++ int textAntialiasMode; ++ } DWriteRenderingParams; ++ ++ void DWrite_Init(void); ++ void DWrite_Final(void); ++ ++ DWriteContext *DWriteContext_Open(void); ++ void DWriteContext_BeginDraw(DWriteContext *ctx); ++ void DWriteContext_BindDC(DWriteContext *ctx, HDC hdc, RECT *rect); ++ void DWriteContext_SetFont(DWriteContext *ctx, HFONT hFont); ++ void DWriteContext_DrawText( ++ DWriteContext *ctx, ++ HDC hdc, ++ const WCHAR* text, ++ int len, ++ int x, ++ int y, ++ int w, ++ int h, ++ int cellWidth, ++ COLORREF color); ++ void DWriteContext_EndDraw(DWriteContext *ctx); ++ void DWriteContext_Close(DWriteContext *ctx); ++ ++ void DWriteContext_SetRenderingParams( ++ DWriteContext *ctx, ++ const DWriteRenderingParams *params); ++ ++ DWriteRenderingParams *DWriteContext_GetRenderingParams( ++ DWriteContext *ctx, ++ DWriteRenderingParams *params); ++ ++ #ifdef __cplusplus ++ } ++ #endif ++ #endif/*GUI_DWRITE_H*/ +*** ../vim-7.4.392/src/gui_w32.c 2013-08-04 16:15:37.000000000 +0200 +--- src/gui_w32.c 2014-08-06 14:45:43.495238916 +0200 +*************** +*** 25,30 **** +--- 25,169 ---- + + #include "vim.h" + ++ #if defined(FEAT_DIRECTX) ++ # include "gui_dwrite.h" ++ #endif ++ ++ #if defined(FEAT_DIRECTX) || defined(PROTO) ++ static DWriteContext *s_dwc = NULL; ++ static int s_directx_enabled = 0; ++ static int s_directx_load_attempted = 0; ++ # define IS_ENABLE_DIRECTX() (s_directx_enabled && s_dwc != NULL) ++ ++ int ++ directx_enabled(void) ++ { ++ if (s_dwc != NULL) ++ return 1; ++ else if (s_directx_load_attempted) ++ return 0; ++ /* load DirectX */ ++ DWrite_Init(); ++ s_directx_load_attempted = 1; ++ s_dwc = DWriteContext_Open(); ++ return s_dwc != NULL ? 1 : 0; ++ } ++ #endif ++ ++ #if defined(FEAT_RENDER_OPTIONS) || defined(PROTO) ++ int ++ gui_mch_set_rendering_options(char_u *s) ++ { ++ #ifdef FEAT_DIRECTX ++ int retval = FAIL; ++ char_u *p, *q; ++ ++ int dx_enable = 0; ++ int dx_flags = 0; ++ float dx_gamma = 0.0f; ++ float dx_contrast = 0.0f; ++ float dx_level = 0.0f; ++ int dx_geom = 0; ++ int dx_renmode = 0; ++ int dx_taamode = 0; ++ ++ /* parse string as rendering options. */ ++ for (p = s; p != NULL && *p != NUL; ) ++ { ++ char_u item[256]; ++ char_u name[128]; ++ char_u value[128]; ++ ++ copy_option_part(&p, item, sizeof(item), ","); ++ if (p == NULL) ++ break; ++ q = &item[0]; ++ copy_option_part(&q, name, sizeof(name), ":"); ++ if (q == NULL) ++ return FAIL; ++ copy_option_part(&q, value, sizeof(value), ":"); ++ ++ if (STRCMP(name, "type") == 0) ++ { ++ if (STRCMP(value, "directx") == 0) ++ dx_enable = 1; ++ else ++ return FAIL; ++ } ++ else if (STRCMP(name, "gamma") == 0) ++ { ++ dx_flags |= 1 << 0; ++ dx_gamma = (float)atof(value); ++ } ++ else if (STRCMP(name, "contrast") == 0) ++ { ++ dx_flags |= 1 << 1; ++ dx_contrast = (float)atof(value); ++ } ++ else if (STRCMP(name, "level") == 0) ++ { ++ dx_flags |= 1 << 2; ++ dx_level = (float)atof(value); ++ } ++ else if (STRCMP(name, "geom") == 0) ++ { ++ dx_flags |= 1 << 3; ++ dx_geom = atoi(value); ++ if (dx_geom < 0 || dx_geom > 2) ++ return FAIL; ++ } ++ else if (STRCMP(name, "renmode") == 0) ++ { ++ dx_flags |= 1 << 4; ++ dx_renmode = atoi(value); ++ if (dx_renmode < 0 || dx_renmode > 6) ++ return FAIL; ++ } ++ else if (STRCMP(name, "taamode") == 0) ++ { ++ dx_flags |= 1 << 5; ++ dx_taamode = atoi(value); ++ if (dx_taamode < 0 || dx_taamode > 3) ++ return FAIL; ++ } ++ else ++ return FAIL; ++ } ++ ++ /* Enable DirectX/DirectWrite */ ++ if (dx_enable) ++ { ++ if (!directx_enabled()) ++ return FAIL; ++ DWriteContext_SetRenderingParams(s_dwc, NULL); ++ if (dx_flags) ++ { ++ DWriteRenderingParams param; ++ DWriteContext_GetRenderingParams(s_dwc, ¶m); ++ if (dx_flags & (1 << 0)) ++ param.gamma = dx_gamma; ++ if (dx_flags & (1 << 1)) ++ param.enhancedContrast = dx_contrast; ++ if (dx_flags & (1 << 2)) ++ param.clearTypeLevel = dx_level; ++ if (dx_flags & (1 << 3)) ++ param.pixelGeometry = dx_geom; ++ if (dx_flags & (1 << 4)) ++ param.renderingMode = dx_renmode; ++ if (dx_flags & (1 << 5)) ++ param.textAntialiasMode = dx_taamode; ++ DWriteContext_SetRenderingParams(s_dwc, ¶m); ++ } ++ } ++ s_directx_enabled = dx_enable; ++ ++ return OK; ++ #else ++ return FAIL; ++ #endif ++ } ++ #endif ++ + /* + * These are new in Windows ME/XP, only defined in recent compilers. + */ +*************** +*** 1624,1629 **** +--- 1763,1773 ---- + set_vim_var_nr(VV_WINDOWID, HandleToLong(s_hwnd)); + #endif + ++ #ifdef FEAT_RENDER_OPTIONS ++ if (p_rop) ++ (void)gui_mch_set_rendering_options(p_rop); ++ #endif ++ + theend: + /* Display any pending error messages */ + display_errors(); +*************** +*** 1695,1703 **** + + /* compute the size of the outside of the window */ + win_width = width + (GetSystemMetrics(SM_CXFRAME) + +! GetSystemMetrics(SM_CXPADDEDBORDER)) * 2; + win_height = height + (GetSystemMetrics(SM_CYFRAME) + +! GetSystemMetrics(SM_CXPADDEDBORDER)) * 2 + + GetSystemMetrics(SM_CYCAPTION) + #ifdef FEAT_MENU + + gui_mswin_get_menu_height(FALSE) +--- 1839,1847 ---- + + /* compute the size of the outside of the window */ + win_width = width + (GetSystemMetrics(SM_CXFRAME) + +! GetSystemMetrics(SM_CXPADDEDBORDER)) * 2; + win_height = height + (GetSystemMetrics(SM_CYFRAME) + +! GetSystemMetrics(SM_CXPADDEDBORDER)) * 2 + + GetSystemMetrics(SM_CYCAPTION) + #ifdef FEAT_MENU + + gui_mswin_get_menu_height(FALSE) +*************** +*** 2239,2244 **** +--- 2383,2391 ---- + #endif + HPEN hpen, old_pen; + int y; ++ #ifdef FEAT_DIRECTX ++ int font_is_ttf_or_vector = 0; ++ #endif + + #ifndef MSWIN16_FASTTEXT + /* +*************** +*** 2326,2331 **** +--- 2473,2492 ---- + SetTextColor(s_hdc, gui.currFgColor); + SelectFont(s_hdc, gui.currFont); + ++ #ifdef FEAT_DIRECTX ++ if (IS_ENABLE_DIRECTX()) ++ { ++ TEXTMETRIC tm; ++ ++ GetTextMetrics(s_hdc, &tm); ++ if (tm.tmPitchAndFamily & (TMPF_TRUETYPE | TMPF_VECTOR)) ++ { ++ font_is_ttf_or_vector = 1; ++ DWriteContext_SetFont(s_dwc, (HFONT)gui.currFont); ++ } ++ } ++ #endif ++ + if (pad_size != Columns || padding == NULL || padding[0] != gui.char_width) + { + vim_free(padding); +*************** +*** 2360,2365 **** +--- 2521,2534 ---- + if (text[n] >= 0x80) + break; + ++ #if defined(FEAT_DIRECTX) ++ /* Quick hack to enable DirectWrite. To use DirectWrite (antialias), it is ++ * required that unicode drawing routine, currently. So this forces it ++ * enabled. */ ++ if (enc_utf8 && IS_ENABLE_DIRECTX()) ++ n = 0; /* Keep n < len, to enter block for unicode. */ ++ #endif ++ + /* Check if the Unicode buffer exists and is big enough. Create it + * with the same length as the multi-byte string, the number of wide + * characters is always equal or smaller. */ +*************** +*** 2418,2425 **** + i += utfc_ptr2len_len(text + i, len - i); + ++clen; + } +! ExtTextOutW(s_hdc, TEXT_X(col), TEXT_Y(row), +! foptions, pcliprect, unicodebuf, wlen, unicodepdy); + len = cells; /* used for underlining */ + } + else if ((enc_codepage > 0 && (int)GetACP() != enc_codepage) || enc_latin9) +--- 2587,2603 ---- + i += utfc_ptr2len_len(text + i, len - i); + ++clen; + } +! #if defined(FEAT_DIRECTX) +! if (IS_ENABLE_DIRECTX() && font_is_ttf_or_vector) +! { +! DWriteContext_DrawText(s_dwc, s_hdc, unicodebuf, wlen, +! TEXT_X(col), TEXT_Y(row), FILL_X(cells), FILL_Y(1), +! gui.char_width, gui.currFgColor); +! } +! else +! #endif +! ExtTextOutW(s_hdc, TEXT_X(col), TEXT_Y(row), +! foptions, pcliprect, unicodebuf, wlen, unicodepdy); + len = cells; /* used for underlining */ + } + else if ((enc_codepage > 0 && (int)GetACP() != enc_codepage) || enc_latin9) +*************** +*** 2549,2562 **** + + *screen_w = workarea_rect.right - workarea_rect.left + - (GetSystemMetrics(SM_CXFRAME) + +! GetSystemMetrics(SM_CXPADDEDBORDER)) * 2; + + /* FIXME: dirty trick: Because the gui_get_base_height() doesn't include + * the menubar for MSwin, we subtract it from the screen height, so that + * the window size can be made to fit on the screen. */ + *screen_h = workarea_rect.bottom - workarea_rect.top + - (GetSystemMetrics(SM_CYFRAME) + +! GetSystemMetrics(SM_CXPADDEDBORDER)) * 2 + - GetSystemMetrics(SM_CYCAPTION) + #ifdef FEAT_MENU + - gui_mswin_get_menu_height(FALSE) +--- 2727,2740 ---- + + *screen_w = workarea_rect.right - workarea_rect.left + - (GetSystemMetrics(SM_CXFRAME) + +! GetSystemMetrics(SM_CXPADDEDBORDER)) * 2; + + /* FIXME: dirty trick: Because the gui_get_base_height() doesn't include + * the menubar for MSwin, we subtract it from the screen height, so that + * the window size can be made to fit on the screen. */ + *screen_h = workarea_rect.bottom - workarea_rect.top + - (GetSystemMetrics(SM_CYFRAME) + +! GetSystemMetrics(SM_CXPADDEDBORDER)) * 2 + - GetSystemMetrics(SM_CYCAPTION) + #ifdef FEAT_MENU + - gui_mswin_get_menu_height(FALSE) +*************** +*** 3188,3200 **** + GetWindowRect(s_hwnd, &rect); + maxDialogWidth = rect.right - rect.left + - (GetSystemMetrics(SM_CXFRAME) + +! GetSystemMetrics(SM_CXPADDEDBORDER)) * 2; + if (maxDialogWidth < DLG_MIN_MAX_WIDTH) + maxDialogWidth = DLG_MIN_MAX_WIDTH; + + maxDialogHeight = rect.bottom - rect.top + - (GetSystemMetrics(SM_CYFRAME) + +! GetSystemMetrics(SM_CXPADDEDBORDER)) * 4 + - GetSystemMetrics(SM_CYCAPTION); + if (maxDialogHeight < DLG_MIN_MAX_HEIGHT) + maxDialogHeight = DLG_MIN_MAX_HEIGHT; +--- 3366,3378 ---- + GetWindowRect(s_hwnd, &rect); + maxDialogWidth = rect.right - rect.left + - (GetSystemMetrics(SM_CXFRAME) + +! GetSystemMetrics(SM_CXPADDEDBORDER)) * 2; + if (maxDialogWidth < DLG_MIN_MAX_WIDTH) + maxDialogWidth = DLG_MIN_MAX_WIDTH; + + maxDialogHeight = rect.bottom - rect.top + - (GetSystemMetrics(SM_CYFRAME) + +! GetSystemMetrics(SM_CXPADDEDBORDER)) * 4 + - GetSystemMetrics(SM_CYCAPTION); + if (maxDialogHeight < DLG_MIN_MAX_HEIGHT) + maxDialogHeight = DLG_MIN_MAX_HEIGHT; +*************** +*** 3351,3361 **** + /* Restrict the size to a maximum. Causes a scrollbar to show up. */ + if (dlgheight > maxDialogHeight) + { +! msgheight = msgheight - (dlgheight - maxDialogHeight); +! dlgheight = maxDialogHeight; +! scroll_flag = WS_VSCROLL; +! /* Make sure scrollbar doesn't appear in the middle of the dialog */ +! messageWidth = dlgwidth - DLG_ICON_WIDTH - 3 * dlgPaddingX; + } + + add_word(PixelToDialogY(dlgheight)); +--- 3529,3539 ---- + /* Restrict the size to a maximum. Causes a scrollbar to show up. */ + if (dlgheight > maxDialogHeight) + { +! msgheight = msgheight - (dlgheight - maxDialogHeight); +! dlgheight = maxDialogHeight; +! scroll_flag = WS_VSCROLL; +! /* Make sure scrollbar doesn't appear in the middle of the dialog */ +! messageWidth = dlgwidth - DLG_ICON_WIDTH - 3 * dlgPaddingX; + } + + add_word(PixelToDialogY(dlgheight)); +*** ../vim-7.4.392/src/gui_w48.c 2014-03-23 15:12:29.923264336 +0100 +--- src/gui_w48.c 2014-08-06 14:21:57.463249166 +0200 +*************** +*** 2785,2790 **** +--- 2785,2794 ---- + + out_flush(); /* make sure all output has been processed */ + (void)BeginPaint(hwnd, &ps); ++ #if defined(FEAT_DIRECTX) ++ if (IS_ENABLE_DIRECTX()) ++ DWriteContext_BeginDraw(s_dwc); ++ #endif + + #ifdef FEAT_MBYTE + /* prevent multi-byte characters from misprinting on an invalid +*************** +*** 2800,2808 **** +--- 2804,2823 ---- + #endif + + if (!IsRectEmpty(&ps.rcPaint)) ++ { ++ #if defined(FEAT_DIRECTX) ++ if (IS_ENABLE_DIRECTX()) ++ DWriteContext_BindDC(s_dwc, s_hdc, &ps.rcPaint); ++ #endif + gui_redraw(ps.rcPaint.left, ps.rcPaint.top, + ps.rcPaint.right - ps.rcPaint.left + 1, + ps.rcPaint.bottom - ps.rcPaint.top + 1); ++ } ++ ++ #if defined(FEAT_DIRECTX) ++ if (IS_ENABLE_DIRECTX()) ++ DWriteContext_EndDraw(s_dwc); ++ #endif + EndPaint(hwnd, &ps); + } + } +*************** +*** 3043,3048 **** +--- 3058,3069 ---- + void + gui_mch_exit(int rc) + { ++ #if defined(FEAT_DIRECTX) ++ DWriteContext_Close(s_dwc); ++ DWrite_Final(); ++ s_dwc = NULL; ++ #endif ++ + ReleaseDC(s_textArea, s_hdc); + DeleteObject(s_brush); + +*** ../vim-7.4.392/src/option.c 2014-06-25 14:44:04.458358774 +0200 +--- src/option.c 2014-08-06 14:33:24.503244228 +0200 +*************** +*** 2124,2129 **** +--- 2124,2138 ---- + {"remap", NULL, P_BOOL|P_VI_DEF, + (char_u *)&p_remap, PV_NONE, + {(char_u *)TRUE, (char_u *)0L} SCRIPTID_INIT}, ++ {"renderoptions", "rop", P_STRING|P_COMMA|P_RCLR|P_VI_DEF, ++ #ifdef FEAT_RENDER_OPTIONS ++ (char_u *)&p_rop, PV_NONE, ++ {(char_u *)"", (char_u *)0L} ++ #else ++ (char_u *)NULL, PV_NONE, ++ {(char_u *)NULL, (char_u *)0L} ++ #endif ++ SCRIPTID_INIT}, + {"report", NULL, P_NUM|P_VI_DEF, + (char_u *)&p_report, PV_NONE, + {(char_u *)2L, (char_u *)0L} SCRIPTID_INIT}, +*************** +*** 6999,7004 **** +--- 7008,7021 ---- + } + #endif + ++ #if defined(FEAT_RENDER_OPTIONS) ++ else if (varp == &p_rop && gui.in_use) ++ { ++ if (!gui_mch_set_rendering_options(p_rop)) ++ errmsg = e_invarg; ++ } ++ #endif ++ + /* Options that are a list of flags. */ + else + { +*** ../vim-7.4.392/src/option.h 2014-06-25 14:39:35.110348584 +0200 +--- src/option.h 2014-08-06 14:23:25.419248534 +0200 +*************** +*** 655,660 **** +--- 655,663 ---- + #endif + EXTERN int p_remap; /* 'remap' */ + EXTERN long p_re; /* 'regexpengine' */ ++ #ifdef FEAT_RENDER_OPTIONS ++ EXTERN char_u *p_rop; /* 'renderoptions' */ ++ #endif + EXTERN long p_report; /* 'report' */ + #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX) + EXTERN long p_pvh; /* 'previewheight' */ +*** ../vim-7.4.392/src/version.c 2014-08-06 13:36:56.091268582 +0200 +--- src/version.c 2014-08-06 14:29:39.183245847 +0200 +*************** +*** 189,194 **** +--- 189,201 ---- + #else + "-digraphs", + #endif ++ #ifdef FEAT_GUI_W32 ++ # ifdef FEAT_DIRECTX ++ "+directx", ++ # else ++ "-directx", ++ # endif ++ #endif + #ifdef FEAT_DND + "+dnd", + #else +*** ../vim-7.4.392/src/vim.h 2014-04-02 19:54:58.275599459 +0200 +--- src/vim.h 2014-08-06 14:21:57.467249166 +0200 +*************** +*** 134,139 **** +--- 134,146 ---- + # endif + #endif + ++ /* Check support for rendering options */ ++ #ifdef FEAT_GUI ++ # if defined(FEAT_DIRECTX) ++ # define FEAT_RENDER_OPTIONS ++ # endif ++ #endif ++ + /* Visual Studio 2005 has 'deprecated' many of the standard CRT functions */ + #if _MSC_VER >= 1400 + # define _CRT_SECURE_NO_DEPRECATE +*** ../vim-7.4.392/src/proto/gui_w32.pro 2013-08-10 13:37:36.000000000 +0200 +--- src/proto/gui_w32.pro 2014-08-06 14:33:04.155244374 +0200 +*************** +*** 1,4 **** +--- 1,6 ---- + /* gui_w32.c */ ++ int directx_enabled __ARGS((void)); ++ int gui_mch_set_rendering_options __ARGS((char_u *s)); + void gui_mch_set_blinking __ARGS((long wait, long on, long off)); + void gui_mch_stop_blink __ARGS((void)); + void gui_mch_start_blink __ARGS((void)); +*** ../vim-7.4.392/src/version.c 2014-08-06 13:36:56.091268582 +0200 +--- src/version.c 2014-08-06 14:29:39.183245847 +0200 +*************** +*** 736,737 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 393, + /**/ + +-- +A consultant is a person who takes your money and annoys your employees while +tirelessly searching for the best way to extend the consulting contract. + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.394 b/SOURCES/7.4.394 new file mode 100644 index 0000000..fbe199c --- /dev/null +++ b/SOURCES/7.4.394 @@ -0,0 +1,56 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.394 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.394 (after 7.4.393) +Problem: When using DirectX last italic character is incomplete. +Solution: Add one to the number of cells. (Ken Takata) +Files: src/gui_w32.c + + +*** ../vim-7.4.393/src/gui_w32.c 2014-08-06 14:52:05.043236174 +0200 +--- src/gui_w32.c 2014-08-06 16:45:56.927187071 +0200 +*************** +*** 2590,2597 **** + #if defined(FEAT_DIRECTX) + if (IS_ENABLE_DIRECTX() && font_is_ttf_or_vector) + { + DWriteContext_DrawText(s_dwc, s_hdc, unicodebuf, wlen, +! TEXT_X(col), TEXT_Y(row), FILL_X(cells), FILL_Y(1), + gui.char_width, gui.currFgColor); + } + else +--- 2590,2598 ---- + #if defined(FEAT_DIRECTX) + if (IS_ENABLE_DIRECTX() && font_is_ttf_or_vector) + { ++ /* Add one to "cells" for italics. */ + DWriteContext_DrawText(s_dwc, s_hdc, unicodebuf, wlen, +! TEXT_X(col), TEXT_Y(row), FILL_X(cells + 1), FILL_Y(1), + gui.char_width, gui.currFgColor); + } + else +*** ../vim-7.4.393/src/version.c 2014-08-06 14:52:05.047236174 +0200 +--- src/version.c 2014-08-06 16:46:54.279186658 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 394, + /**/ + +-- +The average life of an organization chart is six months. You can safely +ignore any order from your boss that would take six months to complete. + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.395 b/SOURCES/7.4.395 new file mode 100644 index 0000000..943b44e --- /dev/null +++ b/SOURCES/7.4.395 @@ -0,0 +1,99 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.395 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.395 (after 7.4.355) +Problem: C indent is wrong below an if with wrapped condition followed by + curly braces. (Trevor Powell) +Solution: Make a copy of tryposBrace. +Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok + + +*** ../vim-7.4.394/src/misc1.c 2014-08-06 12:49:06.711289205 +0200 +--- src/misc1.c 2014-08-06 17:35:45.003165594 +0200 +*************** +*** 6995,7000 **** +--- 6995,7001 ---- + char_u *linecopy; + pos_T *trypos; + pos_T *tryposBrace = NULL; ++ pos_T tryposBraceCopy; + pos_T our_paren_pos; + char_u *start; + int start_brace; +*************** +*** 7532,7538 **** +--- 7533,7543 ---- + /* + * We are inside braces, there is a { before this line at the position + * stored in tryposBrace. ++ * Make a copy of tryposBrace, it may point to pos_copy inside ++ * find_start_brace(), which may be changed somewhere. + */ ++ tryposBraceCopy = *tryposBrace; ++ tryposBrace = &tryposBraceCopy; + trypos = tryposBrace; + ourscope = trypos->lnum; + start = ml_get(ourscope); +*** ../vim-7.4.394/src/testdir/test3.in 2014-07-03 22:57:51.299862927 +0200 +--- src/testdir/test3.in 2014-08-06 17:19:41.099172522 +0200 +*************** +*** 464,469 **** +--- 464,477 ---- + asdfasdf + } + ++ { ++ for ( int i = 0; ++ i < 10; i++ ) ++ { ++ } ++ i = 0; ++ } ++ + class bob + { + int foo() {return 1;} +*** ../vim-7.4.394/src/testdir/test3.ok 2014-07-03 22:57:51.299862927 +0200 +--- src/testdir/test3.ok 2014-08-06 17:20:11.867172301 +0200 +*************** +*** 452,457 **** +--- 452,465 ---- + asdfasdf + } + ++ { ++ for ( int i = 0; ++ i < 10; i++ ) ++ { ++ } ++ i = 0; ++ } ++ + class bob + { + int foo() {return 1;} +*** ../vim-7.4.394/src/version.c 2014-08-06 16:49:51.203185387 +0200 +--- src/version.c 2014-08-06 17:43:44.243162150 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 395, + /**/ + +-- +An operatingsystem is just a name you give to the rest of bloating +idiosyncratic machine-based-features you left out of your editor. + (author unknown) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.396 b/SOURCES/7.4.396 new file mode 100644 index 0000000..47b9a0c --- /dev/null +++ b/SOURCES/7.4.396 @@ -0,0 +1,291 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.396 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.396 +Problem: When 'clipboard' is "unnamed", :g/pat/d is very slow. (Praful) +Solution: Only set the clipboard after the last delete. (Christian Brabandt) +Files: src/ex_cmds.c, src/ex_cmds2.c, src/ex_docmd.c, src/globals.h, + src/ops.c, src/proto/ui.pro, src/ui.c + + +*** ../vim-7.4.395/src/ex_cmds.c 2014-07-09 21:17:59.755550204 +0200 +--- src/ex_cmds.c 2014-08-06 18:06:37.931152276 +0200 +*************** +*** 5514,5520 **** +--- 5514,5528 ---- + smsg((char_u *)_("Pattern not found: %s"), pat); + } + else ++ { ++ #ifdef FEAT_CLIPBOARD ++ start_global_changes(); ++ #endif + global_exe(cmd); ++ #ifdef FEAT_CLIPBOARD ++ end_global_changes(); ++ #endif ++ } + + ml_clearmarked(); /* clear rest of the marks */ + vim_regfree(regmatch.regprog); +*** ../vim-7.4.395/src/ex_cmds2.c 2014-04-05 19:44:36.903160723 +0200 +--- src/ex_cmds2.c 2014-08-06 18:05:07.563152926 +0200 +*************** +*** 2464,2469 **** +--- 2464,2472 ---- + * great speed improvement. */ + save_ei = au_event_disable(",Syntax"); + #endif ++ #ifdef FEAT_CLIPBOARD ++ start_global_changes(); ++ #endif + + if (eap->cmdidx == CMD_windo + || eap->cmdidx == CMD_tabdo +*************** +*** 2591,2596 **** +--- 2594,2602 ---- + curbuf->b_fname, TRUE, curbuf); + } + #endif ++ #ifdef FEAT_CLIPBOARD ++ end_global_changes(); ++ #endif + } + + /* +*************** +*** 2750,2757 **** + * used. + * Returns OK when at least one match found, FAIL otherwise. + * +! * If "name" is NULL calls callback for each entry in runtimepath. Cookie is +! * passed by reference in this case, setting it to NULL indicates that callback + * has done its job. + */ + int +--- 2756,2763 ---- + * used. + * Returns OK when at least one match found, FAIL otherwise. + * +! * If "name" is NULL calls callback for each entry in runtimepath. Cookie is +! * passed by reference in this case, setting it to NULL indicates that callback + * has done its job. + */ + int +*** ../vim-7.4.395/src/ex_docmd.c 2014-06-17 17:48:21.780628008 +0200 +--- src/ex_docmd.c 2014-08-06 18:05:07.563152926 +0200 +*************** +*** 11534,11539 **** +--- 11534,11543 ---- + { + linenr_T lnum; + ++ #ifdef FEAT_CLIPBOARD ++ start_global_changes(); ++ #endif ++ + /* First set the marks for all lines closed/open. */ + for (lnum = eap->line1; lnum <= eap->line2; ++lnum) + if (hasFolding(lnum, NULL, NULL) == (eap->cmdidx == CMD_folddoclosed)) +*************** +*** 11542,11546 **** +--- 11546,11553 ---- + /* Execute the command on the marked lines. */ + global_exe(eap->arg); + ml_clearmarked(); /* clear rest of the marks */ ++ #ifdef FEAT_CLIPBOARD ++ end_global_changes(); ++ #endif + } + #endif +*** ../vim-7.4.395/src/globals.h 2014-07-30 17:21:53.815518506 +0200 +--- src/globals.h 2014-08-06 18:05:07.563152926 +0200 +*************** +*** 533,538 **** +--- 533,540 ---- + EXTERN int clip_autoselectml INIT(= FALSE); + EXTERN int clip_html INIT(= FALSE); + EXTERN regprog_T *clip_exclude_prog INIT(= NULL); ++ EXTERN int clip_did_set_selection INIT(= TRUE); ++ EXTERN int clip_unnamed_saved INIT(= 0); + #endif + + /* +*** ../vim-7.4.395/src/ops.c 2014-06-25 14:39:35.106348584 +0200 +--- src/ops.c 2014-08-06 18:05:07.563152926 +0200 +*************** +*** 1597,1605 **** + { + /* If no reg. specified, and "unnamed" or "unnamedplus" is in 'clipboard', + * use '*' or '+' reg, respectively. "unnamedplus" prevails. */ +! if (*rp == 0 && clip_unnamed != 0) +! *rp = ((clip_unnamed & CLIP_UNNAMED_PLUS) && clip_plus.available) + ? '+' : '*'; + if (!clip_star.available && *rp == '*') + *rp = 0; + if (!clip_plus.available && *rp == '+') +--- 1597,1611 ---- + { + /* If no reg. specified, and "unnamed" or "unnamedplus" is in 'clipboard', + * use '*' or '+' reg, respectively. "unnamedplus" prevails. */ +! if (*rp == 0 && (clip_unnamed != 0 || clip_unnamed_saved != 0)) +! { +! if (clip_unnamed != 0) +! *rp = ((clip_unnamed & CLIP_UNNAMED_PLUS) && clip_plus.available) +! ? '+' : '*'; +! else +! *rp = ((clip_unnamed_saved & CLIP_UNNAMED_PLUS) && clip_plus.available) + ? '+' : '*'; ++ } + if (!clip_star.available && *rp == '*') + *rp = 0; + if (!clip_plus.available && *rp == '+') +*************** +*** 3203,3209 **** + if (clip_star.available + && (curr == &(y_regs[STAR_REGISTER]) + || (!deleting && oap->regname == 0 +! && (clip_unnamed & CLIP_UNNAMED)))) + { + if (curr != &(y_regs[STAR_REGISTER])) + /* Copy the text from register 0 to the clipboard register. */ +--- 3209,3215 ---- + if (clip_star.available + && (curr == &(y_regs[STAR_REGISTER]) + || (!deleting && oap->regname == 0 +! && ((clip_unnamed | clip_unnamed_saved) & CLIP_UNNAMED)))) + { + if (curr != &(y_regs[STAR_REGISTER])) + /* Copy the text from register 0 to the clipboard register. */ +*************** +*** 3224,3230 **** + if (clip_plus.available + && (curr == &(y_regs[PLUS_REGISTER]) + || (!deleting && oap->regname == 0 +! && (clip_unnamed & CLIP_UNNAMED_PLUS)))) + { + if (curr != &(y_regs[PLUS_REGISTER])) + /* Copy the text from register 0 to the clipboard register. */ +--- 3230,3237 ---- + if (clip_plus.available + && (curr == &(y_regs[PLUS_REGISTER]) + || (!deleting && oap->regname == 0 +! && ((clip_unnamed | clip_unnamed_saved) & +! CLIP_UNNAMED_PLUS)))) + { + if (curr != &(y_regs[PLUS_REGISTER])) + /* Copy the text from register 0 to the clipboard register. */ +*** ../vim-7.4.395/src/proto/ui.pro 2013-08-10 13:37:29.000000000 +0200 +--- src/proto/ui.pro 2014-08-06 18:05:07.563152926 +0200 +*************** +*** 14,19 **** +--- 14,21 ---- + void clip_update_selection __ARGS((VimClipboard *clip)); + void clip_own_selection __ARGS((VimClipboard *cbd)); + void clip_lose_selection __ARGS((VimClipboard *cbd)); ++ void start_global_changes __ARGS((void)); ++ void end_global_changes __ARGS((void)); + void clip_auto_select __ARGS((void)); + int clip_isautosel_star __ARGS((void)); + int clip_isautosel_plus __ARGS((void)); +*** ../vim-7.4.395/src/ui.c 2014-06-25 14:39:35.114348584 +0200 +--- src/ui.c 2014-08-06 18:13:13.475149434 +0200 +*************** +*** 558,563 **** +--- 558,608 ---- + } + + /* ++ * Save and restore clip_unnamed before doing possibly many changes. This ++ * prevents accessing the clipboard very often which might slow down Vim ++ * considerably. ++ */ ++ ++ /* ++ * Save clip_unnamed and reset it. ++ */ ++ void ++ start_global_changes() ++ { ++ clip_unnamed_saved = clip_unnamed; ++ ++ if (clip_did_set_selection) ++ { ++ clip_unnamed = FALSE; ++ clip_did_set_selection = FALSE; ++ } ++ } ++ ++ /* ++ * Restore clip_unnamed and set the selection when needed. ++ */ ++ void ++ end_global_changes() ++ { ++ if (!clip_did_set_selection) ++ { ++ clip_did_set_selection = TRUE; ++ clip_unnamed = clip_unnamed_saved; ++ if (clip_unnamed & CLIP_UNNAMED) ++ { ++ clip_own_selection(&clip_star); ++ clip_gen_set_selection(&clip_star); ++ } ++ if (clip_unnamed & CLIP_UNNAMED_PLUS) ++ { ++ clip_own_selection(&clip_plus); ++ clip_gen_set_selection(&clip_plus); ++ } ++ } ++ clip_unnamed_saved = FALSE; ++ } ++ ++ /* + * Called when Visual mode is ended: update the selection. + */ + void +*************** +*** 1428,1433 **** +--- 1473,1487 ---- + clip_gen_set_selection(cbd) + VimClipboard *cbd; + { ++ if (!clip_did_set_selection) ++ { ++ /* Updating postponed, so that accessing the system clipboard won't ++ * hang Vim when accessing it many times (e.g. on a :g comand). */ ++ if (cbd == &clip_plus && (clip_unnamed_saved & CLIP_UNNAMED_PLUS)) ++ return; ++ else if (cbd == &clip_star && (clip_unnamed_saved & CLIP_UNNAMED)) ++ return; ++ } + #ifdef FEAT_XCLIPBOARD + # ifdef FEAT_GUI + if (gui.in_use) +*** ../vim-7.4.395/src/version.c 2014-08-06 17:44:09.867161966 +0200 +--- src/version.c 2014-08-06 18:04:47.359153071 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 396, + /**/ + +-- +You have heard the saying that if you put a thousand monkeys in a room with a +thousand typewriters and waited long enough, eventually you would have a room +full of dead monkeys. + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.397 b/SOURCES/7.4.397 new file mode 100644 index 0000000..4d70ca6 --- /dev/null +++ b/SOURCES/7.4.397 @@ -0,0 +1,150 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.397 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.397 +Problem: Matchparen only uses the topmost syntax item. +Solution: Go through the syntax stack to find items. (James McCoy) + Also use getcurpos() when possible. +Files: runtime/plugin/matchparen.vim + + +*** ../vim-7.4.396/runtime/plugin/matchparen.vim 2014-06-17 17:48:21.772628007 +0200 +--- runtime/plugin/matchparen.vim 2014-08-06 19:02:04.967128364 +0200 +*************** +*** 1,6 **** + " Vim plugin for showing matching parens + " Maintainer: Bram Moolenaar <Bram@vim.org> +! " Last Change: 2014 Jun 17 + + " Exit quickly when: + " - this plugin was already loaded (or disabled) +--- 1,6 ---- + " Vim plugin for showing matching parens + " Maintainer: Bram Moolenaar <Bram@vim.org> +! " Last Change: 2014 Jul 19 + + " Exit quickly when: + " - this plugin was already loaded (or disabled) +*************** +*** 54,67 **** + let c_col = col('.') + let before = 0 + +! let c = getline(c_lnum)[c_col - 1] + let plist = split(&matchpairs, '.\zs[:,]') + let i = index(plist, c) + if i < 0 + " not found, in Insert mode try character before the cursor + if c_col > 1 && (mode() == 'i' || mode() == 'R') + let before = 1 +! let c = getline(c_lnum)[c_col - 2] + let i = index(plist, c) + endif + if i < 0 +--- 54,68 ---- + let c_col = col('.') + let before = 0 + +! let text = getline(c_lnum) +! let c = text[c_col - 1] + let plist = split(&matchpairs, '.\zs[:,]') + let i = index(plist, c) + if i < 0 + " not found, in Insert mode try character before the cursor + if c_col > 1 && (mode() == 'i' || mode() == 'R') + let before = 1 +! let c = text[c_col - 2] + let i = index(plist, c) + endif + if i < 0 +*************** +*** 87,100 **** + " Find the match. When it was just before the cursor move it there for a + " moment. + if before > 0 +! let save_cursor = winsaveview() + call cursor(c_lnum, c_col - before) + endif + +! " When not in a string or comment ignore matches inside them. + " We match "escape" for special items, such as lispEscapeSpecial. +! let s_skip ='synIDattr(synID(line("."), col("."), 0), "name") ' . +! \ '=~? "string\\|character\\|singlequote\\|escape\\|comment"' + execute 'if' s_skip '| let s_skip = 0 | endif' + + " Limit the search to lines visible in the window. +--- 88,114 ---- + " Find the match. When it was just before the cursor move it there for a + " moment. + if before > 0 +! let has_getcurpos = exists("*getcurpos") +! if has_getcurpos +! " getcurpos() is more efficient but doesn't exist before 7.4.313. +! let save_cursor = getcurpos() +! else +! let save_cursor = winsaveview() +! endif + call cursor(c_lnum, c_col - before) + endif + +! " Build an expression that detects whether the current cursor position is in +! " certain syntax types (string, comment, etc.), for use as searchpairpos()'s +! " skip argument. + " We match "escape" for special items, such as lispEscapeSpecial. +! let s_skip = '!empty(filter(map(synstack(line("."), col(".")), ''synIDattr(v:val, "name")''), ' . +! \ '''v:val =~? "string\\|character\\|singlequote\\|escape\\|comment"''))' +! " If executing the expression determines that the cursor is currently in +! " one of the syntax types, then we want searchpairpos() to find the pair +! " within those syntax types (i.e., not skip). Otherwise, the cursor is +! " outside of the syntax types and s_skip should keep its value so we skip any +! " matching pair inside the syntax types. + execute 'if' s_skip '| let s_skip = 0 | endif' + + " Limit the search to lines visible in the window. +*************** +*** 147,153 **** + endtry + + if before > 0 +! call winrestview(save_cursor) + endif + + " If a match is found setup match highlighting. +--- 161,171 ---- + endtry + + if before > 0 +! if has_getcurpos +! call setpos('.', save_cursor) +! else +! call winrestview(save_cursor) +! endif + endif + + " If a match is found setup match highlighting. +*** ../vim-7.4.396/src/version.c 2014-08-06 18:17:03.475147780 +0200 +--- src/version.c 2014-08-06 19:06:44.627126354 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 397, + /**/ + +-- +Often you're less important than your furniture. If you think about it, you +can get fired but your furniture stays behind, gainfully employed at the +company that didn't need _you_ anymore. + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.398 b/SOURCES/7.4.398 new file mode 100644 index 0000000..e710505 --- /dev/null +++ b/SOURCES/7.4.398 @@ -0,0 +1,52 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.398 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.398 (after 7.4.393) +Problem: Gcc error for the argument of InterlockedIncrement() and + InterlockedDecrement(). (Axel Bender) +Solution: Remove "unsigned" from the cRefCount_ declaration. +Files: src/gui_dwrite.cpp + + +*** ../vim-7.4.397/src/gui_dwrite.cpp 2014-08-06 14:52:05.043236174 +0200 +--- src/gui_dwrite.cpp 2014-08-06 18:39:01.611138306 +0200 +*************** +*** 377,383 **** + } + + private: +! unsigned long cRefCount_; + IDWriteBitmapRenderTarget* pRenderTarget_; + IDWriteRenderingParams* pRenderingParams_; + }; +--- 377,383 ---- + } + + private: +! long cRefCount_; + IDWriteBitmapRenderTarget* pRenderTarget_; + IDWriteRenderingParams* pRenderingParams_; + }; +*** ../vim-7.4.397/src/version.c 2014-08-06 19:08:33.563125571 +0200 +--- src/version.c 2014-08-07 13:54:40.162639943 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 398, + /**/ + +-- +A)bort, R)etry, D)o it right this time + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.400 b/SOURCES/7.4.400 new file mode 100644 index 0000000..9c922a3 --- /dev/null +++ b/SOURCES/7.4.400 @@ -0,0 +1,69 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.400 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.400 +Problem: List of distributed files is incomplete. +Solution: Add recently added files. +Files: Filelist + + +*** ../vim-7.4.399/Filelist 2014-05-13 13:52:34.817605451 +0200 +--- Filelist 2014-08-10 13:43:31.612781775 +0200 +*************** +*** 11,16 **** +--- 11,18 ---- + src/blowfish.c \ + src/buffer.c \ + src/charset.c \ ++ src/crypt.c \ ++ src/crypt_zip.c \ + src/diff.c \ + src/digraph.c \ + src/edit.c \ +*************** +*** 103,108 **** +--- 105,112 ---- + src/proto/blowfish.pro \ + src/proto/buffer.pro \ + src/proto/charset.pro \ ++ src/proto/crypt.pro \ ++ src/proto/crypt_zip.pro \ + src/proto/diff.pro \ + src/proto/digraph.pro \ + src/proto/edit.pro \ +*************** +*** 289,294 **** +--- 293,300 ---- + src/dosinst.h \ + src/glbl_ime.cpp \ + src/glbl_ime.h \ ++ src/gui_dwrite.cpp \ ++ src/gui_dwrite.h \ + src/gui_w16.c \ + src/gui_w32.c \ + src/gui_w48.c \ +*** ../vim-7.4.399/src/version.c 2014-08-10 13:34:59.064785459 +0200 +--- src/version.c 2014-08-10 13:45:45.800780810 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 400, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +17. You turn on your intercom when leaving the room so you can hear if new + e-mail arrives. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.401 b/SOURCES/7.4.401 new file mode 100644 index 0000000..408f33a --- /dev/null +++ b/SOURCES/7.4.401 @@ -0,0 +1,357 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.401 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.401 (after 7.4.399) +Problem: Can't build on MS-Windows. +Solution: Include the new files in all the Makefiles. +Files: src/Make_bc3.mak, src/Make_bc5.mak, src/Make_cyg.mak, + src/Make_dice.mak, src/Make_djg.mak, src/Make_ivc.mak, + src/Make_manx.mak, src/Make_ming.mak, src/Make_morph.mak, + src/Make_mvc.mak, src/Make_os2.mak, src/Make_sas.mak, + Make_vms.mms + + +*** ../vim-7.4.400/src/Make_bc3.mak 2010-05-18 20:27:58.000000000 +0200 +--- src/Make_bc3.mak 2014-08-10 16:20:20.068714153 +0200 +*************** +*** 54,59 **** +--- 54,61 ---- + blowfish.obj \ + buffer.obj \ + charset.obj \ ++ crypt.obj \ ++ crypt_zip.obj \ + diff.obj \ + digraph.obj \ + edit.obj \ +*** ../vim-7.4.400/src/Make_bc5.mak 2014-01-10 18:16:00.000000000 +0100 +--- src/Make_bc5.mak 2014-08-10 16:20:39.684714012 +0200 +*************** +*** 580,585 **** +--- 580,587 ---- + $(OBJDIR)\blowfish.obj \ + $(OBJDIR)\buffer.obj \ + $(OBJDIR)\charset.obj \ ++ $(OBJDIR)\crypt.obj \ ++ $(OBJDIR)\crypt_zip.obj \ + $(OBJDIR)\diff.obj \ + $(OBJDIR)\digraph.obj \ + $(OBJDIR)\edit.obj \ +*** ../vim-7.4.400/src/Make_cyg.mak 2014-08-06 14:52:05.039236174 +0200 +--- src/Make_cyg.mak 2014-08-10 16:30:48.656709635 +0200 +*************** +*** 1,6 **** + # + # Makefile for VIM on Win32, using Cygnus gcc +! # Last updated by Dan Sharp. Last Change: 2013 Dec 11 + # + # Also read INSTALLpc.txt! + # +--- 1,7 ---- + # + # Makefile for VIM on Win32, using Cygnus gcc +! # Updated by Dan Sharp. +! # Last Change: 2014 Aug 10 + # + # Also read INSTALLpc.txt! + # +*************** +*** 546,551 **** +--- 547,554 ---- + $(OUTDIR)/blowfish.o \ + $(OUTDIR)/buffer.o \ + $(OUTDIR)/charset.o \ ++ $(OUTDIR)/crypt.o \ ++ $(OUTDIR)/crypt_zip.o \ + $(OUTDIR)/diff.o \ + $(OUTDIR)/digraph.o \ + $(OUTDIR)/edit.o \ +*** ../vim-7.4.400/src/Make_dice.mak 2010-05-18 20:29:00.000000000 +0200 +--- src/Make_dice.mak 2014-08-10 16:21:53.740713479 +0200 +*************** +*** 29,34 **** +--- 29,36 ---- + blowfish.c \ + buffer.c \ + charset.c \ ++ crypt.c \ ++ crypt_zip.c \ + diff.c \ + digraph.c \ + edit.c \ +*************** +*** 75,80 **** +--- 77,84 ---- + OBJ = o/blowfish.o \ + o/buffer.o \ + o/charset.o \ ++ o/crypt.o \ ++ o/crypt_zip.o \ + o/diff.o \ + o/digraph.o \ + o/edit.o \ +*************** +*** 143,148 **** +--- 147,156 ---- + + o/charset.o: charset.c $(SYMS) + ++ o/crypt.o: crypt.c $(SYMS) ++ ++ o/crypt_zip.o: crypt_zip.c $(SYMS) ++ + o/diff.o: diff.c $(SYMS) + + o/digraph.o: digraph.c $(SYMS) +*** ../vim-7.4.400/src/Make_djg.mak 2010-05-18 20:29:18.000000000 +0200 +--- src/Make_djg.mak 2014-08-10 16:22:13.084713340 +0200 +*************** +*** 22,27 **** +--- 22,29 ---- + obj/blowfish.o \ + obj/buffer.o \ + obj/charset.o \ ++ obj/crypt.o \ ++ obj/crypt_zip.o \ + obj/diff.o \ + obj/digraph.o \ + obj/edit.o \ +*** ../vim-7.4.400/src/Make_ivc.mak 2013-02-26 14:18:19.000000000 +0100 +--- src/Make_ivc.mak 2014-08-10 16:22:46.268713102 +0200 +*************** +*** 213,218 **** +--- 213,220 ---- + "$(INTDIR)/blowfish.obj" \ + "$(INTDIR)/buffer.obj" \ + "$(INTDIR)/charset.obj" \ ++ "$(INTDIR)/crypt.obj" \ ++ "$(INTDIR)/crypt_zip.obj" \ + "$(INTDIR)/diff.obj" \ + "$(INTDIR)/digraph.obj" \ + "$(INTDIR)/edit.obj" \ +*************** +*** 339,344 **** +--- 341,354 ---- + # End Source File + # Begin Source File + ++ SOURCE=.\crypt.c ++ # End Source File ++ # Begin Source File ++ ++ SOURCE=.\crypt_zip.c ++ # End Source File ++ # Begin Source File ++ + SOURCE=.\diff.c + # End Source File + # Begin Source File +*** ../vim-7.4.400/src/Make_manx.mak 2010-05-18 20:30:54.000000000 +0200 +--- src/Make_manx.mak 2014-08-10 16:23:43.648712689 +0200 +*************** +*** 37,42 **** +--- 37,44 ---- + SRC = blowfish.c \ + buffer.c \ + charset.c \ ++ crypt.c \ ++ crypt_zip.c \ + diff.c \ + digraph.c \ + edit.c \ +*************** +*** 85,90 **** +--- 87,94 ---- + OBJ = obj/blowfish.o \ + obj/buffer.o \ + obj/charset.o \ ++ obj/crypt.o \ ++ obj/crypt_zip.o \ + obj/diff.o \ + obj/digraph.o \ + obj/edit.o \ +*************** +*** 131,136 **** +--- 135,142 ---- + PRO = proto/blowfish.pro \ + proto/buffer.pro \ + proto/charset.pro \ ++ proto/crypt.pro \ ++ proto/crypt_zip.pro \ + proto/diff.pro \ + proto/digraph.pro \ + proto/edit.pro \ +*************** +*** 227,232 **** +--- 233,244 ---- + obj/charset.o: charset.c + $(CCSYM) $@ charset.c + ++ obj/crypt.o: crypt.c ++ $(CCSYM) $@ crypt.c ++ ++ obj/crypt_zip.o: crypt_zip.c ++ $(CCSYM) $@ crypt_zip.c ++ + obj/diff.o: diff.c + $(CCSYM) $@ diff.c + +*** ../vim-7.4.400/src/Make_ming.mak 2014-08-06 14:52:05.039236174 +0200 +--- src/Make_ming.mak 2014-08-10 16:24:07.064712521 +0200 +*************** +*** 517,522 **** +--- 517,524 ---- + $(OUTDIR)/blowfish.o \ + $(OUTDIR)/buffer.o \ + $(OUTDIR)/charset.o \ ++ $(OUTDIR)/crypt.o \ ++ $(OUTDIR)/crypt_zip.o \ + $(OUTDIR)/diff.o \ + $(OUTDIR)/digraph.o \ + $(OUTDIR)/edit.o \ +*** ../vim-7.4.400/src/Make_morph.mak 2010-05-18 20:31:26.000000000 +0200 +--- src/Make_morph.mak 2014-08-10 16:24:39.900712285 +0200 +*************** +*** 27,32 **** +--- 27,34 ---- + SRC = blowfish.c \ + buffer.c \ + charset.c \ ++ crypt.c \ ++ crypt_zip.c \ + diff.c \ + digraph.c \ + edit.c \ +*** ../vim-7.4.400/src/Make_mvc.mak 2014-08-06 14:52:05.039236174 +0200 +--- src/Make_mvc.mak 2014-08-10 16:25:19.752711999 +0200 +*************** +*** 547,552 **** +--- 547,554 ---- + $(OUTDIR)\blowfish.obj \ + $(OUTDIR)\buffer.obj \ + $(OUTDIR)\charset.obj \ ++ $(OUTDIR)\crypt.obj \ ++ $(OUTDIR)\crypt_zip.obj \ + $(OUTDIR)\diff.obj \ + $(OUTDIR)\digraph.obj \ + $(OUTDIR)\edit.obj \ +*************** +*** 1092,1097 **** +--- 1094,1103 ---- + + $(OUTDIR)/charset.obj: $(OUTDIR) charset.c $(INCL) + ++ $(OUTDIR)/crypt.obj: $(OUTDIR) crypt.c $(INCL) ++ ++ $(OUTDIR)/crypt_zip.obj: $(OUTDIR) crypt_zip.c $(INCL) ++ + $(OUTDIR)/diff.obj: $(OUTDIR) diff.c $(INCL) + + $(OUTDIR)/digraph.obj: $(OUTDIR) digraph.c $(INCL) +*************** +*** 1278,1283 **** +--- 1284,1291 ---- + proto/blowfish.pro \ + proto/buffer.pro \ + proto/charset.pro \ ++ proto/crypt.pro \ ++ proto/crypt_zip.pro \ + proto/diff.pro \ + proto/digraph.pro \ + proto/edit.pro \ +*** ../vim-7.4.400/src/Make_os2.mak 2010-05-18 20:32:32.000000000 +0200 +--- src/Make_os2.mak 2014-08-10 16:25:47.928711796 +0200 +*************** +*** 42,47 **** +--- 42,49 ---- + blowfish.o \ + buffer.o \ + charset.o \ ++ crypt.o \ ++ crypt_zip.o \ + diff.o \ + digraph.o \ + edit.o \ +*************** +*** 117,122 **** +--- 119,126 ---- + blowfish.o: blowfish.c $(INCL) + buffer.o: buffer.c $(INCL) + charset.o: charset.c $(INCL) ++ crypt.o: crypt.c $(INCL) ++ crypt_zip.o: crypt_zip.c $(INCL) + diff.o: diff.c $(INCL) + digraph.o: digraph.c $(INCL) + edit.o: edit.c $(INCL) +*** ../vim-7.4.400/src/Make_sas.mak 2013-05-06 04:06:04.000000000 +0200 +--- src/Make_sas.mak 2014-08-10 16:26:41.536711411 +0200 +*************** +*** 92,97 **** +--- 92,99 ---- + blowfish.c \ + buffer.c \ + charset.c \ ++ crypt.c \ ++ crypt_zip.c \ + diff.c \ + digraph.c \ + edit.c \ +*************** +*** 139,144 **** +--- 141,148 ---- + blowfish.o \ + buffer.o \ + charset.o \ ++ crypt.o \ ++ crypt_zip.o \ + diff.o \ + digraph.o \ + edit.o \ +*************** +*** 186,191 **** +--- 190,197 ---- + proto/blowfish.pro \ + proto/buffer.pro \ + proto/charset.pro \ ++ proto/crypt.pro \ ++ proto/crypt_zip.pro \ + proto/diff.pro \ + proto/digraph.pro \ + proto/edit.pro \ +*************** +*** 290,295 **** +--- 296,305 ---- + proto/buffer.pro: buffer.c + charset.o: charset.c + proto/charset.pro: charset.c ++ crypt.o: crypt.c ++ proto/crypt.pro: crypt.c ++ crypt_zip.o: crypt_zip.c ++ proto/crypt_zip.pro: crypt_zip.c + diff.o: diff.c + proto/diff.pro: diff.c + digraph.o: digraph.c +*** ../vim-7.4.400/src/version.c 2014-08-10 13:46:30.424780490 +0200 +--- src/version.c 2014-08-10 16:27:26.380711088 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 401, + /**/ + +-- +When a fly lands on the ceiling, does it do a half roll or +a half loop? + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.402 b/SOURCES/7.4.402 new file mode 100644 index 0000000..6fa18af --- /dev/null +++ b/SOURCES/7.4.402 @@ -0,0 +1,103 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.402 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.402 +Problem: Test 72 crashes under certain conditions. (Kazunobu Kuriyama) +Solution: Clear the whole bufinfo_T early. +Files: src/undo.c + + +*** ../vim-7.4.401/src/undo.c 2014-08-10 13:34:59.064785459 +0200 +--- src/undo.c 2014-08-12 20:08:23.915373819 +0200 +*************** +*** 929,935 **** + undo_flush(bi) + bufinfo_T *bi; + { +! if (bi->bi_used > 0) + { + crypt_encode_inplace(bi->bi_state, bi->bi_buffer, bi->bi_used); + if (fwrite(bi->bi_buffer, bi->bi_used, (size_t)1, bi->bi_fp) != 1) +--- 929,935 ---- + undo_flush(bi) + bufinfo_T *bi; + { +! if (bi->bi_buffer != NULL && bi->bi_used > 0) + { + crypt_encode_inplace(bi->bi_state, bi->bi_buffer, bi->bi_used); + if (fwrite(bi->bi_buffer, bi->bi_used, (size_t)1, bi->bi_fp) != 1) +*************** +*** 1573,1582 **** + #endif + bufinfo_T bi; + +! #ifdef FEAT_CRYPT +! bi.bi_state = NULL; +! bi.bi_buffer = NULL; +! #endif + + if (name == NULL) + { +--- 1573,1579 ---- + #endif + bufinfo_T bi; + +! vim_memset(&bi, 0, sizeof(bi)); + + if (name == NULL) + { +*************** +*** 1861,1866 **** +--- 1858,1864 ---- + #endif + bufinfo_T bi; + ++ vim_memset(&bi, 0, sizeof(bi)); + if (name == NULL) + { + file_name = u_get_undo_file_name(curbuf->b_ffname, TRUE); +*************** +*** 1905,1914 **** + } + bi.bi_buf = curbuf; + bi.bi_fp = fp; +- #ifdef FEAT_CRYPT +- bi.bi_state = NULL; +- bi.bi_buffer = NULL; +- #endif + + /* + * Read the undo file header. +--- 1903,1908 ---- +*** ../vim-7.4.401/src/version.c 2014-08-10 16:31:47.376709213 +0200 +--- src/version.c 2014-08-12 20:11:13.879372598 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 402, + /**/ + +-- +Far back in the mists of ancient time, in the great and glorious days of the +former Galactic Empire, life was wild, rich and largely tax free. +Mighty starships plied their way between exotic suns, seeking adventure and +reward among the furthest reaches of Galactic space. In those days, spirits +were brave, the stakes were high, men were real men, women were real women +and small furry creatures from Alpha Centauri were real small furry creatures +from Alpha Centauri. And all dared to brave unknown terrors, to do mighty +deeds, to boldly split infinitives that no man had split before -- and thus +was the Empire forged. + -- Douglas Adams, "The Hitchhiker's Guide to the Galaxy" + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.403 b/SOURCES/7.4.403 new file mode 100644 index 0000000..426f56b --- /dev/null +++ b/SOURCES/7.4.403 @@ -0,0 +1,135 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.403 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.403 +Problem: Valgrind reports errors when running test 72. (Dominique Pelle) +Solution: Reset the local 'cryptmethod' option before storing the seed. + Set the seed in the memfile even when there is no block0 yet. +Files: src/fileio.c, src/option.c, src/memline.c + + +*** ../vim-7.4.402/src/fileio.c 2014-08-10 13:34:59.056785459 +0200 +--- src/fileio.c 2014-08-13 21:27:51.452857400 +0200 +*************** +*** 2944,2949 **** +--- 2944,2950 ---- + * Avoids accidentally overwriting the file with garbage. */ + curbuf->b_p_ro = TRUE; + ++ /* Set the cryptmethod local to the buffer. */ + crypt_set_cm_option(curbuf, method); + if (cryptkey == NULL && !*did_ask) + { +*** ../vim-7.4.402/src/option.c 2014-08-10 13:34:59.060785459 +0200 +--- src/option.c 2014-08-13 21:48:49.924876683 +0200 +*************** +*** 6163,6168 **** +--- 6163,6176 ---- + p_cm = vim_strsave((char_u *)"zip"); + new_value_alloced = TRUE; + } ++ /* When using ":set cm=name" the local value is going to be empty. ++ * Do that here, otherwise the crypt functions will still use the ++ * local value. */ ++ if ((opt_flags & (OPT_LOCAL | OPT_GLOBAL)) == 0) ++ { ++ free_string_option(curbuf->b_p_cm); ++ curbuf->b_p_cm = empty_option; ++ } + + /* Need to update the swapfile when the effective method changed. + * Set "s" to the effective old value, "p" to the effective new +*** ../vim-7.4.402/src/memline.c 2014-08-10 13:34:59.060785459 +0200 +--- src/memline.c 2014-08-13 21:52:40.076880210 +0200 +*************** +*** 235,240 **** +--- 235,241 ---- + } upd_block0_T; + + #ifdef FEAT_CRYPT ++ static void ml_set_mfp_crypt __ARGS((buf_T *buf)); + static void ml_set_b0_crypt __ARGS((buf_T *buf, ZERO_BL *b0p)); + #endif + static int ml_check_b0_id __ARGS((ZERO_BL *b0p)); +*************** +*** 433,438 **** +--- 434,458 ---- + + #if defined(FEAT_CRYPT) || defined(PROTO) + /* ++ * Prepare encryption for "buf" for the current key and method. ++ */ ++ static void ++ ml_set_mfp_crypt(buf) ++ buf_T *buf; ++ { ++ if (*buf->b_p_key != NUL) ++ { ++ int method_nr = crypt_get_method_nr(buf); ++ ++ if (method_nr > CRYPT_M_ZIP) ++ { ++ /* Generate a seed and store it in the memfile. */ ++ sha2_seed(buf->b_ml.ml_mfp->mf_seed, MF_SEED_LEN, NULL, 0); ++ } ++ } ++ } ++ ++ /* + * Prepare encryption for "buf" with block 0 "b0p". + */ + static void +*************** +*** 915,922 **** + ZERO_BL *b0p; + + mfp = buf->b_ml.ml_mfp; +! if (mfp == NULL || (hp = mf_get(mfp, (blocknr_T)0, 1)) == NULL) + return; + b0p = (ZERO_BL *)(hp->bh_data); + if (ml_check_b0_id(b0p) == FAIL) + EMSG(_("E304: ml_upd_block0(): Didn't get block 0??")); +--- 935,953 ---- + ZERO_BL *b0p; + + mfp = buf->b_ml.ml_mfp; +! if (mfp == NULL) +! return; +! hp = mf_get(mfp, (blocknr_T)0, 1); +! if (hp == NULL) +! { +! #ifdef FEAT_CRYPT +! /* Possibly update the seed in the memfile before there is a block0. */ +! if (what == UB_CRYPT) +! ml_set_mfp_crypt(buf); +! #endif + return; ++ } ++ + b0p = (ZERO_BL *)(hp->bh_data); + if (ml_check_b0_id(b0p) == FAIL) + EMSG(_("E304: ml_upd_block0(): Didn't get block 0??")); +*** ../vim-7.4.402/src/version.c 2014-08-12 20:14:28.795371197 +0200 +--- src/version.c 2014-08-13 17:23:02.964632329 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 403, + /**/ + +-- +How To Keep A Healthy Level Of Insanity: +9. As often as possible, skip rather than walk. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.404 b/SOURCES/7.4.404 new file mode 100644 index 0000000..d10dfd3 --- /dev/null +++ b/SOURCES/7.4.404 @@ -0,0 +1,117 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.404 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.404 +Problem: Windows 64 bit compiler warnings. +Solution: Add type casts. (Mike Williams) +Files: src/crypt.c, src/undo.c + + +*** ../vim-7.4.403/src/crypt.c 2014-08-10 13:34:59.052785459 +0200 +--- src/crypt.c 2014-08-13 22:02:15.756889031 +0200 +*************** +*** 397,409 **** + return method->encode_buffer_fn(state, from, len, newptr); + if (len == 0) + /* Not buffering, just return EOF. */ +! return len; + +! *newptr = alloc(len); + if (*newptr == NULL) + return -1; + method->encode_fn(state, from, len, *newptr); +! return len; + } + + /* +--- 397,409 ---- + return method->encode_buffer_fn(state, from, len, newptr); + if (len == 0) + /* Not buffering, just return EOF. */ +! return (long)len; + +! *newptr = alloc((long)len); + if (*newptr == NULL) + return -1; + method->encode_fn(state, from, len, *newptr); +! return (long)len; + } + + /* +*** ../vim-7.4.403/src/undo.c 2014-08-12 20:14:28.791371197 +0200 +--- src/undo.c 2014-08-13 22:02:15.760889031 +0200 +*************** +*** 992,998 **** + int bufi = 0; + + for (i = len - 1; i >= 0; --i) +! buf[bufi++] = nr >> (i * 8); + return undo_write(bi, buf, (size_t)len); + } + +--- 992,998 ---- + int bufi = 0; + + for (i = len - 1; i >= 0; --i) +! buf[bufi++] = (char_u)(nr >> (i * 8)); + return undo_write(bi, buf, (size_t)len); + } + +*************** +*** 1093,1099 **** + #ifdef FEAT_CRYPT + if (bi->bi_buffer != NULL) + { +! int size_todo = size; + char_u *p = buffer; + + while (size_todo > 0) +--- 1093,1099 ---- + #ifdef FEAT_CRYPT + if (bi->bi_buffer != NULL) + { +! int size_todo = (int)size; + char_u *p = buffer; + + while (size_todo > 0) +*************** +*** 1119,1125 **** + n = bi->bi_avail - bi->bi_used; + mch_memmove(p, bi->bi_buffer + bi->bi_used, n); + bi->bi_used += n; +! size_todo -= n; + p += n; + } + return OK; +--- 1119,1125 ---- + n = bi->bi_avail - bi->bi_used; + mch_memmove(p, bi->bi_buffer + bi->bi_used, n); + bi->bi_used += n; +! size_todo -= (int)n; + p += n; + } + return OK; +*** ../vim-7.4.403/src/version.c 2014-08-13 21:58:24.824885492 +0200 +--- src/version.c 2014-08-13 22:02:35.812889338 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 404, + /**/ + +-- +How To Keep A Healthy Level Of Insanity: +10. Ask people what sex they are. Laugh hysterically after they answer. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.405 b/SOURCES/7.4.405 new file mode 100644 index 0000000..6b39d14 --- /dev/null +++ b/SOURCES/7.4.405 @@ -0,0 +1,116 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.405 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.405 +Problem: Screen updating is slow when using matches. +Solution: Do not use the ">=" as in patch 7.4.362, check the lnum. +Files: src/screen.c, src/testdir/test63.in, src/testdir/test63.ok + + +*** ../vim-7.4.404/src/screen.c 2014-08-06 13:20:51.799275513 +0200 +--- src/screen.c 2014-08-16 16:23:31.486282950 +0200 +*************** +*** 3858,3864 **** + { + shl->attr_cur = shl->attr; + } +! else if (v >= (long)shl->endcol) + { + shl->attr_cur = 0; + next_search_hl(wp, shl, lnum, (colnr_T)v, cur); +--- 3858,3864 ---- + { + shl->attr_cur = shl->attr; + } +! else if (v >= (long)shl->endcol && shl->lnum == lnum) + { + shl->attr_cur = 0; + next_search_hl(wp, shl, lnum, (colnr_T)v, cur); +*** ../vim-7.4.404/src/testdir/test63.in 2014-07-23 13:16:26.727971292 +0200 +--- src/testdir/test63.in 2014-08-16 16:00:58.618332015 +0200 +*************** +*** 3,8 **** +--- 3,9 ---- + + STARTTEST + :so small.vim ++ :set encoding=utf8 + :" --- Check that "matcharg()" returns the correct group and pattern if a match + :" --- is defined. + :let @r = "*** Test 1: " +*************** +*** 164,170 **** + :if v1 != v5 && v6 == v1 && v8 == v5 && v10 == v5 && v11 == v1 + : let @r .= "OK\n" + :else +! : let @r .= "FAILED\n" + :endif + :call clearmatches() + G"rp +--- 165,191 ---- + :if v1 != v5 && v6 == v1 && v8 == v5 && v10 == v5 && v11 == v1 + : let @r .= "OK\n" + :else +! : let @r .= "FAILED: " . v5 . "/" . v6 . "/" . v8 . "/" . v10 . "/" . v11 . "\n" +! :endif +! :call clearmatches() +! :" +! :call setline(1, 'abcdΣabcdef') +! :call matchaddpos("MyGroup1", [[1, 4, 2], [1, 9, 2]]) +! :1 +! :redraw! +! :let v1 = screenattr(1, 1) +! :let v4 = screenattr(1, 4) +! :let v5 = screenattr(1, 5) +! :let v6 = screenattr(1, 6) +! :let v7 = screenattr(1, 7) +! :let v8 = screenattr(1, 8) +! :let v9 = screenattr(1, 9) +! :let v10 = screenattr(1, 10) +! :let @r .= string(getmatches())."\n" +! :if v1 != v4 && v5 == v4 && v6 == v1 && v7 == v1 && v8 == v4 && v9 == v4 && v10 == v1 +! : let @r .= "OK\n" +! :else +! : let @r .= "FAILED: " . v4 . "/" . v5 . "/" . v6 . "/" . v7 . "/" . v8 . "/" . v9 . "/" . v10 . "\n" + :endif + :call clearmatches() + G"rp +*** ../vim-7.4.404/src/testdir/test63.ok 2014-06-17 17:48:21.784628008 +0200 +--- src/testdir/test63.ok 2014-08-16 16:00:19.602333430 +0200 +*************** +*** 12,14 **** +--- 12,16 ---- + *** Test 11: + [{'group': 'MyGroup1', 'id': 3, 'priority': 10, 'pos1': [1, 5, 1], 'pos2': [1, 8, 3]}] + OK ++ [{'group': 'MyGroup1', 'id': 11, 'priority': 10, 'pos1': [1, 4, 2], 'pos2': [1, 9, 2]}] ++ OK +*** ../vim-7.4.404/src/version.c 2014-08-13 22:05:49.032892299 +0200 +--- src/version.c 2014-08-16 16:28:18.442272543 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 405, + /**/ + +-- +This planet has -- or rather had -- a problem, which was this: most +of the people living on it were unhappy for pretty much of the time. +Many solutions were suggested for this problem, but most of these +were largely concerned with the movements of small green pieces of +paper, which is odd because on the whole it wasn't the small green +pieces of paper that were unhappy. + -- Douglas Adams, "The Hitchhiker's Guide to the Galaxy" + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.406 b/SOURCES/7.4.406 new file mode 100644 index 0000000..875f7c6 --- /dev/null +++ b/SOURCES/7.4.406 @@ -0,0 +1,78 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.406 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.406 +Problem: Test 72 and 100 fail on MS-Windows. +Solution: Set fileformat to unix in the tests. (Taro Muraoka) +Files: src/testdir/test72.in, src/testdir/test100.in + + +*** ../vim-7.4.405/src/testdir/test72.in 2014-08-10 13:34:59.064785459 +0200 +--- src/testdir/test72.in 2014-08-16 17:31:40.426134656 +0200 +*************** +*** 8,13 **** +--- 8,14 ---- + :" Test 'undofile': first a simple one-line change. + :set nocompatible viminfo+=nviminfo visualbell + :set ul=100 undofile nomore ++ :set ff=unix + :e! Xtestfile + ggdGithis is one line:set ul=100 + :s/one/ONE/ +*** ../vim-7.4.405/src/testdir/test100.in 2014-03-12 18:55:52.104906804 +0100 +--- src/testdir/test100.in 2014-08-16 17:32:17.642133306 +0200 +*************** +*** 18,23 **** +--- 18,24 ---- + :call FillBuffer() + :call feedkeys(":earlier 10\n", 't') + :call UndoLevel() ++ :set ff=unix + :%w! test.out + :new two + :0put ='TWO: expecting global undolevels: 5, local undolevels: 2 (first) then 10 (afterwards)' +*************** +*** 27,32 **** +--- 28,34 ---- + :call UndoLevel() + :setlocal ul=10 + :call UndoLevel() ++ :set ff=unix + :%w >> test.out + :wincmd p + :redir >>test.out | echo "global value shouldn't be changed and still be 5!" | echo 'ONE: expecting global undolevels: 5, local undolevels: -123456 (default)'|:setglobal undolevels? | echon ' global' | setlocal undolevels? | echon ' local' |echo "" |redir end +*************** +*** 35,40 **** +--- 37,43 ---- + :1put ='global value should be changed to 50' + :2put ='THREE: expecting global undolevels: 50, local undolevels: -123456 (default)' + :call UndoLevel() ++ :set ff=unix + :%w >> test.out + :"sleep 10 + :" +*** ../vim-7.4.405/src/version.c 2014-08-16 16:28:31.886272055 +0200 +--- src/version.c 2014-08-16 17:32:10.130133579 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 406, + /**/ + +-- +Time is an illusion. Lunchtime doubly so. + -- Ford Prefect, in Douglas Adams' + "The Hitchhiker's Guide to the Galaxy" + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.407 b/SOURCES/7.4.407 new file mode 100644 index 0000000..a204e52 --- /dev/null +++ b/SOURCES/7.4.407 @@ -0,0 +1,116 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.407 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.407 +Problem: Inserting text for Visual block mode, with cursor movement, + repeats the wrong text. (Aleksandar Ivanov) +Solution: Reset the update_Insstart_orig flag. (Christian Brabandt) +Files: src/edit.c, src/testdir/test39.in, src/testdir/test39.ok + + +*** ../vim-7.4.406/src/edit.c 2014-07-30 16:00:45.543553496 +0200 +--- src/edit.c 2014-08-16 18:10:10.914050861 +0200 +*************** +*** 6768,6780 **** + { + if (arrow_used) + { + if (u_save_cursor() == OK) + { + arrow_used = FALSE; + ins_need_undo = FALSE; + } +! Insstart = curwin->w_cursor; /* new insertion starts here */ +! Insstart_textlen = (colnr_T)linetabsize(ml_get_curline()); + ai_col = 0; + #ifdef FEAT_VREPLACE + if (State & VREPLACE_FLAG) +--- 6768,6786 ---- + { + if (arrow_used) + { ++ Insstart = curwin->w_cursor; /* new insertion starts here */ ++ if (Insstart.col > Insstart_orig.col && !ins_need_undo) ++ /* Don't update the original insert position when moved to the ++ * right, except when nothing was inserted yet. */ ++ update_Insstart_orig = FALSE; ++ Insstart_textlen = (colnr_T)linetabsize(ml_get_curline()); ++ + if (u_save_cursor() == OK) + { + arrow_used = FALSE; + ins_need_undo = FALSE; + } +! + ai_col = 0; + #ifdef FEAT_VREPLACE + if (State & VREPLACE_FLAG) +*** ../vim-7.4.406/src/testdir/test39.in 2014-03-19 18:57:27.730175565 +0100 +--- src/testdir/test39.in 2014-08-16 17:52:23.078089588 +0200 +*************** +*** 23,28 **** +--- 23,31 ---- + /^aaaa/ + :exe ":norm! l\<C-V>jjjlllI\<Right>\<Right> \<Esc>" + :/^aa/,/^$/w >> test.out ++ /xaaa$/ ++ :exe ":norm! \<C-V>jjjI<>\<Left>p\<Esc>" ++ :/xaaa$/,/^$/w >> test.out + :" Test for Visual block was created with the last <C-v>$ + /^A23$/ + :exe ":norm! l\<C-V>j$Aab\<Esc>" +*************** +*** 77,82 **** +--- 80,90 ---- + cccccc + dddddd + ++ xaaa ++ bbbb ++ cccc ++ dddd ++ + A23 + 4567 + +*** ../vim-7.4.406/src/testdir/test39.ok 2014-03-19 18:57:27.730175565 +0100 +--- src/testdir/test39.ok 2014-08-16 17:50:57.330092698 +0200 +*************** +*** 8,13 **** +--- 8,18 ---- + ccc ccc + ddd ddd + ++ <p>xaaa ++ <p>bbbb ++ <p>cccc ++ <p>dddd ++ + A23ab + 4567ab + +*** ../vim-7.4.406/src/version.c 2014-08-16 17:34:31.186128463 +0200 +--- src/version.c 2014-08-16 17:38:30.546119782 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 407, + /**/ + +-- +'Well, here's something to occupy you and keep your mind off things.' +'It won't work, I have an exceptionally large mind.' + -- Douglas Adams, "The Hitchhiker's Guide to the Galaxy" + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.408 b/SOURCES/7.4.408 new file mode 100644 index 0000000..6a5192c --- /dev/null +++ b/SOURCES/7.4.408 @@ -0,0 +1,334 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.408 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.408 +Problem: Visual block insert breaks a multi-byte character. +Solution: Calculate the position properly. (Yasuhiro Matsumoto) +Files: src/ops.c, src/testdir/test_utf8.in, src/testdir/test_utf8.ok, + src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, + src/testdir/Make_ming.mak, src/testdir/Make_os2.mak, + src/testdir/Make_vms.mms, src/testdir/Makefile + + +*** ../vim-7.4.407/src/ops.c 2014-08-06 18:17:03.475147780 +0200 +--- src/ops.c 2014-08-16 18:33:34.625999952 +0200 +*************** +*** 609,614 **** +--- 609,634 ---- + } + } + ++ #ifdef FEAT_MBYTE ++ if (has_mbyte && spaces > 0) ++ { ++ /* Avoid starting halfway a multi-byte character. */ ++ if (b_insert) ++ { ++ int off = (*mb_head_off)(oldp, oldp + offset + spaces); ++ spaces -= off; ++ count -= off; ++ } ++ else ++ { ++ int off = (*mb_off_next)(oldp, oldp + offset); ++ offset += off; ++ spaces = 0; ++ count = 0; ++ } ++ } ++ #endif ++ + newp = alloc_check((unsigned)(STRLEN(oldp)) + s_len + count + 1); + if (newp == NULL) + continue; +*** ../vim-7.4.407/src/testdir/test_utf8.in 2014-08-16 18:35:44.853995229 +0200 +--- src/testdir/test_utf8.in 2014-08-16 18:25:02.310018533 +0200 +*************** +*** 0 **** +--- 1,18 ---- ++ Tests for Unicode manipulations vim: set ft=vim : ++ ++ STARTTEST ++ :so small.vim ++ :set encoding=utf-8 ++ :" Visual block Insert adjusts for multi-byte char ++ :new ++ :call setline(1, ["aaa", "あああ", "bbb"]) ++ :exe ":norm! gg0l\<C-V>jjIx\<Esc>" ++ :let r = getline(1, '$') ++ : ++ :bwipeout! ++ :$put=r ++ :call garbagecollect(1) ++ :/^start:/,$wq! test.out ++ ENDTEST ++ ++ start: +*** ../vim-7.4.407/src/testdir/test_utf8.ok 2014-08-16 18:35:44.857995229 +0200 +--- src/testdir/test_utf8.ok 2014-08-16 18:25:35.354017334 +0200 +*************** +*** 0 **** +--- 1,4 ---- ++ start: ++ axaa ++ xあああ ++ bxbb +*** ../vim-7.4.407/src/testdir/Make_amiga.mak 2014-07-30 16:00:45.547553496 +0200 +--- src/testdir/Make_amiga.mak 2014-08-16 18:28:17.694011447 +0200 +*************** +*** 38,50 **** + test104.out test105.out test106.out test107.out \ + test_autoformat_join.out \ + test_breakindent.out \ +- test_listlbr.out \ +- test_listlbr_utf8.out \ +- test_qf_title.out \ + test_changelist.out \ + test_eval.out \ + test_insertcount.out \ +! test_options.out + + .SUFFIXES: .in .out + +--- 38,51 ---- + test104.out test105.out test106.out test107.out \ + test_autoformat_join.out \ + test_breakindent.out \ + test_changelist.out \ + test_eval.out \ + test_insertcount.out \ +! test_listlbr.out \ +! test_listlbr_utf8.out \ +! test_options.out \ +! test_qf_title.out \ +! test_utf8.out + + .SUFFIXES: .in .out + +*************** +*** 170,179 **** + test107.out: test107.in + test_autoformat_join.out: test_autoformat_join.in + test_breakindent.out: test_breakindent.in +- test_listlbr.out: test_listlbr.in +- test_listlbr_utf8.out: test_listlbr_utf8.in +- test_qf_title.out: test_qf_title.in + test_changelist.out: test_changelist.in + test_eval.out: test_eval.in + test_insertcount.out: test_insertcount.in + test_options.out: test_options.in +--- 171,181 ---- + test107.out: test107.in + test_autoformat_join.out: test_autoformat_join.in + test_breakindent.out: test_breakindent.in + test_changelist.out: test_changelist.in + test_eval.out: test_eval.in + test_insertcount.out: test_insertcount.in ++ test_listlbr.out: test_listlbr.in ++ test_listlbr_utf8.out: test_listlbr_utf8.in + test_options.out: test_options.in ++ test_qf_title.out: test_qf_title.in ++ test_utf8.out: test_utf8.in +*** ../vim-7.4.407/src/testdir/Make_dos.mak 2014-07-30 16:00:45.547553496 +0200 +--- src/testdir/Make_dos.mak 2014-08-16 18:28:37.122010742 +0200 +*************** +*** 37,49 **** + test105.out test106.out test107.out\ + test_autoformat_join.out \ + test_breakindent.out \ +- test_listlbr.out \ +- test_listlbr_utf8.out \ +- test_qf_title.out \ + test_changelist.out \ + test_eval.out \ + test_insertcount.out \ +! test_options.out + + SCRIPTS32 = test50.out test70.out + +--- 37,50 ---- + test105.out test106.out test107.out\ + test_autoformat_join.out \ + test_breakindent.out \ + test_changelist.out \ + test_eval.out \ + test_insertcount.out \ +! test_listlbr.out \ +! test_listlbr_utf8.out \ +! test_options.out \ +! test_qf_title.out \ +! test_utf8.out + + SCRIPTS32 = test50.out test70.out + +*** ../vim-7.4.407/src/testdir/Make_ming.mak 2014-07-30 16:00:45.547553496 +0200 +--- src/testdir/Make_ming.mak 2014-08-16 18:28:56.438010041 +0200 +*************** +*** 57,69 **** + test105.out test106.out test107.out \ + test_autoformat_join.out \ + test_breakindent.out \ +- test_listlbr.out \ +- test_listlbr_utf8.out \ +- test_qf_title.out \ + test_changelist.out \ + test_eval.out \ + test_insertcount.out \ +! test_options.out + + SCRIPTS32 = test50.out test70.out + +--- 57,70 ---- + test105.out test106.out test107.out \ + test_autoformat_join.out \ + test_breakindent.out \ + test_changelist.out \ + test_eval.out \ + test_insertcount.out \ +! test_listlbr.out \ +! test_listlbr_utf8.out \ +! test_options.out \ +! test_qf_title.out \ +! test_utf8.out + + SCRIPTS32 = test50.out test70.out + +*** ../vim-7.4.407/src/testdir/Make_os2.mak 2014-07-30 16:00:45.547553496 +0200 +--- src/testdir/Make_os2.mak 2014-08-16 18:29:26.962008934 +0200 +*************** +*** 38,51 **** + test100.out test101.out test102.out test103.out test104.out \ + test105.out test106.out test107.out \ + test_autoformat_join.out \ + test_changelist.out \ + test_eval.out \ + test_insertcount.out \ +- test_breakindent.out \ + test_listlbr.out \ + test_listlbr_utf8.out \ + test_qf_title.out \ +! test_options.out + + .SUFFIXES: .in .out + +--- 38,52 ---- + test100.out test101.out test102.out test103.out test104.out \ + test105.out test106.out test107.out \ + test_autoformat_join.out \ ++ test_breakindent.out \ + test_changelist.out \ + test_eval.out \ + test_insertcount.out \ + test_listlbr.out \ + test_listlbr_utf8.out \ ++ test_options.out \ + test_qf_title.out \ +! test_utf8.out + + .SUFFIXES: .in .out + +*** ../vim-7.4.407/src/testdir/Make_vms.mms 2014-07-30 16:00:45.547553496 +0200 +--- src/testdir/Make_vms.mms 2014-08-16 18:29:42.702008364 +0200 +*************** +*** 4,10 **** + # Authors: Zoltan Arpadffy, <arpadffy@polarhome.com> + # Sandor Kopanyi, <sandor.kopanyi@mailbox.hu> + # +! # Last change: 2014 Jul 30 + # + # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64. + # Edit the lines in the Configuration section below to select. +--- 4,10 ---- + # Authors: Zoltan Arpadffy, <arpadffy@polarhome.com> + # Sandor Kopanyi, <sandor.kopanyi@mailbox.hu> + # +! # Last change: 2014 Aug 16 + # + # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64. + # Edit the lines in the Configuration section below to select. +*************** +*** 98,110 **** + test105.out test106.out test107.out \ + test_autoformat_join.out \ + test_breakindent.out \ +- test_listlbr.out \ +- test_listlbr_utf8.out \ +- test_qf_title.out \ + test_changelist.out \ + test_eval.out \ + test_insertcount.out \ +! test_options.out + + # Known problems: + # test17: ? +--- 98,111 ---- + test105.out test106.out test107.out \ + test_autoformat_join.out \ + test_breakindent.out \ + test_changelist.out \ + test_eval.out \ + test_insertcount.out \ +! test_listlbr.out \ +! test_listlbr_utf8.out \ +! test_options.out \ +! test_qf_title.out \ +! test_utf8.out + + # Known problems: + # test17: ? +*** ../vim-7.4.407/src/testdir/Makefile 2014-07-30 16:00:45.547553496 +0200 +--- src/testdir/Makefile 2014-08-16 18:30:13.254007256 +0200 +*************** +*** 35,47 **** + test104.out test105.out test106.out test107.out \ + test_autoformat_join.out \ + test_breakindent.out \ +- test_listlbr.out \ +- test_listlbr_utf8.out \ +- test_qf_title.out \ + test_changelist.out \ + test_eval.out \ + test_insertcount.out \ +! test_options.out + + SCRIPTS_GUI = test16.out + +--- 35,48 ---- + test104.out test105.out test106.out test107.out \ + test_autoformat_join.out \ + test_breakindent.out \ + test_changelist.out \ + test_eval.out \ + test_insertcount.out \ +! test_listlbr.out \ +! test_listlbr_utf8.out \ +! test_options.out \ +! test_qf_title.out \ +! test_utf8.out + + SCRIPTS_GUI = test16.out + +*** ../vim-7.4.407/src/version.c 2014-08-16 18:13:00.082044726 +0200 +--- src/version.c 2014-08-16 18:35:52.937994936 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 408, + /**/ + +-- +What a wonderfully exciting cough! Do you mind if I join you? + -- Douglas Adams, "The Hitchhiker's Guide to the Galaxy" + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.409 b/SOURCES/7.4.409 new file mode 100644 index 0000000..f75dcce --- /dev/null +++ b/SOURCES/7.4.409 @@ -0,0 +1,129 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.409 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.409 +Problem: Can't build with Perl on Fedora 20. +Solution: Find xsubpp in another directory. (Michael Henry) +Files: src/Makefile, src/config.mk.in, src/configure.in, + src/auto/configure + + +*** ../vim-7.4.408/src/Makefile 2014-08-10 13:34:59.052785459 +0200 +--- src/Makefile 2014-08-17 16:59:03.527072144 +0200 +*************** +*** 2477,2483 **** + + auto/if_perl.c: if_perl.xs + $(PERL) -e 'unless ( $$] >= 5.005 ) { for (qw(na defgv errgv)) { print "#define PL_$$_ $$_\n" }}' > $@ +! $(PERL) $(PERLLIB)/ExtUtils/xsubpp -prototypes -typemap \ + $(PERLLIB)/ExtUtils/typemap if_perl.xs >> $@ + + auto/osdef.h: auto/config.h osdef.sh osdef1.h.in osdef2.h.in +--- 2478,2484 ---- + + auto/if_perl.c: if_perl.xs + $(PERL) -e 'unless ( $$] >= 5.005 ) { for (qw(na defgv errgv)) { print "#define PL_$$_ $$_\n" }}' > $@ +! $(PERL) $(PERL_XSUBPP) -prototypes -typemap \ + $(PERLLIB)/ExtUtils/typemap if_perl.xs >> $@ + + auto/osdef.h: auto/config.h osdef.sh osdef1.h.in osdef2.h.in +*** ../vim-7.4.408/src/config.mk.in 2014-06-12 18:03:24.936319000 +0200 +--- src/config.mk.in 2014-08-17 16:56:28.371077771 +0200 +*************** +*** 48,58 **** + MZSCHEME_OBJ = @MZSCHEME_OBJ@ + MZSCHEME_CFLAGS = @MZSCHEME_CFLAGS@ + MZSCHEME_PRO = @MZSCHEME_PRO@ +! MZSCHEME_EXTRA = @MZSCHEME_EXTRA@ + MZSCHEME_MZC = @MZSCHEME_MZC@ + + PERL = @vi_cv_path_perl@ + PERLLIB = @vi_cv_perllib@ + PERL_LIBS = @PERL_LIBS@ + SHRPENV = @shrpenv@ + PERL_SRC = @PERL_SRC@ +--- 48,59 ---- + MZSCHEME_OBJ = @MZSCHEME_OBJ@ + MZSCHEME_CFLAGS = @MZSCHEME_CFLAGS@ + MZSCHEME_PRO = @MZSCHEME_PRO@ +! MZSCHEME_EXTRA = @MZSCHEME_EXTRA@ + MZSCHEME_MZC = @MZSCHEME_MZC@ + + PERL = @vi_cv_path_perl@ + PERLLIB = @vi_cv_perllib@ ++ PERL_XSUBPP = @vi_cv_perl_xsubpp@ + PERL_LIBS = @PERL_LIBS@ + SHRPENV = @shrpenv@ + PERL_SRC = @PERL_SRC@ +*** ../vim-7.4.408/src/configure.in 2014-07-30 13:22:48.263621613 +0200 +--- src/configure.in 2014-08-17 16:57:11.183076219 +0200 +*************** +*** 933,938 **** +--- 933,946 ---- + fi + vi_cv_perllib=`$vi_cv_path_perl -MConfig -e 'print $Config{privlibexp}'` + AC_SUBST(vi_cv_perllib) ++ vi_cv_perl_extutils=unknown_perl_extutils_path ++ for extutils_rel_path in ExtUtils vendor_perl/ExtUtils; do ++ xsubpp_path="$vi_cv_perllib/$extutils_rel_path/xsubpp" ++ if test -f "$xsubpp_path"; then ++ vi_cv_perl_xsubpp="$xsubpp_path" ++ fi ++ done ++ AC_SUBST(vi_cv_perl_xsubpp) + dnl Remove "-fno-something", it breaks using cproto. + perlcppflags=`$vi_cv_path_perl -Mlib=$srcdir -MExtUtils::Embed \ + -e 'ccflags;perl_inc;print"\n"' | sed -e 's/-fno[[^ ]]*//'` +*** ../vim-7.4.408/src/auto/configure 2014-07-30 13:22:48.267621613 +0200 +--- src/auto/configure 2014-08-17 16:58:43.047072887 +0200 +*************** +*** 687,692 **** +--- 687,693 ---- + PERL_OBJ + PERL_SRC + shrpenv ++ vi_cv_perl_xsubpp + vi_cv_perllib + vi_cv_path_perl + MZSCHEME_MZC +*************** +*** 5604,5609 **** +--- 5605,5618 ---- + fi + vi_cv_perllib=`$vi_cv_path_perl -MConfig -e 'print $Config{privlibexp}'` + ++ vi_cv_perl_extutils=unknown_perl_extutils_path ++ for extutils_rel_path in ExtUtils vendor_perl/ExtUtils; do ++ xsubpp_path="$vi_cv_perllib/$extutils_rel_path/xsubpp" ++ if test -f "$xsubpp_path"; then ++ vi_cv_perl_xsubpp="$xsubpp_path" ++ fi ++ done ++ + perlcppflags=`$vi_cv_path_perl -Mlib=$srcdir -MExtUtils::Embed \ + -e 'ccflags;perl_inc;print"\n"' | sed -e 's/-fno[^ ]*//'` + perllibs=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed -e 'ldopts' | \ +*** ../vim-7.4.408/src/version.c 2014-08-16 18:36:38.597993280 +0200 +--- src/version.c 2014-08-17 16:53:34.135084090 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 409, + /**/ + + +-- +To define recursion, we must first define recursion. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.410 b/SOURCES/7.4.410 new file mode 100644 index 0000000..885de34 --- /dev/null +++ b/SOURCES/7.4.410 @@ -0,0 +1,70 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.410 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.410 +Problem: Fold does not open after search when there is a CmdwinLeave + autocommand. +Solution: Restore KeyTyped. (Jacob Niehus) +Files: src/ex_getln.c + + +*** ../vim-7.4.409/src/ex_getln.c 2014-06-25 14:39:35.102348584 +0200 +--- src/ex_getln.c 2014-08-17 17:21:38.811022992 +0200 +*************** +*** 6363,6368 **** +--- 6363,6371 ---- + #ifdef FEAT_RIGHTLEFT + int save_cmdmsg_rl = cmdmsg_rl; + #endif ++ #ifdef FEAT_FOLDING ++ int save_KeyTyped; ++ #endif + + /* Can't do this recursively. Can't do it when typing a password. */ + if (cmdwin_type != 0 +*************** +*** 6497,6504 **** +--- 6500,6518 ---- + RedrawingDisabled = i; + + # ifdef FEAT_AUTOCMD ++ ++ # ifdef FEAT_FOLDING ++ save_KeyTyped = KeyTyped; ++ # endif ++ + /* Trigger CmdwinLeave autocommands. */ + apply_autocmds(EVENT_CMDWINLEAVE, typestr, typestr, FALSE, curbuf); ++ ++ # ifdef FEAT_FOLDING ++ /* Restore KeyTyped in case it is modified by autocommands */ ++ KeyTyped = save_KeyTyped; ++ # endif ++ + # endif + + /* Restore the command line info. */ +*** ../vim-7.4.409/src/version.c 2014-08-17 17:05:39.163057796 +0200 +--- src/version.c 2014-08-17 17:19:33.011027554 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 410, + /**/ + +-- +Have you heard about the new Beowulf cluster? It's so fast, it executes +an infinite loop in 6 seconds. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.411 b/SOURCES/7.4.411 new file mode 100644 index 0000000..f8bff06 --- /dev/null +++ b/SOURCES/7.4.411 @@ -0,0 +1,111 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.411 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.411 +Problem: "foo bar" sorts before "foo" with sort(). (John Little) +Solution: Avoid putting quotes around strings before comparing them. +Files: src/eval.c + + +*** ../vim-7.4.410/src/eval.c 2014-08-06 14:52:05.043236174 +0200 +--- src/eval.c 2014-08-22 13:08:52.423905619 +0200 +*************** +*** 17382,17397 **** + const void *s2; + { + sortItem_T *si1, *si2; + char_u *p1, *p2; +! char_u *tofree1, *tofree2; + int res; + char_u numbuf1[NUMBUFLEN]; + char_u numbuf2[NUMBUFLEN]; + + si1 = (sortItem_T *)s1; + si2 = (sortItem_T *)s2; +! p1 = tv2string(&si1->item->li_tv, &tofree1, numbuf1, 0); +! p2 = tv2string(&si2->item->li_tv, &tofree2, numbuf2, 0); + if (p1 == NULL) + p1 = (char_u *)""; + if (p2 == NULL) +--- 17382,17419 ---- + const void *s2; + { + sortItem_T *si1, *si2; ++ typval_T *tv1, *tv2; + char_u *p1, *p2; +! char_u *tofree1 = NULL, *tofree2 = NULL; + int res; + char_u numbuf1[NUMBUFLEN]; + char_u numbuf2[NUMBUFLEN]; + + si1 = (sortItem_T *)s1; + si2 = (sortItem_T *)s2; +! tv1 = &si1->item->li_tv; +! tv2 = &si2->item->li_tv; +! /* tv2string() puts quotes around a string and allocates memory. Don't do +! * that for string variables. Use a single quote when comparing with a +! * non-string to do what the docs promise. */ +! if (tv1->v_type == VAR_STRING) +! { +! if (tv2->v_type != VAR_STRING || item_compare_numeric) +! p1 = (char_u *)"'"; +! else +! p1 = tv1->vval.v_string; +! } +! else +! p1 = tv2string(tv1, &tofree1, numbuf1, 0); +! if (tv2->v_type == VAR_STRING) +! { +! if (tv1->v_type != VAR_STRING || item_compare_numeric) +! p2 = (char_u *)"'"; +! else +! p2 = tv2->vval.v_string; +! } +! else +! p2 = tv2string(tv2, &tofree2, numbuf2, 0); + if (p1 == NULL) + p1 = (char_u *)""; + if (p2 == NULL) +*************** +*** 17411,17418 **** + res = n1 == n2 ? 0 : n1 > n2 ? 1 : -1; + } + +! /* When the result would be zero, compare the pointers themselves. Makes +! * the sort stable. */ + if (res == 0 && !item_compare_keep_zero) + res = si1->idx > si2->idx ? 1 : -1; + +--- 17433,17440 ---- + res = n1 == n2 ? 0 : n1 > n2 ? 1 : -1; + } + +! /* When the result would be zero, compare the item indexes. Makes the +! * sort stable. */ + if (res == 0 && !item_compare_keep_zero) + res = si1->idx > si2->idx ? 1 : -1; + +*** ../vim-7.4.410/src/version.c 2014-08-17 17:24:03.967017727 +0200 +--- src/version.c 2014-08-22 12:51:35.011943243 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 411, + /**/ + +-- +I started out with nothing, and I still have most of it. + -- Michael Davis -- "Tonight Show" + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.412 b/SOURCES/7.4.412 new file mode 100644 index 0000000..bd6a5fe --- /dev/null +++ b/SOURCES/7.4.412 @@ -0,0 +1,83 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.412 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.412 +Problem: Can't build on Windows XP with MSVC. +Solution: Add SUBSYSTEM_VER to the Makefile. (Yongwei Wu) +Files: src/Make_mvc.mak, src/INSTALLpc.txt + + +*** ../vim-7.4.411/src/Make_mvc.mak 2014-08-10 16:31:47.376709213 +0200 +--- src/Make_mvc.mak 2014-08-22 18:09:56.711250479 +0200 +*************** +*** 657,662 **** +--- 657,666 ---- + SUBSYSTEM = console + !endif + ++ !if "$(SUBSYSTEM_VER)" != "" ++ SUBSYSTEM = $(SUBSYSTEM),$(SUBSYSTEM_VER) ++ !endif ++ + !if "$(GUI)" == "yes" && "$(DIRECTX)" == "yes" + CFLAGS = $(CFLAGS) $(DIRECTX_DEFS) + GUI_INCL = $(GUI_INCL) $(DIRECTX_INCL) +*** ../vim-7.4.411/src/INSTALLpc.txt 2012-08-29 17:29:09.000000000 +0200 +--- src/INSTALLpc.txt 2014-08-22 18:09:56.711250479 +0200 +*************** +*** 192,197 **** +--- 192,221 ---- + Vim with Make_mvc.mak. + + ++ Targeting Windows XP with new MSVC *new-msvc-windows-xp* ++ ---------------------------------- ++ ++ Beginning with Visual C++ 2010, Microsoft changed the behavior of LINK.EXE ++ so that it targets Windows 6.0 (Vista) by default. In order to override ++ this, the target Windows version number needs to be passed to LINK like ++ 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): ++ 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 ++ ++ 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 ++ ++ + 2. MinGW + ======== + +*** ../vim-7.4.411/src/version.c 2014-08-22 13:13:24.219895762 +0200 +--- src/version.c 2014-08-22 18:09:52.611250628 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 412, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +42. Your virtual girlfriend finds a new net sweetheart with a larger bandwidth. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.413 b/SOURCES/7.4.413 new file mode 100644 index 0000000..975477e --- /dev/null +++ b/SOURCES/7.4.413 @@ -0,0 +1,96 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.413 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.413 +Problem: MS-Windows: Using US international keyboard layout, inserting dead + key by pressing space does not always work. Issue 250. +Solution: Let MS-Windows translate the message. (John Wellesz) +Files: src/gui_w48.c + + +*** ../vim-7.4.412/src/gui_w48.c 2014-08-06 14:52:05.043236174 +0200 +--- src/gui_w48.c 2014-08-22 18:41:09.151182571 +0200 +*************** +*** 614,619 **** +--- 614,621 ---- + char_u string[40]; + int len = 0; + ++ dead_key = 0; ++ + len = char_to_string(ch, string, 40, FALSE); + if (len == 1 && string[0] == Ctrl_C && ctrl_c_interrupts) + { +*************** +*** 1788,1811 **** + if (msg.message == WM_KEYDOWN || msg.message == WM_SYSKEYDOWN) + { + vk = (int) msg.wParam; +! /* handle key after dead key, but ignore shift, alt and control */ +! if (dead_key && vk != VK_SHIFT && vk != VK_MENU && vk != VK_CONTROL) + { + dead_key = 0; +! /* handle non-alphabetic keys (ones that hopefully cannot generate +! * umlaut-characters), unless when control is down */ +! if (vk < 'A' || vk > 'Z' || (GetKeyState(VK_CONTROL) & 0x8000)) +! { +! MSG dm; +! +! dm.message = msg.message; +! dm.hwnd = msg.hwnd; +! dm.wParam = VK_SPACE; +! MyTranslateMessage(&dm); /* generate dead character */ +! if (vk != VK_SPACE) /* and send current character once more */ +! PostMessage(msg.hwnd, msg.message, msg.wParam, msg.lParam); +! return; +! } + } + + /* Check for CTRL-BREAK */ +--- 1790,1810 ---- + if (msg.message == WM_KEYDOWN || msg.message == WM_SYSKEYDOWN) + { + vk = (int) msg.wParam; +! /* +! * If a dead key was pressed and the user presses VK_SPACE, VK_BACK, or +! * VK_ESCAPE it means that he actually wants to deal with the dead char +! * now, so do nothing special and let Windows handle it. +! * +! * Note that VK_SPACE combines with the dead_key's character and only +! * one WM_CHAR will be generated by TranslateMessage(), in the two +! * other cases two WM_CHAR will be generated: the dead char and VK_BACK +! * or VK_ESCAPE. That is most likely what the user expects. +! */ +! if (dead_key && (vk == VK_SPACE || vk == VK_BACK || vk == VK_ESCAPE)) + { + dead_key = 0; +! MyTranslateMessage(&msg); +! return; + } + + /* Check for CTRL-BREAK */ +*** ../vim-7.4.412/src/version.c 2014-08-22 18:12:53.999244049 +0200 +--- src/version.c 2014-08-22 18:39:03.915187113 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 413, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +43. You tell the kids they can't use the computer because "Daddy's got work to + do" and you don't even have a job. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.414 b/SOURCES/7.4.414 new file mode 100644 index 0000000..2617d93 --- /dev/null +++ b/SOURCES/7.4.414 @@ -0,0 +1,161 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.414 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.414 +Problem: Cannot define a command only when it's used. +Solution: Add the CmdUndefined autocommand event. (partly by Yasuhiro + Matsumoto) +Files: runtime/doc/autocmd.txt, src/ex_docmd.c, src/fileio.c, + src/proto/fileio.pro + + +*** ../vim-7.4.413/runtime/doc/autocmd.txt 2013-11-28 18:53:47.000000000 +0100 +--- runtime/doc/autocmd.txt 2014-08-22 20:10:24.026988365 +0200 +*************** +*** 278,283 **** +--- 278,284 ---- + |ShellCmdPost| after executing a shell command + |ShellFilterPost| after filtering with a shell command + ++ |CmdUndefined| a user command is used but it isn't defined + |FuncUndefined| a user function is used but it isn't defined + |SpellFileMissing| a spell file is used but it can't be found + |SourcePre| before sourcing a Vim script +*************** +*** 462,467 **** +--- 466,481 ---- + *BufWritePost* + BufWritePost After writing the whole buffer to a file + (should undo the commands for BufWritePre). ++ *CmdUndefined* ++ CmdUndefined When a user command is used but it isn't ++ defined. Useful for defining a command only ++ when it's used. The pattern is matched ++ against the command name. Both <amatch> and ++ <afile> are set to the name of the command. ++ NOTE: Autocompletion won't work until the ++ command is defined. An alternative is to ++ always define the user command and have it ++ invoke an autoloaded function. See |autoload|. + *CmdwinEnter* + CmdwinEnter After entering the command-line window. + Useful for setting options specifically for +*************** +*** 663,668 **** +--- 681,688 ---- + when it's used. The pattern is matched + against the function name. Both <amatch> and + <afile> are set to the name of the function. ++ NOTE: When writing Vim scripts a better ++ alternative is to use an autoloaded function. + See |autoload-functions|. + *GUIEnter* + GUIEnter After starting the GUI successfully, and after +*** ../vim-7.4.413/src/ex_docmd.c 2014-08-10 13:34:59.056785459 +0200 +--- src/ex_docmd.c 2014-08-22 20:23:43.426959373 +0200 +*************** +*** 2143,2148 **** +--- 2143,2168 ---- + /* Find the command and let "p" point to after it. */ + p = find_command(&ea, NULL); + ++ #ifdef FEAT_AUTOCMD ++ /* If this looks like an undefined user command and there are CmdUndefined ++ * autocommands defined, trigger the matching autocommands. */ ++ if (p != NULL && ea.cmdidx == CMD_SIZE && !ea.skip ++ && ASCII_ISUPPER(*ea.cmd) ++ && has_cmdundefined()) ++ { ++ char_u *p = ea.cmd; ++ int ret; ++ ++ while (ASCII_ISALNUM(*p)) ++ ++p; ++ p = vim_strnsave(ea.cmd, p - ea.cmd); ++ ret = apply_autocmds(EVENT_CMDUNDEFINED, p, p, TRUE, NULL); ++ vim_free(p); ++ if (ret && !aborting()) ++ p = find_command(&ea, NULL); ++ } ++ #endif ++ + #ifdef FEAT_USR_CMDS + if (p == NULL) + { +*** ../vim-7.4.413/src/fileio.c 2014-08-13 21:58:24.820885492 +0200 +--- src/fileio.c 2014-08-22 20:25:26.826955623 +0200 +*************** +*** 7641,7646 **** +--- 7641,7647 ---- + {"BufWriteCmd", EVENT_BUFWRITECMD}, + {"CmdwinEnter", EVENT_CMDWINENTER}, + {"CmdwinLeave", EVENT_CMDWINLEAVE}, ++ {"CmdUndefined", EVENT_CMDUNDEFINED}, + {"ColorScheme", EVENT_COLORSCHEME}, + {"CompleteDone", EVENT_COMPLETEDONE}, + {"CursorHold", EVENT_CURSORHOLD}, +*************** +*** 9159,9164 **** +--- 9160,9183 ---- + return (first_autopat[(int)EVENT_INSERTCHARPRE] != NULL); + } + ++ /* ++ * Return TRUE when there is an CmdUndefined autocommand defined. ++ */ ++ int ++ has_cmdundefined() ++ { ++ return (first_autopat[(int)EVENT_CMDUNDEFINED] != NULL); ++ } ++ ++ /* ++ * Return TRUE when there is an FuncUndefined autocommand defined. ++ */ ++ int ++ has_funcundefined() ++ { ++ return (first_autopat[(int)EVENT_FUNCUNDEFINED] != NULL); ++ } ++ + static int + apply_autocmds_group(event, fname, fname_io, force, group, buf, eap) + event_T event; +*** ../vim-7.4.413/src/proto/fileio.pro 2014-08-10 13:34:59.060785459 +0200 +--- src/proto/fileio.pro 2014-08-22 20:25:38.862955186 +0200 +*************** +*** 47,52 **** +--- 47,54 ---- + int has_textchanged __ARGS((void)); + int has_textchangedI __ARGS((void)); + int has_insertcharpre __ARGS((void)); ++ int has_cmdundefined __ARGS((void)); ++ int has_funcundefined __ARGS((void)); + void block_autocmds __ARGS((void)); + void unblock_autocmds __ARGS((void)); + int is_autocmd_blocked __ARGS((void)); +*** ../vim-7.4.413/src/version.c 2014-08-22 18:44:30.307175276 +0200 +--- src/version.c 2014-08-22 20:55:31.406890176 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 414, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +44. Your friends no longer send you e-mail...they just log on to your IRC + channel. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.415 b/SOURCES/7.4.415 new file mode 100644 index 0000000..1dbc6c6 --- /dev/null +++ b/SOURCES/7.4.415 @@ -0,0 +1,67 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.415 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.415 (after 7.4.414) +Problem: Cannot build. Warning for shadowed variable. (John Little) +Solution: Add missing change. Remove declaration. +Files: src/vim.h, src/ex_docmd.c + + +*** ../vim-7.4.414/src/vim.h 2014-08-06 14:52:05.047236174 +0200 +--- src/vim.h 2014-08-22 20:26:19.522953712 +0200 +*************** +*** 1326,1331 **** +--- 1326,1332 ---- + EVENT_SHELLFILTERPOST, /* after ":1,2!cmd", ":w !cmd", ":r !cmd". */ + EVENT_TEXTCHANGED, /* text was modified */ + EVENT_TEXTCHANGEDI, /* text was modified in Insert mode*/ ++ EVENT_CMDUNDEFINED, /* command undefined */ + NUM_EVENTS /* MUST be the last one */ + }; + +*** ../vim-7.4.414/src/ex_docmd.c 2014-08-22 23:05:50.102606614 +0200 +--- src/ex_docmd.c 2014-08-23 14:11:52.640635039 +0200 +*************** +*** 2150,2158 **** + && ASCII_ISUPPER(*ea.cmd) + && has_cmdundefined()) + { +- char_u *p = ea.cmd; + int ret; + + while (ASCII_ISALNUM(*p)) + ++p; + p = vim_strnsave(ea.cmd, p - ea.cmd); +--- 2150,2158 ---- + && ASCII_ISUPPER(*ea.cmd) + && has_cmdundefined()) + { + int ret; + ++ p = ea.cmd; + while (ASCII_ISALNUM(*p)) + ++p; + p = vim_strnsave(ea.cmd, p - ea.cmd); +*** ../vim-7.4.415/src/version.c 2014-08-22 23:05:50.106606614 +0200 +--- src/version.c 2014-08-23 14:15:50.620626408 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 415, + /**/ + +-- +CVS sux, men don't like commitment + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.416 b/SOURCES/7.4.416 new file mode 100644 index 0000000..98762f4 --- /dev/null +++ b/SOURCES/7.4.416 @@ -0,0 +1,96 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.416 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.416 +Problem: Problem with breakindent/showbreak and tabs. +Solution: Handle tabs differently. (Christian Brabandt) +Files: src/testdir/test_breakindent.in, src/testdir/test_breakindent.ok, + src/charset.c + + +*** ../vim-7.4.415/src/testdir/test_breakindent.in 2014-06-25 14:39:35.114348584 +0200 +--- src/testdir/test_breakindent.in 2014-08-24 21:13:12.188584738 +0200 +*************** +*** 73,78 **** +--- 73,95 ---- + :let width = strlen(text[1:])+indent(2)*4+strlen(&sbr)*3 " text wraps 3 times + :$put =g:test + :$put =printf(\"strdisplaywidth: %d == calculated: %d\", strdisplaywidth(text), width) ++ :" ++ :" Test, that the string " a\tb\tc\td\te" is correctly ++ :" displayed in a 20 column wide window (see bug report ++ :" https://groups.google.com/d/msg/vim_dev/ZOdg2mc9c9Y/TT8EhFjEy0IJ ++ :only ++ :vert 20new ++ :set all& nocp breakindent briopt=min:10 ++ :call setline(1, [" a\tb\tc\td\te", " z y x w v"]) ++ :/^\s*a ++ fbgjyl:let line1 = @0 ++ :?^\s*z ++ fygjyl:let line2 = @0 ++ :quit! ++ :$put ='Test 12: breakindent with wrapping Tab' ++ :$put =line1 ++ :$put =line2 ++ :" + :%w! test.out + :qa! + ENDTEST +*** ../vim-7.4.415/src/testdir/test_breakindent.ok 2014-06-25 14:39:35.114348584 +0200 +--- src/testdir/test_breakindent.ok 2014-08-24 21:13:36.228583867 +0200 +*************** +*** 53,55 **** +--- 53,58 ---- + + Test 11: strdisplaywidth when breakindent is on + strdisplaywidth: 46 == calculated: 64 ++ Test 12: breakindent with wrapping Tab ++ d ++ w +*** ../vim-7.4.415/src/charset.c 2014-07-16 23:39:50.247084976 +0200 +--- src/charset.c 2014-08-24 21:14:46.340581324 +0200 +*************** +*** 1195,1204 **** + if (wp->w_p_bri) + added += get_breakindent_win(wp, line); + +! if (tab_corr) +! size += (added / wp->w_buffer->b_p_ts) * wp->w_buffer->b_p_ts; +! else +! size += added; + if (col != 0) + added = 0; + } +--- 1195,1201 ---- + if (wp->w_p_bri) + added += get_breakindent_win(wp, line); + +! size += added; + if (col != 0) + added = 0; + } +*** ../vim-7.4.415/src/version.c 2014-08-23 14:18:20.868620959 +0200 +--- src/version.c 2014-08-24 18:06:08.860991777 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 416, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +57. You begin to wonder how on earth your service provider is allowed to call + 200 hours per month "unlimited." + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.417 b/SOURCES/7.4.417 new file mode 100644 index 0000000..a67e75d --- /dev/null +++ b/SOURCES/7.4.417 @@ -0,0 +1,173 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.417 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.417 +Problem: After splitting a window and setting 'breakindent' the default + minimum with is not respected. +Solution: Call briopt_check() when copying options to a new window. +Files: src/option.c, src/proto/option.pro, + src/testdir/test_breakindent.in + + +*** ../vim-7.4.416/src/option.c 2014-08-13 21:58:24.820885492 +0200 +--- src/option.c 2014-08-24 21:30:49.468546394 +0200 +*************** +*** 3097,3102 **** +--- 3097,3105 ---- + static int opt_strings_flags __ARGS((char_u *val, char **values, unsigned *flagp, int list)); + static int check_opt_strings __ARGS((char_u *val, char **values, int)); + static int check_opt_wim __ARGS((void)); ++ #ifdef FEAT_LINEBREAK ++ static int briopt_check __ARGS((win_T *wp)); ++ #endif + + /* + * Initialize the options, first part. +*************** +*** 5289,5295 **** + (void)check_cedit(); + #endif + #ifdef FEAT_LINEBREAK +! briopt_check(); + #endif + } + +--- 5292,5298 ---- + (void)check_cedit(); + #endif + #ifdef FEAT_LINEBREAK +! briopt_check(curwin); + #endif + } + +*************** +*** 5748,5754 **** + /* 'breakindentopt' */ + else if (varp == &curwin->w_p_briopt) + { +! if (briopt_check() == FAIL) + errmsg = e_invarg; + } + #endif +--- 5751,5757 ---- + /* 'breakindentopt' */ + else if (varp == &curwin->w_p_briopt) + { +! if (briopt_check(curwin) == FAIL) + errmsg = e_invarg; + } + #endif +*************** +*** 10232,10237 **** +--- 10235,10243 ---- + wp_to->w_farsi = wp_from->w_farsi; + # endif + # endif ++ #if defined(FEAT_LINEBREAK) ++ briopt_check(wp_to); ++ #endif + } + #endif + +*************** +*** 12002,12016 **** + * This is called when 'breakindentopt' is changed and when a window is + * initialized. + */ +! int +! briopt_check() + { + char_u *p; + int bri_shift = 0; + long bri_min = 20; + int bri_sbr = FALSE; + +! p = curwin->w_p_briopt; + while (*p != NUL) + { + if (STRNCMP(p, "shift:", 6) == 0 +--- 12008,12023 ---- + * This is called when 'breakindentopt' is changed and when a window is + * initialized. + */ +! static int +! briopt_check(wp) +! win_T *wp; + { + char_u *p; + int bri_shift = 0; + long bri_min = 20; + int bri_sbr = FALSE; + +! p = wp->w_p_briopt; + while (*p != NUL) + { + if (STRNCMP(p, "shift:", 6) == 0 +*************** +*** 12035,12043 **** + ++p; + } + +! curwin->w_p_brishift = bri_shift; +! curwin->w_p_brimin = bri_min; +! curwin->w_p_brisbr = bri_sbr; + + return OK; + } +--- 12042,12050 ---- + ++p; + } + +! wp->w_p_brishift = bri_shift; +! wp->w_p_brimin = bri_min; +! wp->w_p_brisbr = bri_sbr; + + return OK; + } +*** ../vim-7.4.416/src/proto/option.pro 2014-06-25 14:44:04.458358774 +0200 +--- src/proto/option.pro 2014-08-24 21:30:53.588546244 +0200 +*************** +*** 62,66 **** + long get_sw_value __ARGS((buf_T *buf)); + long get_sts_value __ARGS((void)); + void find_mps_values __ARGS((int *initc, int *findc, int *backwards, int switchit)); +- int briopt_check __ARGS((void)); + /* vim: set ft=c : */ +--- 62,65 ---- +*** ../vim-7.4.416/src/testdir/test_breakindent.in 2014-08-24 21:19:22.220571318 +0200 +--- src/testdir/test_breakindent.in 2014-08-24 21:37:40.616531483 +0200 +*************** +*** 27,32 **** +--- 27,33 ---- + : $put =g:line1 + : wincmd p + :endfu ++ :set briopt=min:0 + :let g:test="Test 1: Simple breakindent" + :let line1=ScreenChar(8) + :call DoRecordScreen() +*** ../vim-7.4.416/src/version.c 2014-08-24 21:19:22.224571318 +0200 +--- src/version.c 2014-08-24 21:29:09.156550032 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 417, + /**/ + + +-- +hundred-and-one symptoms of being an internet addict: +58. You turn on your computer and turn off your wife. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.418 b/SOURCES/7.4.418 new file mode 100644 index 0000000..15a83da --- /dev/null +++ b/SOURCES/7.4.418 @@ -0,0 +1,58 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.418 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.418 +Problem: When leaving ":append" the cursor shape is like in Insert mode. + (Jacob Niehus) +Solution: Do not have State set to INSERT when calling getline(). +Files: src/ex_cmds.c + + +*** ../vim-7.4.417/src/ex_cmds.c 2014-08-06 18:17:03.471147780 +0200 +--- src/ex_cmds.c 2014-08-29 08:54:26.666398204 +0200 +*************** +*** 4011,4021 **** +--- 4011,4029 ---- + eap->nextcmd = p; + } + else ++ { ++ int save_State = State; ++ ++ /* Set State to avoid the cursor shape to be set to INSERT mode ++ * when getline() returns. */ ++ State = CMDLINE; + theline = eap->getline( + #ifdef FEAT_EVAL + eap->cstack->cs_looplevel > 0 ? -1 : + #endif + NUL, eap->cookie, indent); ++ State = save_State; ++ } + lines_left = Rows - 1; + if (theline == NULL) + break; +*** ../vim-7.4.417/src/version.c 2014-08-24 21:39:45.488526954 +0200 +--- src/version.c 2014-08-29 08:58:31.086398738 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 418, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +88. Every single time you press the 'Get mail' button...it does get new mail. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.419 b/SOURCES/7.4.419 new file mode 100644 index 0000000..f718713 --- /dev/null +++ b/SOURCES/7.4.419 @@ -0,0 +1,124 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.419 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.419 +Problem: When part of a list is locked it's possible to make changes. +Solution: Check if any of the list items is locked before make a change. + (ZyX) +Files: src/eval.c, src/testdir/test55.in, src/testdir/test55.ok + + +*** ../vim-7.4.418/src/eval.c 2014-08-22 13:13:24.219895762 +0200 +--- src/eval.c 2014-08-29 09:37:56.930403905 +0200 +*************** +*** 2945,2950 **** +--- 2945,2967 ---- + ; + else if (lp->ll_range) + { ++ listitem_T *ll_li = lp->ll_li; ++ int ll_n1 = lp->ll_n1; ++ ++ /* ++ * Check whether any of the list items is locked ++ */ ++ for (ri = rettv->vval.v_list->lv_first; ri != NULL; ) ++ { ++ if (tv_check_lock(ll_li->li_tv.v_lock, lp->ll_name)) ++ return; ++ ri = ri->li_next; ++ if (ri == NULL || (!lp->ll_empty2 && lp->ll_n2 == ll_n1)) ++ break; ++ ll_li = ll_li->li_next; ++ ++ll_n1; ++ } ++ + /* + * Assign the List values to the list items. + */ +*************** +*** 3646,3651 **** +--- 3663,3679 ---- + else if (lp->ll_range) + { + listitem_T *li; ++ listitem_T *ll_li = lp->ll_li; ++ int ll_n1 = lp->ll_n1; ++ ++ while (ll_li != NULL && (lp->ll_empty2 || lp->ll_n2 >= ll_n1)) ++ { ++ li = ll_li->li_next; ++ if (tv_check_lock(ll_li->li_tv.v_lock, lp->ll_name)) ++ return FAIL; ++ ll_li = li; ++ ++ll_n1; ++ } + + /* Delete a range of List items. */ + while (lp->ll_li != NULL && (lp->ll_empty2 || lp->ll_n2 >= lp->ll_n1)) +*** ../vim-7.4.418/src/testdir/test55.in 2014-07-02 19:06:14.686326091 +0200 +--- src/testdir/test55.in 2014-08-29 09:37:23.474403832 +0200 +*************** +*** 282,287 **** +--- 282,302 ---- + : $put =ps + : endfor + :endfor ++ :unlet l ++ :let l = [1, 2, 3, 4] ++ :lockvar! l ++ :$put =string(l) ++ :unlockvar l[1] ++ :unlet l[0:1] ++ :$put =string(l) ++ :unlet l[1:2] ++ :$put =string(l) ++ :unlockvar l[1] ++ :let l[0:1] = [0, 1] ++ :$put =string(l) ++ :let l[1:2] = [0, 1] ++ :$put =string(l) ++ :unlet l + :" :lockvar/islocked() triggering script autoloading + :set rtp+=./sautest + :lockvar g:footest#x +*** ../vim-7.4.418/src/testdir/test55.ok 2014-07-02 19:06:14.686326091 +0200 +--- src/testdir/test55.ok 2014-08-29 09:37:29.606403846 +0200 +*************** +*** 86,91 **** +--- 86,96 ---- + FFpFFpp + 0000-000 + ppppppp ++ [1, 2, 3, 4] ++ [1, 2, 3, 4] ++ [1, 2, 3, 4] ++ [1, 2, 3, 4] ++ [1, 2, 3, 4] + locked g:footest#x:-1 + exists g:footest#x:0 + g:footest#x: 1 +*** ../vim-7.4.418/src/version.c 2014-08-29 09:02:23.890399246 +0200 +--- src/version.c 2014-08-29 09:39:24.658404097 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 419, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +90. Instead of calling you to dinner, your spouse sends e-mail. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.420 b/SOURCES/7.4.420 new file mode 100644 index 0000000..71cdf96 --- /dev/null +++ b/SOURCES/7.4.420 @@ -0,0 +1,57 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.420 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.420 +Problem: It's not obvious how to add a new test. +Solution: Add a README file. (Christian Brabandt) +Files: src/testdir/README.txt + + +*** ../vim-7.4.419/src/testdir/README.txt 2014-08-29 10:04:24.754407374 +0200 +--- src/testdir/README.txt 2014-08-29 10:01:08.294406945 +0200 +*************** +*** 0 **** +--- 1,18 ---- ++ This directory contains tests for various Vim features. ++ ++ If it makes sense, try to add a new test to an already existing file. You may ++ want to separate it from other tests in that file using :" (that's an Ex ++ command comment). ++ ++ The numbered tests are older, we have switched to named tests. ++ ++ To add a new test: ++ 1) Create test_<subject>.in and test_<subject>.ok files. ++ 2) Add them to all Makefiles (Make*) in alphabetical order (search for an ++ existing test_file.out to see where to add the new one). ++ 3) Use make test_<subject>.out to run a single test file in src/testdir/. ++ 4) Also add an entry in src/Makefile. ++ ++ Keep in mind that the files are used as if everything was typed. ++ A line break is like pressing Enter. If that happens on the last line you'll ++ hear a beep. +*** ../vim-7.4.419/src/version.c 2014-08-29 09:46:04.266404970 +0200 +--- src/version.c 2014-08-29 10:01:21.242406973 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 420, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +91. It's Saturday afternoon in the middle of May and you + are on computer. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.421 b/SOURCES/7.4.421 new file mode 100644 index 0000000..35b00d0 --- /dev/null +++ b/SOURCES/7.4.421 @@ -0,0 +1,132 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.421 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.421 +Problem: Crash when searching for "\ze*". (Urtica Dioica) +Solution: Disallow a multi after \ze and \zs. +Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok + + +*** ../vim-7.4.420/src/regexp_nfa.c 2014-05-13 19:37:19.489786520 +0200 +--- src/regexp_nfa.c 2014-08-29 11:14:12.030416520 +0200 +*************** +*** 291,296 **** +--- 291,297 ---- + static int nfa_regconcat __ARGS((void)); + static int nfa_regbranch __ARGS((void)); + static int nfa_reg __ARGS((int paren)); ++ static int re_mult_next __ARGS((char *what)); + #ifdef DEBUG + static void nfa_set_code __ARGS((int c)); + static void nfa_postfix_dump __ARGS((char_u *expr, int retval)); +*************** +*** 1323,1332 **** +--- 1324,1337 ---- + { + case 's': + EMIT(NFA_ZSTART); ++ if (re_mult_next("\\zs") == FAIL) ++ return FAIL; + break; + case 'e': + EMIT(NFA_ZEND); + nfa_has_zend = TRUE; ++ if (re_mult_next("\\ze") == FAIL) ++ return FAIL; + break; + #ifdef FEAT_SYN_HL + case '1': +*************** +*** 2276,2281 **** +--- 2281,2298 ---- + return OK; + } + ++ /* ++ * Used in a place where no * or \+ can follow. ++ */ ++ static int ++ re_mult_next(what) ++ char *what; ++ { ++ if (re_multi_type(peekchr()) == MULTI_MULT) ++ EMSG2_RET_FAIL(_("E888: (NFA regexp) cannot repeat %s"), what); ++ return OK; ++ } ++ + #ifdef DEBUG + static char_u code[50]; + +*** ../vim-7.4.420/src/testdir/test64.in 2014-05-13 16:44:25.633695709 +0200 +--- src/testdir/test64.in 2014-08-29 11:33:12.330419011 +0200 +*************** +*** 459,465 **** + : let text = t[2] + : let matchidx = 3 + : for engine in [0, 1, 2] +! : if engine == 2 && re == 0 || engine == 1 && re ==1 + : continue + : endif + : let ®expengine = engine +--- 459,465 ---- + : let text = t[2] + : let matchidx = 3 + : for engine in [0, 1, 2] +! : if engine == 2 && re == 0 || engine == 1 && re == 1 + : continue + : endif + : let ®expengine = engine +*************** +*** 608,613 **** +--- 608,624 ---- + "ayb20gg/..\%$ + "bybGo"apo"bp:" + :" ++ :" Check for detecting error ++ :set regexpengine=2 ++ :for pat in [' \ze*', ' \zs*'] ++ : try ++ : let l = matchlist('x x', pat) ++ : $put ='E888 NOT detected for ' . pat ++ : catch ++ : $put ='E888 detected for ' . pat ++ : endtry ++ :endfor ++ :" + :""""" Write the results """"""""""""" + :/\%#=1^Results/,$wq! test.out + ENDTEST +*** ../vim-7.4.420/src/testdir/test64.ok 2014-05-13 16:44:25.633695709 +0200 +--- src/testdir/test64.ok 2014-08-29 11:36:05.782419390 +0200 +*************** +*** 1097,1099 **** +--- 1097,1101 ---- + Test END + EN + E ++ E888 detected for \ze* ++ E888 detected for \zs* +*** ../vim-7.4.420/src/version.c 2014-08-29 10:04:32.226407390 +0200 +--- src/version.c 2014-08-29 11:37:15.794419543 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 421, + /**/ + +-- +From "know your smileys": + :----} You lie like Pinocchio + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.422 b/SOURCES/7.4.422 new file mode 100644 index 0000000..f8df16b --- /dev/null +++ b/SOURCES/7.4.422 @@ -0,0 +1,103 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.422 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.422 +Problem: When using conceal with linebreak some text is not displayed + correctly. (Grüner Gimpel) +Solution: Check for conceal mode when using linebreak. (Christian Brabandt) +Files: src/screen.c, src/testdir/test_listlbr.in, + src/testdir/test_listlbr.ok + + +*** ../vim-7.4.421/src/screen.c 2014-08-16 16:28:31.882272056 +0200 +--- src/screen.c 2014-08-29 12:08:11.478423596 +0200 +*************** +*** 4514,4519 **** +--- 4514,4524 ---- + int i; + int saved_nextra = n_extra; + ++ #ifdef FEAT_CONCEAL ++ if (is_concealing && vcol_off > 0) ++ /* there are characters to conceal */ ++ tab_len += vcol_off; ++ #endif + /* if n_extra > 0, it gives the number of chars, to + * use for a tab, else we need to calculate the width + * for a tab */ +*************** +*** 4539,4544 **** +--- 4544,4555 ---- + #endif + } + p_extra = p_extra_free; ++ #ifdef FEAT_CONCEAL ++ /* n_extra will be increased by FIX_FOX_BOGUSCOLS ++ * macro below, so need to adjust for that here */ ++ if (is_concealing && vcol_off > 0) ++ n_extra -= vcol_off; ++ #endif + } + #endif + #ifdef FEAT_CONCEAL +*** ../vim-7.4.421/src/testdir/test_listlbr.in 2014-07-16 17:01:38.279570568 +0200 +--- src/testdir/test_listlbr.in 2014-08-29 12:03:48.126423021 +0200 +*************** +*** 46,51 **** +--- 46,61 ---- + :redraw! + :let line=ScreenChar(winwidth(0)) + :call DoRecordScreen() ++ :let line="_S_\t bla" ++ :$put =line ++ :$ ++ :norm! zt ++ :let g:test ="Test 5: set linebreak with conceal and set list and tab displayed by different char (line may not be truncated)" ++ :set cpo&vim list linebreak conceallevel=2 concealcursor=nv listchars=tab:ab ++ :syn match ConcealVar contained /_/ conceal ++ :syn match All /.*/ contains=ConcealVar ++ :let line=ScreenChar(winwidth(0)) ++ :call DoRecordScreen() + :%w! test.out + :qa! + ENDTEST +*** ../vim-7.4.421/src/testdir/test_listlbr.ok 2014-07-16 17:01:38.279570568 +0200 +--- src/testdir/test_listlbr.ok 2014-08-29 12:03:48.126423021 +0200 +*************** +*** 25,27 **** +--- 25,34 ---- + +aaaaaaaaaaaaaaaaaa + ~ + ~ ++ _S_ bla ++ ++ Test 5: set linebreak with conceal and set list and tab displayed by different char (line may not be truncated) ++ Sabbbbbb bla ++ ~ ++ ~ ++ ~ +*** ../vim-7.4.421/src/version.c 2014-08-29 11:56:21.350422045 +0200 +--- src/version.c 2014-08-29 12:04:26.658423105 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 422, + /**/ + +-- +From "know your smileys": + ;-0 Can't find shift key + ,-9 Kann Umschalttaste nicht finden + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.423 b/SOURCES/7.4.423 new file mode 100644 index 0000000..fc04ae0 --- /dev/null +++ b/SOURCES/7.4.423 @@ -0,0 +1,109 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.423 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.423 +Problem: expand("$shell") does not work as documented. +Solution: Do not escape the $ when expanding environment variables. +Files: src/os_unix.c, src/misc1.c, src/vim.h + + +*** ../vim-7.4.422/src/os_unix.c 2014-07-30 17:21:53.815518506 +0200 +--- src/os_unix.c 2014-08-29 12:47:57.230428808 +0200 +*************** +*** 5939,5948 **** + *p++ = '\\'; + ++j; + } +! else if (!intick && vim_strchr(SHELL_SPECIAL, +! pat[i][j]) != NULL) + /* Put a backslash before a special character, but not +! * when inside ``. */ + *p++ = '\\'; + + /* Copy one character. */ +--- 5939,5950 ---- + *p++ = '\\'; + ++j; + } +! else if (!intick +! && ((flags & EW_KEEPDOLLAR) == 0 || pat[i][j] != '$') +! && vim_strchr(SHELL_SPECIAL, pat[i][j]) != NULL) + /* Put a backslash before a special character, but not +! * when inside ``. And not for $var when EW_KEEPDOLLAR is +! * set. */ + *p++ = '\\'; + + /* Copy one character. */ +*** ../vim-7.4.422/src/misc1.c 2014-08-06 17:44:09.867161966 +0200 +--- src/misc1.c 2014-08-29 12:48:11.390428839 +0200 +*************** +*** 78,84 **** + if (!list || lcs_tab1) /* count a tab for what it is worth */ + count += ts - (count % ts); + else +! /* in list mode, when tab is not set, count screen char width for Tab: ^I */ + count += ptr2cells(ptr); + } + else if (*ptr == ' ') +--- 78,85 ---- + if (!list || lcs_tab1) /* count a tab for what it is worth */ + count += ts - (count % ts); + else +! /* In list mode, when tab is not set, count screen char width +! * for Tab, displays: ^I */ + count += ptr2cells(ptr); + } + else if (*ptr == ' ') +*************** +*** 10767,10773 **** + vim_free(p); + ga_clear_strings(&ga); + i = mch_expand_wildcards(num_pat, pat, num_file, file, +! flags); + recursive = FALSE; + return i; + } +--- 10768,10774 ---- + vim_free(p); + ga_clear_strings(&ga); + i = mch_expand_wildcards(num_pat, pat, num_file, file, +! flags|EW_KEEPDOLLAR); + recursive = FALSE; + return i; + } +*** ../vim-7.4.422/src/vim.h 2014-08-23 14:16:11.880625637 +0200 +--- src/vim.h 2014-08-29 12:46:47.370428655 +0200 +*************** +*** 835,840 **** +--- 835,841 ---- + #define EW_ICASE 0x100 /* ignore case */ + #define EW_NOERROR 0x200 /* no error for bad regexp */ + #define EW_NOTWILD 0x400 /* add match with literal name if exists */ ++ #define EW_KEEPDOLLAR 0x800 /* do not escape $, $var is expanded */ + /* Note: mostly EW_NOTFOUND and EW_SILENT are mutually exclusive: EW_NOTFOUND + * is used when executing commands and EW_SILENT for interactive expanding. */ + +*** ../vim-7.4.422/src/version.c 2014-08-29 12:08:39.686423658 +0200 +--- src/version.c 2014-08-29 12:48:54.138428932 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 423, + /**/ + +-- +From "know your smileys": + :~) A man with a tape recorder up his nose + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.424 b/SOURCES/7.4.424 new file mode 100644 index 0000000..955b4f6 --- /dev/null +++ b/SOURCES/7.4.424 @@ -0,0 +1,55 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.424 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.424 +Problem: Get ml_get error when using Python to delete lines in a buffer + that is not in a window. issue 248. +Solution: Do not try adjusting the cursor for a different buffer. +Files: src/if_py_both.h + + +*** ../vim-7.4.423/src/if_py_both.h 2014-05-07 17:31:32.473182497 +0200 +--- src/if_py_both.h 2014-08-29 13:32:18.554434621 +0200 +*************** +*** 4196,4202 **** + break; + } + } +! if (buf == curbuf) + py_fix_cursor((linenr_T)lo, (linenr_T)hi, (linenr_T)-n); + if (save_curbuf == NULL) + /* Only adjust marks if we managed to switch to a window that +--- 4196,4204 ---- + break; + } + } +! if (buf == curbuf && (save_curwin != NULL || save_curbuf == NULL)) +! /* Using an existing window for the buffer, adjust the cursor +! * position. */ + py_fix_cursor((linenr_T)lo, (linenr_T)hi, (linenr_T)-n); + if (save_curbuf == NULL) + /* Only adjust marks if we managed to switch to a window that +*** ../vim-7.4.423/src/version.c 2014-08-29 12:58:38.246430208 +0200 +--- src/version.c 2014-08-29 13:36:13.642435134 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 424, + /**/ + +-- +From "know your smileys": + :-H Is missing teeth + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.425 b/SOURCES/7.4.425 new file mode 100644 index 0000000..fd1bad3 --- /dev/null +++ b/SOURCES/7.4.425 @@ -0,0 +1,71 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.425 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.425 +Problem: When 'showbreak' is used "gj" may move to the wrong position. + (Nazri Ramliy) +Solution: Adjust virtcol when 'showbreak' is set. (Christian Brabandt) +Files: src/normal.c + + +*** ../vim-7.4.424/src/normal.c 2014-07-23 12:31:17.207990767 +0200 +--- src/normal.c 2014-08-29 14:15:14.158440247 +0200 +*************** +*** 4509,4521 **** + #if defined(FEAT_LINEBREAK) || defined(FEAT_MBYTE) + if (curwin->w_cursor.col > 0 && curwin->w_p_wrap) + { + /* + * Check for landing on a character that got split at the end of the + * last line. We want to advance a screenline, not end up in the same + * screenline or move two screenlines. + */ + validate_virtcol(); +! if (curwin->w_virtcol > curwin->w_curswant + && (curwin->w_curswant < (colnr_T)width1 + ? (curwin->w_curswant > (colnr_T)width1 / 2) + : ((curwin->w_curswant - width1) % width2 +--- 4509,4527 ---- + #if defined(FEAT_LINEBREAK) || defined(FEAT_MBYTE) + if (curwin->w_cursor.col > 0 && curwin->w_p_wrap) + { ++ colnr_T virtcol; ++ + /* + * Check for landing on a character that got split at the end of the + * last line. We want to advance a screenline, not end up in the same + * screenline or move two screenlines. + */ + validate_virtcol(); +! virtcol = curwin->w_virtcol; +! if (virtcol > (colnr_T)width1 && *p_sbr != NUL) +! virtcol -= vim_strsize(p_sbr); +! +! if (virtcol > curwin->w_curswant + && (curwin->w_curswant < (colnr_T)width1 + ? (curwin->w_curswant > (colnr_T)width1 / 2) + : ((curwin->w_curswant - width1) % width2 +*** ../vim-7.4.424/src/version.c 2014-08-29 13:49:48.678436915 +0200 +--- src/version.c 2014-08-29 14:17:26.938440537 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 425, + /**/ + +-- +From "know your smileys": + !-| I-am-a-Cylon-Centurian-with-one-red-eye-bouncing-back-and-forth + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.426 b/SOURCES/7.4.426 new file mode 100644 index 0000000..0022e9b --- /dev/null +++ b/SOURCES/7.4.426 @@ -0,0 +1,45 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.426 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.426 +Problem: README File missing from list of files. +Solution: Update the list of files. +Files: Filelist + + +*** ../vim-7.4.425/Filelist 2014-08-10 13:46:30.424780490 +0200 +--- Filelist 2014-08-29 15:08:47.914447267 +0200 +*************** +*** 82,87 **** +--- 82,88 ---- + src/xxd/xxd.c \ + src/main.aap \ + src/testdir/main.aap \ ++ src/testdir/README.txt \ + src/testdir/*.in \ + src/testdir/sautest/autoload/*.vim \ + src/testdir/test[0-9]*.ok \ +*** ../vim-7.4.425/src/version.c 2014-08-29 14:20:47.418440975 +0200 +--- src/version.c 2014-08-29 15:09:33.234447366 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 426, + /**/ + +-- +From "know your smileys": + :-O>-o Smiley American tourist (note big mouth and camera) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.427 b/SOURCES/7.4.427 new file mode 100644 index 0000000..e59cd85 --- /dev/null +++ b/SOURCES/7.4.427 @@ -0,0 +1,112 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.427 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.427 +Problem: When an InsertCharPre autocommand executes system() typeahead may + be echoed and messes up the display. (Jacob Niehus) +Solution: Do not set cooked mode when invoked from ":silent". +Files: src/eval.c, runtime/doc/eval.txt + + +*** ../vim-7.4.426/src/eval.c 2014-08-29 09:46:04.262404970 +0200 +--- src/eval.c 2014-08-29 15:37:57.034451088 +0200 +*************** +*** 18594,18599 **** +--- 18594,18600 ---- + int err = FALSE; + FILE *fd; + list_T *list = NULL; ++ int flags = SHELL_SILENT; + + rettv->v_type = VAR_STRING; + rettv->vval.v_string = NULL; +*************** +*** 18643,18648 **** +--- 18644,18654 ---- + } + } + ++ /* Omit SHELL_COOKED when invoked with ":silent". Avoids that the shell ++ * echoes typeahead, that messes up the display. */ ++ if (!msg_silent) ++ flags += SHELL_COOKED; ++ + if (retlist) + { + int len; +*************** +*** 18652,18659 **** + char_u *end; + int i; + +! res = get_cmd_output(get_tv_string(&argvars[0]), infile, +! SHELL_SILENT | SHELL_COOKED, &len); + if (res == NULL) + goto errret; + +--- 18658,18664 ---- + char_u *end; + int i; + +! res = get_cmd_output(get_tv_string(&argvars[0]), infile, flags, &len); + if (res == NULL) + goto errret; + +*************** +*** 18694,18701 **** + } + else + { +! res = get_cmd_output(get_tv_string(&argvars[0]), infile, +! SHELL_SILENT | SHELL_COOKED, NULL); + #ifdef USE_CR + /* translate <CR> into <NL> */ + if (res != NULL) +--- 18699,18705 ---- + } + else + { +! res = get_cmd_output(get_tv_string(&argvars[0]), infile, flags, NULL); + #ifdef USE_CR + /* translate <CR> into <NL> */ + if (res != NULL) +*** ../vim-7.4.426/runtime/doc/eval.txt 2014-08-06 14:52:05.035236174 +0200 +--- runtime/doc/eval.txt 2014-08-29 15:49:48.918452643 +0200 +*************** +*** 6071,6076 **** +--- 6093,6104 ---- + list items converted to NULs). + Pipes are not used. + ++ When prepended by |:silent| the shell will not be set to ++ cooked mode. This is meant to be used for commands that do ++ not need the user to type. It avoids stray characters showing ++ up on the screen which require |CTRL-L| to remove. > ++ :silent let f = system('ls *.vim') ++ < + Note: Use |shellescape()| or |::S| with |expand()| or + |fnamemodify()| to escape special characters in a command + argument. Newlines in {expr} may cause the command to fail. +*** ../vim-7.4.426/src/version.c 2014-08-29 15:12:50.950447798 +0200 +--- src/version.c 2014-08-29 15:39:07.862451242 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 427, + /**/ + +-- +How many light bulbs does it take to change a person? + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.428 b/SOURCES/7.4.428 new file mode 100644 index 0000000..bb7d7e7 --- /dev/null +++ b/SOURCES/7.4.428 @@ -0,0 +1,105 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.428 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.428 +Problem: executable() may return a wrong result on MS-Windows. +Solution: Change the way SearchPath() is called. (Yasuhiro Matsumoto, Ken + Takata) +Files: src/os_win32.c + + +*** ../vim-7.4.427/src/os_win32.c 2014-07-09 20:51:04.515583033 +0200 +--- src/os_win32.c 2014-08-29 17:44:01.782467612 +0200 +*************** +*** 1906,1911 **** +--- 1906,1913 ---- + { + char *dum; + char fname[_MAX_PATH]; ++ char *curpath, *newpath; ++ long n; + + #ifdef FEAT_MBYTE + if (enc_codepage >= 0 && (int)GetACP() != enc_codepage) +*************** +*** 1913,1923 **** + WCHAR *p = enc_to_utf16(name, NULL); + WCHAR fnamew[_MAX_PATH]; + WCHAR *dumw; +! long n; + + if (p != NULL) + { +! n = (long)SearchPathW(NULL, p, NULL, _MAX_PATH, fnamew, &dumw); + vim_free(p); + if (n > 0 || GetLastError() != ERROR_CALL_NOT_IMPLEMENTED) + { +--- 1915,1933 ---- + WCHAR *p = enc_to_utf16(name, NULL); + WCHAR fnamew[_MAX_PATH]; + WCHAR *dumw; +! WCHAR *wcurpath, *wnewpath; + + if (p != NULL) + { +! wcurpath = _wgetenv(L"PATH"); +! wnewpath = (WCHAR*)alloc((unsigned)(wcslen(wcurpath) + 3) +! * sizeof(WCHAR)); +! if (wnewpath == NULL) +! return FALSE; +! wcscpy(wnewpath, L".;"); +! wcscat(wnewpath, wcurpath); +! n = (long)SearchPathW(wnewpath, p, NULL, _MAX_PATH, fnamew, &dumw); +! vim_free(wnewpath); + vim_free(p); + if (n > 0 || GetLastError() != ERROR_CALL_NOT_IMPLEMENTED) + { +*************** +*** 1933,1939 **** + } + } + #endif +! if (SearchPath(NULL, name, NULL, _MAX_PATH, fname, &dum) == 0) + return FALSE; + if (mch_isdir(fname)) + return FALSE; +--- 1943,1958 ---- + } + } + #endif +! +! curpath = getenv("PATH"); +! newpath = (char*)alloc((unsigned)(STRLEN(curpath) + 3)); +! if (newpath == NULL) +! return FALSE; +! STRCPY(newpath, ".;"); +! STRCAT(newpath, curpath); +! n = (long)SearchPath(newpath, name, NULL, _MAX_PATH, fname, &dum); +! vim_free(newpath); +! if (n == 0) + return FALSE; + if (mch_isdir(fname)) + return FALSE; +*** ../vim-7.4.427/src/version.c 2014-08-29 15:53:43.714453155 +0200 +--- src/version.c 2014-08-29 17:44:50.598467718 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 428, + /**/ + +-- +You are only young once, but you can stay immature indefinitely. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.429 b/SOURCES/7.4.429 new file mode 100644 index 0000000..3d7de57 --- /dev/null +++ b/SOURCES/7.4.429 @@ -0,0 +1,47 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.429 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.429 +Problem: Build fails with fewer features. (Elimar Riesebieter) +Solution: Add #ifdef. +Files: src/normal.c + + +*** ../vim-7.4.428/src/normal.c 2014-08-29 14:20:47.418440975 +0200 +--- src/normal.c 2014-08-30 13:29:17.342622953 +0200 +*************** +*** 4518,4525 **** +--- 4518,4527 ---- + */ + validate_virtcol(); + virtcol = curwin->w_virtcol; ++ # if defined(FEAT_LINEBREAK) + if (virtcol > (colnr_T)width1 && *p_sbr != NUL) + virtcol -= vim_strsize(p_sbr); ++ # endif + + if (virtcol > curwin->w_curswant + && (curwin->w_curswant < (colnr_T)width1 +*** ../vim-7.4.428/src/version.c 2014-08-29 17:45:28.066467800 +0200 +--- src/version.c 2014-08-30 13:29:57.646623041 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 429, + /**/ + +-- +Where do you want to crash today? + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.430 b/SOURCES/7.4.430 new file mode 100644 index 0000000..f6232b0 --- /dev/null +++ b/SOURCES/7.4.430 @@ -0,0 +1,52 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.430 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.430 +Problem: test_listlbr fails when compiled with normal features. +Solution: Check for the +conceal feature. +Files: src/testdir/test_listlbr.in + + +*** ../vim-7.4.429/src/testdir/test_listlbr.in 2014-08-29 12:08:39.686423658 +0200 +--- src/testdir/test_listlbr.in 2014-08-30 17:07:04.930651497 +0200 +*************** +*** 2,8 **** + + STARTTEST + :so small.vim +! :if !exists("+linebreak") | e! test.ok | w! test.out | qa! | endif + :10new|:vsp|:vert resize 20 + :put =\"\tabcdef hijklmn\tpqrstuvwxyz_1060ABCDEFGHIJKLMNOP \" + :norm! zt +--- 2,8 ---- + + STARTTEST + :so small.vim +! :if !exists("+linebreak") || !exists("+conceal") | e! test.ok | w! test.out | qa! | endif + :10new|:vsp|:vert resize 20 + :put =\"\tabcdef hijklmn\tpqrstuvwxyz_1060ABCDEFGHIJKLMNOP \" + :norm! zt +*** ../vim-7.4.429/src/version.c 2014-08-30 13:32:03.406623315 +0200 +--- src/version.c 2014-08-30 17:08:01.758651621 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 430, + /**/ + +-- +You can't have everything. Where would you put it? + -- Steven Wright + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.431 b/SOURCES/7.4.431 new file mode 100644 index 0000000..e1b0714 --- /dev/null +++ b/SOURCES/7.4.431 @@ -0,0 +1,52 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.431 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.431 +Problem: Compiler warning. +Solution: Add type cast. (Mike Williams) +Files: src/ex_docmd.c + + +*** ../vim-7.4.430/src/ex_docmd.c 2014-08-23 14:16:11.884625637 +0200 +--- src/ex_docmd.c 2014-09-02 23:30:26.567267923 +0200 +*************** +*** 2155,2161 **** + p = ea.cmd; + while (ASCII_ISALNUM(*p)) + ++p; +! p = vim_strnsave(ea.cmd, p - ea.cmd); + ret = apply_autocmds(EVENT_CMDUNDEFINED, p, p, TRUE, NULL); + vim_free(p); + if (ret && !aborting()) +--- 2155,2161 ---- + p = ea.cmd; + while (ASCII_ISALNUM(*p)) + ++p; +! p = vim_strnsave(ea.cmd, (int)(p - ea.cmd)); + ret = apply_autocmds(EVENT_CMDUNDEFINED, p, p, TRUE, NULL); + vim_free(p); + if (ret && !aborting()) +*** ../vim-7.4.430/src/version.c 2014-08-30 18:10:15.106659776 +0200 +--- src/version.c 2014-09-09 12:21:42.312501370 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 431, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +105. When someone asks you for your address, you tell them your URL. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.432 b/SOURCES/7.4.432 new file mode 100644 index 0000000..f06cce1 --- /dev/null +++ b/SOURCES/7.4.432 @@ -0,0 +1,107 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.432 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.432 +Problem: When the startup code expands command line arguments, setting + 'encoding' will not properly convert the arguments. +Solution: Call get_cmd_argsW() early in main(). (Yasuhiro Matsumoto) +Files: src/os_win32.c, src/main.c, src/os_mswin.c + + +*** ../vim-7.4.431/src/os_win32.c 2014-08-29 17:45:28.066467800 +0200 +--- src/os_win32.c 2014-09-09 12:14:15.768500395 +0200 +*************** +*** 6461,6466 **** +--- 6461,6467 ---- + int argc = 0; + int i; + ++ free_cmd_argsW(); + ArglistW = CommandLineToArgvW(GetCommandLineW(), &nArgsW); + if (ArglistW != NULL) + { +*************** +*** 6493,6499 **** +--- 6494,6504 ---- + global_argc = argc; + global_argv = argv; + if (argc > 0) ++ { ++ if (used_file_indexes != NULL) ++ free(used_file_indexes); + used_file_indexes = malloc(argc * sizeof(int)); ++ } + + if (argvp != NULL) + *argvp = argv; +*** ../vim-7.4.431/src/main.c 2014-08-10 13:34:59.056785459 +0200 +--- src/main.c 2014-09-09 12:16:09.016500642 +0200 +*************** +*** 178,183 **** +--- 178,191 ---- + */ + mch_early_init(); + ++ #if defined(WIN32) && defined(FEAT_MBYTE) ++ /* ++ * MingW expands command line arguments, which confuses our code to ++ * convert when 'encoding' changes. Get the unexpanded arguments. ++ */ ++ argc = get_cmd_argsW(&argv); ++ #endif ++ + /* Many variables are in "params" so that we can pass them to invoked + * functions without a lot of arguments. "argc" and "argv" are also + * copied, so that they can be changed. */ +*************** +*** 1496,1501 **** +--- 1504,1512 ---- + if (garbage_collect_at_exit) + garbage_collect(); + #endif ++ #if defined(WIN32) && defined(FEAT_MBYTE) ++ free_cmd_argsW(); ++ #endif + + mch_exit(exitval); + } +*** ../vim-7.4.431/src/os_mswin.c 2014-03-19 12:37:18.537826062 +0100 +--- src/os_mswin.c 2014-09-09 12:17:25.696500810 +0200 +*************** +*** 277,286 **** + AnsiUpperBuff(toupper_tab, 256); + AnsiLowerBuff(tolower_tab, 256); + #endif +- +- #if defined(FEAT_MBYTE) && !defined(FEAT_GUI) +- (void)get_cmd_argsW(NULL); +- #endif + } + + +--- 277,282 ---- +*** ../vim-7.4.431/src/version.c 2014-09-09 12:21:57.716501404 +0200 +--- src/version.c 2014-09-09 12:24:38.440501755 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 432, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +106. When told to "go to your room" you inform your parents that you + can't...because you were kicked out and banned. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.433 b/SOURCES/7.4.433 new file mode 100644 index 0000000..7fdb85a --- /dev/null +++ b/SOURCES/7.4.433 @@ -0,0 +1,71 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.433 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.433 +Problem: Test 75 fails on MS-Windows. +Solution: Use ":normal" instead of feedkeys(). (Michael Soyka) +Files: src/testdir/test75.in + + +*** ../vim-7.4.432/src/testdir/test75.in 2014-03-12 20:17:47.752982126 +0100 +--- src/testdir/test75.in 2014-09-09 13:48:54.332512799 +0200 +*************** +*** 23,38 **** + Go:" + :" Outside of the range, minimum + :inoremap <Char-0x1040> a +! :call feedkeys("a\u1040\<Esc>") + :" Inside of the range, minimum + :inoremap <Char-0x103f> b +! :call feedkeys("a\u103f\<Esc>") + :" Inside of the range, maximum + :inoremap <Char-0xf03f> c +! :call feedkeys("a\uf03f\<Esc>") + :" Outside of the range, maximum + :inoremap <Char-0xf040> d +! :call feedkeys("a\uf040\<Esc>") + :" + :/^eof/+1,$w! test.out + :qa! +--- 23,38 ---- + Go:" + :" Outside of the range, minimum + :inoremap <Char-0x1040> a +! :execute "normal a\u1040\<Esc>" + :" Inside of the range, minimum + :inoremap <Char-0x103f> b +! :execute "normal a\u103f\<Esc>" + :" Inside of the range, maximum + :inoremap <Char-0xf03f> c +! :execute "normal a\uf03f\<Esc>" + :" Outside of the range, maximum + :inoremap <Char-0xf040> d +! :execute "normal a\uf040\<Esc>" + :" + :/^eof/+1,$w! test.out + :qa! +*** ../vim-7.4.432/src/version.c 2014-09-09 12:25:27.768501863 +0200 +--- src/version.c 2014-09-09 13:49:55.160512932 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 433, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +107. When using your phone you forget that you don't have to use your + keyboard. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.434 b/SOURCES/7.4.434 new file mode 100644 index 0000000..0a1fbe8 --- /dev/null +++ b/SOURCES/7.4.434 @@ -0,0 +1,139 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.434 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.434 +Problem: gettabvar() is not consistent with getwinvar() and getbufvar(). +Solution: Return a dict with all variables when the varname is empty. + (Yasuhiro Matsumoto) +Files: src/eval.c, runtime/doc/eval.txt, src/testdir/test91.in, + src/testdir/test91.ok + + +*** ../vim-7.4.433/src/eval.c 2014-08-29 15:53:43.706453155 +0200 +--- src/eval.c 2014-09-09 16:03:34.372530448 +0200 +*************** +*** 12071,12077 **** + typval_T *argvars; + typval_T *rettv; + { +! tabpage_T *tp; + dictitem_T *v; + char_u *varname; + int done = FALSE; +--- 12071,12078 ---- + typval_T *argvars; + typval_T *rettv; + { +! win_T *win, *oldcurwin; +! tabpage_T *tp, *oldtabpage; + dictitem_T *v; + char_u *varname; + int done = FALSE; +*************** +*** 12083,12095 **** + tp = find_tabpage((int)get_tv_number_chk(&argvars[0], NULL)); + if (tp != NULL && varname != NULL) + { + /* look up the variable */ +! v = find_var_in_ht(&tp->tp_vars->dv_hashtab, 0, varname, FALSE); + if (v != NULL) + { + copy_tv(&v->di_tv, rettv); + done = TRUE; + } + } + + if (!done && argvars[2].v_type != VAR_UNKNOWN) +--- 12084,12104 ---- + tp = find_tabpage((int)get_tv_number_chk(&argvars[0], NULL)); + if (tp != NULL && varname != NULL) + { ++ /* Set curwin to be our win, temporarily. Also set the tabpage, ++ * otherwise the window is not valid. */ ++ switch_win(&oldcurwin, &oldtabpage, win, tp, TRUE); ++ + /* look up the variable */ +! /* Let gettabvar({nr}, "") return the "t:" dictionary. */ +! v = find_var_in_ht(&tp->tp_vars->dv_hashtab, 't', varname, FALSE); + if (v != NULL) + { + copy_tv(&v->di_tv, rettv); + done = TRUE; + } ++ ++ /* restore previous notion of curwin */ ++ restore_win(oldcurwin, oldtabpage, TRUE); + } + + if (!done && argvars[2].v_type != VAR_UNKNOWN) +*** ../vim-7.4.433/runtime/doc/eval.txt 2014-08-29 15:53:43.714453155 +0200 +--- runtime/doc/eval.txt 2014-09-09 16:00:31.776530049 +0200 +*************** +*** 3535,3540 **** +--- 3576,3583 ---- + Get the value of a tab-local variable {varname} in tab page + {tabnr}. |t:var| + Tabs are numbered starting with one. ++ When {varname} is empty a dictionary with all tab-local ++ variables is returned. + Note that the name without "t:" must be used. + When the tab or variable doesn't exist {def} or an empty + string is returned, there is no error message. +*** ../vim-7.4.433/src/testdir/test91.in 2013-07-24 14:53:47.000000000 +0200 +--- src/testdir/test91.in 2014-09-09 16:08:40.116531116 +0200 +*************** +*** 55,60 **** +--- 55,61 ---- + :tabnew + :tabnew + :let t:var_list = [1, 2, 3] ++ :let t:other = 777 + :let def_list = [4, 5, 6, 7] + :tabrewind + :$put =string(gettabvar(3, 'var_list')) +*** ../vim-7.4.433/src/testdir/test91.ok 2013-07-24 14:52:47.000000000 +0200 +--- src/testdir/test91.ok 2014-09-09 16:09:27.624531220 +0200 +*************** +*** 26,33 **** + 0 + [1, 2, 3] + [1, 2, 3] +! '' +! [4, 5, 6, 7] + [4, 5, 6, 7] + '' + [4, 5, 6, 7] +--- 26,33 ---- + 0 + [1, 2, 3] + [1, 2, 3] +! {'var_list': [1, 2, 3], 'other': 777} +! {'var_list': [1, 2, 3], 'other': 777} + [4, 5, 6, 7] + '' + [4, 5, 6, 7] +*** ../vim-7.4.433/src/version.c 2014-09-09 13:52:55.028513324 +0200 +--- src/version.c 2014-09-09 16:09:17.824531199 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 434, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +108. While reading a magazine, you look for the Zoom icon for a better + look at a photograph. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.435 b/SOURCES/7.4.435 new file mode 100644 index 0000000..32ce2d3 --- /dev/null +++ b/SOURCES/7.4.435 @@ -0,0 +1,63 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.435 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.435 +Problem: Line formatting behaves differently when 'linebreak' is set. + (mvxxc) +Solution: Disable 'linebreak' temporarily. (Christian Brabandt) +Files: src/edit.c + + +*** ../vim-7.4.434/src/edit.c 2014-08-16 18:13:00.082044726 +0200 +--- src/edit.c 2014-09-09 16:21:08.556532751 +0200 +*************** +*** 6131,6136 **** +--- 6131,6142 ---- + int no_leader = FALSE; + int do_comments = (flags & INSCHAR_DO_COM); + #endif ++ #ifdef FEAT_LINEBREAK ++ int has_lbr = curwin->w_p_lbr; ++ ++ /* make sure win_lbr_chartabsize() counts correctly */ ++ curwin->w_p_lbr = FALSE; ++ #endif + + /* + * When 'ai' is off we don't want a space under the cursor to be +*************** +*** 6483,6488 **** +--- 6489,6497 ---- + if (save_char != NUL) /* put back space after cursor */ + pchar_cursor(save_char); + ++ #ifdef FEAT_LINEBREAK ++ curwin->w_p_lbr = has_lbr; ++ #endif + if (!format_only && haveto_redraw) + { + update_topline(); +*** ../vim-7.4.434/src/version.c 2014-09-09 16:13:05.040531695 +0200 +--- src/version.c 2014-09-09 16:19:57.272532595 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 435, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +109. You actually read -- and enjoy -- lists like this. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.436 b/SOURCES/7.4.436 new file mode 100644 index 0000000..53b3207 --- /dev/null +++ b/SOURCES/7.4.436 @@ -0,0 +1,48 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.436 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.436 +Problem: ml_get error for autocommand that moves the cursor of the current + window. +Solution: Check the cursor position after switching back to the current + buffer. (Christian Brabandt) +Files: src/fileio.c + + +*** ../vim-7.4.435/src/fileio.c 2014-08-22 23:05:50.106606614 +0200 +--- src/fileio.c 2014-09-09 16:46:29.224536073 +0200 +*************** +*** 9009,9014 **** +--- 9009,9017 ---- + + curwin = aco->save_curwin; + curbuf = curwin->w_buffer; ++ /* In case the autocommand move the cursor to a position that that ++ * not exist in curbuf. */ ++ check_cursor(); + } + } + } +*** ../vim-7.4.435/src/version.c 2014-09-09 16:32:35.828534252 +0200 +--- src/version.c 2014-09-09 16:48:14.796536303 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 436, + /**/ + +-- +In a world without walls and borders, who needs windows and gates? + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.437 b/SOURCES/7.4.437 new file mode 100644 index 0000000..203b152 --- /dev/null +++ b/SOURCES/7.4.437 @@ -0,0 +1,116 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.437 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.437 +Problem: New and old regexp engine are not consistent. +Solution: Also give an error for "\ze*" for the old regexp engine. +Files: src/regexp.c, src/regexp_nfa.c + + +*** ../vim-7.4.436/src/regexp.c 2014-07-09 19:32:30.935678834 +0200 +--- src/regexp.c 2014-09-09 17:11:32.444539356 +0200 +*************** +*** 358,363 **** +--- 358,365 ---- + static char_u *regprop __ARGS((char_u *)); + #endif + ++ static int re_mult_next __ARGS((char *what)); ++ + static char_u e_missingbracket[] = N_("E769: Missing ] after %s["); + static char_u e_unmatchedpp[] = N_("E53: Unmatched %s%%("); + static char_u e_unmatchedp[] = N_("E54: Unmatched %s("); +*************** +*** 2166,2174 **** +--- 2168,2180 ---- + #endif + + case 's': ret = regnode(MOPEN + 0); ++ if (re_mult_next("\\zs") == FAIL) ++ return NULL; + break; + + case 'e': ret = regnode(MCLOSE + 0); ++ if (re_mult_next("\\ze") == FAIL) ++ return NULL; + break; + + default: EMSG_RET_NULL(_("E68: Invalid character after \\z")); +*************** +*** 7005,7010 **** +--- 7011,7028 ---- + } + #endif /* DEBUG */ + ++ /* ++ * Used in a place where no * or \+ can follow. ++ */ ++ static int ++ re_mult_next(what) ++ char *what; ++ { ++ if (re_multi_type(peekchr()) == MULTI_MULT) ++ EMSG2_RET_FAIL(_("E888: (NFA regexp) cannot repeat %s"), what); ++ return OK; ++ } ++ + #ifdef FEAT_MBYTE + static void mb_decompose __ARGS((int c, int *c1, int *c2, int *c3)); + +*** ../vim-7.4.436/src/regexp_nfa.c 2014-08-29 11:56:21.350422045 +0200 +--- src/regexp_nfa.c 2014-09-09 17:10:17.572539193 +0200 +*************** +*** 291,297 **** + static int nfa_regconcat __ARGS((void)); + static int nfa_regbranch __ARGS((void)); + static int nfa_reg __ARGS((int paren)); +- static int re_mult_next __ARGS((char *what)); + #ifdef DEBUG + static void nfa_set_code __ARGS((int c)); + static void nfa_postfix_dump __ARGS((char_u *expr, int retval)); +--- 291,296 ---- +*************** +*** 2281,2298 **** + return OK; + } + +- /* +- * Used in a place where no * or \+ can follow. +- */ +- static int +- re_mult_next(what) +- char *what; +- { +- if (re_multi_type(peekchr()) == MULTI_MULT) +- EMSG2_RET_FAIL(_("E888: (NFA regexp) cannot repeat %s"), what); +- return OK; +- } +- + #ifdef DEBUG + static char_u code[50]; + +--- 2280,2285 ---- +*** ../vim-7.4.436/src/version.c 2014-09-09 16:59:34.792537789 +0200 +--- src/version.c 2014-09-09 17:12:34.352539491 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 437, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +110. You actually volunteer to become your employer's webmaster. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.438 b/SOURCES/7.4.438 new file mode 100644 index 0000000..7804f6d --- /dev/null +++ b/SOURCES/7.4.438 @@ -0,0 +1,48 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.438 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.438 +Problem: Cached values for 'cino' not reset for ":set all&". +Solution: Call parse_cino(). (Yukihiro Nakadaira) +Files: src/option.c + + +*** ../vim-7.4.437/src/option.c 2014-08-24 21:39:45.488526954 +0200 +--- src/option.c 2014-09-09 17:29:43.216541739 +0200 +*************** +*** 3645,3650 **** +--- 3645,3653 ---- + #else + win_comp_scroll(curwin); + #endif ++ #ifdef FEAT_CINDENT ++ parse_cino(curbuf); ++ #endif + } + + /* +*** ../vim-7.4.437/src/version.c 2014-09-09 17:18:44.008540299 +0200 +--- src/version.c 2014-09-09 17:32:16.108542073 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 438, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +112. You are amazed that anyone uses a phone without a modem on it...let + alone hear actual voices. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.439 b/SOURCES/7.4.439 new file mode 100644 index 0000000..7d9ed9d --- /dev/null +++ b/SOURCES/7.4.439 @@ -0,0 +1,56 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.439 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.439 +Problem: Duplicate message in message history. Some quickfix messages + appear twice. (Gary Johnson) +Solution: Do not reset keep_msg too early. (Hirohito Higashi) +Files: src/main.c + + +*** ../vim-7.4.438/src/main.c 2014-09-09 12:25:27.764501863 +0200 +--- src/main.c 2014-09-09 17:37:56.612542817 +0200 +*************** +*** 1249,1257 **** + char_u *p; + + /* msg_attr_keep() will set keep_msg to NULL, must free the +! * string here. */ + p = keep_msg; +- keep_msg = NULL; + msg_attr(p, keep_msg_attr); + vim_free(p); + } +--- 1249,1257 ---- + char_u *p; + + /* msg_attr_keep() will set keep_msg to NULL, must free the +! * string here. Don't reset keep_msg, msg_attr_keep() uses it +! * to check for duplicates. */ + p = keep_msg; + msg_attr(p, keep_msg_attr); + vim_free(p); + } +*** ../vim-7.4.438/src/version.c 2014-09-09 17:33:02.704542175 +0200 +--- src/version.c 2014-09-09 17:41:11.984543243 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 439, + /**/ + +-- +Corduroy pillows: They're making headlines! + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.440 b/SOURCES/7.4.440 new file mode 100644 index 0000000..24ee043 --- /dev/null +++ b/SOURCES/7.4.440 @@ -0,0 +1,73 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.440 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.440 +Problem: Omni complete popup drawn incorrectly. +Solution: Call validate_cursor() instead of check_cursor(). (Hirohito + Higashi) +Files: src/edit.c + + +*** ../vim-7.4.439/src/edit.c 2014-09-09 16:32:35.828534252 +0200 +--- src/edit.c 2014-09-09 17:59:17.824545615 +0200 +*************** +*** 4035,4041 **** + goto theend; + } + curwin->w_cursor = pos; /* restore the cursor position */ +! check_cursor(); + if (!equalpos(curwin->w_cursor, pos)) + { + EMSG(_(e_compldel)); +--- 4035,4041 ---- + goto theend; + } + curwin->w_cursor = pos; /* restore the cursor position */ +! validate_cursor(); + if (!equalpos(curwin->w_cursor, pos)) + { + EMSG(_(e_compldel)); +*************** +*** 5273,5279 **** + return FAIL; + } + curwin->w_cursor = pos; /* restore the cursor position */ +! check_cursor(); + if (!equalpos(curwin->w_cursor, pos)) + { + EMSG(_(e_compldel)); +--- 5273,5279 ---- + return FAIL; + } + curwin->w_cursor = pos; /* restore the cursor position */ +! validate_cursor(); + if (!equalpos(curwin->w_cursor, pos)) + { + EMSG(_(e_compldel)); +*** ../vim-7.4.439/src/version.c 2014-09-09 17:47:34.584544079 +0200 +--- src/version.c 2014-09-09 17:57:33.232545387 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 440, + /**/ + +-- +Nobody will ever need more than 640 kB RAM. + -- Bill Gates, 1983 +Windows 98 requires 16 MB RAM. + -- Bill Gates, 1999 +Logical conclusion: Nobody will ever need Windows 98. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.441 b/SOURCES/7.4.441 new file mode 100644 index 0000000..83647c8 --- /dev/null +++ b/SOURCES/7.4.441 @@ -0,0 +1,64 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.441 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.441 +Problem: Endless loop and other problems when 'cedit' is set to CTRL-C. +Solution: Do not call ex_window() when ex_normal_busy or got_int was set. + (Yasuhiro Matsumoto) +Files: src/ex_getln.c + + +*** ../vim-7.4.440/src/ex_getln.c 2014-08-17 17:24:03.967017727 +0200 +--- src/ex_getln.c 2014-09-09 18:41:19.304551123 +0200 +*************** +*** 759,769 **** + #ifdef FEAT_CMDWIN + if (c == cedit_key || c == K_CMDWIN) + { +! /* +! * Open a window to edit the command line (and history). +! */ +! c = ex_window(); +! some_key_typed = TRUE; + } + # ifdef FEAT_DIGRAPHS + else +--- 759,772 ---- + #ifdef FEAT_CMDWIN + if (c == cedit_key || c == K_CMDWIN) + { +! if (ex_normal_busy == 0 && got_int == FALSE) +! { +! /* +! * Open a window to edit the command line (and history). +! */ +! c = ex_window(); +! some_key_typed = TRUE; +! } + } + # ifdef FEAT_DIGRAPHS + else +*** ../vim-7.4.440/src/version.c 2014-09-09 18:29:24.328549561 +0200 +--- src/version.c 2014-09-09 18:40:16.680550986 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 441, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +114. You are counting items, you go "0,1,2,3,4,5,6,7,8,9,A,B,C,D...". + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.442 b/SOURCES/7.4.442 new file mode 100644 index 0000000..0a18849 --- /dev/null +++ b/SOURCES/7.4.442 @@ -0,0 +1,72 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.442 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.442 (after 7.4.434) +Problem: Using unitinialized variable. +Solution: Pass the first window of the tabpage. +Files: src/eval.c + + +*** ../vim-7.4.441/src/eval.c 2014-09-09 16:13:05.040531695 +0200 +--- src/eval.c 2014-09-09 22:52:50.916584088 +0200 +*************** +*** 12071,12077 **** + typval_T *argvars; + typval_T *rettv; + { +! win_T *win, *oldcurwin; + tabpage_T *tp, *oldtabpage; + dictitem_T *v; + char_u *varname; +--- 12071,12077 ---- + typval_T *argvars; + typval_T *rettv; + { +! win_T *oldcurwin; + tabpage_T *tp, *oldtabpage; + dictitem_T *v; + char_u *varname; +*************** +*** 12084,12092 **** + tp = find_tabpage((int)get_tv_number_chk(&argvars[0], NULL)); + if (tp != NULL && varname != NULL) + { +! /* Set curwin to be our win, temporarily. Also set the tabpage, +! * otherwise the window is not valid. */ +! switch_win(&oldcurwin, &oldtabpage, win, tp, TRUE); + + /* look up the variable */ + /* Let gettabvar({nr}, "") return the "t:" dictionary. */ +--- 12084,12092 ---- + tp = find_tabpage((int)get_tv_number_chk(&argvars[0], NULL)); + if (tp != NULL && varname != NULL) + { +! /* Set tp to be our tabpage, temporarily. Also set the window to the +! * first window in the tabpage, otherwise the window is not valid. */ +! switch_win(&oldcurwin, &oldtabpage, tp->tp_firstwin, tp, TRUE); + + /* look up the variable */ + /* Let gettabvar({nr}, "") return the "t:" dictionary. */ +*** ../vim-7.4.441/src/version.c 2014-09-09 18:45:45.888551705 +0200 +--- src/version.c 2014-09-09 23:10:27.544586396 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 442, + /**/ + +-- +Two percent of zero is almost nothing. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.443 b/SOURCES/7.4.443 new file mode 100644 index 0000000..f9e7111 --- /dev/null +++ b/SOURCES/7.4.443 @@ -0,0 +1,54 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.443 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.443 +Problem: Error reported by ubsan when running test 72. +Solution: Add type cast to unsigned. (Dominique Pelle) +Files: src/undo.c + + + +*** ../vim-7.4.442/src/undo.c 2014-08-13 22:05:49.032892299 +0200 +--- src/undo.c 2014-09-11 22:19:35.936957186 +0200 +*************** +*** 1019,1025 **** + int n; + + undo_read(bi, buf, (size_t)4); +! n = (buf[0] << 24) + (buf[1] << 16) + (buf[2] << 8) + buf[3]; + return n; + } + #endif +--- 1019,1025 ---- + int n; + + undo_read(bi, buf, (size_t)4); +! n = ((unsigned)buf[0] << 24) + (buf[1] << 16) + (buf[2] << 8) + buf[3]; + return n; + } + #endif +*** ../vim-7.4.442/src/version.c 2014-09-09 23:11:46.368586569 +0200 +--- src/version.c 2014-09-11 22:20:31.740957308 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 443, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +122. You ask if the Netaholics Anonymous t-shirt you ordered can be + sent to you via e-mail. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.444 b/SOURCES/7.4.444 new file mode 100644 index 0000000..b089a00 --- /dev/null +++ b/SOURCES/7.4.444 @@ -0,0 +1,46 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.444 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.444 +Problem: Reversed question mark not recognized as punctuation. (Issue 258) +Solution: Add the Supplemental Punctuation range. +Files: src/mbyte.c + + +*** ../vim-7.4.443/src/mbyte.c 2014-03-12 14:54:29.920684895 +0100 +--- src/mbyte.c 2014-09-15 14:24:06.389649777 +0200 +*************** +*** 2537,2542 **** +--- 2537,2543 ---- + {0x2900, 0x2998, 1}, /* arrows, brackets, etc. */ + {0x29d8, 0x29db, 1}, + {0x29fc, 0x29fd, 1}, ++ {0x2e00, 0x2e7f, 1}, /* supplemental punctuation */ + {0x3000, 0x3000, 0}, /* ideographic space */ + {0x3001, 0x3020, 1}, /* ideographic punctuation */ + {0x3030, 0x3030, 1}, +*** ../vim-7.4.443/src/version.c 2014-09-11 22:49:42.212961131 +0200 +--- src/version.c 2014-09-15 14:25:14.761649927 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 444, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +136. You decide to stay in a low-paying job teaching just for the + free Internet access. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.445 b/SOURCES/7.4.445 new file mode 100644 index 0000000..35ee45f --- /dev/null +++ b/SOURCES/7.4.445 @@ -0,0 +1,92 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.445 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.445 +Problem: Clipboard may be cleared on startup. +Solution: Set clip_did_set_selection to -1 during startup. (Christian + Brabandt) +Files: src/main.c, src/ui.c + + +*** ../vim-7.4.444/src/main.c 2014-09-09 17:47:34.584544079 +0200 +--- src/main.c 2014-09-19 13:38:29.802398710 +0200 +*************** +*** 958,965 **** +--- 958,974 ---- + if (p_im) + need_start_insertmode = TRUE; + ++ #ifdef FEAT_CLIPBOARD ++ if (clip_unnamed) ++ /* do not overwrite system clipboard while starting up */ ++ clip_did_set_selection = -1; ++ #endif + #ifdef FEAT_AUTOCMD + apply_autocmds(EVENT_VIMENTER, NULL, NULL, FALSE, curbuf); ++ # ifdef FEAT_CLIPBOARD ++ if (clip_did_set_selection < 0) ++ clip_did_set_selection = TRUE; ++ # endif + TIME_MSG("VimEnter autocommands"); + #endif + +*** ../vim-7.4.444/src/ui.c 2014-08-06 18:17:03.475147780 +0200 +--- src/ui.c 2014-09-19 13:39:48.442398882 +0200 +*************** +*** 571,577 **** + { + clip_unnamed_saved = clip_unnamed; + +! if (clip_did_set_selection) + { + clip_unnamed = FALSE; + clip_did_set_selection = FALSE; +--- 571,577 ---- + { + clip_unnamed_saved = clip_unnamed; + +! if (clip_did_set_selection > 0) + { + clip_unnamed = FALSE; + clip_did_set_selection = FALSE; +*************** +*** 584,590 **** + void + end_global_changes() + { +! if (!clip_did_set_selection) + { + clip_did_set_selection = TRUE; + clip_unnamed = clip_unnamed_saved; +--- 584,590 ---- + void + end_global_changes() + { +! if (clip_did_set_selection == FALSE) /* not when -1 */ + { + clip_did_set_selection = TRUE; + clip_unnamed = clip_unnamed_saved; +*** ../vim-7.4.444/src/version.c 2014-09-15 14:25:51.309650006 +0200 +--- src/version.c 2014-09-19 13:35:30.618398318 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 445, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +159. You get excited whenever discussing your hard drive. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.446 b/SOURCES/7.4.446 new file mode 100644 index 0000000..e180a72 --- /dev/null +++ b/SOURCES/7.4.446 @@ -0,0 +1,265 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.446 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.446 +Problem: In some situations, when setting up an environment to trigger an + autocommand, the environment is not properly restored. +Solution: Check the return value of switch_win() and call restore_win() + always. (Daniel Hahler) +Files: src/eval.c, src/misc2.c, src/window.c + + +*** ../vim-7.4.445/src/eval.c 2014-09-09 23:11:46.368586569 +0200 +--- src/eval.c 2014-09-19 14:09:27.238402767 +0200 +*************** +*** 12086,12100 **** + { + /* Set tp to be our tabpage, temporarily. Also set the window to the + * first window in the tabpage, otherwise the window is not valid. */ +! switch_win(&oldcurwin, &oldtabpage, tp->tp_firstwin, tp, TRUE); +! +! /* look up the variable */ +! /* Let gettabvar({nr}, "") return the "t:" dictionary. */ +! v = find_var_in_ht(&tp->tp_vars->dv_hashtab, 't', varname, FALSE); +! if (v != NULL) + { +! copy_tv(&v->di_tv, rettv); +! done = TRUE; + } + + /* restore previous notion of curwin */ +--- 12086,12102 ---- + { + /* 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, tp, TRUE) +! == OK) + { +! /* look up the variable */ +! /* Let gettabvar({nr}, "") return the "t:" dictionary. */ +! v = find_var_in_ht(&tp->tp_vars->dv_hashtab, 't', varname, FALSE); +! if (v != NULL) +! { +! copy_tv(&v->di_tv, rettv); +! done = TRUE; +! } + } + + /* restore previous notion of curwin */ +*************** +*** 12233,12254 **** + { + /* Set curwin to be our win, temporarily. Also set the tabpage, + * otherwise the window is not valid. */ +! switch_win(&oldcurwin, &oldtabpage, win, tp, TRUE); +! +! if (*varname == '&') /* window-local-option */ +! { +! if (get_option_tv(&varname, rettv, 1) == OK) +! done = TRUE; +! } +! else + { +! /* Look up the variable. */ +! /* Let getwinvar({nr}, "") return the "w:" dictionary. */ +! v = find_var_in_ht(&win->w_vars->dv_hashtab, 'w', varname, FALSE); +! if (v != NULL) + { +! copy_tv(&v->di_tv, rettv); +! done = TRUE; + } + } + +--- 12235,12258 ---- + { + /* Set curwin to be our win, temporarily. Also set the tabpage, + * otherwise the window is not valid. */ +! if (switch_win(&oldcurwin, &oldtabpage, win, tp, TRUE) == OK) + { +! if (*varname == '&') /* window-local-option */ + { +! if (get_option_tv(&varname, rettv, 1) == OK) +! done = TRUE; +! } +! else +! { +! /* Look up the variable. */ +! /* Let getwinvar({nr}, "") return the "w:" dictionary. */ +! v = find_var_in_ht(&win->w_vars->dv_hashtab, 'w', +! varname, FALSE); +! if (v != NULL) +! { +! copy_tv(&v->di_tv, rettv); +! done = TRUE; +! } + } + } + +*************** +*** 17252,17285 **** + if (win != NULL && varname != NULL && varp != NULL) + { + #ifdef FEAT_WINDOWS +! if (switch_win(&save_curwin, &save_curtab, win, tp, TRUE) == FAIL) +! return; + #endif +- +- if (*varname == '&') + { +! long numval; +! char_u *strval; +! int error = FALSE; + +! ++varname; +! numval = get_tv_number_chk(varp, &error); +! strval = get_tv_string_buf_chk(varp, nbuf); +! if (!error && strval != NULL) +! set_option_value(varname, numval, strval, OPT_LOCAL); +! } +! else +! { +! winvarname = alloc((unsigned)STRLEN(varname) + 3); +! if (winvarname != NULL) + { +! STRCPY(winvarname, "w:"); +! STRCPY(winvarname + 2, varname); +! set_var(winvarname, varp, TRUE); +! vim_free(winvarname); + } + } +- + #ifdef FEAT_WINDOWS + restore_win(save_curwin, save_curtab, TRUE); + #endif +--- 17256,17288 ---- + if (win != NULL && varname != NULL && varp != NULL) + { + #ifdef FEAT_WINDOWS +! if (switch_win(&save_curwin, &save_curtab, win, tp, TRUE) == OK) + #endif + { +! if (*varname == '&') +! { +! long numval; +! char_u *strval; +! int error = FALSE; + +! ++varname; +! numval = get_tv_number_chk(varp, &error); +! strval = get_tv_string_buf_chk(varp, nbuf); +! if (!error && strval != NULL) +! set_option_value(varname, numval, strval, OPT_LOCAL); +! } +! else + { +! winvarname = alloc((unsigned)STRLEN(varname) + 3); +! if (winvarname != NULL) +! { +! STRCPY(winvarname, "w:"); +! STRCPY(winvarname + 2, varname); +! set_var(winvarname, varp, TRUE); +! vim_free(winvarname); +! } + } + } + #ifdef FEAT_WINDOWS + restore_win(save_curwin, save_curtab, TRUE); + #endif +*** ../vim-7.4.445/src/misc2.c 2014-08-10 13:34:59.060785459 +0200 +--- src/misc2.c 2014-09-19 14:03:24.314401974 +0200 +*************** +*** 1040,1046 **** + entered = TRUE; + + # ifdef FEAT_AUTOCMD +! block_autocmds(); /* don't want to trigger autocommands here */ + # endif + + # ifdef FEAT_WINDOWS +--- 1040,1047 ---- + entered = TRUE; + + # ifdef FEAT_AUTOCMD +! /* Don't want to trigger autocommands from here on. */ +! block_autocmds(); + # endif + + # ifdef FEAT_WINDOWS +*** ../vim-7.4.445/src/window.c 2014-07-30 14:04:49.131603494 +0200 +--- src/window.c 2014-09-19 14:06:52.538402429 +0200 +*************** +*** 1271,1277 **** + } + + /* +! * Initialize window "newp" from window"old". + * Only the essential things are copied. + */ + static void +--- 1271,1277 ---- + } + + /* +! * Initialize window "newp" from window "old". + * Only the essential things are copied. + */ + static void +*************** +*** 6662,6669 **** + || defined(PROTO) + /* + * Set "win" to be the curwin and "tp" to be the current tab page. +! * restore_win() MUST be called to undo. +! * No autocommands will be executed. + * When "no_display" is TRUE the display won't be affected, no redraw is + * triggered, another tabpage access is limited. + * Returns FAIL if switching to "win" failed. +--- 6662,6669 ---- + || defined(PROTO) + /* + * Set "win" to be the curwin and "tp" to be the current tab page. +! * restore_win() MUST be called to undo, also when FAIL is returned. +! * No autocommands will be executed until restore_win() is called. + * When "no_display" is TRUE the display won't be affected, no redraw is + * triggered, another tabpage access is limited. + * Returns FAIL if switching to "win" failed. +*************** +*** 6696,6707 **** + goto_tabpage_tp(tp, FALSE, FALSE); + } + if (!win_valid(win)) +- { +- # ifdef FEAT_AUTOCMD +- unblock_autocmds(); +- # endif + return FAIL; +- } + curwin = win; + curbuf = curwin->w_buffer; + # endif +--- 6696,6702 ---- +*** ../vim-7.4.445/src/version.c 2014-09-19 13:46:49.550399801 +0200 +--- src/version.c 2014-09-19 14:25:34.674404880 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 446, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +160. You get in the elevator and double-click the button for the floor + you want. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.447 b/SOURCES/7.4.447 new file mode 100644 index 0000000..0a14393 --- /dev/null +++ b/SOURCES/7.4.447 @@ -0,0 +1,113 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.447 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.447 +Problem: Spell files from Hunspell may generate a lot of errors. +Solution: Add the IGNOREEXTRA flag. +Files: src/spell.c, runtime/doc/spell.txt + + +*** ../vim-7.4.446/src/spell.c 2014-05-13 14:03:36.425611242 +0200 +--- src/spell.c 2014-09-19 15:24:19.582412580 +0200 +*************** +*** 4841,4846 **** +--- 4841,4847 ---- + unsigned af_nosuggest; /* NOSUGGEST ID */ + int af_pfxpostpone; /* postpone prefixes without chop string and + without flags */ ++ int af_ignoreextra; /* IGNOREEXTRA present */ + hashtab_T af_pref; /* hashtable for prefixes, affheader_T */ + hashtab_T af_suff; /* hashtable for suffixes, affheader_T */ + hashtab_T af_comp; /* hashtable for compound flags, compitem_T */ +*************** +*** 5605,5610 **** +--- 5606,5615 ---- + { + aff->af_pfxpostpone = TRUE; + } ++ else if (is_aff_rule(items, itemcnt, "IGNOREEXTRA", 1)) ++ { ++ aff->af_ignoreextra = TRUE; ++ } + else if ((STRCMP(items[0], "PFX") == 0 + || STRCMP(items[0], "SFX") == 0) + && aff_todo == 0 +*************** +*** 5712,5720 **** + int lasti = 5; + + /* Myspell allows extra text after the item, but that might +! * mean mistakes go unnoticed. Require a comment-starter. +! * Hunspell uses a "-" item. */ +! if (itemcnt > lasti && *items[lasti] != '#' + && (STRCMP(items[lasti], "-") != 0 + || itemcnt != lasti + 1)) + smsg((char_u *)_(e_afftrailing), fname, lnum, items[lasti]); +--- 5717,5727 ---- + int lasti = 5; + + /* Myspell allows extra text after the item, but that might +! * mean mistakes go unnoticed. Require a comment-starter, +! * unless IGNOREEXTRA is used. Hunspell uses a "-" item. */ +! if (itemcnt > lasti +! && !aff->af_ignoreextra +! && *items[lasti] != '#' + && (STRCMP(items[lasti], "-") != 0 + || itemcnt != lasti + 1)) + smsg((char_u *)_(e_afftrailing), fname, lnum, items[lasti]); +*** ../vim-7.4.446/runtime/doc/spell.txt 2013-11-12 04:43:57.000000000 +0100 +--- runtime/doc/spell.txt 2014-09-19 15:18:00.318411751 +0200 +*************** +*** 1057,1062 **** +--- 1058,1066 ---- + SFX F 0 in [^i]n # Spion > Spionin ~ + SFX F 0 nen in # Bauerin > Bauerinnen ~ + ++ However, to avoid lots of errors in affix files written for Myspell, you can ++ add the IGNOREEXTRA flag. ++ + Apparently Myspell allows an affix name to appear more than once. Since this + might also be a mistake, Vim checks for an extra "S". The affix files for + Myspell that use this feature apparently have this flag. Example: +*************** +*** 1110,1115 **** +--- 1114,1127 ---- + - CIRCUMFIX, as explained just below. + + ++ IGNOREEXTRA *spell-IGNOREEXTRA* ++ ++ Normally Vim gives an error for an extra field that does not start with '#'. ++ This avoids errors going unnoticed. However, some files created for Myspell ++ or Hunspell may contain many entries with an extra field. Use the IGNOREEXTRA ++ flag to avoid lots of errors. ++ ++ + CIRCUMFIX *spell-CIRCUMFIX* + + The CIRCUMFIX flag means a prefix and suffix must be added at the same time. +*** ../vim-7.4.446/src/version.c 2014-09-19 14:26:29.658405000 +0200 +--- src/version.c 2014-09-19 15:18:41.774411842 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 447, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +161. You get up before the sun rises to check your e-mail, and you + find yourself in the very same chair long after the sun has set. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.448 b/SOURCES/7.4.448 new file mode 100644 index 0000000..5a5dd09 --- /dev/null +++ b/SOURCES/7.4.448 @@ -0,0 +1,84 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.448 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.448 +Problem: Using ETO_IGNORELANGUAGE causes problems. +Solution: Remove this flag. (Paul Moore) +Files: src/gui_w32.c + + +*** ../vim-7.4.447/src/gui_w32.c 2014-08-06 16:49:51.199185387 +0200 +--- src/gui_w32.c 2014-09-19 16:12:40.266418916 +0200 +*************** +*** 535,544 **** + # define pImmSetConversionStatus ImmSetConversionStatus + #endif + +- #ifndef ETO_IGNORELANGUAGE +- # define ETO_IGNORELANGUAGE 0x1000 +- #endif +- + /* multi monitor support */ + typedef struct _MONITORINFOstruct + { +--- 535,540 ---- +*************** +*** 2500,2511 **** + padding[i] = gui.char_width; + } + +- /* On NT, tell the font renderer not to "help" us with Hebrew and Arabic +- * text. This doesn't work in 9x, so we have to deal with it manually on +- * those systems. */ +- if (os_version.dwPlatformId == VER_PLATFORM_WIN32_NT) +- foptions |= ETO_IGNORELANGUAGE; +- + /* + * We have to provide the padding argument because italic and bold versions + * of fixed-width fonts are often one pixel or so wider than their normal +--- 2496,2501 ---- +*************** +*** 2641,2650 **** + #endif + { + #ifdef FEAT_RIGHTLEFT +! /* If we can't use ETO_IGNORELANGUAGE, we can't tell Windows not to +! * mess up RL text, so we have to draw it character-by-character. +! * Only do this if RL is on, since it's slow. */ +! if (curwin->w_p_rl && !(foptions & ETO_IGNORELANGUAGE)) + RevOut(s_hdc, TEXT_X(col), TEXT_Y(row), + foptions, pcliprect, (char *)text, len, padding); + else +--- 2631,2639 ---- + #endif + { + #ifdef FEAT_RIGHTLEFT +! /* Windows will mess up RL text, so we have to draw it character by +! * character. Only do this if RL is on, since it's slow. */ +! if (curwin->w_p_rl) + RevOut(s_hdc, TEXT_X(col), TEXT_Y(row), + foptions, pcliprect, (char *)text, len, padding); + else +*** ../vim-7.4.447/src/version.c 2014-09-19 16:04:08.050417797 +0200 +--- src/version.c 2014-09-19 16:13:14.102418990 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 448, + /**/ + +-- +Send $25.00 for handy leaflet on how to make money by selling leaflets + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.449 b/SOURCES/7.4.449 new file mode 100644 index 0000000..c3befb1 --- /dev/null +++ b/SOURCES/7.4.449 @@ -0,0 +1,114 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.449 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.449 +Problem: Can't easily close the help window. (Chris Gaal) +Solution: Add ":helpclose". (Christian Brabandt) +Files: runtime/doc/helphelp.txt, runtime/doc/index.txt, src/ex_cmds.c, + src/ex_cmds.h, src/proto/ex_cmds.pro + + +*** ../vim-7.4.448/runtime/doc/helphelp.txt 2013-08-10 13:24:54.000000000 +0200 +--- runtime/doc/helphelp.txt 2014-09-19 19:38:11.110445851 +0200 +*************** +*** 96,101 **** +--- 96,104 ---- + find a tag in a file with the same language as the + current file. See |help-translated|. + ++ *:helpc* *:helpclose* ++ :helpc[lose] Close one help window. ++ + *:helpg* *:helpgrep* + :helpg[rep] {pattern}[@xx] + Search all help text files and make a list of lines +*** ../vim-7.4.448/runtime/doc/index.txt 2013-08-10 13:24:56.000000000 +0200 +--- runtime/doc/index.txt 2014-09-19 19:38:23.694445878 +0200 +*************** +*** 1244,1249 **** +--- 1244,1250 ---- + |:gvim| :gv[im] start the GUI + |:hardcopy| :ha[rdcopy] send text to the printer + |:help| :h[elp] open a help window ++ |:helpclose| :helpc[lose] close one help window + |:helpfind| :helpf[ind] dialog to open a help window + |:helpgrep| :helpg[rep] like ":grep" but searches help files + |:helptags| :helpt[ags] generate help tags for a directory +*** ../vim-7.4.448/src/ex_cmds.c 2014-08-29 09:02:23.886399246 +0200 +--- src/ex_cmds.c 2014-09-19 19:33:43.350445266 +0200 +*************** +*** 5899,5904 **** +--- 5899,5922 ---- + vim_free(tag); + } + ++ /* ++ * ":helpclose": Close the help window ++ */ ++ void ++ ex_helpclose(eap) ++ exarg_T *eap UNUSED; ++ { ++ win_T *win; ++ ++ FOR_ALL_WINDOWS(win) ++ { ++ if (win->w_buffer->b_help) ++ { ++ win_close(win, FALSE); ++ break; ++ } ++ } ++ } + + #if defined(FEAT_MULTI_LANG) || defined(PROTO) + /* +*** ../vim-7.4.448/src/ex_cmds.h 2014-03-23 16:03:56.163311626 +0100 +--- src/ex_cmds.h 2014-09-19 19:21:09.134443618 +0200 +*************** +*** 417,422 **** +--- 417,424 ---- + BANG|FILES|EDITCMD|ARGOPT|TRLBAR|CMDWIN), + EX(CMD_help, "help", ex_help, + BANG|EXTRA|NOTRLCOM), ++ EX(CMD_helpclose, "helpclose", ex_helpclose, ++ RANGE|NOTADR|COUNT|TRLBAR), + EX(CMD_helpfind, "helpfind", ex_helpfind, + EXTRA|NOTRLCOM), + EX(CMD_helpgrep, "helpgrep", ex_helpgrep, +*** ../vim-7.4.448/src/proto/ex_cmds.pro 2013-08-10 13:37:09.000000000 +0200 +--- src/proto/ex_cmds.pro 2014-09-19 19:21:09.134443618 +0200 +*************** +*** 44,49 **** +--- 44,50 ---- + void free_old_sub __ARGS((void)); + int prepare_tagpreview __ARGS((int undo_sync)); + void ex_help __ARGS((exarg_T *eap)); ++ void ex_helpclose __ARGS((exarg_T *eap)); + char_u *check_help_lang __ARGS((char_u *arg)); + int help_heuristic __ARGS((char_u *matched_string, int offset, int wrong_case)); + int find_help_tags __ARGS((char_u *arg, int *num_matches, char_u ***matches, int keep_lang)); +*** ../vim-7.4.448/src/version.c 2014-09-19 16:13:48.358419065 +0200 +--- src/version.c 2014-09-19 18:06:13.718433799 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 449, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +165. You have a web page burned into your glasses + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.450 b/SOURCES/7.4.450 new file mode 100644 index 0000000..bd94cf2 --- /dev/null +++ b/SOURCES/7.4.450 @@ -0,0 +1,417 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.450 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.450 +Problem: Not all commands that edit another buffer support the +cmd + argument. +Solution: Add the +cmd argument to relevant commands. (Marcin Szamotulski) +Files: runtime/doc/windows.txt, src/ex_cmds.h, src/ex_docmd.c + + +*** ../vim-7.4.449/runtime/doc/windows.txt 2014-03-25 13:03:44.929793765 +0100 +--- runtime/doc/windows.txt 2014-09-19 19:53:55.618447914 +0200 +*************** +*** 1042,1077 **** + a number). Insert a backslash before a space in a buffer + name. + +! :[N]b[uffer][!] [N] *:b* *:bu* *:buf* *:buffer* *E86* + Edit buffer [N] from the buffer list. If [N] is not given, + the current buffer remains being edited. See |:buffer-!| for + [!]. This will also edit a buffer that is not in the buffer + list, without setting the 'buflisted' flag. + +! :[N]b[uffer][!] {bufname} + Edit buffer for {bufname} from the buffer list. See + |:buffer-!| for [!]. This will also edit a buffer that is not + in the buffer list, without setting the 'buflisted' flag. + +! :[N]sb[uffer] [N] *:sb* *:sbuffer* + Split window and edit buffer [N] from the buffer list. If [N] + is not given, the current buffer is edited. Respects the + "useopen" setting of 'switchbuf' when splitting. This will + also edit a buffer that is not in the buffer list, without + setting the 'buflisted' flag. + +! :[N]sb[uffer] {bufname} + Split window and edit buffer for {bufname} from the buffer + list. This will also edit a buffer that is not in the buffer + list, without setting the 'buflisted' flag. + Note: If what you want to do is split the buffer, make a copy + under another name, you can do it this way: > + :w foobar | sp # + +! :[N]bn[ext][!] [N] *:bn* *:bnext* *E87* + Go to [N]th next buffer in buffer list. [N] defaults to one. + Wraps around the end of the buffer list. + See |:buffer-!| for [!]. + If you are in a help buffer, this takes you to the next help + buffer (if there is one). Similarly, if you are in a normal + (non-help) buffer, this takes you to the next normal buffer. +--- 1042,1082 ---- + a number). Insert a backslash before a space in a buffer + name. + +! :[N]b[uffer][!] [+cmd] [N] *:b* *:bu* *:buf* *:buffer* *E86* + Edit buffer [N] from the buffer list. If [N] is not given, + the current buffer remains being edited. See |:buffer-!| for + [!]. This will also edit a buffer that is not in the buffer + list, without setting the 'buflisted' flag. ++ Also see ||+cmd|. + +! :[N]b[uffer][!] [+cmd] {bufname} + Edit buffer for {bufname} from the buffer list. See + |:buffer-!| for [!]. This will also edit a buffer that is not + in the buffer list, without setting the 'buflisted' flag. ++ Also see ||+cmd|. + +! :[N]sb[uffer] [+cmd] [N] *:sb* *:sbuffer* + Split window and edit buffer [N] from the buffer list. If [N] + is not given, the current buffer is edited. Respects the + "useopen" setting of 'switchbuf' when splitting. This will + also edit a buffer that is not in the buffer list, without + setting the 'buflisted' flag. ++ Also see ||+cmd|. + +! :[N]sb[uffer] [+cmd] {bufname} + Split window and edit buffer for {bufname} from the buffer + list. This will also edit a buffer that is not in the buffer + list, without setting the 'buflisted' flag. + Note: If what you want to do is split the buffer, make a copy + under another name, you can do it this way: > + :w foobar | sp # ++ < Also see ||+cmd|. + +! :[N]bn[ext][!] [+cmd] [N] *:bn* *:bnext* *E87* + Go to [N]th next buffer in buffer list. [N] defaults to one. + Wraps around the end of the buffer list. + See |:buffer-!| for [!]. ++ Also see ||+cmd|. + If you are in a help buffer, this takes you to the next help + buffer (if there is one). Similarly, if you are in a normal + (non-help) buffer, this takes you to the next normal buffer. +*************** +*** 1079,1133 **** + the way when you're browsing code/text buffers. The next three + commands also work like this. + + *:sbn* *:sbnext* +! :[N]sbn[ext] [N] + Split window and go to [N]th next buffer in buffer list. + Wraps around the end of the buffer list. Uses 'switchbuf' + +! :[N]bN[ext][!] [N] *:bN* *:bNext* *:bp* *:bprevious* *E88* +! :[N]bp[revious][!] [N] + Go to [N]th previous buffer in buffer list. [N] defaults to + one. Wraps around the start of the buffer list. + See |:buffer-!| for [!] and 'switchbuf'. + +! :[N]sbN[ext] [N] *:sbN* *:sbNext* *:sbp* *:sbprevious* +! :[N]sbp[revious] [N] + Split window and go to [N]th previous buffer in buffer list. + Wraps around the start of the buffer list. + Uses 'switchbuf'. + +! *:br* *:brewind* +! :br[ewind][!] Go to first buffer in buffer list. If the buffer list is + empty, go to the first unlisted buffer. + See |:buffer-!| for [!]. + +! *:bf* *:bfirst* +! :bf[irst] Same as ":brewind". + +! *:sbr* *:sbrewind* +! :sbr[ewind] Split window and go to first buffer in buffer list. If the + buffer list is empty, go to the first unlisted buffer. + Respects the 'switchbuf' option. + +! *:sbf* *:sbfirst* +! :sbf[irst] Same as ":sbrewind". + +! *:bl* *:blast* +! :bl[ast][!] Go to last buffer in buffer list. If the buffer list is + empty, go to the last unlisted buffer. + See |:buffer-!| for [!]. + +! *:sbl* *:sblast* +! :sbl[ast] Split window and go to last buffer in buffer list. If the + buffer list is empty, go to the last unlisted buffer. + Respects 'switchbuf' option. + +! :[N]bm[odified][!] [N] *:bm* *:bmodified* *E84* + Go to [N]th next modified buffer. Note: this command also + finds unlisted buffers. If there is no modified buffer the + command fails. + +! :[N]sbm[odified] [N] *:sbm* *:sbmodified* + Split window and go to [N]th next modified buffer. + Respects 'switchbuf' option. + Note: this command also finds buffers not in the buffer list. +--- 1084,1144 ---- + the way when you're browsing code/text buffers. The next three + commands also work like this. + ++ + *:sbn* *:sbnext* +! :[N]sbn[ext] [+cmd] [N] + Split window and go to [N]th next buffer in buffer list. + Wraps around the end of the buffer list. Uses 'switchbuf' ++ Also see ||+cmd|. + +! :[N]bN[ext][!] [+cmd] [N] *:bN* *:bNext* *:bp* *:bprevious* *E88* +! :[N]bp[revious][!] [+cmd] [N] + Go to [N]th previous buffer in buffer list. [N] defaults to + one. Wraps around the start of the buffer list. + See |:buffer-!| for [!] and 'switchbuf'. ++ Also see ||+cmd|. + +! :[N]sbN[ext] [+cmd] [N] *:sbN* *:sbNext* *:sbp* *:sbprevious* +! :[N]sbp[revious] [+cmd] [N] + Split window and go to [N]th previous buffer in buffer list. + Wraps around the start of the buffer list. + Uses 'switchbuf'. ++ Also see ||+cmd|. + +! :br[ewind][!] [+cmd] *:br* *:brewind* +! Go to first buffer in buffer list. If the buffer list is + empty, go to the first unlisted buffer. + See |:buffer-!| for [!]. + +! :bf[irst] [+cmd] *:bf* *:bfirst* +! Same as |:brewind|. +! Also see |+cmd|. + +! :sbr[ewind] [+cmd] *:sbr* *:sbrewind* +! Split window and go to first buffer in buffer list. If the + buffer list is empty, go to the first unlisted buffer. + Respects the 'switchbuf' option. ++ Also see |+cmd|. + +! :sbf[irst] [+cmd] *:sbf* *:sbfirst* +! Same as ":sbrewind". + +! :bl[ast][!] [+cmd] *:bl* *:blast* +! Go to last buffer in buffer list. If the buffer list is + empty, go to the last unlisted buffer. + See |:buffer-!| for [!]. + +! :sbl[ast] [+cmd] *:sbl* *:sblast* +! Split window and go to last buffer in buffer list. If the + buffer list is empty, go to the last unlisted buffer. + Respects 'switchbuf' option. + +! :[N]bm[odified][!] [+cmd] [N] *:bm* *:bmodified* *E84* + Go to [N]th next modified buffer. Note: this command also + finds unlisted buffers. If there is no modified buffer the + command fails. + +! :[N]sbm[odified] [+cmd] [N] *:sbm* *:sbmodified* + Split window and go to [N]th next modified buffer. + Respects 'switchbuf' option. + Note: this command also finds buffers not in the buffer list. +*** ../vim-7.4.449/src/ex_cmds.h 2014-09-19 19:39:30.766446025 +0200 +--- src/ex_cmds.h 2014-09-19 19:53:55.618447914 +0200 +*************** +*** 132,140 **** + EX(CMD_aunmenu, "aunmenu", ex_menu, + EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EX(CMD_buffer, "buffer", ex_buffer, +! BANG|RANGE|NOTADR|BUFNAME|BUFUNL|COUNT|EXTRA|TRLBAR), + EX(CMD_bNext, "bNext", ex_bprevious, +! BANG|RANGE|NOTADR|COUNT|TRLBAR), + EX(CMD_ball, "ball", ex_buffer_all, + RANGE|NOTADR|COUNT|TRLBAR), + EX(CMD_badd, "badd", ex_edit, +--- 132,140 ---- + EX(CMD_aunmenu, "aunmenu", ex_menu, + EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EX(CMD_buffer, "buffer", ex_buffer, +! BANG|RANGE|NOTADR|BUFNAME|BUFUNL|COUNT|EXTRA|EDITCMD|TRLBAR), + EX(CMD_bNext, "bNext", ex_bprevious, +! BANG|RANGE|NOTADR|COUNT|EDITCMD|TRLBAR), + EX(CMD_ball, "ball", ex_buffer_all, + RANGE|NOTADR|COUNT|TRLBAR), + EX(CMD_badd, "badd", ex_edit, +*************** +*** 146,164 **** + EX(CMD_belowright, "belowright", ex_wrongmodifier, + NEEDARG|EXTRA|NOTRLCOM), + EX(CMD_bfirst, "bfirst", ex_brewind, +! BANG|RANGE|NOTADR|TRLBAR), + EX(CMD_blast, "blast", ex_blast, +! BANG|RANGE|NOTADR|TRLBAR), + EX(CMD_bmodified, "bmodified", ex_bmodified, +! BANG|RANGE|NOTADR|COUNT|TRLBAR), + EX(CMD_bnext, "bnext", ex_bnext, +! BANG|RANGE|NOTADR|COUNT|TRLBAR), + EX(CMD_botright, "botright", ex_wrongmodifier, + NEEDARG|EXTRA|NOTRLCOM), + EX(CMD_bprevious, "bprevious", ex_bprevious, +! BANG|RANGE|NOTADR|COUNT|TRLBAR), + EX(CMD_brewind, "brewind", ex_brewind, +! BANG|RANGE|NOTADR|TRLBAR), + EX(CMD_break, "break", ex_break, + TRLBAR|SBOXOK|CMDWIN), + EX(CMD_breakadd, "breakadd", ex_breakadd, +--- 146,164 ---- + EX(CMD_belowright, "belowright", ex_wrongmodifier, + NEEDARG|EXTRA|NOTRLCOM), + EX(CMD_bfirst, "bfirst", ex_brewind, +! BANG|RANGE|NOTADR|EDITCMD|TRLBAR), + EX(CMD_blast, "blast", ex_blast, +! BANG|RANGE|NOTADR|EDITCMD|TRLBAR), + EX(CMD_bmodified, "bmodified", ex_bmodified, +! BANG|RANGE|NOTADR|COUNT|EDITCMD|TRLBAR), + EX(CMD_bnext, "bnext", ex_bnext, +! BANG|RANGE|NOTADR|COUNT|EDITCMD|TRLBAR), + EX(CMD_botright, "botright", ex_wrongmodifier, + NEEDARG|EXTRA|NOTRLCOM), + EX(CMD_bprevious, "bprevious", ex_bprevious, +! BANG|RANGE|NOTADR|COUNT|EDITCMD|TRLBAR), + EX(CMD_brewind, "brewind", ex_brewind, +! BANG|RANGE|NOTADR|EDITCMD|TRLBAR), + EX(CMD_break, "break", ex_break, + TRLBAR|SBOXOK|CMDWIN), + EX(CMD_breakadd, "breakadd", ex_breakadd, +*************** +*** 814,836 **** + EX(CMD_saveas, "saveas", ex_write, + BANG|DFLALL|FILE1|ARGOPT|CMDWIN|TRLBAR), + EX(CMD_sbuffer, "sbuffer", ex_buffer, +! BANG|RANGE|NOTADR|BUFNAME|BUFUNL|COUNT|EXTRA|TRLBAR), + EX(CMD_sbNext, "sbNext", ex_bprevious, +! RANGE|NOTADR|COUNT|TRLBAR), + EX(CMD_sball, "sball", ex_buffer_all, +! RANGE|NOTADR|COUNT|TRLBAR), + EX(CMD_sbfirst, "sbfirst", ex_brewind, +! TRLBAR), + EX(CMD_sblast, "sblast", ex_blast, +! TRLBAR), + EX(CMD_sbmodified, "sbmodified", ex_bmodified, +! RANGE|NOTADR|COUNT|TRLBAR), + EX(CMD_sbnext, "sbnext", ex_bnext, +! RANGE|NOTADR|COUNT|TRLBAR), + EX(CMD_sbprevious, "sbprevious", ex_bprevious, +! RANGE|NOTADR|COUNT|TRLBAR), + EX(CMD_sbrewind, "sbrewind", ex_brewind, +! TRLBAR), + EX(CMD_scriptnames, "scriptnames", ex_scriptnames, + TRLBAR|CMDWIN), + EX(CMD_scriptencoding, "scriptencoding", ex_scriptencoding, +--- 814,836 ---- + EX(CMD_saveas, "saveas", ex_write, + BANG|DFLALL|FILE1|ARGOPT|CMDWIN|TRLBAR), + EX(CMD_sbuffer, "sbuffer", ex_buffer, +! BANG|RANGE|NOTADR|BUFNAME|BUFUNL|COUNT|EXTRA|EDITCMD|TRLBAR), + EX(CMD_sbNext, "sbNext", ex_bprevious, +! RANGE|NOTADR|COUNT|EDITCMD|TRLBAR), + EX(CMD_sball, "sball", ex_buffer_all, +! RANGE|NOTADR|COUNT|EDITCMD|TRLBAR), + EX(CMD_sbfirst, "sbfirst", ex_brewind, +! EDITCMD|TRLBAR), + EX(CMD_sblast, "sblast", ex_blast, +! EDITCMD|TRLBAR), + EX(CMD_sbmodified, "sbmodified", ex_bmodified, +! RANGE|NOTADR|COUNT|EDITCMD|TRLBAR), + EX(CMD_sbnext, "sbnext", ex_bnext, +! RANGE|NOTADR|COUNT|EDITCMD|TRLBAR), + EX(CMD_sbprevious, "sbprevious", ex_bprevious, +! RANGE|NOTADR|COUNT|EDITCMD|TRLBAR), + EX(CMD_sbrewind, "sbrewind", ex_brewind, +! EDITCMD|TRLBAR), + EX(CMD_scriptnames, "scriptnames", ex_scriptnames, + TRLBAR|CMDWIN), + EX(CMD_scriptencoding, "scriptencoding", ex_scriptencoding, +*** ../vim-7.4.449/src/ex_docmd.c 2014-09-09 12:21:57.716501404 +0200 +--- src/ex_docmd.c 2014-09-19 19:53:55.622447914 +0200 +*************** +*** 5135,5140 **** +--- 5135,5142 ---- + goto_buffer(eap, DOBUF_CURRENT, FORWARD, 0); + else + goto_buffer(eap, DOBUF_FIRST, FORWARD, (int)eap->line2); ++ if (eap->do_ecmd_cmd != NULL) ++ do_cmdline_cmd(eap->do_ecmd_cmd); + } + } + +*************** +*** 5147,5152 **** +--- 5149,5156 ---- + exarg_T *eap; + { + goto_buffer(eap, DOBUF_MOD, FORWARD, (int)eap->line2); ++ if (eap->do_ecmd_cmd != NULL) ++ do_cmdline_cmd(eap->do_ecmd_cmd); + } + + /* +*************** +*** 5158,5163 **** +--- 5162,5169 ---- + exarg_T *eap; + { + goto_buffer(eap, DOBUF_CURRENT, FORWARD, (int)eap->line2); ++ if (eap->do_ecmd_cmd != NULL) ++ do_cmdline_cmd(eap->do_ecmd_cmd); + } + + /* +*************** +*** 5171,5176 **** +--- 5177,5184 ---- + exarg_T *eap; + { + goto_buffer(eap, DOBUF_CURRENT, BACKWARD, (int)eap->line2); ++ if (eap->do_ecmd_cmd != NULL) ++ do_cmdline_cmd(eap->do_ecmd_cmd); + } + + /* +*************** +*** 5184,5189 **** +--- 5192,5199 ---- + exarg_T *eap; + { + goto_buffer(eap, DOBUF_FIRST, FORWARD, 0); ++ if (eap->do_ecmd_cmd != NULL) ++ do_cmdline_cmd(eap->do_ecmd_cmd); + } + + /* +*************** +*** 5195,5200 **** +--- 5205,5212 ---- + exarg_T *eap; + { + goto_buffer(eap, DOBUF_LAST, BACKWARD, 0); ++ if (eap->do_ecmd_cmd != NULL) ++ do_cmdline_cmd(eap->do_ecmd_cmd); + } + #endif + +*** ../vim-7.4.449/src/version.c 2014-09-19 19:39:30.766446025 +0200 +--- src/version.c 2014-09-19 19:54:39.442448010 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 450, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +166. You have been on your computer soo long that you didn't realize + you had grandchildren. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.451 b/SOURCES/7.4.451 new file mode 100644 index 0000000..3b2110e --- /dev/null +++ b/SOURCES/7.4.451 @@ -0,0 +1,68 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.451 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.451 +Problem: Calling system() with empty input gives an error for writing the + temp file. +Solution: Do not try writing if the string length is zero. (Olaf Dabrunz) +Files: src/eval.c + + +*** ../vim-7.4.450/src/eval.c 2014-09-19 14:26:29.654405000 +0200 +--- src/eval.c 2014-09-19 20:23:57.354451850 +0200 +*************** +*** 18638,18650 **** + } + else + { + p = get_tv_string_buf_chk(&argvars[1], buf); + if (p == NULL) + { + fclose(fd); + goto errret; /* type error; errmsg already given */ + } +! if (fwrite(p, STRLEN(p), 1, fd) != 1) + err = TRUE; + } + if (fclose(fd) != 0) +--- 18638,18653 ---- + } + else + { ++ size_t len; ++ + p = get_tv_string_buf_chk(&argvars[1], buf); + if (p == NULL) + { + fclose(fd); + goto errret; /* type error; errmsg already given */ + } +! len = STRLEN(p); +! if (len > 0 && fwrite(p, len, 1, fd) != 1) + err = TRUE; + } + if (fclose(fd) != 0) +*** ../vim-7.4.450/src/version.c 2014-09-19 20:07:22.550449677 +0200 +--- src/version.c 2014-09-19 20:19:22.390451249 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 451, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +167. You have more than 200 websites bookmarked. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.452 b/SOURCES/7.4.452 new file mode 100644 index 0000000..b317ae7 --- /dev/null +++ b/SOURCES/7.4.452 @@ -0,0 +1,69 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.452 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.452 +Problem: Can't build with tiny features. (Tony Mechelynck) +Solution: Use "return" instead of "break". +Files: src/ex_cmds.c + + +*** ../vim-7.4.451/src/ex_cmds.c 2014-09-19 19:39:30.766446025 +0200 +--- src/ex_cmds.c 2014-09-19 22:03:13.506464860 +0200 +*************** +*** 5900,5906 **** + } + + /* +! * ":helpclose": Close the help window + */ + void + ex_helpclose(eap) +--- 5900,5906 ---- + } + + /* +! * ":helpclose": Close one help window + */ + void + ex_helpclose(eap) +*************** +*** 5913,5919 **** + if (win->w_buffer->b_help) + { + win_close(win, FALSE); +! break; + } + } + } +--- 5913,5919 ---- + if (win->w_buffer->b_help) + { + win_close(win, FALSE); +! return; + } + } + } +*** ../vim-7.4.451/src/version.c 2014-09-19 20:45:19.266454650 +0200 +--- src/version.c 2014-09-19 22:05:30.178465158 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 452, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +168. You have your own domain name. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.453 b/SOURCES/7.4.453 new file mode 100644 index 0000000..2afec9d --- /dev/null +++ b/SOURCES/7.4.453 @@ -0,0 +1,55 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.453 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.453 +Problem: Still can't build with tiny features. +Solution: Add #ifdef. +Files: src/ex_cmds.c + + +*** ../vim-7.4.452/src/ex_cmds.c 2014-09-19 22:05:48.606465199 +0200 +--- src/ex_cmds.c 2014-09-19 22:08:31.850465555 +0200 +*************** +*** 5906,5911 **** +--- 5906,5912 ---- + ex_helpclose(eap) + exarg_T *eap UNUSED; + { ++ #if defined(FEAT_WINDOWS) + win_T *win; + + FOR_ALL_WINDOWS(win) +*************** +*** 5916,5921 **** +--- 5917,5923 ---- + return; + } + } ++ #endif + } + + #if defined(FEAT_MULTI_LANG) || defined(PROTO) +*** ../vim-7.4.452/src/version.c 2014-09-19 22:05:48.610465199 +0200 +--- src/version.c 2014-09-19 22:19:43.058467021 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 453, + /**/ + + +-- +"Hit any key to continue" does _not_ mean you can hit the on/off button! + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.454 b/SOURCES/7.4.454 new file mode 100644 index 0000000..ee45fb6 --- /dev/null +++ b/SOURCES/7.4.454 @@ -0,0 +1,87 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.454 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.454 +Problem: When using a Visual selection of multiple words and doing CTRL-W_] + it jumps to the tag matching the word under the cursor, not the + selected text. (Patrick hemmer) +Solution: Do not reset Visual mode. (idea by Christian Brabandt) +Files: src/window.c + + +*** ../vim-7.4.453/src/window.c 2014-09-19 14:26:29.658405000 +0200 +--- src/window.c 2014-09-23 13:34:12.722783903 +0200 +*************** +*** 479,492 **** + case ']': + case Ctrl_RSB: + CHECK_CMDWIN +! reset_VIsual_and_resel(); /* stop Visual mode */ + if (Prenum) + postponed_split = Prenum; + else + postponed_split = -1; + +! /* Execute the command right here, required when +! * "wincmd ]" was used in a function. */ + do_nv_ident(Ctrl_RSB, NUL); + break; + +--- 479,493 ---- + case ']': + case Ctrl_RSB: + CHECK_CMDWIN +! /* keep Visual mode, can select words to use as a tag */ + if (Prenum) + postponed_split = Prenum; + else + postponed_split = -1; ++ g_do_tagpreview = 0; + +! /* Execute the command right here, required when "wincmd ]" +! * was used in a function. */ + do_nv_ident(Ctrl_RSB, NUL); + break; + +*************** +*** 590,596 **** + #endif + case ']': + case Ctrl_RSB: +! reset_VIsual_and_resel(); /* stop Visual mode */ + if (Prenum) + postponed_split = Prenum; + else +--- 591,597 ---- + #endif + case ']': + case Ctrl_RSB: +! /* keep Visual mode, can select words to use as a tag */ + if (Prenum) + postponed_split = Prenum; + else +*** ../vim-7.4.453/src/version.c 2014-09-19 22:23:22.398467500 +0200 +--- src/version.c 2014-09-23 13:36:18.550784178 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 454, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +175. You send yourself e-mail before you go to bed to remind you + what to do when you wake up. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.455 b/SOURCES/7.4.455 new file mode 100644 index 0000000..7020b28 --- /dev/null +++ b/SOURCES/7.4.455 @@ -0,0 +1,167 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.455 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.455 +Problem: Completion for :buf does not use 'wildignorecase'. (Akshay H) +Solution: Pass the 'wildignorecase' flag around. +Files: src/buffer.c + + +*** ../vim-7.4.454/src/buffer.c 2014-07-16 16:30:21.647608710 +0200 +--- src/buffer.c 2014-09-23 14:18:24.470789696 +0200 +*************** +*** 28,36 **** + #include "vim.h" + + #if defined(FEAT_CMDL_COMPL) || defined(FEAT_LISTCMDS) || defined(FEAT_EVAL) || defined(FEAT_PERL) +! static char_u *buflist_match __ARGS((regprog_T *prog, buf_T *buf)); + # define HAVE_BUFLIST_MATCH +! static char_u *fname_match __ARGS((regprog_T *prog, char_u *name)); + #endif + static void buflist_setfpos __ARGS((buf_T *buf, win_T *win, linenr_T lnum, colnr_T col, int copy_options)); + static wininfo_T *find_wininfo __ARGS((buf_T *buf, int skip_diff_buffer)); +--- 28,36 ---- + #include "vim.h" + + #if defined(FEAT_CMDL_COMPL) || defined(FEAT_LISTCMDS) || defined(FEAT_EVAL) || defined(FEAT_PERL) +! static char_u *buflist_match __ARGS((regprog_T *prog, buf_T *buf, int ignore_case)); + # define HAVE_BUFLIST_MATCH +! static char_u *fname_match __ARGS((regprog_T *prog, char_u *name, int ignore_case)); + #endif + static void buflist_setfpos __ARGS((buf_T *buf, win_T *win, linenr_T lnum, colnr_T col, int copy_options)); + static wininfo_T *find_wininfo __ARGS((buf_T *buf, int skip_diff_buffer)); +*************** +*** 2282,2288 **** + #ifdef FEAT_DIFF + && (!diffmode || diff_mode_buf(buf)) + #endif +! && buflist_match(prog, buf) != NULL) + { + if (curtab_only) + { +--- 2282,2288 ---- + #ifdef FEAT_DIFF + && (!diffmode || diff_mode_buf(buf)) + #endif +! && buflist_match(prog, buf, FALSE) != NULL) + { + if (curtab_only) + { +*************** +*** 2396,2402 **** + { + if (!buf->b_p_bl) /* skip unlisted buffers */ + continue; +! p = buflist_match(prog, buf); + if (p != NULL) + { + if (round == 1) +--- 2396,2402 ---- + { + if (!buf->b_p_bl) /* skip unlisted buffers */ + continue; +! p = buflist_match(prog, buf, p_wic); + if (p != NULL) + { + if (round == 1) +*************** +*** 2444,2459 **** + * Check for a match on the file name for buffer "buf" with regprog "prog". + */ + static char_u * +! buflist_match(prog, buf) + regprog_T *prog; + buf_T *buf; + { + char_u *match; + + /* First try the short file name, then the long file name. */ +! match = fname_match(prog, buf->b_sfname); + if (match == NULL) +! match = fname_match(prog, buf->b_ffname); + + return match; + } +--- 2444,2460 ---- + * Check for a match on the file name for buffer "buf" with regprog "prog". + */ + static char_u * +! buflist_match(prog, buf, ignore_case) + regprog_T *prog; + buf_T *buf; ++ int ignore_case; /* when TRUE ignore case, when FALSE use 'fic' */ + { + char_u *match; + + /* First try the short file name, then the long file name. */ +! match = fname_match(prog, buf->b_sfname, ignore_case); + if (match == NULL) +! match = fname_match(prog, buf->b_ffname, ignore_case); + + return match; + } +*************** +*** 2463,2471 **** + * Return "name" when there is a match, NULL when not. + */ + static char_u * +! fname_match(prog, name) + regprog_T *prog; + char_u *name; + { + char_u *match = NULL; + char_u *p; +--- 2464,2473 ---- + * Return "name" when there is a match, NULL when not. + */ + static char_u * +! fname_match(prog, name, ignore_case) + regprog_T *prog; + char_u *name; ++ int ignore_case; /* when TRUE ignore case, when FALSE use 'fic' */ + { + char_u *match = NULL; + char_u *p; +*************** +*** 2474,2480 **** + if (name != NULL) + { + regmatch.regprog = prog; +! regmatch.rm_ic = p_fic; /* ignore case when 'fileignorecase' is set */ + if (vim_regexec(®match, name, (colnr_T)0)) + match = name; + else +--- 2476,2483 ---- + if (name != NULL) + { + regmatch.regprog = prog; +! /* Ignore case when 'fileignorecase' or the argument is set. */ +! regmatch.rm_ic = p_fic || ignore_case; + if (vim_regexec(®match, name, (colnr_T)0)) + match = name; + else +*** ../vim-7.4.454/src/version.c 2014-09-23 13:48:40.054785798 +0200 +--- src/version.c 2014-09-23 14:19:13.114789802 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 455, + /**/ + +-- +If Microsoft would build a car... +... the oil, water temperature, and alternator warning lights would +all be replaced by a single "General Protection Fault" warning light. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.456 b/SOURCES/7.4.456 new file mode 100644 index 0000000..d696a9d --- /dev/null +++ b/SOURCES/7.4.456 @@ -0,0 +1,414 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.456 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.456 +Problem: 'backupcopy' is global, cannot write only some files in a + different way. +Solution: Make 'backupcopy' global-local. (Christian Brabandt) +Files: runtime/doc/options.txt, src/buffer.c, src/fileio.c, src/option.c, + src/option.h, src/proto/option.pro, src/structs.h + + +*** ../vim-7.4.455/runtime/doc/options.txt 2014-08-10 13:34:59.052785459 +0200 +--- runtime/doc/options.txt 2014-09-23 14:28:40.530791041 +0200 +*************** +*** 921,927 **** + + *'backupcopy'* *'bkc'* + 'backupcopy' 'bkc' string (Vi default for Unix: "yes", otherwise: "auto") +! global + {not in Vi} + When writing a file and a backup is made, this option tells how it's + done. This is a comma separated list of words. +--- 921,927 ---- + + *'backupcopy'* *'bkc'* + 'backupcopy' 'bkc' string (Vi default for Unix: "yes", otherwise: "auto") +! global or local to buffer |global-local| + {not in Vi} + When writing a file and a backup is made, this option tells how it's + done. This is a comma separated list of words. +*** ../vim-7.4.455/src/buffer.c 2014-09-23 14:24:36.406790508 +0200 +--- src/buffer.c 2014-09-23 14:28:40.530791041 +0200 +*************** +*** 2001,2006 **** +--- 2001,2007 ---- + #ifdef FEAT_LISP + clear_string_option(&buf->b_p_lw); + #endif ++ clear_string_option(&buf->b_p_bkc); + } + + /* +*** ../vim-7.4.455/src/fileio.c 2014-09-09 16:59:34.792537789 +0200 +--- src/fileio.c 2014-09-23 14:28:40.530791041 +0200 +*************** +*** 3149,3154 **** +--- 3149,3155 ---- + int write_undo_file = FALSE; + context_sha256_T sha_ctx; + #endif ++ unsigned int bkc = get_bkc_value(buf); + + if (fname == NULL || *fname == NUL) /* safety check */ + return FAIL; +*************** +*** 3647,3656 **** + struct stat st; + #endif + +! if ((bkc_flags & BKC_YES) || append) /* "yes" */ + backup_copy = TRUE; + #if defined(UNIX) || defined(WIN32) +! else if ((bkc_flags & BKC_AUTO)) /* "auto" */ + { + int i; + +--- 3648,3657 ---- + struct stat st; + #endif + +! if ((bkc & BKC_YES) || append) /* "yes" */ + backup_copy = TRUE; + #if defined(UNIX) || defined(WIN32) +! else if ((bkc & BKC_AUTO)) /* "auto" */ + { + int i; + +*************** +*** 3738,3744 **** + /* + * Break symlinks and/or hardlinks if we've been asked to. + */ +! if ((bkc_flags & BKC_BREAKSYMLINK) || (bkc_flags & BKC_BREAKHARDLINK)) + { + # ifdef UNIX + int lstat_res; +--- 3739,3745 ---- + /* + * Break symlinks and/or hardlinks if we've been asked to. + */ +! if ((bkc & BKC_BREAKSYMLINK) || (bkc & BKC_BREAKHARDLINK)) + { + # ifdef UNIX + int lstat_res; +*************** +*** 3746,3769 **** + lstat_res = mch_lstat((char *)fname, &st); + + /* Symlinks. */ +! if ((bkc_flags & BKC_BREAKSYMLINK) + && lstat_res == 0 + && st.st_ino != st_old.st_ino) + backup_copy = FALSE; + + /* Hardlinks. */ +! if ((bkc_flags & BKC_BREAKHARDLINK) + && st_old.st_nlink > 1 + && (lstat_res != 0 || st.st_ino == st_old.st_ino)) + backup_copy = FALSE; + # else + # if defined(WIN32) + /* Symlinks. */ +! if ((bkc_flags & BKC_BREAKSYMLINK) && mch_is_symbolic_link(fname)) + backup_copy = FALSE; + + /* Hardlinks. */ +! if ((bkc_flags & BKC_BREAKHARDLINK) && mch_is_hard_link(fname)) + backup_copy = FALSE; + # endif + # endif +--- 3747,3770 ---- + lstat_res = mch_lstat((char *)fname, &st); + + /* Symlinks. */ +! if ((bkc & BKC_BREAKSYMLINK) + && lstat_res == 0 + && st.st_ino != st_old.st_ino) + backup_copy = FALSE; + + /* Hardlinks. */ +! if ((bkc & BKC_BREAKHARDLINK) + && st_old.st_nlink > 1 + && (lstat_res != 0 || st.st_ino == st_old.st_ino)) + backup_copy = FALSE; + # else + # if defined(WIN32) + /* Symlinks. */ +! if ((bkc & BKC_BREAKSYMLINK) && mch_is_symbolic_link(fname)) + backup_copy = FALSE; + + /* Hardlinks. */ +! if ((bkc & BKC_BREAKHARDLINK) && mch_is_hard_link(fname)) + backup_copy = FALSE; + # endif + # endif +*** ../vim-7.4.455/src/option.c 2014-09-09 17:33:02.700542175 +0200 +--- src/option.c 2014-09-23 14:41:25.890792713 +0200 +*************** +*** 56,61 **** +--- 56,62 ---- + */ + #define PV_AI OPT_BUF(BV_AI) + #define PV_AR OPT_BOTH(OPT_BUF(BV_AR)) ++ #define PV_BKC OPT_BOTH(OPT_BUF(BV_BKC)) + #ifdef FEAT_QUICKFIX + # define PV_BH OPT_BUF(BV_BH) + # define PV_BT OPT_BUF(BV_BT) +*************** +*** 582,588 **** + (char_u *)&p_bk, PV_NONE, + {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT}, + {"backupcopy", "bkc", P_STRING|P_VIM|P_COMMA|P_NODUP, +! (char_u *)&p_bkc, PV_NONE, + #ifdef UNIX + {(char_u *)"yes", (char_u *)"auto"} + #else +--- 583,589 ---- + (char_u *)&p_bk, PV_NONE, + {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT}, + {"backupcopy", "bkc", P_STRING|P_VIM|P_COMMA|P_NODUP, +! (char_u *)&p_bkc, PV_BKC, + #ifdef UNIX + {(char_u *)"yes", (char_u *)"auto"} + #else +*************** +*** 5412,5417 **** +--- 5413,5419 ---- + #ifdef FEAT_LISP + check_string_option(&buf->b_p_lw); + #endif ++ check_string_option(&buf->b_p_bkc); + } + + /* +*************** +*** 5729,5744 **** + } + + /* 'backupcopy' */ +! else if (varp == &p_bkc) + { +! if (opt_strings_flags(p_bkc, p_bkc_values, &bkc_flags, TRUE) != OK) + errmsg = e_invarg; +! if (((bkc_flags & BKC_AUTO) != 0) +! + ((bkc_flags & BKC_YES) != 0) +! + ((bkc_flags & BKC_NO) != 0) != 1) + { + /* Must have exactly one of "auto", "yes" and "no". */ +! (void)opt_strings_flags(oldval, p_bkc_values, &bkc_flags, TRUE); + errmsg = e_invarg; + } + } +--- 5731,5755 ---- + } + + /* 'backupcopy' */ +! else if (gvarp == &p_bkc) + { +! char_u *bkc = p_bkc; +! unsigned int *flags = &bkc_flags; +! +! if (opt_flags & OPT_LOCAL) +! { +! bkc = curbuf->b_p_bkc; +! flags = &curbuf->b_bkc_flags; +! } +! +! if (opt_strings_flags(bkc, p_bkc_values, flags, TRUE) != OK) + errmsg = e_invarg; +! if ((((int)*flags & BKC_AUTO) != 0) +! + (((int)*flags & BKC_YES) != 0) +! + (((int)*flags & BKC_NO) != 0) != 1) + { + /* Must have exactly one of "auto", "yes" and "no". */ +! (void)opt_strings_flags(oldval, p_bkc_values, flags, TRUE); + errmsg = e_invarg; + } + } +*************** +*** 9025,9036 **** + } + + /* +! * Iterate over options. First argument is a pointer to a pointer to a structure +! * inside options[] array, second is option type like in the above function. + * +! * If first argument points to NULL it is assumed that iteration just started + * and caller needs the very first value. +! * If first argument points to the end marker function returns NULL and sets + * first argument to NULL. + * + * Returns full option name for current option on each call. +--- 9036,9048 ---- + } + + /* +! * Iterate over options. First argument is a pointer to a pointer to a +! * structure inside options[] array, second is option type like in the above +! * function. + * +! * If first argument points to NULL it is assumed that iteration just started + * and caller needs the very first value. +! * If first argument points to the end marker function returns NULL and sets + * first argument to NULL. + * + * Returns full option name for current option on each call. +*************** +*** 9856,9861 **** +--- 9868,9877 ---- + case PV_AR: + buf->b_p_ar = -1; + break; ++ case PV_BKC: ++ clear_string_option(&buf->b_p_bkc); ++ buf->b_bkc_flags = 0; ++ break; + case PV_TAGS: + clear_string_option(&buf->b_p_tags); + break; +*************** +*** 9961,9966 **** +--- 9977,9983 ---- + #ifdef FEAT_LISP + case PV_LW: return (char_u *)&(curbuf->b_p_lw); + #endif ++ case PV_BKC: return (char_u *)&(curbuf->b_p_bkc); + } + return NULL; /* "cannot happen" */ + } +*************** +*** 9993,9998 **** +--- 10010,10017 ---- + ? (char_u *)&(curbuf->b_p_ar) : p->var; + case PV_TAGS: return *curbuf->b_p_tags != NUL + ? (char_u *)&(curbuf->b_p_tags) : p->var; ++ case PV_BKC: return *curbuf->b_p_bkc != NUL ++ ? (char_u *)&(curbuf->b_p_bkc) : p->var; + #ifdef FEAT_FIND_ID + case PV_DEF: return *curbuf->b_p_def != NUL + ? (char_u *)&(curbuf->b_p_def) : p->var; +*************** +*** 10585,10590 **** +--- 10604,10611 ---- + * are not copied, start using the global value */ + buf->b_p_ar = -1; + buf->b_p_ul = NO_LOCAL_UNDOLEVEL; ++ buf->b_p_bkc = empty_option; ++ buf->b_bkc_flags = 0; + #ifdef FEAT_QUICKFIX + buf->b_p_gp = empty_option; + buf->b_p_mp = empty_option; +*************** +*** 12052,12054 **** +--- 12073,12085 ---- + return OK; + } + #endif ++ ++ /* ++ * Get the local or global value of 'backupcopy'. ++ */ ++ unsigned int ++ get_bkc_value(buf) ++ buf_T *buf; ++ { ++ return buf->b_bkc_flags ? buf->b_bkc_flags : bkc_flags; ++ } +*** ../vim-7.4.455/src/option.h 2014-08-06 14:52:05.047236174 +0200 +--- src/option.h 2014-09-23 14:41:45.614792756 +0200 +*************** +*** 327,333 **** + EXTERN char_u *p_bg; /* 'background' */ + EXTERN int p_bk; /* 'backup' */ + EXTERN char_u *p_bkc; /* 'backupcopy' */ +! EXTERN unsigned bkc_flags; + #ifdef IN_OPTION_C + static char *(p_bkc_values[]) = {"yes", "auto", "no", "breaksymlink", "breakhardlink", NULL}; + #endif +--- 327,333 ---- + EXTERN char_u *p_bg; /* 'background' */ + EXTERN int p_bk; /* 'backup' */ + EXTERN char_u *p_bkc; /* 'backupcopy' */ +! EXTERN unsigned bkc_flags; /* flags from 'backupcopy' */ + #ifdef IN_OPTION_C + static char *(p_bkc_values[]) = {"yes", "auto", "no", "breaksymlink", "breakhardlink", NULL}; + #endif +*************** +*** 918,923 **** +--- 918,926 ---- + , BV_AR + #ifdef FEAT_QUICKFIX + , BV_BH ++ #endif ++ , BV_BKC ++ #ifdef FEAT_QUICKFIX + , BV_BT + , BV_EFM + , BV_GP +*** ../vim-7.4.455/src/proto/option.pro 2014-08-24 21:39:45.488526954 +0200 +--- src/proto/option.pro 2014-09-23 14:28:40.534791041 +0200 +*************** +*** 62,65 **** +--- 62,66 ---- + long get_sw_value __ARGS((buf_T *buf)); + long get_sts_value __ARGS((void)); + void find_mps_values __ARGS((int *initc, int *findc, int *backwards, int switchit)); ++ unsigned int get_bkc_value __ARGS((buf_T *buf)); + /* vim: set ft=c : */ +*** ../vim-7.4.455/src/structs.h 2014-08-10 13:34:59.064785459 +0200 +--- src/structs.h 2014-09-23 14:41:56.218792779 +0200 +*************** +*** 137,143 **** + #ifdef FEAT_LINEBREAK + int wo_bri; + # define w_p_bri w_onebuf_opt.wo_bri /* 'breakindent' */ +! char_u *wo_briopt; + # define w_p_briopt w_onebuf_opt.wo_briopt /* 'breakindentopt' */ + #endif + #ifdef FEAT_DIFF +--- 137,143 ---- + #ifdef FEAT_LINEBREAK + int wo_bri; + # define w_p_bri w_onebuf_opt.wo_bri /* 'breakindent' */ +! char_u *wo_briopt; + # define w_p_briopt w_onebuf_opt.wo_briopt /* 'breakindentopt' */ + #endif + #ifdef FEAT_DIFF +*************** +*** 1537,1542 **** +--- 1537,1544 ---- + + int b_p_ai; /* 'autoindent' */ + int b_p_ai_nopaste; /* b_p_ai saved for paste mode */ ++ char_u *b_p_bkc; /* 'backupcopy' */ ++ unsigned b_bkc_flags; /* flags for 'backupcopy' */ + int b_p_ci; /* 'copyindent' */ + int b_p_bin; /* 'binary' */ + #ifdef FEAT_MBYTE +*** ../vim-7.4.455/src/version.c 2014-09-23 14:24:36.410790508 +0200 +--- src/version.c 2014-09-23 14:29:15.706791118 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 456, + /**/ + +-- +If Apple would build a car... +... it would be powered by the sun, be reliable, five times +as fast and twice as easy to drive; but would only run on +five percent of the roads. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.457 b/SOURCES/7.4.457 new file mode 100644 index 0000000..8ffe27c --- /dev/null +++ b/SOURCES/7.4.457 @@ -0,0 +1,48 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.457 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.457 +Problem: Using getchar() in an expression mapping may result in + K_CURSORHOLD, which can't be recognized. +Solution: Add the <CursorHold> key. (Hirohito Higashi) +Files: src/misc2.c + + +*** ../vim-7.4.456/src/misc2.c 2014-09-19 14:26:29.654405000 +0200 +--- src/misc2.c 2014-09-23 16:25:18.726806328 +0200 +*************** +*** 2471,2476 **** +--- 2471,2477 ---- + {K_SNR, (char_u *)"SNR"}, + #endif + {K_PLUG, (char_u *)"Plug"}, ++ {K_CURSORHOLD, (char_u *)"CursorHold"}, + {0, NULL} + }; + +*** ../vim-7.4.456/src/version.c 2014-09-23 15:45:04.874801055 +0200 +--- src/version.c 2014-09-23 16:47:43.738809266 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 457, + /**/ + +-- +If Microsoft would build a car... +... Occasionally, executing a maneuver such as a left turn +would cause your car to shut down and refuse to restart, in +which case you would have to reinstall the engine. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.458 b/SOURCES/7.4.458 new file mode 100644 index 0000000..35948d7 --- /dev/null +++ b/SOURCES/7.4.458 @@ -0,0 +1,55 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.458 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.458 +Problem: Issue 252: Cursor moves in a zero-height window. +Solution: Check for zero height. (idea by Christian Brabandt) +Files: src/move.c + + +*** ../vim-7.4.457/src/move.c 2014-03-28 21:49:26.854248777 +0100 +--- src/move.c 2014-09-23 18:27:33.138822349 +0200 +*************** +*** 183,188 **** +--- 183,200 ---- + if (!screen_valid(TRUE)) + return; + ++ /* If the window height is zero just use the cursor line. */ ++ if (curwin->w_height == 0) ++ { ++ curwin->w_topline = curwin->w_cursor.lnum; ++ curwin->w_botline = curwin->w_topline; ++ curwin->w_valid |= VALID_BOTLINE|VALID_BOTLINE_AP; ++ #ifdef FEAT_SCROLLBIND ++ curwin->w_scbind_pos = 1; ++ #endif ++ return; ++ } ++ + check_cursor_moved(curwin); + if (curwin->w_valid & VALID_TOPLINE) + return; +*** ../vim-7.4.457/src/version.c 2014-09-23 16:49:38.798809517 +0200 +--- src/version.c 2014-09-23 17:50:55.642817549 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 458, + /**/ + +-- +I'm so disorganized my keyboard isn't even in alphabetical order! + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.459 b/SOURCES/7.4.459 new file mode 100644 index 0000000..fce17c2 --- /dev/null +++ b/SOURCES/7.4.459 @@ -0,0 +1,123 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.459 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.459 +Problem: Can't change the icon after building Vim. +Solution: Load the icon from a file on startup. (Yasuhiro Matsumoto) +Files: src/gui_w32.c, src/os_mswin.c, src/os_win32.c, + src/proto/os_mswin.pro + + +*** ../vim-7.4.458/src/gui_w32.c 2014-09-19 16:13:48.358419065 +0200 +--- src/gui_w32.c 2014-09-23 21:53:17.382849313 +0200 +*************** +*** 1662,1667 **** +--- 1662,1675 ---- + if (s_textArea == NULL) + return FAIL; + ++ /* Try loading an icon from $RUNTIMEPATH/bitmaps/vim.ico. */ ++ { ++ HANDLE hIcon = NULL; ++ ++ if (mch_icon_load(&hIcon) == OK && hIcon != NULL) ++ SendMessage(s_hwnd, WM_SETICON, ICON_SMALL, hIcon); ++ } ++ + #ifdef FEAT_MENU + s_menuBar = CreateMenu(); + #endif +*** ../vim-7.4.458/src/os_mswin.c 2014-09-09 12:25:27.768501863 +0200 +--- src/os_mswin.c 2014-09-23 21:52:50.582849254 +0200 +*************** +*** 928,933 **** +--- 928,960 ---- + } + # endif + ++ /* ++ * Passed to do_in_runtimepath() to load a vim.ico file. ++ */ ++ static void ++ mch_icon_load_cb(char_u *fname, void *cookie) ++ { ++ HANDLE *h = (HANDLE *)cookie; ++ ++ *h = LoadImage(NULL, ++ fname, ++ IMAGE_ICON, ++ 64, ++ 64, ++ LR_LOADFROMFILE | LR_LOADMAP3DCOLORS); ++ } ++ ++ /* ++ * Try loading an icon file from 'runtimepath'. ++ */ ++ int ++ mch_icon_load(iconp) ++ HANDLE *iconp; ++ { ++ return do_in_runtimepath((char_u *)"bitmaps/vim.ico", ++ FALSE, mch_icon_load_cb, iconp); ++ } ++ + int + mch_libcall( + char_u *libname, +*** ../vim-7.4.458/src/os_win32.c 2014-09-09 12:25:27.764501863 +0200 +--- src/os_win32.c 2014-09-23 21:47:03.318848496 +0200 +*************** +*** 2446,2452 **** + return; + + /* Extract the first icon contained in the Vim executable. */ +! g_hVimIcon = ExtractIcon(NULL, exe_name, 0); + if (g_hVimIcon != NULL) + g_fCanChangeIcon = TRUE; + } +--- 2446,2453 ---- + return; + + /* Extract the first icon contained in the Vim executable. */ +! if (mch_icon_load((HANDLE *)&g_hVimIcon) == FAIL || g_hVimIcon == NULL) +! g_hVimIcon = ExtractIcon(NULL, exe_name, 0); + if (g_hVimIcon != NULL) + g_fCanChangeIcon = TRUE; + } +*** ../vim-7.4.458/src/proto/os_mswin.pro 2013-08-10 13:37:39.000000000 +0200 +--- src/proto/os_mswin.pro 2014-09-23 21:49:29.746848816 +0200 +*************** +*** 21,26 **** +--- 21,27 ---- + int mch_chdir __ARGS((char *path)); + int can_end_termcap_mode __ARGS((int give_msg)); + int mch_screenmode __ARGS((char_u *arg)); ++ int mch_icon_load __ARGS((HANDLE *iconp)); + int mch_libcall __ARGS((char_u *libname, char_u *funcname, char_u *argstring, int argint, char_u **string_result, int *number_result)); + void DumpPutS __ARGS((const char *psz)); + int mch_get_winpos __ARGS((int *x, int *y)); +*** ../vim-7.4.458/src/version.c 2014-09-23 18:37:52.426823701 +0200 +--- src/version.c 2014-09-23 21:36:07.806847064 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 459, + /**/ + +-- +If Microsoft would build a car... +... You'd have to press the "Start" button to turn the engine off. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.460 b/SOURCES/7.4.460 new file mode 100644 index 0000000..ce6908f --- /dev/null +++ b/SOURCES/7.4.460 @@ -0,0 +1,48 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.460 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.460 (after 7.4.454) +Problem: Can't build without the quickfix feature. (Erik Falor) +Solution: Add a #ifdef. +Files: src/window.c + + +*** ../vim-7.4.459/src/window.c 2014-09-23 13:48:40.054785798 +0200 +--- src/window.c 2014-09-24 13:24:27.318971352 +0200 +*************** +*** 484,490 **** +--- 484,492 ---- + postponed_split = Prenum; + else + postponed_split = -1; ++ #ifdef FEAT_QUICKFIX + g_do_tagpreview = 0; ++ #endif + + /* Execute the command right here, required when "wincmd ]" + * was used in a function. */ +*** ../vim-7.4.459/src/version.c 2014-09-23 21:53:35.310849352 +0200 +--- src/version.c 2014-09-24 13:24:44.450971389 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 460, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +179. You wonder why your household garbage can doesn't have an + "empty recycle bin" button. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.461 b/SOURCES/7.4.461 new file mode 100644 index 0000000..e100c7a --- /dev/null +++ b/SOURCES/7.4.461 @@ -0,0 +1,77 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.461 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.461 +Problem: MS-Windows: When collate is on the number of copies is too high. +Solution: Only set the collated/uncollated count when collate is on. + (Yasuhiro Matsumoto) +Files: src/os_mswin.c + + +*** ../vim-7.4.460/src/os_mswin.c 2014-09-23 21:53:35.306849352 +0200 +--- src/os_mswin.c 2014-09-27 11:14:27.287520497 +0200 +*************** +*** 1673,1688 **** + */ + psettings->chars_per_line = prt_get_cpl(); + psettings->lines_per_page = prt_get_lpp(); +! psettings->n_collated_copies = (prt_dlg.Flags & PD_COLLATE) +! ? prt_dlg.nCopies : 1; +! psettings->n_uncollated_copies = (prt_dlg.Flags & PD_COLLATE) +! ? 1 : prt_dlg.nCopies; + +! if (psettings->n_collated_copies == 0) +! psettings->n_collated_copies = 1; + +! if (psettings->n_uncollated_copies == 0) + psettings->n_uncollated_copies = 1; + + psettings->jobname = jobname; + +--- 1673,1694 ---- + */ + psettings->chars_per_line = prt_get_cpl(); + psettings->lines_per_page = prt_get_lpp(); +! if (prt_dlg.Flags & PD_USEDEVMODECOPIESANDCOLLATE) +! { +! psettings->n_collated_copies = (prt_dlg.Flags & PD_COLLATE) +! ? prt_dlg.nCopies : 1; +! psettings->n_uncollated_copies = (prt_dlg.Flags & PD_COLLATE) +! ? 1 : prt_dlg.nCopies; + +! if (psettings->n_collated_copies == 0) +! psettings->n_collated_copies = 1; + +! if (psettings->n_uncollated_copies == 0) +! psettings->n_uncollated_copies = 1; +! } else { +! psettings->n_collated_copies = 1; + psettings->n_uncollated_copies = 1; ++ } + + psettings->jobname = jobname; + +*** ../vim-7.4.460/src/version.c 2014-09-24 13:26:39.954971642 +0200 +--- src/version.c 2014-09-27 11:16:48.883520806 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 461, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +188. You purchase a laptop so you can surf while sitting on the can. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.462 b/SOURCES/7.4.462 new file mode 100644 index 0000000..b5c3d49 --- /dev/null +++ b/SOURCES/7.4.462 @@ -0,0 +1,80 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.462 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.462 +Problem: Setting the local value of 'backupcopy' empty gives an error. + (Peter Mattern) +Solution: When using an empty value set the flags to zero. (Hirohito + Higashi) +Files: src/option.c + + +*** ../vim-7.4.461/src/option.c 2014-09-23 15:45:04.870801055 +0200 +--- src/option.c 2014-09-29 17:03:06.963943648 +0200 +*************** +*** 5742,5756 **** + flags = &curbuf->b_bkc_flags; + } + +! if (opt_strings_flags(bkc, p_bkc_values, flags, TRUE) != OK) +! errmsg = e_invarg; +! if ((((int)*flags & BKC_AUTO) != 0) +! + (((int)*flags & BKC_YES) != 0) +! + (((int)*flags & BKC_NO) != 0) != 1) + { +! /* Must have exactly one of "auto", "yes" and "no". */ +! (void)opt_strings_flags(oldval, p_bkc_values, flags, TRUE); +! errmsg = e_invarg; + } + } + +--- 5742,5762 ---- + flags = &curbuf->b_bkc_flags; + } + +! if ((opt_flags & OPT_LOCAL) && *bkc == NUL) +! /* make the local value empty: use the global value */ +! *flags = 0; +! else + { +! if (opt_strings_flags(bkc, p_bkc_values, flags, TRUE) != OK) +! errmsg = e_invarg; +! if ((((int)*flags & BKC_AUTO) != 0) +! + (((int)*flags & BKC_YES) != 0) +! + (((int)*flags & BKC_NO) != 0) != 1) +! { +! /* Must have exactly one of "auto", "yes" and "no". */ +! (void)opt_strings_flags(oldval, p_bkc_values, flags, TRUE); +! errmsg = e_invarg; +! } + } + } + +*** ../vim-7.4.461/src/version.c 2014-09-27 11:18:08.179520979 +0200 +--- src/version.c 2014-09-29 17:13:50.235945053 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 462, + /**/ + +-- +Some of the well known MS-Windows errors: + EMEMORY Memory error caused by..., eh... + ELICENSE Your license has expired, give us more money! + EMOUSE Mouse moved, reinstall Windows + EILLEGAL Illegal error, you are not allowed to see this + EVIRUS Undetectable virus found + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.463 b/SOURCES/7.4.463 new file mode 100644 index 0000000..efd8375 --- /dev/null +++ b/SOURCES/7.4.463 @@ -0,0 +1,58 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.463 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.463 +Problem: Test 86 and 87 may hang on MS-Windows. +Solution: Call inputrestore() after inputsave(). (Ken Takata) +Files: src/testdir/test86.in, src/testdir/test87.in + + +*** ../vim-7.4.462/src/testdir/test86.in 2014-03-12 15:26:36.428714415 +0100 +--- src/testdir/test86.in 2014-09-29 18:03:03.539951504 +0200 +*************** +*** 1384,1389 **** +--- 1384,1390 ---- + :debug silent! py test_keyboard_interrupt() + :redir END + :0 debuggreedy ++ :call inputrestore() + :silent $put =output + :unlet output + :py del test_keyboard_interrupt +*** ../vim-7.4.462/src/testdir/test87.in 2014-03-12 15:26:36.432714415 +0100 +--- src/testdir/test87.in 2014-09-29 18:03:23.719951548 +0200 +*************** +*** 1361,1366 **** +--- 1361,1367 ---- + :debug silent! py3 test_keyboard_interrupt() + :redir END + :0 debuggreedy ++ :call inputrestore() + :silent $put =output + :unlet output + :py3 del test_keyboard_interrupt +*** ../vim-7.4.462/src/version.c 2014-09-29 17:15:09.963945227 +0200 +--- src/version.c 2014-09-29 18:06:08.299951907 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 463, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +198. You read all the quotes at Netaholics Anonymous and keep thinking + "What's wrong with that?" + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.464 b/SOURCES/7.4.464 new file mode 100644 index 0000000..c72aa6b --- /dev/null +++ b/SOURCES/7.4.464 @@ -0,0 +1,52 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.464 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.464 (after 7.4.459) +Problem: Compiler warning. +Solution: Add type cast. (Ken Takata) +Files: src/gui_w32.c + + +*** ../vim-7.4.463/src/gui_w32.c 2014-09-23 21:53:35.306849352 +0200 +--- src/gui_w32.c 2014-10-06 18:05:22.109272899 +0200 +*************** +*** 1667,1673 **** + HANDLE hIcon = NULL; + + if (mch_icon_load(&hIcon) == OK && hIcon != NULL) +! SendMessage(s_hwnd, WM_SETICON, ICON_SMALL, hIcon); + } + + #ifdef FEAT_MENU +--- 1667,1673 ---- + HANDLE hIcon = NULL; + + if (mch_icon_load(&hIcon) == OK && hIcon != NULL) +! SendMessage(s_hwnd, WM_SETICON, ICON_SMALL, (LPARAM)hIcon); + } + + #ifdef FEAT_MENU +*** ../vim-7.4.463/src/version.c 2014-09-29 18:08:54.591952271 +0200 +--- src/version.c 2014-10-06 18:08:26.921273303 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 464, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +230. You spend your Friday nights typing away at your keyboard + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.465 b/SOURCES/7.4.465 new file mode 100644 index 0000000..44b690d --- /dev/null +++ b/SOURCES/7.4.465 @@ -0,0 +1,56 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.465 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.465 (after 7.4.016) +Problem: Crash when expanding a very long string. +Solution: Use wsncpy() instead of wcscpy(). (Ken Takata) +Files: src/os_win32.c + + +*** ../vim-7.4.464/src/os_win32.c 2014-09-23 21:53:35.310849352 +0200 +--- src/os_win32.c 2014-10-06 18:37:27.437277105 +0200 +*************** +*** 2775,2783 **** + if (p != NULL) + { + char_u *q; +! WCHAR buf[_MAX_PATH + 2]; + +! wcscpy(buf, p); + vim_free(p); + + if (fname_casew(buf, (len > 0) ? _MAX_PATH : 0) == OK) +--- 2775,2784 ---- + if (p != NULL) + { + char_u *q; +! WCHAR buf[_MAX_PATH + 1]; + +! wcsncpy(buf, p, _MAX_PATH); +! buf[_MAX_PATH] = L'\0'; + vim_free(p); + + if (fname_casew(buf, (len > 0) ? _MAX_PATH : 0) == OK) +*** ../vim-7.4.464/src/version.c 2014-10-06 18:10:04.521273516 +0200 +--- src/version.c 2014-10-06 18:40:47.361277541 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 465, + /**/ + +-- +Get a life? What is the URL where it can be downloaded? + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.466 b/SOURCES/7.4.466 new file mode 100644 index 0000000..79c463d --- /dev/null +++ b/SOURCES/7.4.466 @@ -0,0 +1,53 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.466 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.466 (after 7.4.460) +Problem: CTRL-W } does not open preview window. (Erik Falor) +Solution: Don't set g_do_tagpreview for CTRL-W }. +Files: src/window.c + + +*** ../vim-7.4.465/src/window.c 2014-09-24 13:26:39.954971642 +0200 +--- src/window.c 2014-10-09 10:30:37.712864442 +0200 +*************** +*** 485,491 **** + else + postponed_split = -1; + #ifdef FEAT_QUICKFIX +! g_do_tagpreview = 0; + #endif + + /* Execute the command right here, required when "wincmd ]" +--- 485,492 ---- + else + postponed_split = -1; + #ifdef FEAT_QUICKFIX +! if (nchar != '}') +! g_do_tagpreview = 0; + #endif + + /* Execute the command right here, required when "wincmd ]" +*** ../vim-7.4.465/src/version.c 2014-10-07 10:38:34.737403070 +0200 +--- src/version.c 2014-10-09 10:44:22.848866244 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 466, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +239. You think "surfing" is something you do on dry land. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.468 b/SOURCES/7.4.468 new file mode 100644 index 0000000..d075186 --- /dev/null +++ b/SOURCES/7.4.468 @@ -0,0 +1,64 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.468 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.468 +Problem: Issue 26: CTRL-C does not interrupt after it was mapped and then + unmapped. +Solution: Reset mapped_ctrl_c. (Christian Brabandt) +Files: src/getchar.c + + +*** ../vim-7.4.467/src/getchar.c 2014-07-30 16:00:45.539553496 +0200 +--- src/getchar.c 2014-10-09 13:34:09.988888496 +0200 +*************** +*** 3707,3712 **** +--- 3707,3715 ---- + { + if (!did_it) + retval = 2; /* no match */ ++ else if (*keys == Ctrl_C) ++ /* If CTRL-C has been unmapped, reuse it for Interrupting. */ ++ mapped_ctrl_c = FALSE; + goto theend; + } + +*************** +*** 3739,3745 **** + goto theend; + } + +! /* If CTRL-C has been mapped, don't always use it for Interrupting */ + if (*keys == Ctrl_C) + mapped_ctrl_c = TRUE; + +--- 3742,3748 ---- + goto theend; + } + +! /* If CTRL-C has been mapped, don't always use it for Interrupting. */ + if (*keys == Ctrl_C) + mapped_ctrl_c = TRUE; + +*** ../vim-7.4.467/src/version.c 2014-10-09 13:22:41.808886993 +0200 +--- src/version.c 2014-10-09 13:29:56.252887942 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 468, + /**/ + +-- +Marriage isn't a word. It's a sentence. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.469 b/SOURCES/7.4.469 new file mode 100644 index 0000000..f6843d2 --- /dev/null +++ b/SOURCES/7.4.469 @@ -0,0 +1,62 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.469 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.469 (after 7.4.467) +Problem: Can't build with MSVC. (Ken Takata) +Solution: Move the assignment after the declarations. +Files: src/normal.c + + +*** ../vim-7.4.468/src/normal.c 2014-10-09 13:22:41.804886993 +0200 +--- src/normal.c 2014-10-09 14:46:05.728897923 +0200 +*************** +*** 1382,1390 **** + int restart_edit_save; + #ifdef FEAT_LINEBREAK + int lbr_saved = curwin->w_p_lbr; +- +- curwin->w_p_lbr = FALSE; /* avoid a problem with unwanted linebreaks in +- * block mode */ + #endif + + /* The visual area is remembered for redo */ +--- 1382,1387 ---- +*************** +*** 1396,1401 **** +--- 1393,1402 ---- + int include_line_break = FALSE; + #endif + ++ #ifdef FEAT_LINEBREAK ++ curwin->w_p_lbr = FALSE; /* Avoid a problem with unwanted linebreaks in ++ * block mode. */ ++ #endif + #if defined(FEAT_CLIPBOARD) + /* + * Yank the visual area into the GUI selection register before we operate +*** ../vim-7.4.468/src/version.c 2014-10-09 13:36:12.736888764 +0200 +--- src/version.c 2014-10-09 14:46:58.760898039 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 469, + /**/ + +-- +"After a few years of marriage a man can look right at a woman +without seeing her and a woman can see right through a man +without looking at him." + - Helen Rowland + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.470 b/SOURCES/7.4.470 new file mode 100644 index 0000000..2066df6 --- /dev/null +++ b/SOURCES/7.4.470 @@ -0,0 +1,120 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.470 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.470 +Problem: Test 11 and 100 do not work properly on Windows. +Solution: Avoid using feedkeys(). (Ken Takata) +Files: src/testdir/Make_dos.mak, src/testdir/test11.in, + src/testdir/test100.in + + +*** ../vim-7.4.469/src/testdir/Make_dos.mak 2014-08-16 18:36:38.593993280 +0200 +--- src/testdir/Make_dos.mak 2014-10-09 15:26:56.720903277 +0200 +*************** +*** 63,69 **** + fixff: + -$(VIMPROG) -u dos.vim --noplugin "+argdo set ff=dos|upd" +q *.in *.ok + -$(VIMPROG) -u dos.vim --noplugin "+argdo set ff=unix|upd" +q \ +! dotest.in test60.ok test71.ok test74.ok + + report: + @echo "" +--- 63,69 ---- + fixff: + -$(VIMPROG) -u dos.vim --noplugin "+argdo set ff=dos|upd" +q *.in *.ok + -$(VIMPROG) -u dos.vim --noplugin "+argdo set ff=unix|upd" +q \ +! dotest.in test60.ok test71.ok test74.ok test100.ok + + report: + @echo "" +*** ../vim-7.4.469/src/testdir/test11.in 2010-08-08 13:16:36.000000000 +0200 +--- src/testdir/test11.in 2014-10-09 15:34:19.588904244 +0200 +*************** +*** 46,58 **** + :w>>test.out " Append it to the output file + :set shelltemp " need temp files here + :au FilterReadPre *.out call rename(expand("<afile>"), expand("<afile>") . ".t") +! :au FilterReadPre *.out exe '!sed s/e/E/ ' . shellescape(expand("<afile>")) . ".t >" . shellescape(expand("<afile>")) +! :au FilterReadPre *.out exe '!rm ' . shellescape(expand("<afile>")) . '.t' + :au FilterReadPost *.out '[,']s/x/X/g + :e! test.out " Edit the output file + :23,$!cat + :23,$s/\r$// " remove CR for when sed adds them +! :au! FileReadPre *.gz exe '!gzip -d ' . shellescape(expand("<afile>")) + :au FileReadPre *.gz call rename(expand("<afile>:r"), expand("<afile>")) + :au! FileReadPost *.gz '[,']s/l/L/ + :$r Xtestfile.gz " Read compressed file +--- 46,58 ---- + :w>>test.out " Append it to the output file + :set shelltemp " need temp files here + :au FilterReadPre *.out call rename(expand("<afile>"), expand("<afile>") . ".t") +! :au FilterReadPre *.out exe 'silent !sed s/e/E/ ' . shellescape(expand("<afile>")) . ".t >" . shellescape(expand("<afile>")) +! :au FilterReadPre *.out exe 'silent !rm ' . shellescape(expand("<afile>")) . '.t' + :au FilterReadPost *.out '[,']s/x/X/g + :e! test.out " Edit the output file + :23,$!cat + :23,$s/\r$// " remove CR for when sed adds them +! :au! FileReadPre *.gz exe 'silent !gzip -d ' . shellescape(expand("<afile>")) + :au FileReadPre *.gz call rename(expand("<afile>:r"), expand("<afile>")) + :au! FileReadPost *.gz '[,']s/l/L/ + :$r Xtestfile.gz " Read compressed file +*** ../vim-7.4.469/src/testdir/test100.in 2014-08-16 17:34:31.186128463 +0200 +--- src/testdir/test100.in 2014-10-09 15:27:44.404903381 +0200 +*************** +*** 16,22 **** + :new one + :0put ='ONE: expecting global undolevels: 5, local undolevels: -123456 (default)' + :call FillBuffer() +! :call feedkeys(":earlier 10\n", 't') + :call UndoLevel() + :set ff=unix + :%w! test.out +--- 16,22 ---- + :new one + :0put ='ONE: expecting global undolevels: 5, local undolevels: -123456 (default)' + :call FillBuffer() +! :earlier 10 + :call UndoLevel() + :set ff=unix + :%w! test.out +*************** +*** 24,30 **** + :0put ='TWO: expecting global undolevels: 5, local undolevels: 2 (first) then 10 (afterwards)' + :setlocal ul=2 + :call FillBuffer() +! :call feedkeys(":earlier 10\n", 't') + :call UndoLevel() + :setlocal ul=10 + :call UndoLevel() +--- 24,30 ---- + :0put ='TWO: expecting global undolevels: 5, local undolevels: 2 (first) then 10 (afterwards)' + :setlocal ul=2 + :call FillBuffer() +! :earlier 10 + :call UndoLevel() + :setlocal ul=10 + :call UndoLevel() +*** ../vim-7.4.469/src/version.c 2014-10-09 14:48:26.284898230 +0200 +--- src/version.c 2014-10-09 15:34:43.088904296 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 470, + /**/ + +-- +"Marriage is when a man and woman become as one; the trouble starts +when they try to decide which one" + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.471 b/SOURCES/7.4.471 new file mode 100644 index 0000000..37cbb27 --- /dev/null +++ b/SOURCES/7.4.471 @@ -0,0 +1,73 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.471 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.471 +Problem: MS-Windows: When printer name contains multi-byte, the name is + displayed as ???. +Solution: Convert the printer name from the active codepage to 'encoding'. + (Yasuhiro Matsumoto) +Files: src/os_mswin.c + + +*** ../vim-7.4.470/src/os_mswin.c 2014-09-27 11:18:08.179520979 +0200 +--- src/os_mswin.c 2014-10-09 17:03:20.500915911 +0200 +*************** +*** 1635,1645 **** +--- 1635,1667 ---- + char_u *printer_name = (char_u *)devname + devname->wDeviceOffset; + char_u *port_name = (char_u *)devname +devname->wOutputOffset; + char_u *text = _("to %s on %s"); ++ #ifdef FEAT_MBYTE ++ char_u *printer_name_orig = printer_name; ++ char_u *port_name_orig = port_name; + ++ if (enc_codepage >= 0 && (int)GetACP() != enc_codepage) ++ { ++ char_u *to_free = NULL; ++ int maxlen; ++ ++ acp_to_enc(printer_name, STRLEN(printer_name), &to_free, &maxlen); ++ if (to_free != NULL) ++ printer_name = to_free; ++ acp_to_enc(port_name, STRLEN(port_name), &to_free, &maxlen); ++ if (to_free != NULL) ++ port_name = to_free; ++ } ++ #endif + prt_name = alloc((unsigned)(STRLEN(printer_name) + STRLEN(port_name) + + STRLEN(text))); + if (prt_name != NULL) + wsprintf(prt_name, text, printer_name, port_name); ++ #ifdef FEAT_MBYTE ++ if (printer_name != printer_name_orig) ++ vim_free(printer_name); ++ if (port_name != port_name_orig) ++ vim_free(port_name); ++ #endif + } + GlobalUnlock(prt_dlg.hDevNames); + +*** ../vim-7.4.470/src/version.c 2014-10-09 15:37:02.492904600 +0200 +--- src/version.c 2014-10-09 17:00:58.632915601 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 471, + /**/ + +-- +"Marriage is the process of finding out what kind of man your wife +would have preferred" + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.472 b/SOURCES/7.4.472 new file mode 100644 index 0000000..93cabea --- /dev/null +++ b/SOURCES/7.4.472 @@ -0,0 +1,46 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.472 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.472 +Problem: The "precedes" entry in 'listchar' will be drawn when 'showbreak + is set and list is not. +Solution: Only draw this character when 'list' is on. (Christian Brabandt) +Files: src/screen.c + + +*** ../vim-7.4.471/src/screen.c 2014-10-09 13:22:41.804886993 +0200 +--- src/screen.c 2014-10-10 15:22:41.589091447 +0200 +*************** +*** 4901,4906 **** +--- 4901,4907 ---- + * special character (via 'listchars' option "precedes:<char>". + */ + if (lcs_prec_todo != NUL ++ && wp->w_p_list + && (wp->w_p_wrap ? wp->w_skipcol > 0 : wp->w_leftcol > 0) + #ifdef FEAT_DIFF + && filler_todo <= 0 +*** ../vim-7.4.471/src/version.c 2014-10-09 17:05:51.948916242 +0200 +--- src/version.c 2014-10-10 15:22:06.405091370 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 472, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +251. You've never seen your closest friends who usually live WAY too far away. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.473 b/SOURCES/7.4.473 new file mode 100644 index 0000000..f9b9a7a --- /dev/null +++ b/SOURCES/7.4.473 @@ -0,0 +1,47 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.473 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.473 +Problem: Cursor movement is incorrect when there is a number + column/sign/fold column and 'sbr' is displayed. +Solution: Adjust the column for 'sbr'. (Christian Brabandt) +Files: src/charset.c + + +*** ../vim-7.4.472/src/charset.c 2014-08-24 21:19:22.224571318 +0200 +--- src/charset.c 2014-10-10 15:24:26.257091676 +0200 +*************** +*** 1184,1189 **** +--- 1184,1191 ---- + { + col -= W_WIDTH(wp); + numberextra = W_WIDTH(wp) - (numberextra - win_col_off2(wp)); ++ if (*p_sbr != NUL && col >= (colnr_T)STRLEN(p_sbr)) ++ col -= (colnr_T)STRLEN(p_sbr); + if (numberextra > 0) + col = col % numberextra; + } +*** ../vim-7.4.472/src/version.c 2014-10-10 15:28:41.985092234 +0200 +--- src/version.c 2014-10-10 15:32:19.029092709 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 473, + /**/ + +-- +Vi is clearly superior to emacs, since "vi" has only two characters +(and two keystrokes), while "emacs" has five. (Randy C. Ford) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.474 b/SOURCES/7.4.474 new file mode 100644 index 0000000..829622e --- /dev/null +++ b/SOURCES/7.4.474 @@ -0,0 +1,45 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.474 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.474 +Problem: AIX compiler can't handle // comment. Issue 265. +Solution: Remove that line. +Files: src/regexp_nfa.c + + +*** ../vim-7.4.473/src/regexp_nfa.c 2014-09-09 17:18:44.008540299 +0200 +--- src/regexp_nfa.c 2014-10-11 12:44:38.033259459 +0200 +*************** +*** 4407,4413 **** + switch (state->c) + { + case NFA_MATCH: +- // nfa_match = TRUE; + break; + + case NFA_SPLIT: +--- 4407,4412 ---- +*** ../vim-7.4.473/src/version.c 2014-10-10 15:34:29.657092994 +0200 +--- src/version.c 2014-10-11 12:45:43.393259602 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 474, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +252. You vote for foreign officials. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.475 b/SOURCES/7.4.475 new file mode 100644 index 0000000..d201c09 --- /dev/null +++ b/SOURCES/7.4.475 @@ -0,0 +1,228 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.475 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.475 +Problem: Can't compile on a system where Xutf8SetWMProperties() is not in + the X11 library. Issue 265. +Solution: Add a configure check. +Files: src/configure.in, src/auto/configure, src/config.h.in, + src/os_unix.c + + +*** ../vim-7.4.474/src/configure.in 2014-08-17 17:05:39.159057796 +0200 +--- src/configure.in 2014-10-11 14:40:18.557274620 +0200 +*************** +*** 3730,3750 **** + dnl Check for multibyte locale functions + dnl Find out if _Xsetlocale() is supported by libX11. + dnl Check if X_LOCALE should be defined. +! +! if test "$enable_multibyte" = "yes"; then + cflags_save=$CFLAGS +! ldflags_save=$LDFLAGS +! if test "x$x_includes" != "xNONE" ; then +! CFLAGS="$CFLAGS -I$x_includes" +! LDFLAGS="$X_LIBS $LDFLAGS -lX11" +! AC_MSG_CHECKING(whether X_LOCALE needed) +! AC_TRY_COMPILE([#include <X11/Xlocale.h>],, +! AC_TRY_LINK_FUNC([_Xsetlocale], [AC_MSG_RESULT(yes) +! AC_DEFINE(X_LOCALE)], AC_MSG_RESULT(no)), +! AC_MSG_RESULT(no)) +! fi + CFLAGS=$cflags_save +! LDFLAGS=$ldflags_save + fi + + dnl Link with xpg4, it is said to make Korean locale working +--- 3730,3753 ---- + dnl Check for multibyte locale functions + dnl Find out if _Xsetlocale() is supported by libX11. + dnl Check if X_LOCALE should be defined. +! if test "x$with_x" = "xyes"; then + cflags_save=$CFLAGS +! libs_save=$LIBS +! LIBS="$LIBS $X_LIBS $GUI_LIB_LOC $GUI_X_LIBS $X_PRE_LIBS $X_LIB $X_EXTRA_LIBS" +! CFLAGS="$CFLAGS $X_CFLAGS" +! +! AC_MSG_CHECKING(whether X_LOCALE needed) +! AC_TRY_COMPILE([#include <X11/Xlocale.h>],, +! AC_TRY_LINK_FUNC([_Xsetlocale], [AC_MSG_RESULT(yes) +! AC_DEFINE(X_LOCALE)], AC_MSG_RESULT(no)), +! AC_MSG_RESULT(no)) +! +! AC_MSG_CHECKING(whether Xutf8SetWMProperties() can be used) +! AC_TRY_LINK_FUNC([Xutf8SetWMProperties], [AC_MSG_RESULT(yes) +! AC_DEFINE(HAVE_XUTF8SETWMPROPERTIES)], AC_MSG_RESULT(no)) +! + CFLAGS=$cflags_save +! LIBS=$libs_save + fi + + dnl Link with xpg4, it is said to make Korean locale working +*** ../vim-7.4.474/src/auto/configure 2014-08-17 17:05:39.163057796 +0200 +--- src/auto/configure 2014-10-11 14:40:51.421274692 +0200 +*************** +*** 12732,12747 **** + fi + + +! +! if test "$enable_multibyte" = "yes"; then + cflags_save=$CFLAGS +! ldflags_save=$LDFLAGS +! if test "x$x_includes" != "xNONE" ; then +! CFLAGS="$CFLAGS -I$x_includes" +! LDFLAGS="$X_LIBS $LDFLAGS -lX11" +! { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether X_LOCALE needed" >&5 + $as_echo_n "checking whether X_LOCALE needed... " >&6; } +! cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + #include <X11/Xlocale.h> + int +--- 12732,12746 ---- + fi + + +! if test "x$with_x" = "xyes"; then + cflags_save=$CFLAGS +! libs_save=$LIBS +! LIBS="$LIBS $X_LIBS $GUI_LIB_LOC $GUI_X_LIBS $X_PRE_LIBS $X_LIB $X_EXTRA_LIBS" +! CFLAGS="$CFLAGS $X_CFLAGS" +! +! { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether X_LOCALE needed" >&5 + $as_echo_n "checking whether X_LOCALE needed... " >&6; } +! cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + #include <X11/Xlocale.h> + int +*************** +*** 12774,12780 **** + if ac_fn_c_try_link "$LINENO"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 + $as_echo "yes" >&6; } +! $as_echo "#define X_LOCALE 1" >>confdefs.h + + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +--- 12773,12779 ---- + if ac_fn_c_try_link "$LINENO"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 + $as_echo "yes" >&6; } +! $as_echo "#define X_LOCALE 1" >>confdefs.h + + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +*************** +*** 12787,12795 **** + $as_echo "no" >&6; } + fi + rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +! fi + CFLAGS=$cflags_save +! LDFLAGS=$ldflags_save + fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _xpg4_setrunelocale in -lxpg4" >&5 +--- 12786,12826 ---- + $as_echo "no" >&6; } + fi + rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +! +! { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether Xutf8SetWMProperties() can be used" >&5 +! $as_echo_n "checking whether Xutf8SetWMProperties() can be used... " >&6; } +! cat confdefs.h - <<_ACEOF >conftest.$ac_ext +! /* end confdefs.h. */ +! +! /* Override any GCC internal prototype to avoid an error. +! Use char because int might match the return type of a GCC +! builtin and then its argument prototype would still apply. */ +! #ifdef __cplusplus +! extern "C" +! #endif +! char Xutf8SetWMProperties (); +! int +! main () +! { +! return Xutf8SetWMProperties (); +! ; +! return 0; +! } +! _ACEOF +! if ac_fn_c_try_link "$LINENO"; then : +! { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +! $as_echo "yes" >&6; } +! $as_echo "#define HAVE_XUTF8SETWMPROPERTIES 1" >>confdefs.h +! +! else +! { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +! $as_echo "no" >&6; } +! fi +! rm -f core conftest.err conftest.$ac_objext \ +! conftest$ac_exeext conftest.$ac_ext +! + CFLAGS=$cflags_save +! LIBS=$libs_save + fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _xpg4_setrunelocale in -lxpg4" >&5 +*** ../vim-7.4.474/src/config.h.in 2014-04-02 14:05:33.995887839 +0200 +--- src/config.h.in 2014-10-11 14:40:03.841274588 +0200 +*************** +*** 446,448 **** +--- 446,451 ---- + + /* Define if we have AvailabilityMacros.h on Mac OS X */ + #undef HAVE_AVAILABILITYMACROS_H ++ ++ /* Define if Xutf8SetWMProperties() is in an X library. */ ++ #undef HAVE_XUTF8SETWMPROPERTIES +*** ../vim-7.4.474/src/os_unix.c 2014-08-29 12:58:38.242430208 +0200 +--- src/os_unix.c 2014-10-11 14:47:04.601275507 +0200 +*************** +*** 1960,1968 **** + return retval; + } + +! /* Are Xutf8 functions available? Avoid error from old compilers. */ + #if defined(X_HAVE_UTF8_STRING) && defined(FEAT_MBYTE) +! # if X_HAVE_UTF8_STRING + # define USE_UTF8_STRING + # endif + #endif +--- 1960,1971 ---- + return retval; + } + +! /* Xutf8 functions are not avaialble on older systems. Note that on some +! * systems X_HAVE_UTF8_STRING may be defined in a header file but +! * Xutf8SetWMProperties() is not in the X11 library. Configure checks for +! * that and defines HAVE_XUTF8SETWMPROPERTIES. */ + #if defined(X_HAVE_UTF8_STRING) && defined(FEAT_MBYTE) +! # if X_HAVE_UTF8_STRING && HAVE_XUTF8SETWMPROPERTIES + # define USE_UTF8_STRING + # endif + #endif +*** ../vim-7.4.474/src/version.c 2014-10-11 12:48:22.541259950 +0200 +--- src/version.c 2014-10-11 14:42:47.821274946 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 475, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +253. You wait for a slow loading web page before going to the toilet. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.476 b/SOURCES/7.4.476 new file mode 100644 index 0000000..6824595 --- /dev/null +++ b/SOURCES/7.4.476 @@ -0,0 +1,88 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.476 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.476 +Problem: MingW: compiling with "XPM=no" doesn't work. +Solution: Check for the "no" value. (KF Leong) Also for Cygwin. (Ken + Takata) +Files: src/Make_ming.mak, src/Make_cyg.mak + + +*** ../vim-7.4.475/src/Make_ming.mak 2014-08-10 16:31:47.376709213 +0200 +--- src/Make_ming.mak 2014-10-15 12:00:35.986008598 +0200 +*************** +*** 22,28 **** + # http://www.matcode.com/mpress.htm + # + # Maintained by Ron Aaron <ronaharon@yahoo.com> et al. +! # Updated 2012 Sep 5. + + #>>>>> choose options: + # set to yes for a debug build +--- 22,28 ---- + # http://www.matcode.com/mpress.htm + # + # Maintained by Ron Aaron <ronaharon@yahoo.com> et al. +! # Updated 2014 Oct 13. + + #>>>>> choose options: + # set to yes for a debug build +*************** +*** 613,619 **** + USE_STDCPLUS = yes + endif + endif +! ifdef XPM + # Only allow XPM for a GUI build. + ifeq (yes, $(GUI)) + OBJ += $(OUTDIR)/xpm_w32.o +--- 613,619 ---- + USE_STDCPLUS = yes + endif + endif +! ifneq ($(XPM),no) + # Only allow XPM for a GUI build. + ifeq (yes, $(GUI)) + OBJ += $(OUTDIR)/xpm_w32.o +*** ../vim-7.4.475/src/Make_cyg.mak 2014-08-10 16:31:47.372709213 +0200 +--- src/Make_cyg.mak 2014-10-15 12:06:01.170009309 +0200 +*************** +*** 485,491 **** + endif + + ############################## +! ifdef XPM + # Only allow XPM for a GUI build. + DEFINES += -DFEAT_XPM_W32 + INCLUDES += -I$(XPM)/include +--- 485,491 ---- + endif + + ############################## +! ifneq ($(XPM),no) + # Only allow XPM for a GUI build. + DEFINES += -DFEAT_XPM_W32 + INCLUDES += -I$(XPM)/include +*** ../vim-7.4.475/src/version.c 2014-10-11 14:47:22.833275547 +0200 +--- src/version.c 2014-10-15 12:03:39.186008999 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 476, + /**/ + +-- +Women are probably the main cause of free software starvation. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.477 b/SOURCES/7.4.477 new file mode 100644 index 0000000..0fe507a --- /dev/null +++ b/SOURCES/7.4.477 @@ -0,0 +1,58 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.477 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.477 +Problem: When using ":%diffput" and the other file is empty an extra empty + line remains. +Solution: Set the buf_empty flag. +Files: src/diff.c + + +*** ../vim-7.4.476/src/diff.c 2014-05-28 11:35:33.424011248 +0200 +--- src/diff.c 2014-10-15 12:54:45.778015697 +0200 +*************** +*** 2325,2331 **** + end_skip = 0; + } + +! buf_empty = FALSE; + added = 0; + for (i = 0; i < count; ++i) + { +--- 2325,2331 ---- + end_skip = 0; + } + +! buf_empty = bufempty(); + added = 0; + for (i = 0; i < count; ++i) + { +*** ../vim-7.4.476/src/version.c 2014-10-15 12:07:07.610009454 +0200 +--- src/version.c 2014-10-15 12:37:54.338013488 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 477, + /**/ + +-- + We're knights of the round table + We dance whene'er we're able + We do routines and chorus scenes + With footwork impeccable. + We dine well here in Camelot + We eat ham and jam and spam a lot. + "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.478 b/SOURCES/7.4.478 new file mode 100644 index 0000000..edb9663 --- /dev/null +++ b/SOURCES/7.4.478 @@ -0,0 +1,58 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.478 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.478 +Problem: Using byte length instead of character length for 'showbreak'. +Solution: Compute the character length. (Marco Hinz) +Files: src/charset.c + + +*** ../vim-7.4.477/src/charset.c 2014-10-10 15:34:29.657092994 +0200 +--- src/charset.c 2014-10-15 21:24:05.578082450 +0200 +*************** +*** 1184,1191 **** + { + col -= W_WIDTH(wp); + numberextra = W_WIDTH(wp) - (numberextra - win_col_off2(wp)); +! if (*p_sbr != NUL && col >= (colnr_T)STRLEN(p_sbr)) +! col -= (colnr_T)STRLEN(p_sbr); + if (numberextra > 0) + col = col % numberextra; + } +--- 1184,1195 ---- + { + col -= W_WIDTH(wp); + numberextra = W_WIDTH(wp) - (numberextra - win_col_off2(wp)); +! if (*p_sbr != NUL) +! { +! colnr_T sbrlen = (colnr_T)MB_CHARLEN(p_sbr); +! if (col >= sbrlen) +! col -= sbrlen; +! } + if (numberextra > 0) + col = col % numberextra; + } +*** ../vim-7.4.477/src/version.c 2014-10-15 12:56:44.006015955 +0200 +--- src/version.c 2014-10-15 21:19:10.414081805 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 478, + /**/ + +-- +There is a fine line between courage and foolishness. +Unfortunately, it's not a fence. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.479 b/SOURCES/7.4.479 new file mode 100644 index 0000000..807daa6 --- /dev/null +++ b/SOURCES/7.4.479 @@ -0,0 +1,112 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.479 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.479 +Problem: MS-Windows: The console title can be wrong. +Solution: Take the encoding into account. When restoring the title use the + right function. (Yasuhiro Matsumoto) +Files: src/os_mswin.c, src/os_win32.c + + +*** ../vim-7.4.478/src/os_mswin.c 2014-10-09 17:05:51.944916242 +0200 +--- src/os_mswin.c 2014-10-15 22:46:06.922093200 +0200 +*************** +*** 344,350 **** + int which) + { + #ifndef FEAT_GUI_MSWIN +! mch_settitle((which & 1) ? g_szOrigTitle : NULL, NULL); + #endif + } + +--- 344,350 ---- + int which) + { + #ifndef FEAT_GUI_MSWIN +! SetConsoleTitle(g_szOrigTitle); + #endif + } + +*** ../vim-7.4.478/src/os_win32.c 2014-10-07 10:38:34.737403070 +0200 +--- src/os_win32.c 2014-10-15 22:49:22.358093627 +0200 +*************** +*** 4648,4653 **** +--- 4648,4682 ---- + #ifdef FEAT_TITLE + char szShellTitle[512]; + ++ # ifdef FEAT_MBYTE ++ /* Change the title to reflect that we are in a subshell. */ ++ if (enc_codepage >= 0 && (int)GetACP() != enc_codepage) ++ { ++ WCHAR szShellTitle[512]; ++ ++ if (GetConsoleTitleW(szShellTitle, ++ sizeof(szShellTitle)/sizeof(WCHAR) - 4) > 0) ++ { ++ if (cmd == NULL) ++ wcscat(szShellTitle, L" :sh"); ++ else ++ { ++ WCHAR *wn = enc_to_utf16(cmd, NULL); ++ ++ if (wn != NULL) ++ { ++ wcscat(szShellTitle, L" - !"); ++ if ((wcslen(szShellTitle) + wcslen(wn) < ++ sizeof(szShellTitle)/sizeof(WCHAR))) ++ wcscat(szShellTitle, wn); ++ SetConsoleTitleW(szShellTitle); ++ vim_free(wn); ++ goto didset; ++ } ++ } ++ } ++ } ++ #endif + /* Change the title to reflect that we are in a subshell. */ + if (GetConsoleTitle(szShellTitle, sizeof(szShellTitle) - 4) > 0) + { +*************** +*** 4659,4665 **** + if ((strlen(szShellTitle) + strlen(cmd) < sizeof(szShellTitle))) + strcat(szShellTitle, cmd); + } +! mch_settitle(szShellTitle, NULL); + } + #endif + +--- 4688,4694 ---- + if ((strlen(szShellTitle) + strlen(cmd) < sizeof(szShellTitle))) + strcat(szShellTitle, cmd); + } +! SetConsoleTitle(szShellTitle); + } + #endif + +*** ../vim-7.4.478/src/version.c 2014-10-15 21:26:35.566082778 +0200 +--- src/version.c 2014-10-15 22:45:44.810093152 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 479, + /**/ + +-- +MAN: Fetchez la vache! +GUARD: Quoi? +MAN: Fetchez la vache! + "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.480 b/SOURCES/7.4.480 new file mode 100644 index 0000000..4aee459 --- /dev/null +++ b/SOURCES/7.4.480 @@ -0,0 +1,110 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.480 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.480 (after 7.4.479) +Problem: MS-Windows: Can't build. +Solution: Remove goto, use a flag instead. +Files: src/os_win32.c + + +*** ../vim-7.4.479/src/os_win32.c 2014-10-15 22:50:06.946093724 +0200 +--- src/os_win32.c 2014-10-16 16:09:57.182230006 +0200 +*************** +*** 4646,4654 **** + int x = 0; + int tmode = cur_tmode; + #ifdef FEAT_TITLE +! char szShellTitle[512]; +! + # ifdef FEAT_MBYTE + /* Change the title to reflect that we are in a subshell. */ + if (enc_codepage >= 0 && (int)GetACP() != enc_codepage) + { +--- 4646,4655 ---- + int x = 0; + int tmode = cur_tmode; + #ifdef FEAT_TITLE +! char szShellTitle[512]; + # ifdef FEAT_MBYTE ++ int did_set_title = FALSE; ++ + /* Change the title to reflect that we are in a subshell. */ + if (enc_codepage >= 0 && (int)GetACP() != enc_codepage) + { +*************** +*** 4671,4695 **** + wcscat(szShellTitle, wn); + SetConsoleTitleW(szShellTitle); + vim_free(wn); +! goto didset; + } + } + } + } +! #endif +! /* Change the title to reflect that we are in a subshell. */ +! if (GetConsoleTitle(szShellTitle, sizeof(szShellTitle) - 4) > 0) +! { +! if (cmd == NULL) +! strcat(szShellTitle, " :sh"); +! else + { +! strcat(szShellTitle, " - !"); +! if ((strlen(szShellTitle) + strlen(cmd) < sizeof(szShellTitle))) +! strcat(szShellTitle, cmd); + } +- SetConsoleTitle(szShellTitle); +- } + #endif + + out_flush(); +--- 4672,4697 ---- + wcscat(szShellTitle, wn); + SetConsoleTitleW(szShellTitle); + vim_free(wn); +! did_set_title = TRUE; + } + } + } + } +! if (!did_set_title) +! # endif +! /* Change the title to reflect that we are in a subshell. */ +! if (GetConsoleTitle(szShellTitle, sizeof(szShellTitle) - 4) > 0) + { +! if (cmd == NULL) +! strcat(szShellTitle, " :sh"); +! else +! { +! strcat(szShellTitle, " - !"); +! if ((strlen(szShellTitle) + strlen(cmd) < sizeof(szShellTitle))) +! strcat(szShellTitle, cmd); +! } +! SetConsoleTitle(szShellTitle); + } + #endif + + out_flush(); +*** ../vim-7.4.479/src/version.c 2014-10-15 22:50:06.950093724 +0200 +--- src/version.c 2014-10-16 16:11:34.278230218 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 480, + /**/ + +-- +Ten bugs in the hand is better than one as yet undetected. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.481 b/SOURCES/7.4.481 new file mode 100644 index 0000000..798f4eb --- /dev/null +++ b/SOURCES/7.4.481 @@ -0,0 +1,62 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.481 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.481 (after 7.4.471) +Problem: Compiler warning on MS-Windows. +Solution: Add type casts. (Ken Takata) +Files: src/os_mswin.c + + +*** ../vim-7.4.480/src/os_mswin.c 2014-10-15 22:50:06.946093724 +0200 +--- src/os_mswin.c 2014-10-16 20:33:05.874264494 +0200 +*************** +*** 1644,1653 **** + char_u *to_free = NULL; + int maxlen; + +! acp_to_enc(printer_name, STRLEN(printer_name), &to_free, &maxlen); + if (to_free != NULL) + printer_name = to_free; +! acp_to_enc(port_name, STRLEN(port_name), &to_free, &maxlen); + if (to_free != NULL) + port_name = to_free; + } +--- 1644,1654 ---- + char_u *to_free = NULL; + int maxlen; + +! acp_to_enc(printer_name, (int)STRLEN(printer_name), &to_free, +! &maxlen); + if (to_free != NULL) + printer_name = to_free; +! acp_to_enc(port_name, (int)STRLEN(port_name), &to_free, &maxlen); + if (to_free != NULL) + port_name = to_free; + } +*** ../vim-7.4.480/src/version.c 2014-10-16 16:16:33.970230873 +0200 +--- src/version.c 2014-10-16 20:34:30.882264680 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 481, + /**/ + +-- + Bravely bold Sir Robin, rode forth from Camelot, + He was not afraid to die, Oh Brave Sir Robin, + He was not at all afraid to be killed in nasty ways + Brave, brave, brave, brave Sir Robin. + "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.482 b/SOURCES/7.4.482 new file mode 100644 index 0000000..46dcb20 --- /dev/null +++ b/SOURCES/7.4.482 @@ -0,0 +1,64 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.482 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.482 +Problem: When 'balloonexpr' results in a list, the text has a trailing + newline. (Lcd) +Solution: Remove one trailing newline. +Files: src/gui_beval.c + + +*** ../vim-7.4.481/src/gui_beval.c 2014-06-25 17:44:45.850768919 +0200 +--- src/gui_beval.c 2014-10-21 14:12:13.915158215 +0200 +*************** +*** 30,35 **** +--- 30,36 ---- + long winnr = 0; + char_u *bexpr; + buf_T *save_curbuf; ++ size_t len; + # ifdef FEAT_WINDOWS + win_T *cw; + # endif +*************** +*** 83,88 **** +--- 84,99 ---- + vim_free(result); + result = eval_to_string(bexpr, NULL, TRUE); + ++ /* Remove one trailing newline, it is added when the result was a ++ * list and it's hardly every useful. If the user really wants a ++ * trailing newline he can add two and one remains. */ ++ if (result != NULL) ++ { ++ len = STRLEN(result); ++ if (len > 0 && result[len - 1] == NL) ++ result[len - 1] = NUL; ++ } ++ + if (use_sandbox) + --sandbox; + --textlock; +*** ../vim-7.4.481/src/version.c 2014-10-16 20:35:32.146264814 +0200 +--- src/version.c 2014-10-21 14:13:19.571158359 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 482, + /**/ + +-- +You cannot propel yourself forward by patting yourself on the back. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.483 b/SOURCES/7.4.483 new file mode 100644 index 0000000..625e3cf --- /dev/null +++ b/SOURCES/7.4.483 @@ -0,0 +1,192 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.483 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.483 +Problem: A 0x80 byte is not handled correctly in abbreviations. +Solution: Unescape special characters. Add a test. (Christian Brabandt) +Files: src/getchar.c, src/testdir/Make_amiga.mak, + src/testdir/Make_dos.mak, src/testdir/Make_ming.mak, + src/testdir/Make_os2.mak, src/testdir/Make_vms.mms, + src/testdir/Makefile, src/testdir/test_mapping.in, + src/testdir/test_mapping.ok + + +*** ../vim-7.4.482/src/getchar.c 2014-10-09 13:36:12.736888764 +0200 +--- src/getchar.c 2014-10-21 16:19:23.907174882 +0200 +*************** +*** 4443,4448 **** +--- 4443,4449 ---- + #endif + int is_id = TRUE; + int vim_abbr; ++ int qlen; /* length of q, CSI/K_SPECIAL unescaped */ + + if (typebuf.tb_no_abbr_cnt) /* abbrev. are not recursive */ + return FALSE; +*************** +*** 4520,4525 **** +--- 4521,4539 ---- + #else + mp = first_abbr; + #endif ++ qlen = mp->m_keylen; ++ if (vim_strbyte(mp->m_keys, K_SPECIAL) != NULL) ++ { ++ char_u *q = vim_strsave(mp->m_keys); ++ ++ /* might have CSI escaped mp->m_keys */ ++ if (q != NULL) ++ { ++ vim_unescape_csi(q); ++ qlen = STRLEN(q); ++ vim_free(q); ++ } ++ } + for ( ; mp; + #ifdef FEAT_LOCALMAP + mp->m_next == NULL ? (mp = mp2, mp2 = NULL) : +*************** +*** 4528,4534 **** + { + /* find entries with right mode and keys */ + if ( (mp->m_mode & State) +! && mp->m_keylen == len + && !STRNCMP(mp->m_keys, ptr, (size_t)len)) + break; + } +--- 4542,4548 ---- + { + /* find entries with right mode and keys */ + if ( (mp->m_mode & State) +! && qlen == len + && !STRNCMP(mp->m_keys, ptr, (size_t)len)) + break; + } +*** ../vim-7.4.482/src/testdir/Make_amiga.mak 2014-08-16 18:36:38.593993280 +0200 +--- src/testdir/Make_amiga.mak 2014-10-21 16:12:45.523174012 +0200 +*************** +*** 43,48 **** +--- 43,49 ---- + test_insertcount.out \ + test_listlbr.out \ + test_listlbr_utf8.out \ ++ test_mapping.out \ + test_options.out \ + test_qf_title.out \ + test_utf8.out +*** ../vim-7.4.482/src/testdir/Make_dos.mak 2014-10-09 15:37:02.492904600 +0200 +--- src/testdir/Make_dos.mak 2014-10-21 16:12:45.523174012 +0200 +*************** +*** 42,47 **** +--- 42,48 ---- + test_insertcount.out \ + test_listlbr.out \ + test_listlbr_utf8.out \ ++ test_mapping.out \ + test_options.out \ + test_qf_title.out \ + test_utf8.out +*** ../vim-7.4.482/src/testdir/Make_ming.mak 2014-08-16 18:36:38.593993280 +0200 +--- src/testdir/Make_ming.mak 2014-10-21 16:12:45.527174012 +0200 +*************** +*** 62,67 **** +--- 62,68 ---- + test_insertcount.out \ + test_listlbr.out \ + test_listlbr_utf8.out \ ++ test_mapping.out \ + test_options.out \ + test_qf_title.out \ + test_utf8.out +*** ../vim-7.4.482/src/testdir/Make_os2.mak 2014-08-16 18:36:38.593993280 +0200 +--- src/testdir/Make_os2.mak 2014-10-21 16:15:40.139174393 +0200 +*************** +*** 44,49 **** +--- 44,50 ---- + test_insertcount.out \ + test_listlbr.out \ + test_listlbr_utf8.out \ ++ test_mapping.out \ + test_options.out \ + test_qf_title.out \ + test_utf8.out +*** ../vim-7.4.482/src/testdir/Make_vms.mms 2014-08-16 18:36:38.597993280 +0200 +--- src/testdir/Make_vms.mms 2014-10-21 16:12:45.527174012 +0200 +*************** +*** 103,108 **** +--- 103,109 ---- + test_insertcount.out \ + test_listlbr.out \ + test_listlbr_utf8.out \ ++ test_mapping.out \ + test_options.out \ + test_qf_title.out \ + test_utf8.out +*** ../vim-7.4.482/src/testdir/Makefile 2014-08-16 18:36:38.597993280 +0200 +--- src/testdir/Makefile 2014-10-21 16:16:05.771174449 +0200 +*************** +*** 40,45 **** +--- 40,46 ---- + test_insertcount.out \ + test_listlbr.out \ + test_listlbr_utf8.out \ ++ test_mapping.out \ + test_options.out \ + test_qf_title.out \ + test_utf8.out +*** ../vim-7.4.482/src/testdir/test_mapping.in 2014-10-21 16:21:48.163175197 +0200 +--- src/testdir/test_mapping.in 2014-10-21 16:12:45.527174012 +0200 +*************** +*** 0 **** +--- 1,15 ---- ++ Test for mappings and abbreviations ++ ++ STARTTEST ++ :so small.vim ++ :so mbyte.vim ++ : " abbreviations with р (0x80) should work ++ :inoreab чкпр vim ++ GAчкпр ++ ++ :/^test/,$w! test.out ++ :qa! ++ ENDTEST ++ ++ test starts here: ++ +*** ../vim-7.4.482/src/testdir/test_mapping.ok 2014-10-21 16:21:48.167175197 +0200 +--- src/testdir/test_mapping.ok 2014-10-21 16:12:45.527174012 +0200 +*************** +*** 0 **** +--- 1,2 ---- ++ test starts here: ++ vim +*** ../vim-7.4.482/src/version.c 2014-10-21 14:15:13.419158607 +0200 +--- src/version.c 2014-10-21 16:17:25.139174622 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 483, + /**/ + +-- +E M A C S +s e l o h +c t t n i +a a t f +p r t +e o + l + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.484 b/SOURCES/7.4.484 new file mode 100644 index 0000000..c914d0a --- /dev/null +++ b/SOURCES/7.4.484 @@ -0,0 +1,52 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.484 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.484 (after 7.4.483) +Problem: Compiler warning on MS-Windows. (Ken Takata) +Solution: Add type cast. +Files: src/getchar.c + + +*** ../vim-7.4.483/src/getchar.c 2014-10-21 16:22:01.403175226 +0200 +--- src/getchar.c 2014-10-21 18:12:33.170273428 +0200 +*************** +*** 4530,4536 **** + if (q != NULL) + { + vim_unescape_csi(q); +! qlen = STRLEN(q); + vim_free(q); + } + } +--- 4530,4536 ---- + if (q != NULL) + { + vim_unescape_csi(q); +! qlen = (int)STRLEN(q); + vim_free(q); + } + } +*** ../vim-7.4.483/src/version.c 2014-10-21 16:22:01.407175226 +0200 +--- src/version.c 2014-10-21 18:14:13.410273647 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 484, + /**/ + +-- +"My particular problem is with registry entries, which seem to just +accumulate like plastic coffee cups..." -- Paul Moore + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.485 b/SOURCES/7.4.485 new file mode 100644 index 0000000..15486dc --- /dev/null +++ b/SOURCES/7.4.485 @@ -0,0 +1,114 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.485 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.485 (after 7.4.484) +Problem: Abbreviations don't work. (Toothpik) +Solution: Move the length computation inside the for loop. Compare against + the unescaped key. +Files: src/getchar.c + + +*** ../vim-7.4.484/src/getchar.c 2014-10-21 18:17:05.638274024 +0200 +--- src/getchar.c 2014-10-21 19:30:46.262283680 +0200 +*************** +*** 4443,4449 **** + #endif + int is_id = TRUE; + int vim_abbr; +- int qlen; /* length of q, CSI/K_SPECIAL unescaped */ + + if (typebuf.tb_no_abbr_cnt) /* abbrev. are not recursive */ + return FALSE; +--- 4443,4448 ---- +*************** +*** 4521,4549 **** + #else + mp = first_abbr; + #endif +- qlen = mp->m_keylen; +- if (vim_strbyte(mp->m_keys, K_SPECIAL) != NULL) +- { +- char_u *q = vim_strsave(mp->m_keys); +- +- /* might have CSI escaped mp->m_keys */ +- if (q != NULL) +- { +- vim_unescape_csi(q); +- qlen = (int)STRLEN(q); +- vim_free(q); +- } +- } + for ( ; mp; + #ifdef FEAT_LOCALMAP + mp->m_next == NULL ? (mp = mp2, mp2 = NULL) : + #endif + (mp = mp->m_next)) + { + /* find entries with right mode and keys */ +! if ( (mp->m_mode & State) + && qlen == len +! && !STRNCMP(mp->m_keys, ptr, (size_t)len)) + break; + } + if (mp != NULL) +--- 4520,4553 ---- + #else + mp = first_abbr; + #endif + for ( ; mp; + #ifdef FEAT_LOCALMAP + mp->m_next == NULL ? (mp = mp2, mp2 = NULL) : + #endif + (mp = mp->m_next)) + { ++ int qlen = mp->m_keylen; ++ char_u *q = mp->m_keys; ++ int match; ++ ++ if (vim_strbyte(mp->m_keys, K_SPECIAL) != NULL) ++ { ++ /* might have CSI escaped mp->m_keys */ ++ q = vim_strsave(mp->m_keys); ++ if (q != NULL) ++ { ++ vim_unescape_csi(q); ++ qlen = (int)STRLEN(q); ++ } ++ } ++ + /* find entries with right mode and keys */ +! match = (mp->m_mode & State) + && qlen == len +! && !STRNCMP(q, ptr, (size_t)len); +! if (q != mp->m_keys) +! vim_free(q); +! if (match) + break; + } + if (mp != NULL) +*** ../vim-7.4.484/src/version.c 2014-10-21 18:17:05.638274024 +0200 +--- src/version.c 2014-10-21 19:34:55.338284224 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 485, + /**/ + +-- +TALL KNIGHT: We shall say Ni! again to you if you do not appease us. +ARTHUR: All right! What do you want? +TALL KNIGHT: We want ... a shrubbery! + "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.486 b/SOURCES/7.4.486 new file mode 100644 index 0000000..11af1cb --- /dev/null +++ b/SOURCES/7.4.486 @@ -0,0 +1,271 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.486 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.486 +Problem: Check for writing to a yank register is wrong. +Solution: Negate the check. (Zyx). Also clean up the #ifdefs. +Files: src/ex_docmd.c, src/ex_cmds.h + + +*** ../vim-7.4.485/src/ex_docmd.c 2014-09-19 20:07:22.546449677 +0200 +--- src/ex_docmd.c 2014-10-21 19:56:31.290287055 +0200 +*************** +*** 49,58 **** +--- 49,63 ---- + static char_u *get_user_command_name __ARGS((int idx)); + # endif + ++ /* Wether a command index indicates a user command. */ ++ # define IS_USER_CMDIDX(idx) ((int)(idx) < 0) ++ + #else + # define ex_command ex_ni + # define ex_comclear ex_ni + # define ex_delcommand ex_ni ++ /* Wether a command index indicates a user command. */ ++ # define IS_USER_CMDIDX(idx) (FALSE) + #endif + + #ifdef FEAT_EVAL +*************** +*** 2190,2200 **** + goto doend; + } + +! ni = ( +! #ifdef FEAT_USR_CMDS +! !USER_CMDIDX(ea.cmdidx) && +! #endif +! (cmdnames[ea.cmdidx].cmd_func == ex_ni + #ifdef HAVE_EX_SCRIPT_NI + || cmdnames[ea.cmdidx].cmd_func == ex_script_ni + #endif +--- 2195,2202 ---- + goto doend; + } + +! ni = (!IS_USER_CMDIDX(ea.cmdidx) +! && (cmdnames[ea.cmdidx].cmd_func == ex_ni + #ifdef HAVE_EX_SCRIPT_NI + || cmdnames[ea.cmdidx].cmd_func == ex_script_ni + #endif +*************** +*** 2229,2237 **** + /* + * 5. parse arguments + */ +! #ifdef FEAT_USR_CMDS +! if (!USER_CMDIDX(ea.cmdidx)) +! #endif + ea.argt = (long)cmdnames[(int)ea.cmdidx].cmd_argt; + + if (!ea.skip) +--- 2231,2237 ---- + /* + * 5. parse arguments + */ +! if (!IS_USER_CMDIDX(ea.cmdidx)) + ea.argt = (long)cmdnames[(int)ea.cmdidx].cmd_argt; + + if (!ea.skip) +*************** +*** 2252,2261 **** + } + + if (text_locked() && !(ea.argt & CMDWIN) +! # ifdef FEAT_USR_CMDS +! && !USER_CMDIDX(ea.cmdidx) +! # endif +! ) + { + /* Command not allowed when editing the command line. */ + #ifdef FEAT_CMDWIN +--- 2252,2258 ---- + } + + if (text_locked() && !(ea.argt & CMDWIN) +! && !IS_USER_CMDIDX(ea.cmdidx)) + { + /* Command not allowed when editing the command line. */ + #ifdef FEAT_CMDWIN +*************** +*** 2273,2281 **** + if (!(ea.argt & CMDWIN) + && ea.cmdidx != CMD_edit + && ea.cmdidx != CMD_checktime +! # ifdef FEAT_USR_CMDS +! && !USER_CMDIDX(ea.cmdidx) +! # endif + && curbuf_locked()) + goto doend; + #endif +--- 2270,2276 ---- + if (!(ea.argt & CMDWIN) + && ea.cmdidx != CMD_edit + && ea.cmdidx != CMD_checktime +! && !IS_USER_CMDIDX(ea.cmdidx) + && curbuf_locked()) + goto doend; + #endif +*************** +*** 2468,2477 **** + /* accept numbered register only when no count allowed (:put) */ + if ( (ea.argt & REGSTR) + && *ea.arg != NUL +! #ifdef FEAT_USR_CMDS +! /* Do not allow register = for user commands */ +! && (!USER_CMDIDX(ea.cmdidx) || *ea.arg != '=') +! #endif + && !((ea.argt & COUNT) && VIM_ISDIGIT(*ea.arg))) + { + #ifndef FEAT_CLIPBOARD +--- 2463,2470 ---- + /* accept numbered register only when no count allowed (:put) */ + if ( (ea.argt & REGSTR) + && *ea.arg != NUL +! /* Do not allow register = for user commands */ +! && (!IS_USER_CMDIDX(ea.cmdidx) || *ea.arg != '=') + && !((ea.argt & COUNT) && VIM_ISDIGIT(*ea.arg))) + { + #ifndef FEAT_CLIPBOARD +*************** +*** 2482,2495 **** + goto doend; + } + #endif +! if ( +! #ifdef FEAT_USR_CMDS +! valid_yank_reg(*ea.arg, (ea.cmdidx != CMD_put +! && USER_CMDIDX(ea.cmdidx))) +! #else +! valid_yank_reg(*ea.arg, ea.cmdidx != CMD_put) +! #endif +! ) + { + ea.regname = *ea.arg++; + #ifdef FEAT_EVAL +--- 2475,2482 ---- + goto doend; + } + #endif +! if (valid_yank_reg(*ea.arg, (ea.cmdidx != CMD_put +! && !IS_USER_CMDIDX(ea.cmdidx)))) + { + ea.regname = *ea.arg++; + #ifdef FEAT_EVAL +*************** +*** 2663,2672 **** + * number. Don't do this for a user command. + */ + if ((ea.argt & BUFNAME) && *ea.arg != NUL && ea.addr_count == 0 +! # ifdef FEAT_USR_CMDS +! && !USER_CMDIDX(ea.cmdidx) +! # endif +! ) + { + /* + * :bdelete, :bwipeout and :bunload take several arguments, separated +--- 2650,2656 ---- + * number. Don't do this for a user command. + */ + if ((ea.argt & BUFNAME) && *ea.arg != NUL && ea.addr_count == 0 +! && !IS_USER_CMDIDX(ea.cmdidx)) + { + /* + * :bdelete, :bwipeout and :bunload take several arguments, separated +*************** +*** 2704,2710 **** + #endif + + #ifdef FEAT_USR_CMDS +! if (USER_CMDIDX(ea.cmdidx)) + { + /* + * Execute a user-defined command. +--- 2688,2694 ---- + #endif + + #ifdef FEAT_USR_CMDS +! if (IS_USER_CMDIDX(ea.cmdidx)) + { + /* + * Execute a user-defined command. +*************** +*** 2763,2773 **** + } + #ifdef FEAT_EVAL + do_errthrow(cstack, +! (ea.cmdidx != CMD_SIZE +! # ifdef FEAT_USR_CMDS +! && !USER_CMDIDX(ea.cmdidx) +! # endif +! ) ? cmdnames[(int)ea.cmdidx].cmd_name : (char_u *)NULL); + #endif + + if (verbose_save >= 0) +--- 2747,2754 ---- + } + #ifdef FEAT_EVAL + do_errthrow(cstack, +! (ea.cmdidx != CMD_SIZE && !IS_USER_CMDIDX(ea.cmdidx)) +! ? cmdnames[(int)ea.cmdidx].cmd_name : (char_u *)NULL); + #endif + + if (verbose_save >= 0) +*************** +*** 3361,3369 **** + /* + * 5. parse arguments + */ +! #ifdef FEAT_USR_CMDS +! if (!USER_CMDIDX(ea.cmdidx)) +! #endif + ea.argt = (long)cmdnames[(int)ea.cmdidx].cmd_argt; + + arg = skipwhite(p); +--- 3342,3348 ---- + /* + * 5. parse arguments + */ +! if (!IS_USER_CMDIDX(ea.cmdidx)) + ea.argt = (long)cmdnames[(int)ea.cmdidx].cmd_argt; + + arg = skipwhite(p); +*** ../vim-7.4.485/src/ex_cmds.h 2014-09-19 20:07:22.546449677 +0200 +--- src/ex_cmds.h 2014-10-21 19:52:45.926286562 +0200 +*************** +*** 1153,1160 **** + #endif + }; + +- #define USER_CMDIDX(idx) ((int)(idx) < 0) +- + #ifndef DO_DECLARE_EXCMD + typedef enum CMD_index cmdidx_T; + +--- 1153,1158 ---- +*** ../vim-7.4.485/src/version.c 2014-10-21 19:35:28.406284296 +0200 +--- src/version.c 2014-10-21 20:00:44.350287607 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 486, + /**/ + +-- +FATHER: One day, lad, all this will be yours ... +PRINCE: What - the curtains? + "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.487 b/SOURCES/7.4.487 new file mode 100644 index 0000000..7595f6c --- /dev/null +++ b/SOURCES/7.4.487 @@ -0,0 +1,244 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.487 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.487 +Problem: ":sign jump" may use another window even though the file is + already edited in the current window. +Solution: First check if the file is in the current window. (James McCoy) +Files: src/window.c, src/testdir/Make_amiga.mak, + src/testdir/Make_dos.mak, src/testdir/Make_ming.mak, + src/testdir/Make_os2.mak, src/testdir/Make_vms.mms, + src/testdir/Makefile, src/testdir/test_signs.in, + src/testdir/test_signs.ok + + +*** ../vim-7.4.486/src/window.c 2014-10-09 10:44:33.196866267 +0200 +--- src/window.c 2014-10-21 20:50:13.018294092 +0200 +*************** +*** 4407,4426 **** + buf_jump_open_win(buf) + buf_T *buf; + { +! # ifdef FEAT_WINDOWS +! win_T *wp; + +! for (wp = firstwin; wp != NULL; wp = wp->w_next) +! if (wp->w_buffer == buf) +! break; + if (wp != NULL) + win_enter(wp, FALSE); +- return wp; +- # else +- if (curwin->w_buffer == buf) +- return curwin; +- return NULL; + # endif + } + + /* +--- 4407,4425 ---- + buf_jump_open_win(buf) + buf_T *buf; + { +! win_T *wp = NULL; + +! if (curwin->w_buffer == buf) +! wp = curwin; +! # ifdef FEAT_WINDOWS +! else +! for (wp = firstwin; wp != NULL; wp = wp->w_next) +! if (wp->w_buffer == buf) +! break; + if (wp != NULL) + win_enter(wp, FALSE); + # endif ++ return wp; + } + + /* +*************** +*** 4432,4443 **** + buf_jump_open_tab(buf) + buf_T *buf; + { + # ifdef FEAT_WINDOWS +- win_T *wp; + tabpage_T *tp; + +- /* First try the current tab page. */ +- wp = buf_jump_open_win(buf); + if (wp != NULL) + return wp; + +--- 4431,4440 ---- + buf_jump_open_tab(buf) + buf_T *buf; + { ++ win_T *wp = buf_jump_open_win(buf); + # ifdef FEAT_WINDOWS + tabpage_T *tp; + + if (wp != NULL) + return wp; + +*************** +*** 4455,4467 **** + break; + } + } +- +- return wp; +- # else +- if (curwin->w_buffer == buf) +- return curwin; +- return NULL; + # endif + } + #endif + +--- 4452,4459 ---- + break; + } + } + # endif ++ return wp; + } + #endif + +*** ../vim-7.4.486/src/testdir/Make_amiga.mak 2014-10-21 16:22:01.403175226 +0200 +--- src/testdir/Make_amiga.mak 2014-10-21 20:46:30.866293607 +0200 +*************** +*** 46,51 **** +--- 46,52 ---- + test_mapping.out \ + test_options.out \ + test_qf_title.out \ ++ test_signs.out \ + test_utf8.out + + .SUFFIXES: .in .out +*************** +*** 179,182 **** +--- 180,184 ---- + test_listlbr_utf8.out: test_listlbr_utf8.in + test_options.out: test_options.in + test_qf_title.out: test_qf_title.in ++ test_signs.out: test_signs.in + test_utf8.out: test_utf8.in +*** ../vim-7.4.486/src/testdir/Make_dos.mak 2014-10-21 16:22:01.407175226 +0200 +--- src/testdir/Make_dos.mak 2014-10-21 20:46:30.866293607 +0200 +*************** +*** 45,50 **** +--- 45,51 ---- + test_mapping.out \ + test_options.out \ + test_qf_title.out \ ++ test_signs.out \ + test_utf8.out + + SCRIPTS32 = test50.out test70.out +*** ../vim-7.4.486/src/testdir/Make_ming.mak 2014-10-21 16:22:01.407175226 +0200 +--- src/testdir/Make_ming.mak 2014-10-21 20:46:30.866293607 +0200 +*************** +*** 65,70 **** +--- 65,71 ---- + test_mapping.out \ + test_options.out \ + test_qf_title.out \ ++ test_signs.out \ + test_utf8.out + + SCRIPTS32 = test50.out test70.out +*** ../vim-7.4.486/src/testdir/Make_os2.mak 2014-10-21 16:22:01.407175226 +0200 +--- src/testdir/Make_os2.mak 2014-10-21 20:46:30.866293607 +0200 +*************** +*** 47,52 **** +--- 47,53 ---- + test_mapping.out \ + test_options.out \ + test_qf_title.out \ ++ test_signs.out \ + test_utf8.out + + .SUFFIXES: .in .out +*** ../vim-7.4.486/src/testdir/Make_vms.mms 2014-10-21 16:22:01.407175226 +0200 +--- src/testdir/Make_vms.mms 2014-10-21 20:46:30.866293607 +0200 +*************** +*** 106,111 **** +--- 106,112 ---- + test_mapping.out \ + test_options.out \ + test_qf_title.out \ ++ test_signs.out \ + test_utf8.out + + # Known problems: +*** ../vim-7.4.486/src/testdir/Makefile 2014-10-21 16:22:01.407175226 +0200 +--- src/testdir/Makefile 2014-10-21 20:46:30.866293607 +0200 +*************** +*** 43,48 **** +--- 43,49 ---- + test_mapping.out \ + test_options.out \ + test_qf_title.out \ ++ test_signs.out \ + test_utf8.out + + SCRIPTS_GUI = test16.out +*** ../vim-7.4.486/src/testdir/test_signs.in 2014-10-21 20:56:35.838294928 +0200 +--- src/testdir/test_signs.in 2014-10-21 20:46:30.866293607 +0200 +*************** +*** 0 **** +--- 1,22 ---- ++ Tests for signs ++ STARTTEST ++ :so small.vim ++ :if !has("signs") ++ : e! test.ok ++ : wq! test.out ++ :endif ++ :" ++ :sign define JumpSign text=x ++ :exe 'sign place 42 line=2 name=JumpSign buffer=' . bufnr('') ++ :" Split the window to the bottom to verify :sign-jump will stay in the current ++ :" window if the buffer is displayed there ++ :bot split ++ :exe 'sign jump 42 buffer=' . bufnr('') ++ :call append(line('$'), winnr()) ++ :$-1,$w! test.out ++ ENDTEST ++ ++ STARTTEST ++ :qa! ++ ENDTEST ++ +*** ../vim-7.4.486/src/testdir/test_signs.ok 2014-10-21 20:56:35.842294928 +0200 +--- src/testdir/test_signs.ok 2014-10-21 20:46:30.866293607 +0200 +*************** +*** 0 **** +--- 1,2 ---- ++ ++ 2 +*** ../vim-7.4.486/src/version.c 2014-10-21 20:01:54.986287762 +0200 +--- src/version.c 2014-10-21 20:50:02.642294069 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 487, + /**/ + +-- +I'd like to meet the man who invented sex and see what he's working on now. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.488 b/SOURCES/7.4.488 new file mode 100644 index 0000000..9abdf42 --- /dev/null +++ b/SOURCES/7.4.488 @@ -0,0 +1,45 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.488 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.488 +Problem: test_mapping fails for some people. +Solution: Set the 'encoding' option. (Ken Takata) +Files: src/testdir/test_mapping.in + + +*** ../vim-7.4.487/src/testdir/test_mapping.in 2014-10-21 16:22:01.407175226 +0200 +--- src/testdir/test_mapping.in 2014-10-22 22:04:48.422492595 +0200 +*************** +*** 3,8 **** +--- 3,9 ---- + STARTTEST + :so small.vim + :so mbyte.vim ++ :set encoding=utf-8 + : " abbreviations with р (0x80) should work + :inoreab чкпр vim + GAчкпр +*** ../vim-7.4.487/src/version.c 2014-10-21 20:57:11.538295006 +0200 +--- src/version.c 2014-10-22 22:05:33.758492694 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 488, + /**/ + +-- +You had connectors? Eeee, when I were a lad we 'ad to carry the +bits between the computer and the terminal with a spoon... + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.489 b/SOURCES/7.4.489 new file mode 100644 index 0000000..3713fc4 --- /dev/null +++ b/SOURCES/7.4.489 @@ -0,0 +1,49 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.489 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.489 +Problem: Cursor movement still wrong when 'lbr' is set and there is a + number column. (Hirohito Higashi) +Solution: Add correction for number column. (Hiroyuki Takagi) +Files: src/charset.c + + +*** ../vim-7.4.488/src/charset.c 2014-10-15 21:26:35.566082778 +0200 +--- src/charset.c 2014-10-31 12:39:41.815322421 +0100 +*************** +*** 1184,1189 **** +--- 1184,1191 ---- + { + col -= W_WIDTH(wp); + numberextra = W_WIDTH(wp) - (numberextra - win_col_off2(wp)); ++ if (numberextra > 0) ++ col %= numberextra; + if (*p_sbr != NUL) + { + colnr_T sbrlen = (colnr_T)MB_CHARLEN(p_sbr); +*** ../vim-7.4.488/src/version.c 2014-10-22 22:08:58.386493141 +0200 +--- src/version.c 2014-10-31 12:37:38.439325394 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 489, + /**/ + +-- +This is the polymorph virus! Follow these instructions carefully: +1. Send this message to everybody you know. +2. Format your harddisk. +Thank you for your cooperation in spreading the most powerful virus ever! + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.490 b/SOURCES/7.4.490 new file mode 100644 index 0000000..5485833 --- /dev/null +++ b/SOURCES/7.4.490 @@ -0,0 +1,208 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.490 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.490 +Problem: Cannot specify the buffer to use for "do" and "dp", making them + useless for three-way diff. +Solution: Use the count as the buffer number. (James McCoy) +Files: runtime/doc/diff.txt, src/diff.c, src/normal.c, src/proto/diff.pro + + +*** ../vim-7.4.489/runtime/doc/diff.txt 2013-08-10 13:24:52.000000000 +0200 +--- runtime/doc/diff.txt 2014-10-31 13:39:22.443236141 +0100 +*************** +*** 95,101 **** + :difft[his] Make the current window part of the diff windows. This sets + the options like for "vimdiff". + +! :diffp[atch] {patchfile} *E816* *:diffp* *:diffpatch* + Use the current buffer, patch it with the diff found in + {patchfile} and open a buffer on the result. The options are + set as for "vimdiff". +--- 95,101 ---- + :difft[his] Make the current window part of the diff windows. This sets + the options like for "vimdiff". + +! :diffp[atch] {patchfile} *E816* *:diffp* *:diffpatch* + Use the current buffer, patch it with the diff found in + {patchfile} and open a buffer on the result. The options are + set as for "vimdiff". +*************** +*** 123,132 **** + file for a moment and come back to the same file and be in diff mode again. + + *:diffo* *:diffoff* +! :diffo[ff] Switch off diff mode for the current window. + + :diffo[ff]! Switch off diff mode for the current window and in all windows +! in the current tab page where 'diff' is set. + + The ":diffoff" command resets the relevant options to the values they had when + using |:diffsplit|, |:diffpatch| , |:diffthis|. or starting Vim in diff mode. +--- 123,136 ---- + file for a moment and come back to the same file and be in diff mode again. + + *:diffo* *:diffoff* +! :diffo[ff] Switch off diff mode for the current window. Resets related +! options also when 'diff' was not set. + + :diffo[ff]! Switch off diff mode for the current window and in all windows +! in the current tab page where 'diff' is set. Resetting +! related options only happens in a window that has 'diff' set, +! if the current window does not have 'diff' set then no options +! in it are changed. + + The ":diffoff" command resets the relevant options to the values they had when + using |:diffsplit|, |:diffpatch| , |:diffthis|. or starting Vim in diff mode. +*************** +*** 262,274 **** + See below for [range]. + + *do* +! do Same as ":diffget" without argument or range. The "o" stands +! for "obtain" ("dg" can't be used, it could be the start of +! "dgg"!). Note: this doesn't work in Visual mode. + + *dp* +! dp Same as ":diffput" without argument or range. +! Note: this doesn't work in Visual mode. + + + When no [range] is given, the diff at the cursor position or just above it is +--- 266,282 ---- + See below for [range]. + + *do* +! [count]do Same as ":diffget" without range. The "o" stands for "obtain" +! ("dg" can't be used, it could be the start of "dgg"!). Note: +! this doesn't work in Visual mode. +! If you give a [count], it is used as the [bufspec] argument +! for ":diffget". + + *dp* +! [count]dp Same as ":diffput" without range. Note: this doesn't work in +! Visual mode. +! If you give a [count], it is used as the [bufspec] argument +! for ":diffput". + + + When no [range] is given, the diff at the cursor position or just above it is +*** ../vim-7.4.489/src/diff.c 2014-10-15 12:56:44.006015955 +0200 +--- src/diff.c 2014-10-31 13:44:20.739228953 +0100 +*************** +*** 2107,2118 **** + * "dp" and "do" commands. + */ + void +! nv_diffgetput(put) + int put; + { + exarg_T ea; + +! ea.arg = (char_u *)""; + if (put) + ea.cmdidx = CMD_diffput; + else +--- 2107,2126 ---- + * "dp" and "do" commands. + */ + void +! nv_diffgetput(put, count) + int put; ++ long count; + { + exarg_T ea; ++ char_u buf[30]; + +! if (count == 0) +! ea.arg = (char_u *)""; +! else +! { +! vim_snprintf((char *)buf, 30, "%ld", count); +! ea.arg = buf; +! } + if (put) + ea.cmdidx = CMD_diffput; + else +*** ../vim-7.4.489/src/normal.c 2014-10-09 14:48:26.284898230 +0200 +--- src/normal.c 2014-10-31 13:36:32.671240232 +0100 +*************** +*** 9284,9290 **** + if (cap->oap->op_type == OP_DELETE && cap->cmdchar == 'p') + { + clearop(cap->oap); +! nv_diffgetput(TRUE); + } + else + #endif +--- 9284,9290 ---- + if (cap->oap->op_type == OP_DELETE && cap->cmdchar == 'p') + { + clearop(cap->oap); +! nv_diffgetput(TRUE, cap->opcount); + } + else + #endif +*************** +*** 9407,9413 **** + if (cap->oap->op_type == OP_DELETE && cap->cmdchar == 'o') + { + clearop(cap->oap); +! nv_diffgetput(FALSE); + } + else + #endif +--- 9407,9413 ---- + if (cap->oap->op_type == OP_DELETE && cap->cmdchar == 'o') + { + clearop(cap->oap); +! nv_diffgetput(FALSE, cap->opcount); + } + else + #endif +*** ../vim-7.4.489/src/proto/diff.pro 2013-08-10 13:37:07.000000000 +0200 +--- src/proto/diff.pro 2014-10-31 13:36:32.671240232 +0100 +*************** +*** 18,24 **** + int diffopt_horizontal __ARGS((void)); + int diff_find_change __ARGS((win_T *wp, linenr_T lnum, int *startp, int *endp)); + int diff_infold __ARGS((win_T *wp, linenr_T lnum)); +! void nv_diffgetput __ARGS((int put)); + void ex_diffgetput __ARGS((exarg_T *eap)); + int diff_mode_buf __ARGS((buf_T *buf)); + int diff_move_to __ARGS((int dir, long count)); +--- 18,24 ---- + int diffopt_horizontal __ARGS((void)); + int diff_find_change __ARGS((win_T *wp, linenr_T lnum, int *startp, int *endp)); + int diff_infold __ARGS((win_T *wp, linenr_T lnum)); +! void nv_diffgetput __ARGS((int put, long count)); + void ex_diffgetput __ARGS((exarg_T *eap)); + int diff_mode_buf __ARGS((buf_T *buf)); + int diff_move_to __ARGS((int dir, long count)); +*** ../vim-7.4.489/src/version.c 2014-10-31 12:41:57.427319153 +0100 +--- src/version.c 2014-10-31 13:37:54.511238260 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 490, + /**/ + +-- +GUARD #2: It could be carried by an African swallow! +GUARD #1: Oh, yeah, an African swallow maybe, but not a European swallow, + that's my point. +GUARD #2: Oh, yeah, I agree with that... + The Quest for the Holy Grail (Monty Python) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.491 b/SOURCES/7.4.491 new file mode 100644 index 0000000..32bc583 --- /dev/null +++ b/SOURCES/7.4.491 @@ -0,0 +1,57 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.491 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.491 +Problem: When winrestview() has a negative "topline" value there are + display errors. +Solution: Correct a negative value to 1. (Hirohito Higashi) +Files: src/eval.c + + +*** ../vim-7.4.490/src/eval.c 2014-09-19 20:45:19.266454650 +0200 +--- src/eval.c 2014-10-31 15:43:55.811056060 +0100 +*************** +*** 19576,19582 **** + # endif + changed_window_setting(); + +! if (curwin->w_topline == 0) + curwin->w_topline = 1; + if (curwin->w_topline > curbuf->b_ml.ml_line_count) + curwin->w_topline = curbuf->b_ml.ml_line_count; +--- 19576,19582 ---- + # endif + changed_window_setting(); + +! if (curwin->w_topline <= 0) + curwin->w_topline = 1; + if (curwin->w_topline > curbuf->b_ml.ml_line_count) + curwin->w_topline = curbuf->b_ml.ml_line_count; +*** ../vim-7.4.490/src/version.c 2014-10-31 13:54:21.843214469 +0100 +--- src/version.c 2014-10-31 15:44:59.555054524 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 491, + /**/ + +-- +GUARD #2: Wait a minute -- supposing two swallows carried it together? +GUARD #1: No, they'd have to have it on a line. +GUARD #2: Well, simple! They'd just use a standard creeper! +GUARD #1: What, held under the dorsal guiding feathers? +GUARD #2: Well, why not? + The Quest for the Holy Grail (Monty Python) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.493 b/SOURCES/7.4.493 new file mode 100644 index 0000000..84dc2f6 --- /dev/null +++ b/SOURCES/7.4.493 @@ -0,0 +1,53 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.493 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.493 +Problem: A TextChanged autocommand is triggered when saving a file. + (William Gardner) +Solution: Update last_changedtick after calling unchanged(). (Christian + Brabandt) +Files: src/fileio.c + + +*** ../vim-7.4.492/src/fileio.c 2014-09-23 15:45:04.870801055 +0200 +--- src/fileio.c 2014-10-31 19:48:35.030702344 +0100 +*************** +*** 4877,4882 **** +--- 4877,4889 ---- + ) + { + unchanged(buf, TRUE); ++ #ifdef FEAT_AUTOCMD ++ /* buf->b_changedtick is always incremented in unchanged() but that ++ * should not trigger a TextChanged event. */ ++ if (last_changedtick + 1 == buf->b_changedtick ++ && last_changedtick_buf == buf) ++ last_changedtick = buf->b_changedtick; ++ #endif + u_unchanged(buf); + u_update_save_nr(buf); + } +*** ../vim-7.4.492/src/version.c 2014-10-31 19:20:30.782742928 +0100 +--- src/version.c 2014-10-31 19:48:53.590701897 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 493, + /**/ + +-- +You know you use Vim too much when you have this alias in your +~/.bashrc file: alias :e=/bin/vim (Eljay Love-Jensen) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.494 b/SOURCES/7.4.494 new file mode 100644 index 0000000..079c8ab --- /dev/null +++ b/SOURCES/7.4.494 @@ -0,0 +1,62 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.494 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.494 +Problem: Cursor shape is wrong after a CompleteDone autocommand. +Solution: Update the cursor and mouse shape after ":normal" restores the + state. (Jacob Niehus) +Files: src/ex_docmd.c + + +*** ../vim-7.4.493/src/ex_docmd.c 2014-10-21 20:01:54.986287762 +0200 +--- src/ex_docmd.c 2014-11-05 09:37:05.829176795 +0100 +*************** +*** 9526,9533 **** + msg_didout |= save_msg_didout; /* don't reset msg_didout now */ + + /* Restore the state (needed when called from a function executed for +! * 'indentexpr'). */ + State = save_State; + #ifdef FEAT_MBYTE + vim_free(arg); + #endif +--- 9526,9540 ---- + 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 ++ #ifdef CURSOR_SHAPE ++ ui_cursor_shape(); /* may show different cursor shape */ ++ #endif ++ + #ifdef FEAT_MBYTE + vim_free(arg); + #endif +*** ../vim-7.4.493/src/version.c 2014-10-31 19:51:33.014698055 +0100 +--- src/version.c 2014-11-05 09:51:06.261156543 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 494, + /**/ + +-- +Q: How many hardware engineers does it take to change a lightbulb? +A: None. We'll fix it in software. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.495 b/SOURCES/7.4.495 new file mode 100644 index 0000000..20926d9 --- /dev/null +++ b/SOURCES/7.4.495 @@ -0,0 +1,89 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.495 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.495 +Problem: XPM isn't used correctly in the Cygwin Makefile. +Solution: Include the rules like in Make_ming.mak. (Ken Takata) +Files: src/Make_cyg.mak + + +*** ../vim-7.4.494/src/Make_cyg.mak 2014-10-15 12:07:07.610009454 +0200 +--- src/Make_cyg.mak 2014-11-05 13:38:03.688828413 +0100 +*************** +*** 485,497 **** + endif + + ############################## + ifneq ($(XPM),no) + # Only allow XPM for a GUI build. + DEFINES += -DFEAT_XPM_W32 +! INCLUDES += -I$(XPM)/include + EXTRA_OBJS += $(OUTDIR)/xpm_w32.o + EXTRA_LIBS += -L$(XPM)/lib -lXpm + endif + + ############################## + EXE = gvim$(DEBUG_SUFFIX).exe +--- 485,516 ---- + endif + + ############################## ++ ifndef XPM ++ ifeq ($(ARCH),i386) ++ XPM = xpm/x86 ++ endif ++ ifeq ($(ARCH),i486) ++ XPM = xpm/x86 ++ endif ++ ifeq ($(ARCH),i586) ++ XPM = xpm/x86 ++ endif ++ ifeq ($(ARCH),i686) ++ XPM = xpm/x86 ++ endif ++ ifeq ($(ARCH),x86-64) ++ XPM = xpm/x64 ++ endif ++ endif ++ ifdef XPM + ifneq ($(XPM),no) + # Only allow XPM for a GUI build. + DEFINES += -DFEAT_XPM_W32 +! INCLUDES += -I$(XPM)/include -I$(XPM)/../include + EXTRA_OBJS += $(OUTDIR)/xpm_w32.o + EXTRA_LIBS += -L$(XPM)/lib -lXpm + endif ++ endif + + ############################## + EXE = gvim$(DEBUG_SUFFIX).exe +*** ../vim-7.4.494/src/version.c 2014-11-05 09:53:19.989153321 +0100 +--- src/version.c 2014-11-05 13:39:27.516826393 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 495, + /**/ + +-- +ARTHUR: You fight with the strength of many men, Sir knight. + I am Arthur, King of the Britons. [pause] + I seek the finest and the bravest knights in the land to join me + in my Court of Camelot. [pause] + You have proved yourself worthy; will you join me? [pause] + You make me sad. So be it. Come, Patsy. +BLACK KNIGHT: None shall pass. + The Quest for the Holy Grail (Monty Python) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.496 b/SOURCES/7.4.496 new file mode 100644 index 0000000..0eaf1ff --- /dev/null +++ b/SOURCES/7.4.496 @@ -0,0 +1,2774 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.496 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.496 +Problem: Many lines are both in Make_cyg.mak and Make_ming.mak +Solution: Move the common parts to one file. (Ken Takata) +Files: src/INSTALLpc.txt, src/Make_cyg.mak, src/Make_cyg_ming.mak, + src/Make_ming.mak, src/Make_mvc.mak, Filelist + + +*** ../vim-7.4.495/src/INSTALLpc.txt 2014-08-22 18:12:53.995244049 +0200 +--- src/INSTALLpc.txt 2014-11-05 13:49:27.076811946 +0100 +*************** +*** 228,238 **** + + http://www.mingw.org/ + + Once you have downloaded the compiler binaries, unpack them on your hard disk + somewhere, and put them on your PATH. If you are on Win95/98 you can edit + your AUTOEXEC.BAT file with a line like: + +! set PATH=C:\GCC-2.95.2\BIN;%PATH% + + or on NT/2000/XP, go to the Control Panel, (Performance and Maintenance), + System, Advanced, and edit the environment from there. +--- 228,242 ---- + + http://www.mingw.org/ + ++ or you can use 'MinGW-w64' compiler. ++ ++ http://mingw-w64.sourceforge.net/ ++ + Once you have downloaded the compiler binaries, unpack them on your hard disk + somewhere, and put them on your PATH. If you are on Win95/98 you can edit + your AUTOEXEC.BAT file with a line like: + +! set PATH=C:\MinGW\bin;%PATH% + + or on NT/2000/XP, go to the Control Panel, (Performance and Maintenance), + System, Advanced, and edit the environment from there. +*************** +*** 240,249 **** + Test if gcc is on your path. From a CMD (or COMMAND on '95/98) window: + + C:\> gcc --version +! 2.95.2 + +! C:\> make --version +! GNU Make version 3.77 (...etc...) + + Now you are ready to rock 'n' roll. Unpack the vim sources (look on + www.vim.org for exactly which version of the vim files you need). +--- 244,253 ---- + Test if gcc is on your path. From a CMD (or COMMAND on '95/98) window: + + C:\> gcc --version +! gcc (GCC) 4.8.1 + +! C:\> mingw32-make --version +! GNU Make 3.82.90 (...etc...) + + Now you are ready to rock 'n' roll. Unpack the vim sources (look on + www.vim.org for exactly which version of the vim files you need). +*************** +*** 255,261 **** + + and you type: + +! make -f Make_ming.mak gvim.exe + + After churning for a while, you will end up with 'gvim.exe' in the 'vim\src' + directory. +--- 259,265 ---- + + and you type: + +! mingw32-make -f Make_ming.mak gvim.exe + + After churning for a while, you will end up with 'gvim.exe' in the 'vim\src' + directory. +*************** +*** 264,270 **** + way. If, for some reason, you want the console-mode-only version of vim (this + is NOT recommended on Win32, especially on '95/'98!!!), you can use: + +! make -f Make_ming.mak GUI=no vim.exe + + If you are dismayed by how big the EXE is, I strongly recommend you get 'UPX' + (also free!) and compress the file (typical compression is 50%). UPX can be +--- 268,274 ---- + way. If, for some reason, you want the console-mode-only version of vim (this + is NOT recommended on Win32, especially on '95/'98!!!), you can use: + +! mingw32-make -f Make_ming.mak GUI=no vim.exe + + If you are dismayed by how big the EXE is, I strongly recommend you get 'UPX' + (also free!) and compress the file (typical compression is 50%). UPX can be +*************** +*** 291,298 **** + Use Make_cyg.mak with Cygwin's GCC. See + http://users.skynet.be/antoine.mechelynck/vim/compile.htm + +! The Cygnus one many not fully work yet. +! With Cygnus gcc you can use the Unix Makefile instead (you need to get the + Unix archive then). Then you get a Cygwin application (feels like Vim is + running on Unix), while with Make_cyg.mak you get a Windows application (like + with the other makefiles). +--- 295,301 ---- + Use Make_cyg.mak with Cygwin's GCC. See + http://users.skynet.be/antoine.mechelynck/vim/compile.htm + +! With Cygnus gcc you should use the Unix Makefile instead (you need to get the + Unix archive then). Then you get a Cygwin application (feels like Vim is + running on Unix), while with Make_cyg.mak you get a Windows application (like + with the other makefiles). +*************** +*** 316,324 **** + http://www.mingw.org/wiki/LinuxCrossMinGW + http://www.libsdl.org/extras/win32/cross/README.txt + 2) Get and unpack both the Unix sources and the extra archive +! 3) in 'Make_ming.mak', set 'CROSS' to 'yes' instead of 'no'. +! Make further changes to 'Make_ming.mak' as you wish. +! If your cross-compiler prefix differs from the predefined value, + set 'CROSS_COMPILE' corresponding. + 4) make -f Make_ming.mak gvim.exe + +--- 319,327 ---- + http://www.mingw.org/wiki/LinuxCrossMinGW + http://www.libsdl.org/extras/win32/cross/README.txt + 2) Get and unpack both the Unix sources and the extra archive +! 3) in 'Make_cyg_ming.mak', set 'CROSS' to 'yes' instead of 'no'. +! Make further changes to 'Make_cyg_ming.mak' and 'Make_ming.mak' as you +! wish. If your cross-compiler prefix differs from the predefined value, + set 'CROSS_COMPILE' corresponding. + 4) make -f Make_ming.mak gvim.exe + +*** ../vim-7.4.495/src/Make_cyg.mak 2014-11-05 13:43:18.352820831 +0100 +--- src/Make_cyg.mak 2014-11-05 13:49:27.076811946 +0100 +*************** +*** 1,754 **** + # +! # Makefile for VIM on Win32, using Cygnus gcc +! # Updated by Dan Sharp. +! # Last Change: 2014 Aug 10 + # + # Also read INSTALLpc.txt! + # + # This compiles Vim as a Windows application. If you want Vim to run as a + # Cygwin application use the Makefile (just like on Unix). + # +! # GUI no or yes: set to yes if you want the GUI version (yes) +! # DIRECTX no or yes: set to yes if you want use DirectWrite (no) +! # PERL define to path to Perl dir to get Perl support (not defined) +! # PERL_VER define to version of Perl being used (56) +! # DYNAMIC_PERL no or yes: set to yes to load the Perl DLL dynamically (yes) +! # PYTHON define to path to Python dir to get PYTHON support (not defined) +! # PYTHON_VER define to version of Python being used (22) +! # DYNAMIC_PYTHON no or yes: use yes to load the Python DLL dynamically (yes) +! # PYTHON3 define to path to Python3 dir to get PYTHON3 support (not defined) +! # PYTHON3_VER define to version of Python3 being used (22) +! # DYNAMIC_PYTHON3 no or yes: use yes to load the Python3 DLL dynamically (yes) +! # TCL define to path to TCL dir to get TCL support (not defined) +! # TCL_VER define to version of TCL being used (83) +! # DYNAMIC_TCL no or yes: use yes to load the TCL DLL dynamically (yes) +! # RUBY define to path to Ruby dir to get Ruby support (not defined) +! # RUBY_VER define to version of Ruby being used (16) +! # RUBY_VER_LONG same, but in format with dot. (1.6) +! # You must set RUBY_VER_LONG when changing RUBY_VER. +! # You must set RUBY_API_VER version to RUBY_VER_LONG. +! # Don't set ruby API version to RUBY_VER like 191. +! # DYNAMIC_RUBY no or yes: use yes to load the Ruby DLL dynamically (yes) +! # MZSCHEME define to path to MzScheme dir to get MZSCHEME support (not defined) +! # MZSCHEME_VER define to version of MzScheme being used (209_000) +! # DYNAMIC_MZSCHEME no or yes: use yes to load the MzScheme DLLs dynamically (yes) +! # MZSCHEME_DLLS path to MzScheme DLLs (libmzgc and libmzsch), for "static" build. +! # MZSCHEME_USE_RACKET define to use "racket" instead of "mzsch". +! # LUA define to path to Lua dir to get Lua support (not defined) +! # LUA_VER define to version of Lua being used (51) +! # DYNAMIC_LUA no or yes: use yes to load the Lua DLL dynamically (yes) +! # GETTEXT no or yes: set to yes for dynamic gettext support (yes) +! # ICONV no or yes: set to yes for dynamic iconv support (yes) +! # MBYTE no or yes: set to yes to include multibyte support (yes) +! # IME no or yes: set to yes to include IME support (yes) +! # DYNAMIC_IME no or yes: set to yes to load imm32.dll dynamically (yes) +! # OLE no or yes: set to yes to make OLE gvim (no) +! # DEBUG no or yes: set to yes if you wish a DEBUGging build (no) +! # CPUNR No longer supported, use ARCH. +! # ARCH i386 through pentium4: select -march argument to compile with +! # (i386) +! # USEDLL no or yes: set to yes to use the Runtime library DLL (no) +! # For USEDLL=yes the cygwin1.dll is required to run Vim. +! # For "no" the mingw-gcc-g++ package or the mingw64-i686-gcc-g++ +! # package is required to compile Vim. Or set CC to gcc-3 and add +! # -L/lib/w32api to EXTRA_LIBS. +! # POSTSCRIPT no or yes: set to yes for PostScript printing (no) +! # FEATURES TINY, SMALL, NORMAL, BIG or HUGE (BIG) +! # WINVER Lowest Win32 version to support. (0x0500) +! # CSCOPE no or yes: to include cscope interface support (yes) +! # OPTIMIZE SPACE, SPEED, or MAXSPEED: set optimization level (MAXSPEED) +! # NETBEANS no or yes: to include netbeans interface support (yes when GUI +! # is yes) +! # NBDEBUG no or yes: to include netbeans interface debugging support (no) +! # XPM define to path to XPM dir to get XPM image support (not defined) +! #>>>>> choose options: +! ifndef GUI +! GUI=yes +! endif +! +! ifndef FEATURES +! FEATURES = BIG +! endif +! +! ifndef GETTEXT +! GETTEXT = yes +! endif +! +! ifndef ICONV +! ICONV = yes +! endif +! +! ifndef MBYTE +! MBYTE = yes +! endif +! +! ifndef IME +! IME = yes +! endif +! +! ifndef ARCH +! ARCH = i386 +! endif +! +! ifndef DIRECTX +! DIRECTX = no +! endif +! +! ifndef WINVER +! WINVER = 0x0500 +! endif +! +! ifndef CSCOPE +! CSCOPE = yes +! endif +! +! ifndef NETBEANS +! ifeq ($(GUI),yes) +! NETBEANS = yes +! endif +! endif +! +! ifndef OPTIMIZE +! OPTIMIZE = MAXSPEED +! endif +! +! +! # Link against the shared version of libstdc++ by default. Set +! # STATIC_STDCPLUS to "yes" to link against static version instead. +! ifndef STATIC_STDCPLUS +! STATIC_STDCPLUS=no +! endif +! +! ### See feature.h for a list of optionals. +! ### Any other defines can be included here. +! +! DEFINES = -DWIN32 -DHAVE_PATHDEF -DFEAT_$(FEATURES) \ +! -DWINVER=$(WINVER) -D_WIN32_WINNT=$(WINVER) +! ifeq ($(ARCH),x86-64) +! DEFINES+=-DMS_WIN64 +! endif +! INCLUDES = -march=$(ARCH) -Iproto +! +! #>>>>> name of the compiler and linker, name of lib directory +! ifeq (yes, $(USEDLL)) +! # CROSS_COMPILE is used for the gvimext DLL. +! CROSS_COMPILE = i686-pc-mingw32- +! CC = gcc +! RC = windres +! else +! # i686-pc-mingw32-gcc, i686-w64-mingw32-gcc or gcc-3 can be used. + CROSS_COMPILE = i686-pc-mingw32- +! CC = $(CROSS_COMPILE)gcc +! RC = $(CROSS_COMPILE)windres +! endif +! +! ############################## +! # DYNAMIC_PERL=yes and no both work +! ############################## +! ifdef PERL +! DEFINES += -DFEAT_PERL +! INCLUDES += -I$(PERL)/lib/CORE +! EXTRA_OBJS += $(OUTDIR)/if_perl.o +! +! ifndef DYNAMIC_PERL +! DYNAMIC_PERL = yes +! endif +! +! ifndef PERL_VER +! PERL_VER = 56 +! endif +! +! ifeq (yes, $(DYNAMIC_PERL)) +! DEFINES += -DDYNAMIC_PERL -DDYNAMIC_PERL_DLL=\"perl$(PERL_VER).dll\" +! else +! EXTRA_LIBS += -L$(PERL)/lib/CORE -lperl$(PERL_VER) +! endif +! endif +! +! ############################## +! # DYNAMIC_PYTHON=yes works. +! # DYNAMIC_PYTHON=no does not (unresolved externals on link). +! ############################## +! ifdef PYTHON +! DEFINES += -DFEAT_PYTHON +! EXTRA_OBJS += $(OUTDIR)/if_python.o +! +! ifndef DYNAMIC_PYTHON +! DYNAMIC_PYTHON = yes +! endif +! +! ifndef PYTHON_VER +! PYTHON_VER = 22 +! endif +! +! ifeq (yes, $(DYNAMIC_PYTHON)) +! DEFINES += -DDYNAMIC_PYTHON -DDYNAMIC_PYTHON_DLL=\"python$(PYTHON_VER).dll\" +! else +! EXTRA_LIBS += $(PYTHON)/libs/python$(PYTHON_VER).lib +! endif +! endif +! +! ############################## +! # DYNAMIC_PYTHON3=yes works. +! # DYNAMIC_PYTHON3=no does not (unresolved externals on link). +! ############################## +! ifdef PYTHON3 +! DEFINES += -DFEAT_PYTHON3 +! EXTRA_OBJS += $(OUTDIR)/if_python3.o +! +! ifndef DYNAMIC_PYTHON3 +! DYNAMIC_PYTHON3 = yes +! endif +! +! ifndef PYTHON3_VER +! PYTHON3_VER = 31 +! endif +! +! ifeq (yes, $(DYNAMIC_PYTHON3)) +! DEFINES += -DDYNAMIC_PYTHON3 -DDYNAMIC_PYTHON3_DLL=\"python$(PYTHON3_VER).dll\" +! else +! EXTRA_LIBS += $(PYTHON3)/libs/python$(PYTHON3_VER).lib +! endif +! endif +! +! ############################## +! # DYNAMIC_RUBY=yes works. +! # DYNAMIC_RUBY=no does not (process exits). +! ############################## +! ifdef RUBY +! +! ifndef DYNAMIC_RUBY +! DYNAMIC_RUBY=yes +! endif +! # Set default value +! ifndef RUBY_VER +! RUBY_VER = 16 +! endif +! ifndef RUBY_VER_LONG +! RUBY_VER_LONG = 1.6 +! endif +! ifndef RUBY_API_VER +! RUBY_API_VER = $(subst .,,$(RUBY_VER_LONG)) +! endif +! +! ifndef RUBY_PLATFORM +! ifeq ($(RUBY_VER), 16) +! RUBY_PLATFORM = i586-mswin32 +! else +! ifneq ($(wildcard $(RUBY)/lib/ruby/$(RUBY_VER_LONG)/i386-mingw32),) +! RUBY_PLATFORM = i386-mingw32 +! else +! ifneq ($(wildcard $(RUBY)/lib/ruby/$(RUBY_VER_LONG)/x64-mingw32),) +! RUBY_PLATFORM = x64-mingw32 +! else +! RUBY_PLATFORM = i386-mswin32 +! endif +! endif +! endif +! endif +! +! ifndef RUBY_INSTALL_NAME +! ifeq ($(RUBY_VER), 16) +! RUBY_INSTALL_NAME = mswin32-ruby$(RUBY_API_VER) +! else +! ifeq ($(ARCH),x86-64) +! RUBY_INSTALL_NAME = x64-msvcrt-ruby$(RUBY_API_VER) +! else +! RUBY_INSTALL_NAME = msvcrt-ruby$(RUBY_API_VER) +! endif +! endif +! endif +! +! ifeq (19, $(word 1,$(sort 19 $(RUBY_VER)))) +! RUBY_19_OR_LATER = 1 +! endif +! +! DEFINES += -DFEAT_RUBY +! ifneq ($(findstring w64-mingw32,$(CC)),) +! # A workaround for mingw-w64 +! DEFINES += -DHAVE_STRUCT_TIMESPEC -DHAVE_STRUCT_TIMEZONE +! endif +! INCLUDES += -I$(RUBY)/lib/ruby/$(RUBY_VER_LONG)/$(RUBY_PLATFORM) +! ifdef RUBY_19_OR_LATER +! INCLUDES += -I$(RUBY)/include/ruby-$(RUBY_VER_LONG) -I$(RUBY)/include/ruby-$(RUBY_VER_LONG)/$(RUBY_PLATFORM) +! endif +! EXTRA_OBJS += $(OUTDIR)/if_ruby.o +! +! ifeq (yes, $(DYNAMIC_RUBY)) +! DEFINES += -DDYNAMIC_RUBY -DDYNAMIC_RUBY_DLL=\"$(RUBY_INSTALL_NAME).dll\" +! DEFINES += -DDYNAMIC_RUBY_VER=$(RUBY_VER) +! else +! EXTRA_LIBS += $(RUBY)/lib/$(RUBY_INSTALL_NAME) +! endif +! endif +! +! ############################## +! # DYNAMIC_MZSCHEME=yes works +! # DYNAMIC_MZSCHEME=no works too +! ############################## +! ifdef MZSCHEME +! DEFINES += -DFEAT_MZSCHEME +! INCLUDES += -I$(MZSCHEME)/include +! EXTRA_OBJS += $(OUTDIR)/if_mzsch.o +! +! ifndef DYNAMIC_MZSCHEME +! DYNAMIC_MZSCHEME = yes +! endif +! +! ifndef MZSCHEME_VER +! MZSCHEME_VER = 209_000 +! endif +! +! ifndef MZSCHEME_PRECISE_GC +! MZSCHEME_PRECISE_GC=no +! endif +! +! # for version 4.x we need to generate byte-code for Scheme base +! ifndef MZSCHEME_GENERATE_BASE +! MZSCHEME_GENERATE_BASE=no +! endif +! +! ifndef MZSCHEME_USE_RACKET +! MZSCHEME_MAIN_LIB=mzsch +! else +! MZSCHEME_MAIN_LIB=racket +! endif +! +! ifeq (yes, $(DYNAMIC_MZSCHEME)) +! DEFINES += -DDYNAMIC_MZSCHEME -DDYNAMIC_MZSCH_DLL=\"lib$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER).dll\" -DDYNAMIC_MZGC_DLL=\"libmzgc$(MZSCHEME_VER).dll\" +! else +! ifndef MZSCHEME_DLLS +! MZSCHEME_DLLS = $(MZSCHEME) +! endif +! ifeq (yes,$(MZSCHEME_PRECISE_GC)) +! MZSCHEME_LIB=-l$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER) +! else +! MZSCHEME_LIB = -l$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER) -lmzgc$(MZSCHEME_VER) +! endif +! EXTRA_LIBS += -L$(MZSCHEME_DLLS) -L$(MZSCHEME_DLLS)/lib $(MZSCHEME_LIB) +! endif +! ifeq (yes,$(MZSCHEME_GENERATE_BASE)) +! DEFINES += -DINCLUDE_MZSCHEME_BASE +! MZ_EXTRA_DEP += mzscheme_base.c +! endif +! ifeq (yes,$(MZSCHEME_PRECISE_GC)) +! DEFINES += -DMZ_PRECISE_GC +! endif +! endif +! +! ############################## +! # DYNAMIC_TCL=yes and no both work. +! ############################## +! ifdef TCL +! DEFINES += -DFEAT_TCL +! INCLUDES += -I$(TCL)/include +! EXTRA_OBJS += $(OUTDIR)/if_tcl.o +! +! ifndef DYNAMIC_TCL +! DYNAMIC_TCL = yes +! endif +! +! ifndef TCL_VER +! TCL_VER = 83 +! endif +! +! ifeq (yes, $(DYNAMIC_TCL)) +! DEFINES += -DDYNAMIC_TCL -DDYNAMIC_TCL_DLL=\"tcl$(TCL_VER).dll\" +! EXTRA_LIBS += $(TCL)/lib/tclstub$(TCL_VER).lib +! else +! EXTRA_LIBS += $(TCL)/lib/tcl$(TCL_VER).lib +! endif +! endif +! +! ############################## +! # DYNAMIC_LUA=yes works. +! # DYNAMIC_LUA=no does not (unresolved externals on link). +! ############################## +! ifdef LUA +! DEFINES += -DFEAT_LUA +! INCLUDES += -I$(LUA)/include +! EXTRA_OBJS += $(OUTDIR)/if_lua.o +! +! ifndef DYNAMIC_LUA +! DYNAMIC_LUA = yes +! endif +! +! ifndef LUA_VER +! LUA_VER = 51 +! endif +! +! ifeq (yes, $(DYNAMIC_LUA)) +! DEFINES += -DDYNAMIC_LUA -DDYNAMIC_LUA_DLL=\"lua$(LUA_VER).dll\" +! else +! EXTRA_LIBS += $(LUA)/lib/lua$(LUA_VER).lib +! endif +! endif +! +! ############################## +! ifeq (yes, $(GETTEXT)) +! DEFINES += -DDYNAMIC_GETTEXT +! endif +! +! ############################## +! ifeq (yes, $(ICONV)) +! DEFINES += -DDYNAMIC_ICONV +! endif +! +! ############################## +! ifeq (yes, $(MBYTE)) +! DEFINES += -DFEAT_MBYTE +! endif +! +! ############################## +! ifeq (yes, $(IME)) +! DEFINES += -DFEAT_MBYTE_IME +! +! ifndef DYNAMIC_IME +! DYNAMIC_IME = yes +! endif +! +! ifeq (yes, $(DYNAMIC_IME)) +! DEFINES += -DDYNAMIC_IME +! else +! EXTRA_LIBS += -limm32 +! endif +! endif +! +! ############################## +! ifeq (yes, $(DEBUG)) +! DEFINES += -DDEBUG +! INCLUDES += -g -fstack-check +! DEBUG_SUFFIX = d +! else +! +! ifeq ($(OPTIMIZE), SIZE) +! OPTFLAG = -Os +! else +! ifeq ($(OPTIMIZE), MAXSPEED) +! OPTFLAG = -O3 -fomit-frame-pointer -freg-struct-return +! else +! OPTFLAG = -O2 +! endif +! endif +! +! # A bug in the GCC <= 3.2 optimizer can cause a crash. The +! # following option removes the problem optimization. +! OPTFLAG += -fno-strength-reduce +! +! INCLUDES += -s +! +! endif +! +! ############################## +! # USEDLL=yes will build a Cygwin32 executable that relies on cygwin1.dll. +! # USEDLL=no will build a Mingw32 executable with no extra dll dependencies. +! ############################## +! ifeq (yes, $(USEDLL)) +! DEFINES += -D_MAX_PATH=256 -D__CYGWIN__ +! endif +! +! ############################## +! ifeq (yes, $(POSTSCRIPT)) +! DEFINES += -DMSWINPS +! endif +! +! ############################## +! ifeq (yes, $(CSCOPE)) +! DEFINES += -DFEAT_CSCOPE +! EXTRA_OBJS += $(OUTDIR)/if_cscope.o +! endif +! +! ############################## +! ifeq ($(GUI),yes) +! +! ############################## +! ifeq (yes, $(NETBEANS)) +! # Only allow NETBEANS for a GUI build. +! DEFINES += -DFEAT_NETBEANS_INTG +! EXTRA_OBJS += $(OUTDIR)/netbeans.o +! EXTRA_LIBS += -lwsock32 +! +! ifeq (yes, $(NBDEBUG)) +! DEFINES += -DNBDEBUG +! NBDEBUG_DEP = nbdebug.h nbdebug.c +! endif +! +! endif +! +! ############################## +! ifeq (yes, $(DIRECTX)) +! # Only allow DIRECTX for a GUI build. +! DEFINES += -DFEAT_DIRECTX -DDYNAMIC_DIRECTX +! EXTRA_OBJS += $(OUTDIR)/gui_dwrite.o +! EXTRA_LIBS += -ld2d1 -ldwrite +! USE_STDCPLUS = yes +! endif +! +! ############################## +! ifndef XPM +! ifeq ($(ARCH),i386) +! XPM = xpm/x86 +! endif +! ifeq ($(ARCH),i486) +! XPM = xpm/x86 +! endif +! ifeq ($(ARCH),i586) +! XPM = xpm/x86 +! endif +! ifeq ($(ARCH),i686) +! XPM = xpm/x86 +! endif +! ifeq ($(ARCH),x86-64) +! XPM = xpm/x64 +! endif +! endif +! ifdef XPM +! ifneq ($(XPM),no) +! # Only allow XPM for a GUI build. +! DEFINES += -DFEAT_XPM_W32 +! INCLUDES += -I$(XPM)/include -I$(XPM)/../include +! EXTRA_OBJS += $(OUTDIR)/xpm_w32.o +! EXTRA_LIBS += -L$(XPM)/lib -lXpm +! endif +! endif +! +! ############################## +! EXE = gvim$(DEBUG_SUFFIX).exe +! OUTDIR = gobj$(DEBUG_SUFFIX) +! DEFINES += -DFEAT_GUI_W32 -DFEAT_CLIPBOARD +! EXTRA_OBJS += $(OUTDIR)/gui.o $(OUTDIR)/gui_w32.o $(OUTDIR)/gui_beval.o $(OUTDIR)/os_w32exe.o +! EXTRA_LIBS += -mwindows -lcomctl32 -lversion +! else +! EXE = vim$(DEBUG_SUFFIX).exe +! OUTDIR = obj$(DEBUG_SUFFIX) +! LIBS += -luser32 -lgdi32 -lcomdlg32 +! endif +! +! ############################## +! ifeq (yes, $(OLE)) +! DEFINES += -DFEAT_OLE +! EXTRA_OBJS += $(OUTDIR)/if_ole.o +! EXTRA_LIBS += -loleaut32 +! USE_STDCPLUS = yes +! endif +! +! ############################## +! ifneq (sh.exe, $(SHELL)) +! DEL = rm +! MKDIR = mkdir -p +! DIRSLASH = / +! else +! DEL = del +! MKDIR = mkdir +! DIRSLASH = \\ +! endif +! +! ############################## +! ifeq (yes, $(USE_STDCPLUS)) +! ifeq (yes, $(STATIC_STDCPLUS)) +! EXTRA_LIBS += -Wl,-Bstatic -lstdc++ -Wl,-Bdynamic +! else +! EXTRA_LIBS += -lstdc++ +! endif +! endif +! +! #>>>>> end of choices +! ########################################################################### +! +! INCL = vim.h globals.h option.h keymap.h macros.h ascii.h term.h os_win32.h \ +! structs.h version.h +! +! CFLAGS = $(OPTFLAG) $(DEFINES) $(INCLUDES) +! +! RCFLAGS = -O coff $(DEFINES) +! +! OBJ = \ +! $(OUTDIR)/blowfish.o \ +! $(OUTDIR)/buffer.o \ +! $(OUTDIR)/charset.o \ +! $(OUTDIR)/crypt.o \ +! $(OUTDIR)/crypt_zip.o \ +! $(OUTDIR)/diff.o \ +! $(OUTDIR)/digraph.o \ +! $(OUTDIR)/edit.o \ +! $(OUTDIR)/eval.o \ +! $(OUTDIR)/ex_cmds.o \ +! $(OUTDIR)/ex_cmds2.o \ +! $(OUTDIR)/ex_docmd.o \ +! $(OUTDIR)/ex_eval.o \ +! $(OUTDIR)/ex_getln.o \ +! $(OUTDIR)/fileio.o \ +! $(OUTDIR)/fold.o \ +! $(OUTDIR)/getchar.o \ +! $(OUTDIR)/hardcopy.o \ +! $(OUTDIR)/hashtab.o \ +! $(OUTDIR)/main.o \ +! $(OUTDIR)/mark.o \ +! $(OUTDIR)/memfile.o \ +! $(OUTDIR)/memline.o \ +! $(OUTDIR)/menu.o \ +! $(OUTDIR)/message.o \ +! $(OUTDIR)/misc1.o \ +! $(OUTDIR)/misc2.o \ +! $(OUTDIR)/move.o \ +! $(OUTDIR)/mbyte.o \ +! $(OUTDIR)/normal.o \ +! $(OUTDIR)/ops.o \ +! $(OUTDIR)/option.o \ +! $(OUTDIR)/os_win32.o \ +! $(OUTDIR)/os_mswin.o \ +! $(OUTDIR)/winclip.o \ +! $(OUTDIR)/pathdef.o \ +! $(OUTDIR)/popupmnu.o \ +! $(OUTDIR)/quickfix.o \ +! $(OUTDIR)/regexp.o \ +! $(OUTDIR)/screen.o \ +! $(OUTDIR)/search.o \ +! $(OUTDIR)/sha256.o \ +! $(OUTDIR)/spell.o \ +! $(OUTDIR)/syntax.o \ +! $(OUTDIR)/tag.o \ +! $(OUTDIR)/term.o \ +! $(OUTDIR)/ui.o \ +! $(OUTDIR)/undo.o \ +! $(OUTDIR)/version.o \ +! $(OUTDIR)/vimrc.o \ +! $(OUTDIR)/window.o \ +! $(EXTRA_OBJS) +! +! all: $(EXE) xxd/xxd.exe vimrun.exe install.exe uninstal.exe GvimExt/gvimext.dll +! +! # According to the Cygwin doc 1.2 FAQ, kernel32 should not be specified for +! # linking unless calling ld directly. +! # See /usr/doc/cygwin-doc-1.2/html/faq_toc.html#TOC93 for more information. +! $(EXE): $(OUTDIR) $(OBJ) +! $(CC) $(CFLAGS) -o $(EXE) $(OBJ) $(LIBS) -luuid -lole32 $(EXTRA_LIBS) +! +! xxd/xxd.exe: xxd/xxd.c +! $(MAKE) -C xxd -f Make_cyg.mak CC=$(CC) USEDLL=$(USEDLL) +! +! GvimExt/gvimext.dll: GvimExt/gvimext.cpp GvimExt/gvimext.rc GvimExt/gvimext.h +! $(MAKE) -C GvimExt -f Make_cyg.mak CROSS_COMPILE=$(CROSS_COMPILE) +! +! vimrun.exe: vimrun.c +! $(CC) $(CFLAGS) -o vimrun.exe vimrun.c $(LIBS) +! +! install.exe: dosinst.c +! $(CC) $(CFLAGS) -o install.exe dosinst.c $(LIBS) -luuid -lole32 +! +! uninstal.exe: uninstal.c +! $(CC) $(CFLAGS) -o uninstal.exe uninstal.c $(LIBS) +! +! $(OUTDIR): +! $(MKDIR) $(OUTDIR) +! +! tags: +! command /c ctags *.c $(INCL) +! +! clean: +! -$(DEL) $(OUTDIR)$(DIRSLASH)*.o +! -rmdir $(OUTDIR) +! -$(DEL) $(EXE) vimrun.exe install.exe uninstal.exe +! ifdef PERL +! -$(DEL) if_perl.c +! endif +! ifdef MZSCHEME +! -$(DEL) mzscheme_base.c +! endif +! -$(DEL) pathdef.c +! $(MAKE) -C xxd -f Make_cyg.mak clean +! $(MAKE) -C GvimExt -f Make_cyg.mak clean +! +! distclean: clean +! -$(DEL) obj$(DIRSLASH)*.o +! -rmdir obj +! -$(DEL) gobj$(DIRSLASH)*.o +! -rmdir gobj +! -$(DEL) objd$(DIRSLASH)*.o +! -rmdir objd +! -$(DEL) gobjd$(DIRSLASH)*.o +! -rmdir gobjd +! -$(DEL) *.exe +! +! ########################################################################### +! +! $(OUTDIR)/%.o : %.c $(INCL) +! $(CC) -c $(CFLAGS) $< -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_w32.o: gui_w32.c gui_w48.c $(INCL) +! $(CC) -c $(CFLAGS) gui_w32.c -o $(OUTDIR)/gui_w32.o +! +! $(OUTDIR)/gui_dwrite.o: gui_dwrite.cpp $(INCL) gui_dwrite.h +! $(CC) -c $(CFLAGS) gui_dwrite.cpp -o $(OUTDIR)/gui_dwrite.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_ole.o: if_ole.cpp $(INCL) +! $(CC) -c $(CFLAGS) if_ole.cpp -o $(OUTDIR)/if_ole.o +! +! $(OUTDIR)/if_python.o : if_python.c if_py_both.h $(INCL) +! $(CC) -c $(CFLAGS) -I$(PYTHON)/include $< -o $@ +! +! $(OUTDIR)/if_python3.o : if_python3.c if_py_both.h $(INCL) +! $(CC) -c $(CFLAGS) -I$(PYTHON3)/include $< -o $@ +! +! if_perl.c: if_perl.xs typemap +! $(PERL)/bin/perl `cygpath -d $(PERL)/lib/ExtUtils/xsubpp` \ +! -prototypes -typemap \ +! `cygpath -d $(PERL)/lib/ExtUtils/typemap` if_perl.xs > $@ +! +! $(OUTDIR)/if_perl.o: if_perl.c $(INCL) +! ifeq (yes, $(USEDLL)) +! $(CC) -c $(CFLAGS) -I/usr/include/mingw -D__MINGW32__ if_perl.c -o $(OUTDIR)/if_perl.o +! endif +! +! $(OUTDIR)/if_ruby.o: if_ruby.c $(INCL) +! ifeq (16, $(RUBY_VER)) +! $(CC) -c $(CFLAGS) -U_WIN32 if_ruby.c -o $(OUTDIR)/if_ruby.o +! endif +! +! $(OUTDIR)/netbeans.o: netbeans.c $(INCL) $(NBDEBUG_DEP) +! $(CC) -c $(CFLAGS) netbeans.c -o $(OUTDIR)/netbeans.o +! +! $(OUTDIR)/regexp.o: regexp.c regexp_nfa.c $(INCL) +! $(CC) -c $(CFLAGS) regexp.c -o $(OUTDIR)/regexp.o +! +! $(OUTDIR)/if_mzsch.o: if_mzsch.c $(INCL) if_mzsch.h $(MZ_EXTRA_DEP) +! $(CC) -c $(CFLAGS) if_mzsch.c -o $(OUTDIR)/if_mzsch.o +! +! $(OUTDIR)/vimrc.o: vim.rc version.h gui_w32_rc.h +! $(RC) $(RCFLAGS) vim.rc -o $(OUTDIR)/vimrc.o +! +! mzscheme_base.c: +! $(MZSCHEME)/mzc --c-mods mzscheme_base.c ++lib scheme/base +! +! pathdef.c: $(INCL) +! ifneq (sh.exe, $(SHELL)) +! @echo creating pathdef.c +! @echo '/* pathdef.c */' > pathdef.c +! @echo '#include "vim.h"' >> pathdef.c +! @echo 'char_u *default_vim_dir = (char_u *)"$(VIMRCLOC)";' >> pathdef.c +! @echo 'char_u *default_vimruntime_dir = (char_u *)"$(VIMRUNTIMEDIR)";' >> pathdef.c +! @echo 'char_u *all_cflags = (char_u *)"$(CC) $(CFLAGS)";' >> pathdef.c +! @echo 'char_u *all_lflags = (char_u *)"$(CC) -s -o $(EXE) $(LIBS) -luuid -lole32 $(EXTRA_LIBS)";' >> pathdef.c +! @echo 'char_u *compiled_user = (char_u *)"$(USERNAME)";' >> pathdef.c +! @echo 'char_u *compiled_sys = (char_u *)"$(USERDOMAIN)";' >> pathdef.c +! else +! @echo creating pathdef.c +! @echo /* pathdef.c */ > pathdef.c +! @echo #include "vim.h" >> pathdef.c +! @echo char_u *default_vim_dir = (char_u *)"$(VIMRCLOC)"; >> pathdef.c +! @echo char_u *default_vimruntime_dir = (char_u *)"$(VIMRUNTIMEDIR)"; >> pathdef.c +! @echo char_u *all_cflags = (char_u *)"$(CC) $(CFLAGS)"; >> pathdef.c +! @echo char_u *all_lflags = (char_u *)"$(CC) -s -o $(EXE) $(LIBS) -luuid -lole32 $(EXTRA_LIBS)"; >> pathdef.c +! @echo char_u *compiled_user = (char_u *)"$(USERNAME)"; >> pathdef.c +! @echo char_u *compiled_sys = (char_u *)"$(USERDOMAIN)"; >> pathdef.c +! endif + +--- 1,52 ---- + # +! # Makefile for VIM on Win32, using MinGW cross compiler on Cygwin + # + # Also read INSTALLpc.txt! + # + # This compiles Vim as a Windows application. If you want Vim to run as a + # Cygwin application use the Makefile (just like on Unix). + # +! # The old Make_cyg.mak (maintained by Dan Sharp et al.) was merged into +! # Make_cyg_ming.mak. Note: USEDLL option was removed. +! # This file contains Cygwin specific settings. Common settings are contained +! # in Make_cyg_ming.mak. +! # +! # Last updated by Ken Takata. +! # Last Change: 2014 Oct 21 +! +! +! # uncomment 'PERL' if you want a perl-enabled version +! #PERL=/cygdrive/c/perl +! +! # uncomment 'LUA' if you want a Lua-enabled version +! #LUA=/cygdrive/c/lua +! +! # uncomment 'MZSCHEME' if you want a MzScheme-enabled version +! #MZSCHEME=/cygdrive/d/plt +! +! # uncomment 'PYTHON' if you want a python-enabled version +! #PYTHON=/cygdrive/c/python20 +! +! # uncomment 'PYTHON3' if you want a python3-enabled version +! #PYTHON3=/cygdrive/c/python31 +! +! # uncomment 'TCL' if you want a Tcl-enabled version +! #TCL=/cygdrive/c/tcl +! +! # uncomment 'RUBY' if you want a Ruby-enabled version +! #RUBY=/cygdribe/c/ruby +! +! +! # Use MinGW(-w64) cross compiler. +! # There are three MinGW packages in Cygwin: +! # 32-bit: mingw-gcc-g++ and mingw64-i686-gcc-g++ +! # 64-bit: mingw64-x86_64-gcc-g++ +! # You may also need to set 'ARCH' in Make_cyg_ming.mak. + CROSS_COMPILE = i686-pc-mingw32- +! #CROSS_COMPILE = i686-w64-mingw32- +! #CROSS_COMPILE = x86_64-w64-mingw32- +! + ++ # Do not change this. ++ UNDER_CYGWIN = yes ++ include Make_cyg_ming.mak +*** ../vim-7.4.495/src/Make_cyg_ming.mak 2014-11-05 13:51:13.916809371 +0100 +--- src/Make_cyg_ming.mak 2014-11-05 13:49:27.076811946 +0100 +*************** +*** 0 **** +--- 1,847 ---- ++ # Makefile for VIM on Win32 (Cygwin and MinGW) ++ # ++ # This file contains common part for Cygwin and MinGW and it is included ++ # from Make_cyg.mak and Make_ming.mak. ++ # ++ # Info at http://www.mingw.org ++ # Alternative x86 and 64-builds: http://mingw-w64.sourceforge.net ++ # Also requires GNU make, which you can download from the same sites. ++ # Get missing libraries from http://gnuwin32.sf.net. ++ # ++ # Tested on Win32 NT 4 and Win95. ++ # ++ # To make everything, just 'make -f Make_ming.mak'. ++ # To make just e.g. gvim.exe, 'make -f Make_ming.mak gvim.exe'. ++ # After a run, you can 'make -f Make_ming.mak clean' to clean up. ++ # ++ # NOTE: Sometimes 'GNU Make' will stop after building vimrun.exe -- I think ++ # it's just run out of memory or something. Run again, and it will continue ++ # with 'xxd'. ++ # ++ # "make upx" makes *compressed* versions of the 32 bit GUI and console EXEs, ++ # using the excellent UPX compressor: ++ # http://upx.sourceforge.net/ ++ # "make mpress" uses the MPRESS compressor for 32- and 64-bit EXEs: ++ # http://www.matcode.com/mpress.htm ++ # ++ # Maintained by Ron Aaron <ronaharon@yahoo.com> et al. ++ # Updated 2014 Oct 13. ++ ++ #>>>>> choose options: ++ # set to yes for a debug build ++ DEBUG=no ++ # set to SIZE for size, SPEED for speed, MAXSPEED for maximum optimization ++ OPTIMIZE=MAXSPEED ++ # set to yes to make gvim, no for vim ++ GUI=yes ++ # set to yes if you want to use DirectWrite (DirectX) ++ # MinGW-w64 is needed, and ARCH should be set to i686 or x86-64. ++ DIRECTX=no ++ # FEATURES=[TINY | SMALL | NORMAL | BIG | HUGE] ++ # Set to TINY to make minimal version (few features). ++ FEATURES=BIG ++ # Set to one of i386, i486, i586, i686 as the minimum target processor. ++ # For amd64/x64 architecture set ARCH=x86-64 . ++ ARCH=i386 ++ # 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'. ++ #ICONV="." ++ ICONV=yes ++ GETTEXT=yes ++ # Set to yes to include multibyte support. ++ MBYTE=yes ++ # Set to yes to include IME support. ++ IME=yes ++ DYNAMIC_IME=yes ++ # Set to yes to enable writing a postscript file with :hardcopy. ++ POSTSCRIPT=no ++ # Set to yes to enable OLE support. ++ OLE=no ++ # Set the default $(WINVER) to make it work with pre-Win2k. ++ ifndef WINVER ++ WINVER = 0x0500 ++ endif ++ # Set to yes to enable Cscope support. ++ CSCOPE=yes ++ # Set to yes to enable Netbeans support. ++ NETBEANS=$(GUI) ++ ++ ++ # Link against the shared version of libstdc++ by default. Set ++ # STATIC_STDCPLUS to "yes" to link against static version instead. ++ ifndef STATIC_STDCPLUS ++ STATIC_STDCPLUS=no ++ endif ++ ++ # If the user doesn't want gettext, undefine it. ++ ifeq (no, $(GETTEXT)) ++ GETTEXT= ++ endif ++ # Added by E.F. Amatria <eferna1@platea.ptic.mec.es> 2001 Feb 23 ++ # Uncomment the first line and one of the following three if you want Native Language ++ # Support. You'll need gnu_gettext.win32, a MINGW32 Windows PORT of gettext by ++ # Franco Bez <franco.bez@gmx.de>. It may be found at ++ # http://home.a-city.de/franco.bez/gettext/gettext_win32_en.html ++ # Tested with mingw32 with GCC-2.95.2 on Win98 ++ # Updated 2001 Jun 9 ++ #GETTEXT=c:/gettext.win32.msvcrt ++ #STATIC_GETTEXT=USE_STATIC_GETTEXT ++ #DYNAMIC_GETTEXT=USE_GETTEXT_DLL ++ #DYNAMIC_GETTEXT=USE_SAFE_GETTEXT_DLL ++ SAFE_GETTEXT_DLL_OBJ = $(GETTEXT)/src/safe_gettext_dll/safe_gettext_dll.o ++ # Alternatively, if you uncomment the two following lines, you get a "safe" version ++ # without linking the safe_gettext_dll.o object file. ++ #DYNAMIC_GETTEXT=DYNAMIC_GETTEXT ++ #GETTEXT_DYNAMIC=gnu_gettext.dll ++ INTLPATH=$(GETTEXT)/lib/mingw32 ++ INTLLIB=gnu_gettext ++ ++ # If you are using gettext-0.10.35 from http://sourceforge.net/projects/gettext ++ # or gettext-0.10.37 from http://sourceforge.net/projects/mingwrep/ ++ # uncomment the following, but I can't build a static version with them, ?-(| ++ #GETTEXT=c:/gettext-0.10.37-20010430 ++ #STATIC_GETTEXT=USE_STATIC_GETTEXT ++ #DYNAMIC_GETTEXT=DYNAMIC_GETTEXT ++ #INTLPATH=$(GETTEXT)/lib ++ #INTLLIB=intl ++ ++ # Perl interface: ++ # PERL=[Path to Perl directory] (Set inside Make_cyg.mak or Make_ming.mak) ++ # DYNAMIC_PERL=yes (to load the Perl DLL dynamically) ++ # PERL_VER=[Perl version, eg 56, 58, 510] (default is 56) ++ ifdef PERL ++ ifndef PERL_VER ++ PERL_VER=56 ++ endif ++ ifndef DYNAMIC_PERL ++ DYNAMIC_PERL=yes ++ endif ++ # on Linux, for cross-compile, it's here: ++ #PERLLIB=/home/ron/ActivePerl/lib ++ # on NT, it's here: ++ PERLEXE=$(PERL)/bin/perl ++ PERLLIB=$(PERL)/lib ++ PERLLIBS=$(PERLLIB)/Core ++ ifeq ($(UNDER_CYGWIN),yes) ++ PERLTYPEMAP:=$(shell cygpath -m $(PERLLIB)/ExtUtils/typemap) ++ XSUBPPTRY:=$(shell cygpath -m $(PERLLIB)/ExtUtils/xsubpp) ++ else ++ PERLTYPEMAP=$(PERLLIB)/ExtUtils/typemap ++ XSUBPPTRY=$(PERLLIB)/ExtUtils/xsubpp ++ endif ++ XSUBPP_EXISTS=$(shell $(PERLEXE) -e "print 1 unless -e '$(XSUBPPTRY)'") ++ ifeq "$(XSUBPP_EXISTS)" "" ++ XSUBPP=$(PERLEXE) "$(XSUBPPTRY)" ++ else ++ XSUBPP=xsubpp ++ endif ++ endif ++ ++ # Lua interface: ++ # LUA=[Path to Lua directory] (Set inside Make_cyg.mak or Make_ming.mak) ++ # DYNAMIC_LUA=yes (to load the Lua DLL dynamically) ++ # LUA_VER=[Lua version, eg 51, 52] (default is 51) ++ ifdef LUA ++ ifndef DYNAMIC_LUA ++ DYNAMIC_LUA=yes ++ endif ++ ++ ifndef LUA_VER ++ LUA_VER=51 ++ endif ++ ++ ifeq (no,$(DYNAMIC_LUA)) ++ LUA_LIB = -L$(LUA)/lib -llua ++ endif ++ ++ endif ++ ++ # MzScheme interface: ++ # MZSCHEME=[Path to MzScheme directory] (Set inside Make_cyg.mak or Make_ming.mak) ++ # DYNAMIC_MZSCHEME=yes (to load the MzScheme DLL dynamically) ++ # MZSCHEME_VER=[MzScheme version] (default is 205_000) ++ # MZSCHEME_DEBUG=no ++ ifdef MZSCHEME ++ ifndef DYNAMIC_MZSCHEME ++ DYNAMIC_MZSCHEME=yes ++ endif ++ ++ ifndef MZSCHEME_VER ++ MZSCHEME_VER=205_000 ++ endif ++ ++ ifndef MZSCHEME_PRECISE_GC ++ MZSCHEME_PRECISE_GC=no ++ endif ++ ++ # for version 4.x we need to generate byte-code for Scheme base ++ ifndef MZSCHEME_GENERATE_BASE ++ MZSCHEME_GENERATE_BASE=no ++ endif ++ ++ ifndef MZSCHEME_USE_RACKET ++ MZSCHEME_MAIN_LIB=mzsch ++ else ++ MZSCHEME_MAIN_LIB=racket ++ endif ++ ++ ifeq (no,$(DYNAMIC_MZSCHEME)) ++ ifeq (yes,$(MZSCHEME_PRECISE_GC)) ++ MZSCHEME_LIB=-l$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER) ++ else ++ MZSCHEME_LIB = -l$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER) -lmzgc$(MZSCHEME_VER) ++ endif ++ # the modern MinGW can dynamically link to dlls directly. ++ # point MZSCHEME_DLLS to where you put libmzschXXXXXXX.dll and libgcXXXXXXX.dll ++ ifndef MZSCHEME_DLLS ++ MZSCHEME_DLLS=$(MZSCHEME) ++ endif ++ MZSCHEME_LIBDIR=-L$(MZSCHEME_DLLS) -L$(MZSCHEME_DLLS)\lib ++ endif ++ ++ endif ++ ++ # Python interface: ++ # PYTHON=[Path to Python directory] (Set inside Make_cyg.mak or Make_ming.mak) ++ # DYNAMIC_PYTHON=yes (to load the Python DLL dynamically) ++ # PYTHON_VER=[Python version, eg 22, 23, ..., 27] (default is 22) ++ ifdef PYTHON ++ ifndef DYNAMIC_PYTHON ++ DYNAMIC_PYTHON=yes ++ endif ++ ++ ifndef PYTHON_VER ++ PYTHON_VER=22 ++ endif ++ ++ ifeq (no,$(DYNAMIC_PYTHON)) ++ PYTHONLIB=-L$(PYTHON)/libs -lpython$(PYTHON_VER) ++ endif ++ # my include files are in 'win32inc' on Linux, and 'include' in the standard ++ # NT distro (ActiveState) ++ ifeq ($(CROSS),no) ++ PYTHONINC=-I $(PYTHON)/include ++ else ++ PYTHONINC=-I $(PYTHON)/win32inc ++ endif ++ endif ++ ++ # Python3 interface: ++ # PYTHON3=[Path to Python3 directory] (Set inside Make_cyg.mak or Make_ming.mak) ++ # DYNAMIC_PYTHON3=yes (to load the Python3 DLL dynamically) ++ # PYTHON3_VER=[Python3 version, eg 31, 32] (default is 31) ++ ifdef PYTHON3 ++ ifndef DYNAMIC_PYTHON3 ++ DYNAMIC_PYTHON3=yes ++ endif ++ ++ ifndef PYTHON3_VER ++ PYTHON3_VER=31 ++ endif ++ ++ ifeq (no,$(DYNAMIC_PYTHON3)) ++ PYTHON3LIB=-L$(PYTHON3)/libs -lPYTHON$(PYTHON3_VER) ++ endif ++ ++ ifeq ($(CROSS),no) ++ PYTHON3INC=-I $(PYTHON3)/include ++ else ++ PYTHON3INC=-I $(PYTHON3)/win32inc ++ endif ++ endif ++ ++ # TCL interface: ++ # TCL=[Path to TCL directory] (Set inside Make_cyg.mak or Make_ming.mak) ++ # DYNAMIC_TCL=yes (to load the TCL DLL dynamically) ++ # TCL_VER=[TCL version, eg 83, 84] (default is 83) ++ ifdef TCL ++ ifndef DYNAMIC_TCL ++ DYNAMIC_TCL=yes ++ endif ++ ifndef TCL_VER ++ TCL_VER = 83 ++ endif ++ TCLINC += -I$(TCL)/include ++ endif ++ ++ ++ # Ruby interface: ++ # RUBY=[Path to Ruby directory] (Set inside Make_cyg.mak or Make_ming.mak) ++ # DYNAMIC_RUBY=yes (to load the Ruby DLL dynamically) ++ # RUBY_VER=[Ruby version, eg 18, 19, 20] (default is 18) ++ # RUBY_VER_LONG=[Ruby version, eg 1.8, 1.9.1, 2.0.0] (default is 1.8) ++ # You must set RUBY_VER_LONG when changing RUBY_VER. ++ # RUBY_API_VER is derived from RUBY_VER_LONG. ++ # Note: If you use Ruby 1.9.3, set as follows: ++ # RUBY_VER=19 ++ # RUBY_VER_LONG=1.9.1 (not 1.9.3, because the API version is 1.9.1.) ++ ifdef RUBY ++ ifndef DYNAMIC_RUBY ++ DYNAMIC_RUBY=yes ++ endif ++ # Set default value ++ ifndef RUBY_VER ++ RUBY_VER = 18 ++ endif ++ ifndef RUBY_VER_LONG ++ RUBY_VER_LONG = 1.8 ++ endif ++ ifndef RUBY_API_VER ++ RUBY_API_VER = $(subst .,,$(RUBY_VER_LONG)) ++ endif ++ ++ ifndef RUBY_PLATFORM ++ ifeq ($(RUBY_VER), 16) ++ RUBY_PLATFORM = i586-mswin32 ++ else ++ ifneq ($(wildcard $(RUBY)/lib/ruby/$(RUBY_VER_LONG)/i386-mingw32),) ++ RUBY_PLATFORM = i386-mingw32 ++ else ++ ifneq ($(wildcard $(RUBY)/lib/ruby/$(RUBY_VER_LONG)/x64-mingw32),) ++ RUBY_PLATFORM = x64-mingw32 ++ else ++ RUBY_PLATFORM = i386-mswin32 ++ endif ++ endif ++ endif ++ endif ++ ++ ifndef RUBY_INSTALL_NAME ++ ifeq ($(RUBY_VER), 16) ++ RUBY_INSTALL_NAME = mswin32-ruby$(RUBY_API_VER) ++ else ++ ifeq ($(ARCH),x86-64) ++ RUBY_INSTALL_NAME = x64-msvcrt-ruby$(RUBY_API_VER) ++ else ++ RUBY_INSTALL_NAME = msvcrt-ruby$(RUBY_API_VER) ++ endif ++ endif ++ endif ++ ++ ifeq (19, $(word 1,$(sort 19 $(RUBY_VER)))) ++ RUBY_19_OR_LATER = 1 ++ endif ++ ++ RUBYINC = -I $(RUBY)/lib/ruby/$(RUBY_VER_LONG)/$(RUBY_PLATFORM) ++ ifdef RUBY_19_OR_LATER ++ RUBYINC += -I $(RUBY)/include/ruby-$(RUBY_VER_LONG) -I $(RUBY)/include/ruby-$(RUBY_VER_LONG)/$(RUBY_PLATFORM) ++ endif ++ ifeq (no, $(DYNAMIC_RUBY)) ++ RUBYLIB = -L$(RUBY)/lib -l$(RUBY_INSTALL_NAME) ++ endif ++ ++ endif # RUBY ++ ++ # See feature.h for a list of options. ++ # Any other defines can be included here. ++ DEF_GUI=-DFEAT_GUI_W32 -DFEAT_CLIPBOARD ++ DEFINES=-DWIN32 -DWINVER=$(WINVER) -D_WIN32_WINNT=$(WINVER) \ ++ -DHAVE_PATHDEF -DFEAT_$(FEATURES) ++ ifeq ($(ARCH),x86-64) ++ DEFINES+=-DMS_WIN64 ++ endif ++ ifeq ($(CROSS),yes) ++ # cross-compiler prefix: ++ ifndef CROSS_COMPILE ++ CROSS_COMPILE = i586-pc-mingw32msvc- ++ endif ++ DEL = rm ++ MKDIR = mkdir -p ++ DIRSLASH = / ++ else ++ # normal (Windows) compilation: ++ ifndef CROSS_COMPILE ++ CROSS_COMPILE = ++ endif ++ ifneq (sh.exe, $(SHELL)) ++ DEL = rm ++ MKDIR = mkdir -p ++ DIRSLASH = / ++ else ++ DEL = del ++ MKDIR = mkdir ++ DIRSLASH = \\ ++ endif ++ endif ++ CC := $(CROSS_COMPILE)gcc ++ CXX := $(CROSS_COMPILE)g++ ++ WINDRES := $(CROSS_COMPILE)windres ++ WINDRES_CC = $(CC) ++ ++ #>>>>> end of choices ++ ########################################################################### ++ ++ CFLAGS = -Iproto $(DEFINES) -pipe -w -march=$(ARCH) -Wall ++ WINDRES_FLAGS = --preprocessor="$(WINDRES_CC) -E -xc" -DRC_INVOKED ++ EXTRA_LIBS = ++ ++ ifdef GETTEXT ++ DEFINES += -DHAVE_GETTEXT -DHAVE_LOCALE_H ++ GETTEXTINCLUDE = $(GETTEXT)/include ++ GETTEXTLIB = $(INTLPATH) ++ ifeq (yes, $(GETTEXT)) ++ DEFINES += -DDYNAMIC_GETTEXT ++ else ++ ifdef DYNAMIC_GETTEXT ++ DEFINES += -D$(DYNAMIC_GETTEXT) ++ ifdef GETTEXT_DYNAMIC ++ DEFINES += -DGETTEXT_DYNAMIC -DGETTEXT_DLL=\"$(GETTEXT_DYNAMIC)\" ++ endif ++ endif ++ endif ++ endif ++ ++ ifdef PERL ++ CFLAGS += -I$(PERLLIBS) -DFEAT_PERL ++ ifeq (yes, $(DYNAMIC_PERL)) ++ CFLAGS += -DDYNAMIC_PERL -DDYNAMIC_PERL_DLL=\"perl$(PERL_VER).dll\" ++ EXTRA_LIBS += -L$(PERLLIBS) -lperl$(PERL_VER) ++ endif ++ endif ++ ++ ifdef LUA ++ CFLAGS += -I$(LUA)/include -I$(LUA) -DFEAT_LUA ++ ifeq (yes, $(DYNAMIC_LUA)) ++ CFLAGS += -DDYNAMIC_LUA -DDYNAMIC_LUA_DLL=\"lua$(LUA_VER).dll\" ++ endif ++ endif ++ ++ ifdef MZSCHEME ++ CFLAGS += -I$(MZSCHEME)/include -DFEAT_MZSCHEME -DMZSCHEME_COLLECTS=\"$(MZSCHEME)/collects\" ++ ifeq (yes, $(DYNAMIC_MZSCHEME)) ++ CFLAGS += -DDYNAMIC_MZSCHEME -DDYNAMIC_MZSCH_DLL=\"lib$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER).dll\" -DDYNAMIC_MZGC_DLL=\"libmzgc$(MZSCHEME_VER).dll\" ++ endif ++ ifeq (yes, "$(MZSCHEME_DEBUG)") ++ CFLAGS += -DMZSCHEME_FORCE_GC ++ endif ++ endif ++ ++ ifdef RUBY ++ CFLAGS += -DFEAT_RUBY $(RUBYINC) ++ ifeq (yes, $(DYNAMIC_RUBY)) ++ CFLAGS += -DDYNAMIC_RUBY -DDYNAMIC_RUBY_DLL=\"$(RUBY_INSTALL_NAME).dll\" ++ CFLAGS += -DDYNAMIC_RUBY_VER=$(RUBY_VER) ++ endif ++ ifneq ($(findstring w64-mingw32,$(CC)),) ++ # A workaround for MinGW-w64 ++ CFLAGS += -DHAVE_STRUCT_TIMESPEC -DHAVE_STRUCT_TIMEZONE ++ endif ++ endif ++ ++ ifdef PYTHON ++ CFLAGS += -DFEAT_PYTHON ++ ifeq (yes, $(DYNAMIC_PYTHON)) ++ CFLAGS += -DDYNAMIC_PYTHON ++ endif ++ endif ++ ++ ifdef PYTHON3 ++ CFLAGS += -DFEAT_PYTHON3 ++ ifeq (yes, $(DYNAMIC_PYTHON3)) ++ CFLAGS += -DDYNAMIC_PYTHON3 ++ endif ++ endif ++ ++ ifdef TCL ++ CFLAGS += -DFEAT_TCL $(TCLINC) ++ ifeq (yes, $(DYNAMIC_TCL)) ++ CFLAGS += -DDYNAMIC_TCL -DDYNAMIC_TCL_DLL=\"tcl$(TCL_VER).dll\" ++ endif ++ endif ++ ++ ifeq ($(POSTSCRIPT),yes) ++ DEFINES += -DMSWINPS ++ endif ++ ++ ifeq (yes, $(OLE)) ++ DEFINES += -DFEAT_OLE ++ endif ++ ++ ifeq ($(CSCOPE),yes) ++ DEFINES += -DFEAT_CSCOPE ++ endif ++ ++ ifeq ($(NETBEANS),yes) ++ # Only allow NETBEANS for a GUI build. ++ ifeq (yes, $(GUI)) ++ DEFINES += -DFEAT_NETBEANS_INTG ++ ++ ifeq ($(NBDEBUG), yes) ++ DEFINES += -DNBDEBUG ++ NBDEBUG_INCL = nbdebug.h ++ NBDEBUG_SRC = nbdebug.c ++ endif ++ endif ++ endif ++ ++ # DirectWrite (DirectX) ++ ifeq ($(DIRECTX),yes) ++ # Only allow DirectWrite for a GUI build. ++ ifeq (yes, $(GUI)) ++ DEFINES += -DFEAT_DIRECTX -DDYNAMIC_DIRECTX ++ endif ++ endif ++ ++ # Only allow XPM for a GUI build. ++ ifeq (yes, $(GUI)) ++ ++ ifndef XPM ++ ifeq ($(ARCH),i386) ++ XPM = xpm/x86 ++ endif ++ ifeq ($(ARCH),i486) ++ XPM = xpm/x86 ++ endif ++ ifeq ($(ARCH),i586) ++ XPM = xpm/x86 ++ endif ++ ifeq ($(ARCH),i686) ++ XPM = xpm/x86 ++ endif ++ ifeq ($(ARCH),x86-64) ++ XPM = xpm/x64 ++ endif ++ endif ++ ifdef XPM ++ ifneq ($(XPM),no) ++ CFLAGS += -DFEAT_XPM_W32 -I $(XPM)/include -I $(XPM)/../include ++ endif ++ endif ++ ++ endif ++ ++ ifeq ($(DEBUG),yes) ++ CFLAGS += -g -fstack-check ++ DEBUG_SUFFIX=d ++ else ++ ifeq ($(OPTIMIZE), SIZE) ++ CFLAGS += -Os ++ else ++ ifeq ($(OPTIMIZE), MAXSPEED) ++ CFLAGS += -O3 ++ CFLAGS += -fomit-frame-pointer -freg-struct-return ++ else # SPEED ++ CFLAGS += -O2 ++ endif ++ endif ++ CFLAGS += -s ++ endif ++ ++ LIB = -lkernel32 -luser32 -lgdi32 -ladvapi32 -lcomdlg32 -lcomctl32 -lversion ++ GUIOBJ = $(OUTDIR)/gui.o $(OUTDIR)/gui_w32.o $(OUTDIR)/gui_beval.o $(OUTDIR)/os_w32exe.o ++ OBJ = \ ++ $(OUTDIR)/blowfish.o \ ++ $(OUTDIR)/buffer.o \ ++ $(OUTDIR)/charset.o \ ++ $(OUTDIR)/crypt.o \ ++ $(OUTDIR)/crypt_zip.o \ ++ $(OUTDIR)/diff.o \ ++ $(OUTDIR)/digraph.o \ ++ $(OUTDIR)/edit.o \ ++ $(OUTDIR)/eval.o \ ++ $(OUTDIR)/ex_cmds.o \ ++ $(OUTDIR)/ex_cmds2.o \ ++ $(OUTDIR)/ex_docmd.o \ ++ $(OUTDIR)/ex_eval.o \ ++ $(OUTDIR)/ex_getln.o \ ++ $(OUTDIR)/fileio.o \ ++ $(OUTDIR)/fold.o \ ++ $(OUTDIR)/getchar.o \ ++ $(OUTDIR)/hardcopy.o \ ++ $(OUTDIR)/hashtab.o \ ++ $(OUTDIR)/main.o \ ++ $(OUTDIR)/mark.o \ ++ $(OUTDIR)/memfile.o \ ++ $(OUTDIR)/memline.o \ ++ $(OUTDIR)/menu.o \ ++ $(OUTDIR)/message.o \ ++ $(OUTDIR)/misc1.o \ ++ $(OUTDIR)/misc2.o \ ++ $(OUTDIR)/move.o \ ++ $(OUTDIR)/mbyte.o \ ++ $(OUTDIR)/normal.o \ ++ $(OUTDIR)/ops.o \ ++ $(OUTDIR)/option.o \ ++ $(OUTDIR)/os_win32.o \ ++ $(OUTDIR)/os_mswin.o \ ++ $(OUTDIR)/winclip.o \ ++ $(OUTDIR)/pathdef.o \ ++ $(OUTDIR)/popupmnu.o \ ++ $(OUTDIR)/quickfix.o \ ++ $(OUTDIR)/regexp.o \ ++ $(OUTDIR)/screen.o \ ++ $(OUTDIR)/search.o \ ++ $(OUTDIR)/sha256.o \ ++ $(OUTDIR)/spell.o \ ++ $(OUTDIR)/syntax.o \ ++ $(OUTDIR)/tag.o \ ++ $(OUTDIR)/term.o \ ++ $(OUTDIR)/ui.o \ ++ $(OUTDIR)/undo.o \ ++ $(OUTDIR)/version.o \ ++ $(OUTDIR)/vimrc.o \ ++ $(OUTDIR)/window.o ++ ++ ifdef PERL ++ OBJ += $(OUTDIR)/if_perl.o ++ endif ++ ifdef LUA ++ OBJ += $(OUTDIR)/if_lua.o ++ endif ++ ifdef MZSCHEME ++ OBJ += $(OUTDIR)/if_mzsch.o ++ MZSCHEME_INCL = if_mzsch.h ++ ifeq (yes,$(MZSCHEME_GENERATE_BASE)) ++ CFLAGS += -DINCLUDE_MZSCHEME_BASE ++ MZ_EXTRA_DEP += mzscheme_base.c ++ endif ++ ifeq (yes,$(MZSCHEME_PRECISE_GC)) ++ CFLAGS += -DMZ_PRECISE_GC ++ endif ++ endif ++ ifdef PYTHON ++ OBJ += $(OUTDIR)/if_python.o ++ endif ++ ifdef PYTHON3 ++ OBJ += $(OUTDIR)/if_python3.o ++ endif ++ ifdef RUBY ++ OBJ += $(OUTDIR)/if_ruby.o ++ endif ++ ifdef TCL ++ OBJ += $(OUTDIR)/if_tcl.o ++ endif ++ ifeq ($(CSCOPE),yes) ++ OBJ += $(OUTDIR)/if_cscope.o ++ endif ++ ifeq ($(NETBEANS),yes) ++ # Only allow NETBEANS for a GUI build. ++ ifeq (yes, $(GUI)) ++ OBJ += $(OUTDIR)/netbeans.o ++ LIB += -lwsock32 ++ endif ++ endif ++ ifeq ($(DIRECTX),yes) ++ # Only allow DIRECTX for a GUI build. ++ ifeq (yes, $(GUI)) ++ OBJ += $(OUTDIR)/gui_dwrite.o ++ LIB += -ld2d1 -ldwrite ++ USE_STDCPLUS = yes ++ endif ++ endif ++ ifneq ($(XPM),no) ++ # Only allow XPM for a GUI build. ++ ifeq (yes, $(GUI)) ++ OBJ += $(OUTDIR)/xpm_w32.o ++ # You'll need libXpm.a from http://gnuwin32.sf.net ++ LIB += -L$(XPM)/lib -lXpm ++ endif ++ endif ++ ++ ++ ifdef MZSCHEME ++ MZSCHEME_SUFFIX = Z ++ endif ++ ++ ifeq ($(GUI),yes) ++ TARGET := gvim$(DEBUG_SUFFIX).exe ++ DEFINES += $(DEF_GUI) ++ OBJ += $(GUIOBJ) ++ LFLAGS += -mwindows ++ OUTDIR = gobj$(DEBUG_SUFFIX)$(MZSCHEME_SUFFIX)$(ARCH) ++ else ++ TARGET := vim$(DEBUG_SUFFIX).exe ++ OUTDIR = obj$(DEBUG_SUFFIX)$(MZSCHEME_SUFFIX)$(ARCH) ++ endif ++ ++ ifdef GETTEXT ++ ifneq (yes, $(GETTEXT)) ++ CFLAGS += -I$(GETTEXTINCLUDE) ++ ifndef STATIC_GETTEXT ++ LIB += -L$(GETTEXTLIB) -l$(INTLLIB) ++ ifeq (USE_SAFE_GETTEXT_DLL, $(DYNAMIC_GETTEXT)) ++ OBJ+=$(SAFE_GETTEXT_DLL_OBJ) ++ endif ++ else ++ LIB += -L$(GETTEXTLIB) -lintl ++ endif ++ endif ++ endif ++ ++ ifdef PERL ++ ifeq (no, $(DYNAMIC_PERL)) ++ LIB += -L$(PERLLIBS) -lperl$(PERL_VER) ++ endif ++ endif ++ ++ ifdef TCL ++ LIB += -L$(TCL)/lib ++ ifeq (yes, $(DYNAMIC_TCL)) ++ LIB += -ltclstub$(TCL_VER) ++ else ++ LIB += -ltcl$(TCL_VER) ++ endif ++ endif ++ ++ ifeq (yes, $(OLE)) ++ LIB += -loleaut32 ++ OBJ += $(OUTDIR)/if_ole.o ++ USE_STDCPLUS = yes ++ endif ++ ++ ifeq (yes, $(MBYTE)) ++ DEFINES += -DFEAT_MBYTE ++ endif ++ ++ ifeq (yes, $(IME)) ++ DEFINES += -DFEAT_MBYTE_IME ++ ifeq (yes, $(DYNAMIC_IME)) ++ DEFINES += -DDYNAMIC_IME ++ else ++ LIB += -limm32 ++ endif ++ endif ++ ++ ifdef ICONV ++ ifneq (yes, $(ICONV)) ++ LIB += -L$(ICONV) ++ CFLAGS += -I$(ICONV) ++ endif ++ DEFINES+=-DDYNAMIC_ICONV ++ endif ++ ++ ifeq (yes, $(USE_STDCPLUS)) ++ ifeq (yes, $(STATIC_STDCPLUS)) ++ LIB += -Wl,-Bstatic -lstdc++ -Wl,-Bdynamic ++ else ++ LIB += -lstdc++ ++ endif ++ endif ++ ++ all: $(TARGET) vimrun.exe xxd/xxd.exe install.exe uninstal.exe GvimExt/gvimext.dll ++ ++ vimrun.exe: vimrun.c ++ $(CC) $(CFLAGS) -o vimrun.exe vimrun.c $(LIB) ++ ++ install.exe: dosinst.c ++ $(CC) $(CFLAGS) -o install.exe dosinst.c $(LIB) -lole32 -luuid ++ ++ uninstal.exe: uninstal.c ++ $(CC) $(CFLAGS) -o uninstal.exe uninstal.c $(LIB) ++ ++ $(TARGET): $(OUTDIR) $(OBJ) ++ $(CC) $(CFLAGS) $(LFLAGS) -o $@ $(OBJ) $(LIB) -lole32 -luuid $(LUA_LIB) $(MZSCHEME_LIBDIR) $(MZSCHEME_LIB) $(PYTHONLIB) $(PYTHON3LIB) $(RUBYLIB) ++ ++ upx: exes ++ upx gvim.exe ++ upx vim.exe ++ ++ mpress: exes ++ mpress gvim.exe ++ mpress vim.exe ++ ++ xxd/xxd.exe: xxd/xxd.c ++ $(MAKE) -C xxd -f Make_ming.mak CC='$(CC)' ++ ++ GvimExt/gvimext.dll: GvimExt/gvimext.cpp GvimExt/gvimext.rc GvimExt/gvimext.h ++ $(MAKE) -C GvimExt -f Make_ming.mak CROSS=$(CROSS) CROSS_COMPILE=$(CROSS_COMPILE) CXX='$(CXX)' STATIC_STDCPLUS=$(STATIC_STDCPLUS) ++ ++ clean: ++ -$(DEL) $(OUTDIR)$(DIRSLASH)*.o ++ -$(DEL) $(OUTDIR)$(DIRSLASH)*.res ++ -rmdir $(OUTDIR) ++ -$(DEL) *.exe ++ -$(DEL) pathdef.c ++ ifdef PERL ++ -$(DEL) if_perl.c ++ endif ++ ifdef MZSCHEME ++ -$(DEL) mzscheme_base.c ++ endif ++ $(MAKE) -C GvimExt -f Make_ming.mak clean ++ $(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 ++ ++ $(OUTDIR)/if_python.o : if_python.c if_py_both.h $(INCL) ++ $(CC) -c $(CFLAGS) $(PYTHONINC) -DDYNAMIC_PYTHON_DLL=\"python$(PYTHON_VER).dll\" $< -o $@ ++ ++ $(OUTDIR)/if_python3.o : if_python3.c if_py_both.h $(INCL) ++ $(CC) -c $(CFLAGS) $(PYTHON3INC) -DDYNAMIC_PYTHON3_DLL=\"PYTHON$(PYTHON3_VER).dll\" $< -o $@ ++ ++ $(OUTDIR)/%.o : %.c $(INCL) ++ $(CC) -c $(CFLAGS) $< -o $@ ++ ++ $(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)/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_w32.o: gui_w32.c gui_w48.c $(INCL) ++ $(CC) -c $(CFLAGS) gui_w32.c -o $(OUTDIR)/gui_w32.o ++ ++ $(OUTDIR)/gui_dwrite.o: gui_dwrite.cpp $(INCL) gui_dwrite.h ++ $(CC) -c $(CFLAGS) gui_dwrite.cpp -o $(OUTDIR)/gui_dwrite.o ++ ++ $(OUTDIR)/if_cscope.o: if_cscope.c $(INCL) if_cscope.h ++ $(CC) -c $(CFLAGS) if_cscope.c -o $(OUTDIR)/if_cscope.o ++ ++ # Remove -D__IID_DEFINED__ for newer versions of the w32api ++ $(OUTDIR)/if_ole.o: if_ole.cpp $(INCL) ++ $(CC) $(CFLAGS) -c -o $(OUTDIR)/if_ole.o if_ole.cpp ++ ++ $(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 ++ ++ if_perl.c: if_perl.xs typemap ++ $(XSUBPP) -prototypes -typemap \ ++ "$(PERLTYPEMAP)" if_perl.xs > $@ ++ ++ $(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) ++ $(CC) -c $(CFLAGS) regexp.c -o $(OUTDIR)/regexp.o ++ ++ $(OUTDIR)/if_mzsch.o: if_mzsch.c $(INCL) if_mzsch.h $(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 ++ ++ pathdef.c: $(INCL) ++ ifneq (sh.exe, $(SHELL)) ++ @echo creating pathdef.c ++ @echo '/* pathdef.c */' > pathdef.c ++ @echo '#include "vim.h"' >> pathdef.c ++ @echo 'char_u *default_vim_dir = (char_u *)"$(VIMRCLOC)";' >> pathdef.c ++ @echo 'char_u *default_vimruntime_dir = (char_u *)"$(VIMRUNTIMEDIR)";' >> pathdef.c ++ @echo 'char_u *all_cflags = (char_u *)"$(CC) $(CFLAGS)";' >> pathdef.c ++ @echo 'char_u *all_lflags = (char_u *)"$(CC) $(CFLAGS) $(LFLAGS) -o $(TARGET) $(LIB) -lole32 -luuid $(LUA_LIB) $(MZSCHEME_LIBDIR) $(MZSCHEME_LIB) $(PYTHONLIB) $(PYTHON3LIB) $(RUBYLIB)";' >> pathdef.c ++ @echo 'char_u *compiled_user = (char_u *)"$(USERNAME)";' >> pathdef.c ++ @echo 'char_u *compiled_sys = (char_u *)"$(USERDOMAIN)";' >> pathdef.c ++ else ++ @echo creating pathdef.c ++ @echo /* pathdef.c */ > pathdef.c ++ @echo #include "vim.h" >> pathdef.c ++ @echo char_u *default_vim_dir = (char_u *)"$(VIMRCLOC)"; >> pathdef.c ++ @echo char_u *default_vimruntime_dir = (char_u *)"$(VIMRUNTIMEDIR)"; >> pathdef.c ++ @echo char_u *all_cflags = (char_u *)"$(CC) $(CFLAGS)"; >> pathdef.c ++ @echo char_u *all_lflags = (char_u *)"$(CC) $(CFLAGS) $(LFLAGS) -o $(TARGET) $(LIB) -lole32 -luuid $(LUA_LIB) $(MZSCHEME_LIBDIR) $(MZSCHEME_LIB) $(PYTHONLIB) $(PYTHON3LIB) $(RUBYLIB)"; >> pathdef.c ++ @echo char_u *compiled_user = (char_u *)"$(USERNAME)"; >> pathdef.c ++ @echo char_u *compiled_sys = (char_u *)"$(USERDOMAIN)"; >> pathdef.c ++ endif +*** ../vim-7.4.495/src/Make_ming.mak 2014-10-15 12:07:07.610009454 +0200 +--- src/Make_ming.mak 2014-11-05 13:49:27.076811946 +0100 +*************** +*** 1,193 **** +- # Makefile for VIM on Win32 + # +! # Info at http://www.mingw.org +! # Alternative x86 and 64-builds: http://mingw-w64.sourceforge.net +! # Also requires GNU make, which you can download from the same sites. +! # Get missing libraries from http://gnuwin32.sf.net. + # +! # Tested on Win32 NT 4 and Win95. + # +! # To make everything, just 'make -f Make_ming.mak'. +! # To make just e.g. gvim.exe, 'make -f Make_ming.mak gvim.exe'. +! # After a run, you can 'make -f Make_ming.mak clean' to clean up. + # +! # NOTE: Sometimes 'GNU Make' will stop after building vimrun.exe -- I think +! # it's just run out of memory or something. Run again, and it will continue +! # with 'xxd'. +! # +! # "make upx" makes *compressed* versions of the 32 bit GUI and console EXEs, +! # using the excellent UPX compressor: +! # http://upx.sourceforge.net/ +! # "make mpress" uses the MPRESS compressor for 32- and 64-bit EXEs: +! # http://www.matcode.com/mpress.htm +! # +! # Maintained by Ron Aaron <ronaharon@yahoo.com> et al. +! # Updated 2014 Oct 13. +! +! #>>>>> choose options: +! # set to yes for a debug build +! DEBUG=no +! # set to SIZE for size, SPEED for speed, MAXSPEED for maximum optimization +! OPTIMIZE=MAXSPEED +! # set to yes to make gvim, no for vim +! GUI=yes +! # set to yes if you want to use DirectWrite (DirectX) +! DIRECTX=no +! # FEATURES=[TINY | SMALL | NORMAL | BIG | HUGE] +! # Set to TINY to make minimal version (few features). +! FEATURES=BIG +! # Set to one of i386, i486, i586, i686 as the minimum target processor. +! # For amd64/x64 architecture set ARCH=x86-64 . +! ARCH=i386 +! # Set to yes to cross-compile from unix; no=native Windows. +! CROSS=no +! # Set to path to iconv.h and libiconv.a to enable using 'iconv.dll'. +! #ICONV="." +! ICONV=yes +! GETTEXT=yes +! # Set to yes to include multibyte support. +! MBYTE=yes +! # Set to yes to include IME support. +! IME=yes +! DYNAMIC_IME=yes +! # Set to yes to enable writing a postscript file with :hardcopy. +! POSTSCRIPT=no +! # Set to yes to enable OLE support. +! OLE=no +! # Set the default $(WINVER) to make it work with pre-Win2k. +! ifndef WINVER +! WINVER = 0x0500 +! endif +! # Set to yes to enable Cscope support. +! CSCOPE=yes +! # Set to yes to enable Netbeans support. +! NETBEANS=$(GUI) +! +! +! # Link against the shared version of libstdc++ by default. Set +! # STATIC_STDCPLUS to "yes" to link against static version instead. +! ifndef STATIC_STDCPLUS +! STATIC_STDCPLUS=no +! endif +! +! # If the user doesn't want gettext, undefine it. +! ifeq (no, $(GETTEXT)) +! GETTEXT= +! endif +! # Added by E.F. Amatria <eferna1@platea.ptic.mec.es> 2001 Feb 23 +! # Uncomment the first line and one of the following three if you want Native Language +! # Support. You'll need gnu_gettext.win32, a MINGW32 Windows PORT of gettext by +! # Franco Bez <franco.bez@gmx.de>. It may be found at +! # http://home.a-city.de/franco.bez/gettext/gettext_win32_en.html +! # Tested with mingw32 with GCC-2.95.2 on Win98 +! # Updated 2001 Jun 9 +! #GETTEXT=c:/gettext.win32.msvcrt +! #STATIC_GETTEXT=USE_STATIC_GETTEXT +! #DYNAMIC_GETTEXT=USE_GETTEXT_DLL +! #DYNAMIC_GETTEXT=USE_SAFE_GETTEXT_DLL +! SAFE_GETTEXT_DLL_OBJ = $(GETTEXT)/src/safe_gettext_dll/safe_gettext_dll.o +! # Alternatively, if you uncomment the two following lines, you get a "safe" version +! # without linking the safe_gettext_dll.o object file. +! #DYNAMIC_GETTEXT=DYNAMIC_GETTEXT +! #GETTEXT_DYNAMIC=gnu_gettext.dll +! INTLPATH=$(GETTEXT)/lib/mingw32 +! INTLLIB=gnu_gettext + +- # If you are using gettext-0.10.35 from http://sourceforge.net/projects/gettext +- # or gettext-0.10.37 from http://sourceforge.net/projects/mingwrep/ +- # uncomment the following, but I can't build a static version with them, ?-(| +- #GETTEXT=c:/gettext-0.10.37-20010430 +- #STATIC_GETTEXT=USE_STATIC_GETTEXT +- #DYNAMIC_GETTEXT=DYNAMIC_GETTEXT +- #INTLPATH=$(GETTEXT)/lib +- #INTLLIB=intl + + # uncomment 'PERL' if you want a perl-enabled version +! #PERL=C:/perl +! ifdef PERL +! ifndef PERL_VER +! PERL_VER=56 +! endif +! ifndef DYNAMIC_PERL +! DYNAMIC_PERL=yes +! endif +! # on Linux, for cross-compile, it's here: +! #PERLLIB=/home/ron/ActivePerl/lib +! # on NT, it's here: +! PERLLIB=$(PERL)/lib +! PERLLIBS=$(PERLLIB)/Core +! XSUBPPTRY=$(PERLLIB)/ExtUtils/xsubpp +! XSUBPP_EXISTS=$(shell perl -e "print 1 unless -e '$(XSUBPPTRY)'") +! ifeq "$(XSUBPP_EXISTS)" "" +! XSUBPP=perl $(XSUBPPTRY) +! else +! XSUBPP=xsubpp +! endif +! endif + + # uncomment 'LUA' if you want a Lua-enabled version +! #LUA=/usr/local +! ifdef LUA +! ifndef DYNAMIC_LUA +! DYNAMIC_LUA=yes +! endif +! +! ifndef LUA_VER +! LUA_VER=51 +! endif +! +! ifeq (no,$(DYNAMIC_LUA)) +! LUA_LIB = -L$(LUA)/lib -llua +! endif +! +! endif + + # uncomment 'MZSCHEME' if you want a MzScheme-enabled version + #MZSCHEME=d:/plt +- ifdef MZSCHEME +- ifndef DYNAMIC_MZSCHEME +- DYNAMIC_MZSCHEME=yes +- endif +- +- ifndef MZSCHEME_VER +- MZSCHEME_VER=205_000 +- endif +- +- ifndef MZSCHEME_PRECISE_GC +- MZSCHEME_PRECISE_GC=no +- endif +- +- # for version 4.x we need to generate byte-code for Scheme base +- ifndef MZSCHEME_GENERATE_BASE +- MZSCHEME_GENERATE_BASE=no +- endif + +! ifndef MZSCHEME_USE_RACKET +! MZSCHEME_MAIN_LIB=mzsch +! else +! MZSCHEME_MAIN_LIB=racket +! endif +! +! ifeq (no,$(DYNAMIC_MZSCHEME)) +! ifeq (yes,$(MZSCHEME_PRECISE_GC)) +! MZSCHEME_LIB=-l$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER) +! else +! MZSCHEME_LIB = -l$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER) -lmzgc$(MZSCHEME_VER) +! endif +! # the modern MinGW can dynamically link to dlls directly. +! # point MZSCHEME_DLLS to where you put libmzschXXXXXXX.dll and libgcXXXXXXX.dll +! ifndef MZSCHEME_DLLS +! MZSCHEME_DLLS=$(MZSCHEME) +! endif +! MZSCHEME_LIBDIR=-L$(MZSCHEME_DLLS) -L$(MZSCHEME_DLLS)\lib +! endif +! +! endif +! +! # Python support -- works with the ActiveState python 2.0 release (and others +! # too, probably) +! # +! # uncomment 'PYTHON' to make python-enabled version + # Put the path to the python distro here. If cross compiling from Linux, you + # will also need to convert the header files to unix instead of dos format: + # for fil in *.h ; do vim -e -c 'set ff=unix|w|q' $fil +--- 1,27 ---- + # +! # Makefile for VIM on Win32, using MinGW + # +! # Also read INSTALLpc.txt! + # +! # The old Make_ming.mak (maintained by Ron Aaron et al.) was merged into +! # Make_cyg_ming.mak. +! # This file contains MinGW specific settings. Common settings are contained +! # in Make_cyg_ming.mak. + # +! # Last updated by Ken Takata. +! # Last Change: 2014 Oct 21 + + + # uncomment 'PERL' if you want a perl-enabled version +! #PERL=c:/perl + + # uncomment 'LUA' if you want a Lua-enabled version +! #LUA=c:/lua + + # uncomment 'MZSCHEME' if you want a MzScheme-enabled version + #MZSCHEME=d:/plt + +! # uncomment 'PYTHON' if you want a python-enabled version + # Put the path to the python distro here. If cross compiling from Linux, you + # will also need to convert the header files to unix instead of dos format: + # for fil in *.h ; do vim -e -c 'set ff=unix|w|q' $fil +*************** +*** 200,830 **** + # on my NT box, it's here: + #PYTHON=c:/python20 + +! ifdef PYTHON +! ifndef DYNAMIC_PYTHON +! DYNAMIC_PYTHON=yes +! endif +! +! ifndef PYTHON_VER +! PYTHON_VER=22 +! endif +! +! ifeq (no,$(DYNAMIC_PYTHON)) +! PYTHONLIB=-L$(PYTHON)/libs -lpython$(PYTHON_VER) +! endif +! # my include files are in 'win32inc' on Linux, and 'include' in the standard +! # NT distro (ActiveState) +! ifeq ($(CROSS),no) +! PYTHONINC=-I $(PYTHON)/include +! else +! PYTHONINC=-I $(PYTHON)/win32inc +! endif +! endif +! +! #PYTHON3: See comment for Python 2 above +! +! ifdef PYTHON3 +! ifndef DYNAMIC_PYTHON3 +! DYNAMIC_PYTHON3=yes +! endif +! +! ifndef PYTHON3_VER +! PYTHON3_VER=31 +! endif +! +! ifeq (no,$(DYNAMIC_PYTHON3)) +! PYTHON3LIB=-L$(PYTHON3)/libs -lPYTHON$(PYTHON3_VER) +! endif +! +! ifeq ($(CROSS),no) +! PYTHON3INC=-I $(PYTHON3)/include +! else +! PYTHON3INC=-I $(PYTHON3)/win32inc +! endif +! endif + +! # TCL interface: +! # TCL=[Path to TCL directory] +! # DYNAMIC_TCL=yes (to load the TCL DLL dynamically) +! # TCL_VER=[TCL version, eg 83, 84] (default is 83) + #TCL=c:/tcl +- ifdef TCL +- ifndef DYNAMIC_TCL +- DYNAMIC_TCL=yes +- endif +- ifndef TCL_VER +- TCL_VER = 83 +- endif +- TCLINC += -I$(TCL)/include +- endif + +! +! # Ruby interface: +! # RUBY=[Path to Ruby directory] +! # DYNAMIC_RUBY=yes (to load the Ruby DLL dynamically) +! # RUBY_VER=[Ruby version, eg 16, 17] (default is 16) +! # RUBY_VER_LONG=[Ruby version, eg 1.6, 1.7] (default is 1.6) +! # You must set RUBY_VER_LONG when changing RUBY_VER. +! # You must set RUBY_API_VER version to RUBY_VER_LONG. +! # Don't set ruby API version to RUBY_VER like 191. + #RUBY=c:/ruby +- ifdef RUBY +- ifndef DYNAMIC_RUBY +- DYNAMIC_RUBY=yes +- endif +- # Set default value +- ifndef RUBY_VER +- RUBY_VER = 16 +- endif +- ifndef RUBY_VER_LONG +- RUBY_VER_LONG = 1.6 +- endif +- ifndef RUBY_API_VER +- RUBY_API_VER = $(subst .,,$(RUBY_VER_LONG)) +- endif +- +- ifndef RUBY_PLATFORM +- ifeq ($(RUBY_VER), 16) +- RUBY_PLATFORM = i586-mswin32 +- else +- ifneq ($(wildcard $(RUBY)/lib/ruby/$(RUBY_VER_LONG)/i386-mingw32),) +- RUBY_PLATFORM = i386-mingw32 +- else +- ifneq ($(wildcard $(RUBY)/lib/ruby/$(RUBY_VER_LONG)/x64-mingw32),) +- RUBY_PLATFORM = x64-mingw32 +- else +- RUBY_PLATFORM = i386-mswin32 +- endif +- endif +- endif +- endif +- +- ifndef RUBY_INSTALL_NAME +- ifeq ($(RUBY_VER), 16) +- RUBY_INSTALL_NAME = mswin32-ruby$(RUBY_API_VER) +- else +- ifeq ($(ARCH),x86-64) +- RUBY_INSTALL_NAME = x64-msvcrt-ruby$(RUBY_API_VER) +- else +- RUBY_INSTALL_NAME = msvcrt-ruby$(RUBY_API_VER) +- endif +- endif +- endif +- +- ifeq (19, $(word 1,$(sort 19 $(RUBY_VER)))) +- RUBY_19_OR_LATER = 1 +- endif +- +- RUBYINC = -I $(RUBY)/lib/ruby/$(RUBY_VER_LONG)/$(RUBY_PLATFORM) +- ifdef RUBY_19_OR_LATER +- RUBYINC += -I $(RUBY)/include/ruby-$(RUBY_VER_LONG) -I $(RUBY)/include/ruby-$(RUBY_VER_LONG)/$(RUBY_PLATFORM) +- endif +- ifeq (no, $(DYNAMIC_RUBY)) +- RUBYLIB = -L$(RUBY)/lib -l$(RUBY_INSTALL_NAME) +- endif +- +- endif # RUBY +- +- # See feature.h for a list of options. +- # Any other defines can be included here. +- DEF_GUI=-DFEAT_GUI_W32 -DFEAT_CLIPBOARD +- DEFINES=-DWIN32 -DWINVER=$(WINVER) -D_WIN32_WINNT=$(WINVER) \ +- -DHAVE_PATHDEF -DFEAT_$(FEATURES) +- ifeq ($(ARCH),x86-64) +- DEFINES+=-DMS_WIN64 +- endif +- ifeq ($(CROSS),yes) +- # cross-compiler prefix: +- CROSS_COMPILE = i586-pc-mingw32msvc- +- DEL = rm +- MKDIR = mkdir -p +- DIRSLASH = / +- else +- # normal (Windows) compilation: +- CROSS_COMPILE = +- ifneq (sh.exe, $(SHELL)) +- DEL = rm +- MKDIR = mkdir -p +- DIRSLASH = / +- else +- DEL = del +- MKDIR = mkdir +- DIRSLASH = \\ +- endif +- endif +- CC := $(CROSS_COMPILE)gcc +- WINDRES := $(CROSS_COMPILE)windres +- WINDRES_CC = $(CC) +- +- #>>>>> end of choices +- ########################################################################### +- +- CFLAGS = -Iproto $(DEFINES) -pipe -w -march=$(ARCH) -Wall +- WINDRES_FLAGS = --preprocessor="$(WINDRES_CC) -E -xc" -DRC_INVOKED +- EXTRA_LIBS = +- +- ifdef GETTEXT +- DEFINES += -DHAVE_GETTEXT -DHAVE_LOCALE_H +- GETTEXTINCLUDE = $(GETTEXT)/include +- GETTEXTLIB = $(INTLPATH) +- ifeq (yes, $(GETTEXT)) +- DEFINES += -DDYNAMIC_GETTEXT +- else +- ifdef DYNAMIC_GETTEXT +- DEFINES += -D$(DYNAMIC_GETTEXT) +- ifdef GETTEXT_DYNAMIC +- DEFINES += -DGETTEXT_DYNAMIC -DGETTEXT_DLL=\"$(GETTEXT_DYNAMIC)\" +- endif +- endif +- endif +- endif +- +- ifdef PERL +- CFLAGS += -I$(PERLLIBS) -DFEAT_PERL +- ifeq (yes, $(DYNAMIC_PERL)) +- CFLAGS += -DDYNAMIC_PERL -DDYNAMIC_PERL_DLL=\"perl$(PERL_VER).dll\" +- EXTRA_LIBS += -L$(PERLLIBS) -lperl$(PERL_VER) +- endif +- endif +- +- ifdef LUA +- CFLAGS += -I$(LUA)/include -DFEAT_LUA +- ifeq (yes, $(DYNAMIC_LUA)) +- CFLAGS += -DDYNAMIC_LUA -DDYNAMIC_LUA_DLL=\"lua$(LUA_VER).dll\" +- endif +- endif +- +- ifdef MZSCHEME +- CFLAGS += -I$(MZSCHEME)/include -DFEAT_MZSCHEME -DMZSCHEME_COLLECTS=\"$(MZSCHEME)/collects\" +- ifeq (yes, $(DYNAMIC_MZSCHEME)) +- CFLAGS += -DDYNAMIC_MZSCHEME -DDYNAMIC_MZSCH_DLL=\"lib$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER).dll\" -DDYNAMIC_MZGC_DLL=\"libmzgc$(MZSCHEME_VER).dll\" +- endif +- ifeq (yes, "$(MZSCHEME_DEBUG)") +- CFLAGS += -DMZSCHEME_FORCE_GC +- endif +- endif +- +- ifdef RUBY +- CFLAGS += -DFEAT_RUBY $(RUBYINC) +- ifeq (yes, $(DYNAMIC_RUBY)) +- CFLAGS += -DDYNAMIC_RUBY -DDYNAMIC_RUBY_DLL=\"$(RUBY_INSTALL_NAME).dll\" +- CFLAGS += -DDYNAMIC_RUBY_VER=$(RUBY_VER) +- endif +- endif +- +- ifdef PYTHON +- CFLAGS += -DFEAT_PYTHON +- ifeq (yes, $(DYNAMIC_PYTHON)) +- CFLAGS += -DDYNAMIC_PYTHON +- endif +- endif +- +- ifdef PYTHON3 +- CFLAGS += -DFEAT_PYTHON3 +- ifeq (yes, $(DYNAMIC_PYTHON3)) +- CFLAGS += -DDYNAMIC_PYTHON3 +- endif +- endif +- +- ifdef TCL +- CFLAGS += -DFEAT_TCL $(TCLINC) +- ifeq (yes, $(DYNAMIC_TCL)) +- CFLAGS += -DDYNAMIC_TCL -DDYNAMIC_TCL_DLL=\"tcl$(TCL_VER).dll\" +- endif +- endif +- +- ifeq ($(POSTSCRIPT),yes) +- DEFINES += -DMSWINPS +- endif +- +- ifeq (yes, $(OLE)) +- DEFINES += -DFEAT_OLE +- endif +- +- ifeq ($(CSCOPE),yes) +- DEFINES += -DFEAT_CSCOPE +- endif +- +- ifeq ($(NETBEANS),yes) +- # Only allow NETBEANS for a GUI build. +- ifeq (yes, $(GUI)) +- DEFINES += -DFEAT_NETBEANS_INTG +- +- ifeq ($(NBDEBUG), yes) +- DEFINES += -DNBDEBUG +- NBDEBUG_INCL = nbdebug.h +- NBDEBUG_SRC = nbdebug.c +- endif +- endif +- endif +- +- # DirectWrite (DirectX) +- ifeq ($(DIRECTX),yes) +- # Only allow DirectWrite for a GUI build. +- ifeq (yes, $(GUI)) +- DEFINES += -DFEAT_DIRECTX -DDYNAMIC_DIRECTX +- endif +- endif +- +- # Only allow XPM for a GUI build. +- ifeq (yes, $(GUI)) +- +- ifndef XPM +- ifeq ($(ARCH),i386) +- XPM = xpm/x86 +- endif +- ifeq ($(ARCH),i486) +- XPM = xpm/x86 +- endif +- ifeq ($(ARCH),i586) +- XPM = xpm/x86 +- endif +- ifeq ($(ARCH),i686) +- XPM = xpm/x86 +- endif +- ifeq ($(ARCH),x86-64) +- XPM = xpm/x64 +- endif +- endif +- ifdef XPM +- ifneq ($(XPM),no) +- CFLAGS += -DFEAT_XPM_W32 -I $(XPM)/include -I $(XPM)/../include +- endif +- endif +- +- endif +- +- ifeq ($(DEBUG),yes) +- CFLAGS += -g -fstack-check +- DEBUG_SUFFIX=d +- else +- ifeq ($(OPTIMIZE), SIZE) +- CFLAGS += -Os +- else +- ifeq ($(OPTIMIZE), MAXSPEED) +- CFLAGS += -O3 +- CFLAGS += -fomit-frame-pointer -freg-struct-return +- else # SPEED +- CFLAGS += -O2 +- endif +- endif +- CFLAGS += -s +- endif +- +- LIB = -lkernel32 -luser32 -lgdi32 -ladvapi32 -lcomdlg32 -lcomctl32 -lversion +- GUIOBJ = $(OUTDIR)/gui.o $(OUTDIR)/gui_w32.o $(OUTDIR)/gui_beval.o $(OUTDIR)/os_w32exe.o +- OBJ = \ +- $(OUTDIR)/blowfish.o \ +- $(OUTDIR)/buffer.o \ +- $(OUTDIR)/charset.o \ +- $(OUTDIR)/crypt.o \ +- $(OUTDIR)/crypt_zip.o \ +- $(OUTDIR)/diff.o \ +- $(OUTDIR)/digraph.o \ +- $(OUTDIR)/edit.o \ +- $(OUTDIR)/eval.o \ +- $(OUTDIR)/ex_cmds.o \ +- $(OUTDIR)/ex_cmds2.o \ +- $(OUTDIR)/ex_docmd.o \ +- $(OUTDIR)/ex_eval.o \ +- $(OUTDIR)/ex_getln.o \ +- $(OUTDIR)/fileio.o \ +- $(OUTDIR)/fold.o \ +- $(OUTDIR)/getchar.o \ +- $(OUTDIR)/hardcopy.o \ +- $(OUTDIR)/hashtab.o \ +- $(OUTDIR)/main.o \ +- $(OUTDIR)/mark.o \ +- $(OUTDIR)/memfile.o \ +- $(OUTDIR)/memline.o \ +- $(OUTDIR)/menu.o \ +- $(OUTDIR)/message.o \ +- $(OUTDIR)/misc1.o \ +- $(OUTDIR)/misc2.o \ +- $(OUTDIR)/move.o \ +- $(OUTDIR)/mbyte.o \ +- $(OUTDIR)/normal.o \ +- $(OUTDIR)/ops.o \ +- $(OUTDIR)/option.o \ +- $(OUTDIR)/os_win32.o \ +- $(OUTDIR)/os_mswin.o \ +- $(OUTDIR)/winclip.o \ +- $(OUTDIR)/pathdef.o \ +- $(OUTDIR)/popupmnu.o \ +- $(OUTDIR)/quickfix.o \ +- $(OUTDIR)/regexp.o \ +- $(OUTDIR)/screen.o \ +- $(OUTDIR)/search.o \ +- $(OUTDIR)/sha256.o \ +- $(OUTDIR)/spell.o \ +- $(OUTDIR)/syntax.o \ +- $(OUTDIR)/tag.o \ +- $(OUTDIR)/term.o \ +- $(OUTDIR)/ui.o \ +- $(OUTDIR)/undo.o \ +- $(OUTDIR)/version.o \ +- $(OUTDIR)/vimrc.o \ +- $(OUTDIR)/window.o +- +- ifdef PERL +- OBJ += $(OUTDIR)/if_perl.o +- endif +- ifdef LUA +- OBJ += $(OUTDIR)/if_lua.o +- endif +- ifdef MZSCHEME +- OBJ += $(OUTDIR)/if_mzsch.o +- MZSCHEME_INCL = if_mzsch.h +- ifeq (yes,$(MZSCHEME_GENERATE_BASE)) +- CFLAGS += -DINCLUDE_MZSCHEME_BASE +- MZ_EXTRA_DEP += mzscheme_base.c +- endif +- ifeq (yes,$(MZSCHEME_PRECISE_GC)) +- CFLAGS += -DMZ_PRECISE_GC +- endif +- endif +- ifdef PYTHON +- OBJ += $(OUTDIR)/if_python.o +- endif +- ifdef PYTHON3 +- OBJ += $(OUTDIR)/if_python3.o +- endif +- ifdef RUBY +- OBJ += $(OUTDIR)/if_ruby.o +- endif +- ifdef TCL +- OBJ += $(OUTDIR)/if_tcl.o +- endif +- ifeq ($(CSCOPE),yes) +- OBJ += $(OUTDIR)/if_cscope.o +- endif +- ifeq ($(NETBEANS),yes) +- # Only allow NETBEANS for a GUI build. +- ifeq (yes, $(GUI)) +- OBJ += $(OUTDIR)/netbeans.o +- LIB += -lwsock32 +- endif +- endif +- ifeq ($(DIRECTX),yes) +- # Only allow DIRECTX for a GUI build. +- ifeq (yes, $(GUI)) +- OBJ += $(OUTDIR)/gui_dwrite.o +- LIB += -ld2d1 -ldwrite +- USE_STDCPLUS = yes +- endif +- endif +- ifneq ($(XPM),no) +- # Only allow XPM for a GUI build. +- ifeq (yes, $(GUI)) +- OBJ += $(OUTDIR)/xpm_w32.o +- # You'll need libXpm.a from http://gnuwin32.sf.net +- LIB += -L$(XPM)/lib -lXpm +- endif +- endif +- +- +- ifdef MZSCHEME +- MZSCHEME_SUFFIX = Z +- endif +- +- ifeq ($(GUI),yes) +- TARGET := gvim$(DEBUG_SUFFIX).exe +- DEFINES += $(DEF_GUI) +- OBJ += $(GUIOBJ) +- LFLAGS += -mwindows +- OUTDIR = gobj$(DEBUG_SUFFIX)$(MZSCHEME_SUFFIX)$(ARCH) +- else +- TARGET := vim$(DEBUG_SUFFIX).exe +- OUTDIR = obj$(DEBUG_SUFFIX)$(MZSCHEME_SUFFIX)$(ARCH) +- endif +- +- ifdef GETTEXT +- ifneq (yes, $(GETTEXT)) +- CFLAGS += -I$(GETTEXTINCLUDE) +- ifndef STATIC_GETTEXT +- LIB += -L$(GETTEXTLIB) -l$(INTLLIB) +- ifeq (USE_SAFE_GETTEXT_DLL, $(DYNAMIC_GETTEXT)) +- OBJ+=$(SAFE_GETTEXT_DLL_OBJ) +- endif +- else +- LIB += -L$(GETTEXTLIB) -lintl +- endif +- endif +- endif +- +- ifdef PERL +- ifeq (no, $(DYNAMIC_PERL)) +- LIB += -L$(PERLLIBS) -lperl$(PERL_VER) +- endif +- endif +- +- ifdef TCL +- LIB += -L$(TCL)/lib +- ifeq (yes, $(DYNAMIC_TCL)) +- LIB += -ltclstub$(TCL_VER) +- else +- LIB += -ltcl$(TCL_VER) +- endif +- endif +- +- ifeq (yes, $(OLE)) +- LIB += -loleaut32 +- OBJ += $(OUTDIR)/if_ole.o +- USE_STDCPLUS = yes +- endif +- +- ifeq (yes, $(MBYTE)) +- DEFINES += -DFEAT_MBYTE +- endif +- +- ifeq (yes, $(IME)) +- DEFINES += -DFEAT_MBYTE_IME +- ifeq (yes, $(DYNAMIC_IME)) +- DEFINES += -DDYNAMIC_IME +- else +- LIB += -limm32 +- endif +- endif +- +- ifdef ICONV +- ifneq (yes, $(ICONV)) +- LIB += -L$(ICONV) +- CFLAGS += -I$(ICONV) +- endif +- DEFINES+=-DDYNAMIC_ICONV +- endif +- +- ifeq (yes, $(USE_STDCPLUS)) +- ifeq (yes, $(STATIC_STDCPLUS)) +- LIB += -Wl,-Bstatic -lstdc++ -Wl,-Bdynamic +- else +- LIB += -lstdc++ +- endif +- endif +- +- all: $(TARGET) vimrun.exe xxd/xxd.exe install.exe uninstal.exe GvimExt/gvimext.dll +- +- vimrun.exe: vimrun.c +- $(CC) $(CFLAGS) -o vimrun.exe vimrun.c $(LIB) +- +- install.exe: dosinst.c +- $(CC) $(CFLAGS) -o install.exe dosinst.c $(LIB) -lole32 -luuid +- +- uninstal.exe: uninstal.c +- $(CC) $(CFLAGS) -o uninstal.exe uninstal.c $(LIB) +- +- $(TARGET): $(OUTDIR) $(OBJ) +- $(CC) $(CFLAGS) $(LFLAGS) -o $@ $(OBJ) $(LIB) -lole32 -luuid $(LUA_LIB) $(MZSCHEME_LIBDIR) $(MZSCHEME_LIB) $(PYTHONLIB) $(PYTHON3LIB) $(RUBYLIB) +- +- upx: exes +- upx gvim.exe +- upx vim.exe +- +- mpress: exes +- mpress gvim.exe +- mpress vim.exe +- +- xxd/xxd.exe: xxd/xxd.c +- $(MAKE) -C xxd -f Make_ming.mak CC=$(CC) +- +- GvimExt/gvimext.dll: GvimExt/gvimext.cpp GvimExt/gvimext.rc GvimExt/gvimext.h +- $(MAKE) -C GvimExt -f Make_ming.mak CROSS=$(CROSS) CROSS_COMPILE=$(CROSS_COMPILE) +- +- clean: +- -$(DEL) $(OUTDIR)$(DIRSLASH)*.o +- -$(DEL) $(OUTDIR)$(DIRSLASH)*.res +- -rmdir $(OUTDIR) +- -$(DEL) *.exe +- -$(DEL) pathdef.c +- ifdef PERL +- -$(DEL) if_perl.c +- endif +- ifdef MZSCHEME +- -$(DEL) mzscheme_base.c +- endif +- $(MAKE) -C GvimExt -f Make_ming.mak clean +- $(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 +- +- $(OUTDIR)/if_python.o : if_python.c if_py_both.h $(INCL) +- $(CC) -c $(CFLAGS) $(PYTHONINC) -DDYNAMIC_PYTHON_DLL=\"python$(PYTHON_VER).dll\" $< -o $@ +- +- $(OUTDIR)/if_python3.o : if_python3.c if_py_both.h $(INCL) +- $(CC) -c $(CFLAGS) $(PYTHON3INC) -DDYNAMIC_PYTHON3_DLL=\"PYTHON$(PYTHON3_VER).dll\" $< -o $@ +- +- $(OUTDIR)/%.o : %.c $(INCL) +- $(CC) -c $(CFLAGS) $< -o $@ +- +- $(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)/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_w32.o: gui_w32.c gui_w48.c $(INCL) +- $(CC) -c $(CFLAGS) gui_w32.c -o $(OUTDIR)/gui_w32.o +- +- $(OUTDIR)/gui_dwrite.o: gui_dwrite.cpp $(INCL) gui_dwrite.h +- $(CC) -c $(CFLAGS) gui_dwrite.cpp -o $(OUTDIR)/gui_dwrite.o +- +- $(OUTDIR)/if_cscope.o: if_cscope.c $(INCL) if_cscope.h +- $(CC) -c $(CFLAGS) if_cscope.c -o $(OUTDIR)/if_cscope.o +- +- # Remove -D__IID_DEFINED__ for newer versions of the w32api +- $(OUTDIR)/if_ole.o: if_ole.cpp $(INCL) +- $(CC) $(CFLAGS) -c -o $(OUTDIR)/if_ole.o if_ole.cpp +- +- $(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 +- +- if_perl.c: if_perl.xs typemap +- $(XSUBPP) -prototypes -typemap \ +- $(PERLLIB)/ExtUtils/typemap if_perl.xs > $@ +- +- $(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) +- $(CC) -c $(CFLAGS) regexp.c -o $(OUTDIR)/regexp.o +- +- $(OUTDIR)/if_mzsch.o: if_mzsch.c $(INCL) if_mzsch.h $(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 + +! pathdef.c: $(INCL) +! ifneq (sh.exe, $(SHELL)) +! @echo creating pathdef.c +! @echo '/* pathdef.c */' > pathdef.c +! @echo '#include "vim.h"' >> pathdef.c +! @echo 'char_u *default_vim_dir = (char_u *)"$(VIMRCLOC)";' >> pathdef.c +! @echo 'char_u *default_vimruntime_dir = (char_u *)"$(VIMRUNTIMEDIR)";' >> pathdef.c +! @echo 'char_u *all_cflags = (char_u *)"$(CC) $(CFLAGS)";' >> pathdef.c +! @echo 'char_u *all_lflags = (char_u *)"$(CC) $(CFLAGS) $(LFLAGS) -o $(TARGET) $(LIB) -lole32 -luuid $(LUA_LIB) $(MZSCHEME_LIBDIR) $(MZSCHEME_LIB) $(PYTHONLIB) $(PYTHON3LIB) $(RUBYLIB)";' >> pathdef.c +! @echo 'char_u *compiled_user = (char_u *)"$(USERNAME)";' >> pathdef.c +! @echo 'char_u *compiled_sys = (char_u *)"$(USERDOMAIN)";' >> pathdef.c +! else +! @echo creating pathdef.c +! @echo /* pathdef.c */ > pathdef.c +! @echo #include "vim.h" >> pathdef.c +! @echo char_u *default_vim_dir = (char_u *)"$(VIMRCLOC)"; >> pathdef.c +! @echo char_u *default_vimruntime_dir = (char_u *)"$(VIMRUNTIMEDIR)"; >> pathdef.c +! @echo char_u *all_cflags = (char_u *)"$(CC) $(CFLAGS)"; >> pathdef.c +! @echo char_u *all_lflags = (char_u *)"$(CC) $(CFLAGS) $(LFLAGS) -o $(TARGET) $(LIB) -lole32 -luuid $(LUA_LIB) $(MZSCHEME_LIBDIR) $(MZSCHEME_LIB) $(PYTHONLIB) $(PYTHON3LIB) $(RUBYLIB)"; >> pathdef.c +! @echo char_u *compiled_user = (char_u *)"$(USERNAME)"; >> pathdef.c +! @echo char_u *compiled_sys = (char_u *)"$(USERDOMAIN)"; >> pathdef.c +! endif +--- 34,49 ---- + # on my NT box, it's here: + #PYTHON=c:/python20 + +! # uncomment 'PYTHON3' if you want a python3-enabled version +! #PYTHON3=c:/python31 + +! # uncomment 'TCL' if you want a Tcl-enabled version + #TCL=c:/tcl + +! # uncomment 'RUBY' if you want a Ruby-enabled version + #RUBY=c:/ruby + + +! # Do not change this. +! UNDER_CYGWIN = no +! include Make_cyg_ming.mak +*** ../vim-7.4.495/src/Make_mvc.mak 2014-08-22 18:12:53.995244049 +0200 +--- src/Make_mvc.mak 2014-11-05 13:49:27.080811946 +0100 +*************** +*** 50,62 **** + # Perl interface: + # PERL=[Path to Perl directory] + # DYNAMIC_PERL=yes (to load the Perl DLL dynamically) +! # PERL_VER=[Perl version, in the form 55 (5.005), 56 (5.6.x), etc] + # (default is 56) + # + # Python interface: + # PYTHON=[Path to Python directory] + # DYNAMIC_PYTHON=yes (to load the Python DLL dynamically) +! # PYTHON_VER=[Python version, eg 15, 20] (default is 22) + # + # Python3 interface: + # PYTHON3=[Path to Python3 directory] +--- 50,63 ---- + # Perl interface: + # PERL=[Path to Perl directory] + # DYNAMIC_PERL=yes (to load the Perl DLL dynamically) +! # PERL_VER=[Perl version, in the form 55 (5.005), 56 (5.6.x), +! # 510 (5.10.x), etc] + # (default is 56) + # + # Python interface: + # PYTHON=[Path to Python directory] + # DYNAMIC_PYTHON=yes (to load the Python DLL dynamically) +! # PYTHON_VER=[Python version, eg 22, 23, ..., 27] (default is 22) + # + # Python3 interface: + # PYTHON3=[Path to Python3 directory] +*************** +*** 66,76 **** + # Ruby interface: + # RUBY=[Path to Ruby directory] + # DYNAMIC_RUBY=yes (to load the Ruby DLL dynamically) +! # RUBY_VER=[Ruby version, eg 16, 17] (default is 18) +! # RUBY_VER_LONG=[Ruby version, eg 1.6, 1.7] (default is 1.8) + # You must set RUBY_VER_LONG when change RUBY_VER. +! # You must set RUBY_API_VER to RUBY_VER_LONG. +! # Don't set ruby API version to RUBY_VER like 191. + # + # Tcl interface: + # TCL=[Path to Tcl directory] +--- 67,79 ---- + # Ruby interface: + # RUBY=[Path to Ruby directory] + # DYNAMIC_RUBY=yes (to load the Ruby DLL dynamically) +! # RUBY_VER=[Ruby version, eg 18, 19, 20] (default is 18) +! # RUBY_VER_LONG=[Ruby version, eg 1.8, 1.9.1, 2.0.0] (default is 1.8) + # You must set RUBY_VER_LONG when change RUBY_VER. +! # RUBY_API_VER is derived from RUBY_VER_LONG. +! # Note: If you use Ruby 1.9.3, set as follows: +! # RUBY_VER=19 +! # RUBY_VER_LONG=1.9.1 (not 1.9.3, because the API version is 1.9.1.) + # + # Tcl interface: + # TCL=[Path to Tcl directory] +*** ../vim-7.4.495/Filelist 2014-08-29 15:12:50.950447798 +0200 +--- Filelist 2014-11-05 13:52:11.840807976 +0100 +*************** +*** 277,282 **** +--- 277,283 ---- + src/Make_bc3.mak \ + src/Make_bc5.mak \ + src/Make_cyg.mak \ ++ src/Make_cyg_ming.mak \ + src/Make_djg.mak \ + src/Make_ivc.mak \ + src/Make_dvc.mak \ +*** ../vim-7.4.495/src/version.c 2014-11-05 13:43:18.352820831 +0100 +--- src/version.c 2014-11-05 13:51:22.216809171 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 496, + /**/ + +-- +ARTHUR: What? +BLACK KNIGHT: None shall pass. +ARTHUR: I have no quarrel with you, good Sir knight, but I must cross + this bridge. +BLACK KNIGHT: Then you shall die. + The Quest for the Holy Grail (Monty Python) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.497 b/SOURCES/7.4.497 new file mode 100644 index 0000000..d29eb20 --- /dev/null +++ b/SOURCES/7.4.497 @@ -0,0 +1,854 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.497 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.497 +Problem: With some regexp patterns the NFA engine uses many states and + becomes very slow. To the user it looks like Vim freezes. +Solution: When the number of states reaches a limit fall back to the old + engine. (Christian Brabandt) +Files: runtime/doc/options.txt, src/Makefile, src/regexp.c, src/regexp.h, + src/regexp_nfa.c, src/testdir/Make_dos.mak, + src/testdir/Make_ming.mak, src/testdir/Make_os2.mak, + src/testdir/Makefile, src/testdir/samples/re.freeze.txt, + src/testdir/bench_re_freeze.in, src/testdir/bench_re_freeze.vim, + Filelist + + +*** ../vim-7.4.496/runtime/doc/options.txt 2014-09-23 15:45:04.866801055 +0200 +--- runtime/doc/options.txt 2014-11-05 12:06:16.664961112 +0100 +*************** +*** 5622,5627 **** +--- 5626,5635 ---- + Note that when using the NFA engine and the pattern contains something + that is not supported the pattern will not match. This is only useful + for debugging the regexp engine. ++ Using automatic selection enables Vim to switch the engine, if the ++ default engine becomes too costly. E.g., when the NFA engine uses too ++ many states. This should prevent Vim from hanging on a combination of ++ a complex pattern with long text. + + *'relativenumber'* *'rnu'* *'norelativenumber'* *'nornu'* + 'relativenumber' 'rnu' boolean (default off) +*** ../vim-7.4.496/src/Makefile 2014-08-17 17:05:39.155057796 +0200 +--- src/Makefile 2014-11-05 12:01:58.704967328 +0100 +*************** +*** 1879,1884 **** +--- 1879,1887 ---- + cd testdir; $(MAKE) -f Makefile $(GUI_TESTTARGET) VIMPROG=../$(VIMTARGET) $(GUI_TESTARG) SCRIPTSOURCE=../$(SCRIPTSOURCE) + $(MAKE) -f Makefile unittest + ++ benchmark: ++ cd testdir; $(MAKE) -f Makefile benchmark VIMPROG=../$(VIMTARGET) SCRIPTSOURCE=../$(SCRIPTSOURCE) ++ + unittesttargets: + $(MAKE) -f Makefile $(UNITTEST_TARGETS) + +*** ../vim-7.4.496/src/regexp.c 2014-09-09 17:18:44.008540299 +0200 +--- src/regexp.c 2014-11-05 14:05:40.544788489 +0100 +*************** +*** 8011,8023 **** + bt_regcomp, + bt_regfree, + bt_regexec_nl, +! bt_regexec_multi +! #ifdef DEBUG +! ,(char_u *)"" +! #endif + }; + +- + #include "regexp_nfa.c" + + static regengine_T nfa_regengine = +--- 8011,8020 ---- + bt_regcomp, + bt_regfree, + bt_regexec_nl, +! bt_regexec_multi, +! (char_u *)"" + }; + + #include "regexp_nfa.c" + + static regengine_T nfa_regengine = +*************** +*** 8025,8042 **** + nfa_regcomp, + nfa_regfree, + nfa_regexec_nl, +! nfa_regexec_multi +! #ifdef DEBUG +! ,(char_u *)"" +! #endif + }; + + /* Which regexp engine to use? Needed for vim_regcomp(). + * Must match with 'regexpengine'. */ + static int regexp_engine = 0; +! #define AUTOMATIC_ENGINE 0 +! #define BACKTRACKING_ENGINE 1 +! #define NFA_ENGINE 2 + #ifdef DEBUG + static char_u regname[][30] = { + "AUTOMATIC Regexp Engine", +--- 8022,8035 ---- + nfa_regcomp, + nfa_regfree, + nfa_regexec_nl, +! nfa_regexec_multi, +! (char_u *)"" + }; + + /* Which regexp engine to use? Needed for vim_regcomp(). + * Must match with 'regexpengine'. */ + static int regexp_engine = 0; +! + #ifdef DEBUG + static char_u regname[][30] = { + "AUTOMATIC Regexp Engine", +*************** +*** 8083,8092 **** + regexp_engine = AUTOMATIC_ENGINE; + } + } +- #ifdef DEBUG + bt_regengine.expr = expr; + nfa_regengine.expr = expr; +- #endif + + /* + * First try the NFA engine, unless backtracking was requested. +--- 8076,8083 ---- +*************** +*** 8096,8102 **** + else + prog = bt_regengine.regcomp(expr, re_flags); + +! if (prog == NULL) /* error compiling regexp with initial engine */ + { + #ifdef BT_REGEXP_DEBUG_LOG + if (regexp_engine != BACKTRACKING_ENGINE) /* debugging log for NFA */ +--- 8087,8094 ---- + else + prog = bt_regengine.regcomp(expr, re_flags); + +! /* Check for error compiling regexp with initial engine. */ +! if (prog == NULL) + { + #ifdef BT_REGEXP_DEBUG_LOG + if (regexp_engine != BACKTRACKING_ENGINE) /* debugging log for NFA */ +*************** +*** 8114,8126 **** + } + #endif + /* +! * If the NFA engine failed, the backtracking engine won't work either. + * + if (regexp_engine == AUTOMATIC_ENGINE) + prog = bt_regengine.regcomp(expr, re_flags); + */ + } + + return prog; + } + +--- 8106,8132 ---- + } + #endif + /* +! * If the NFA engine failed, try the backtracking engine. +! * Disabled for now, both engines fail on the same patterns. +! * Re-enable when regcomp() fails when the pattern would work better +! * with the other engine. + * + if (regexp_engine == AUTOMATIC_ENGINE) ++ { + prog = bt_regengine.regcomp(expr, re_flags); ++ regexp_engine == BACKTRACKING_ENGINE; ++ } + */ + } + ++ if (prog != NULL) ++ { ++ /* Store the info needed to call regcomp() again when the engine turns ++ * out to be very slow when executing it. */ ++ prog->re_engine = regexp_engine; ++ prog->re_flags = re_flags; ++ } ++ + return prog; + } + +*************** +*** 8135,8154 **** + prog->engine->regfree(prog); + } + + /* + * Match a regexp against a string. + * "rmp->regprog" is a compiled regexp as returned by vim_regcomp(). + * Uses curbuf for line count and 'iskeyword'. + * + * Return TRUE if there is a match, FALSE if not. + */ + int + vim_regexec(rmp, line, col) +! regmatch_T *rmp; +! char_u *line; /* string to match against */ +! colnr_T col; /* column to start looking for match */ + { +! return rmp->regprog->engine->regexec_nl(rmp, line, col, FALSE); + } + + #if defined(FEAT_MODIFY_FNAME) || defined(FEAT_EVAL) \ +--- 8141,8215 ---- + prog->engine->regfree(prog); + } + ++ #ifdef FEAT_EVAL ++ static void report_re_switch __ARGS((char_u *pat)); ++ ++ static void ++ report_re_switch(pat) ++ char_u *pat; ++ { ++ if (p_verbose > 0) ++ { ++ verbose_enter(); ++ MSG_PUTS(_("Switching to backtracking RE engine for pattern: ")); ++ MSG_PUTS(pat); ++ verbose_leave(); ++ } ++ } ++ #endif ++ ++ static int vim_regexec_both __ARGS((regmatch_T *rmp, char_u *line, colnr_T col, int nl)); ++ + /* + * Match a regexp against a string. + * "rmp->regprog" is a compiled regexp as returned by vim_regcomp(). + * Uses curbuf for line count and 'iskeyword'. ++ * When "nl" is TRUE consider a "\n" in "line" to be a line break. + * + * Return TRUE if there is a match, FALSE if not. + */ ++ static int ++ vim_regexec_both(rmp, line, col, nl) ++ regmatch_T *rmp; ++ char_u *line; /* string to match against */ ++ colnr_T col; /* column to start looking for match */ ++ int nl; ++ { ++ int result = rmp->regprog->engine->regexec_nl(rmp, line, col, nl); ++ ++ /* NFA engine aborted because it's very slow. */ ++ if (rmp->regprog->re_engine == AUTOMATIC_ENGINE ++ && result == NFA_TOO_EXPENSIVE) ++ { ++ int save_p_re = p_re; ++ int re_flags = rmp->regprog->re_flags; ++ char_u *pat = vim_strsave(((nfa_regprog_T *)rmp->regprog)->pattern); ++ ++ p_re = BACKTRACKING_ENGINE; ++ vim_regfree(rmp->regprog); ++ if (pat != NULL) ++ { ++ #ifdef FEAT_EVAL ++ report_re_switch(pat); ++ #endif ++ rmp->regprog = vim_regcomp(pat, re_flags); ++ if (rmp->regprog != NULL) ++ result = rmp->regprog->engine->regexec_nl(rmp, line, col, nl); ++ vim_free(pat); ++ } ++ ++ p_re = save_p_re; ++ } ++ return result; ++ } ++ + int + vim_regexec(rmp, line, col) +! regmatch_T *rmp; +! char_u *line; +! colnr_T col; + { +! return vim_regexec_both(rmp, line, col, FALSE); + } + + #if defined(FEAT_MODIFY_FNAME) || defined(FEAT_EVAL) \ +*************** +*** 8158,8168 **** + */ + int + vim_regexec_nl(rmp, line, col) +! regmatch_T *rmp; +! char_u *line; +! colnr_T col; + { +! return rmp->regprog->engine->regexec_nl(rmp, line, col, TRUE); + } + #endif + +--- 8219,8229 ---- + */ + int + vim_regexec_nl(rmp, line, col) +! regmatch_T *rmp; +! char_u *line; +! colnr_T col; + { +! return vim_regexec_both(rmp, line, col, TRUE); + } + #endif + +*************** +*** 8183,8187 **** + colnr_T col; /* column to start looking for match */ + proftime_T *tm; /* timeout limit or NULL */ + { +! return rmp->regprog->engine->regexec_multi(rmp, win, buf, lnum, col, tm); + } +--- 8244,8275 ---- + colnr_T col; /* column to start looking for match */ + proftime_T *tm; /* timeout limit or NULL */ + { +! int result = rmp->regprog->engine->regexec_multi( +! rmp, win, buf, lnum, col, tm); +! +! /* NFA engine aborted because it's very slow. */ +! if (rmp->regprog->re_engine == AUTOMATIC_ENGINE +! && result == NFA_TOO_EXPENSIVE) +! { +! int save_p_re = p_re; +! int re_flags = rmp->regprog->re_flags; +! char_u *pat = vim_strsave(((nfa_regprog_T *)rmp->regprog)->pattern); +! +! p_re = BACKTRACKING_ENGINE; +! vim_regfree(rmp->regprog); +! if (pat != NULL) +! { +! #ifdef FEAT_EVAL +! report_re_switch(pat); +! #endif +! rmp->regprog = vim_regcomp(pat, re_flags); +! if (rmp->regprog != NULL) +! result = rmp->regprog->engine->regexec_multi( +! rmp, win, buf, lnum, col, tm); +! vim_free(pat); +! } +! p_re = save_p_re; +! } +! +! return result; + } +*** ../vim-7.4.496/src/regexp.h 2014-04-23 19:06:33.702828771 +0200 +--- src/regexp.h 2014-11-05 13:09:14.136870089 +0100 +*************** +*** 27,32 **** +--- 27,44 ---- + */ + #define NFA_MAX_BRACES 20 + ++ /* ++ * In the NFA engine: how many states are allowed ++ */ ++ #define NFA_MAX_STATES 100000 ++ #define NFA_TOO_EXPENSIVE -1 ++ ++ /* Which regexp engine to use? Needed for vim_regcomp(). ++ * Must match with 'regexpengine'. */ ++ #define AUTOMATIC_ENGINE 0 ++ #define BACKTRACKING_ENGINE 1 ++ #define NFA_ENGINE 2 ++ + typedef struct regengine regengine_T; + + /* +*************** +*** 38,43 **** +--- 50,57 ---- + { + regengine_T *engine; + unsigned regflags; ++ unsigned re_engine; /* automatic, backtracking or nfa engine */ ++ unsigned re_flags; /* second argument for vim_regcomp() */ + } regprog_T; + + /* +*************** +*** 47,55 **** + */ + typedef struct + { +! /* These two members implement regprog_T */ + regengine_T *engine; + unsigned regflags; + + int regstart; + char_u reganch; +--- 61,71 ---- + */ + typedef struct + { +! /* These four members implement regprog_T */ + regengine_T *engine; + unsigned regflags; ++ unsigned re_engine; ++ unsigned re_flags; /* second argument for vim_regcomp() */ + + int regstart; + char_u reganch; +*************** +*** 81,89 **** + */ + typedef struct + { +! /* These two members implement regprog_T */ + regengine_T *engine; + unsigned regflags; + + nfa_state_T *start; /* points into state[] */ + +--- 97,107 ---- + */ + typedef struct + { +! /* These three members implement regprog_T */ + regengine_T *engine; + unsigned regflags; ++ unsigned re_engine; ++ unsigned re_flags; /* second argument for vim_regcomp() */ + + nfa_state_T *start; /* points into state[] */ + +*************** +*** 96,104 **** + #ifdef FEAT_SYN_HL + int reghasz; + #endif +- #ifdef DEBUG + char_u *pattern; +- #endif + int nsubexp; /* number of () */ + int nstate; + nfa_state_T state[1]; /* actually longer.. */ +--- 114,120 ---- +*************** +*** 151,159 **** + void (*regfree)(regprog_T *); + int (*regexec_nl)(regmatch_T*, char_u*, colnr_T, int); + long (*regexec_multi)(regmmatch_T*, win_T*, buf_T*, linenr_T, colnr_T, proftime_T*); +- #ifdef DEBUG + char_u *expr; +- #endif + }; + + #endif /* _REGEXP_H */ +--- 167,173 ---- +*** ../vim-7.4.496/src/regexp_nfa.c 2014-10-11 12:48:22.541259950 +0200 +--- src/regexp_nfa.c 2014-11-05 13:08:43.876870818 +0100 +*************** +*** 5522,5527 **** +--- 5522,5534 ---- + nextlist->n = 0; /* clear nextlist */ + nextlist->has_pim = FALSE; + ++nfa_listid; ++ if (prog->re_engine == AUTOMATIC_ENGINE && nfa_listid >= NFA_MAX_STATES) ++ { ++ /* too many states, retry with old engine */ ++ nfa_match = NFA_TOO_EXPENSIVE; ++ goto theend; ++ } ++ + thislist->id = nfa_listid; + nextlist->id = nfa_listid + 1; + +*************** +*** 5704,5709 **** +--- 5711,5721 ---- + */ + result = recursive_regmatch(t->state, NULL, prog, + submatch, m, &listids); ++ if (result == NFA_TOO_EXPENSIVE) ++ { ++ nfa_match = result; ++ goto theend; ++ } + + /* for \@! and \@<! it is a match when the result is + * FALSE */ +*************** +*** 5817,5822 **** +--- 5829,5839 ---- + /* First try matching the pattern. */ + result = recursive_regmatch(t->state, NULL, prog, + submatch, m, &listids); ++ if (result == NFA_TOO_EXPENSIVE) ++ { ++ nfa_match = result; ++ goto theend; ++ } + if (result) + { + int bytelen; +*************** +*** 6760,6765 **** +--- 6777,6783 ---- + int i; + regsubs_T subs, m; + nfa_state_T *start = prog->start; ++ int result; + #ifdef ENABLE_LOG + FILE *f; + #endif +*************** +*** 6791,6798 **** + clear_sub(&m.synt); + #endif + +! if (nfa_regmatch(prog, start, &subs, &m) == FALSE) + return 0; + + cleanup_subexpr(); + if (REG_MULTI) +--- 6809,6819 ---- + clear_sub(&m.synt); + #endif + +! result = nfa_regmatch(prog, start, &subs, &m); +! if (result == FALSE) + return 0; ++ else if (result == NFA_TOO_EXPENSIVE) ++ return result; + + cleanup_subexpr(); + if (REG_MULTI) +*************** +*** 6929,6937 **** + nfa_nsubexpr = prog->nsubexp; + nfa_listid = 1; + nfa_alt_listid = 2; +- #ifdef DEBUG + nfa_regengine.expr = prog->pattern; +- #endif + + if (prog->reganch && col > 0) + return 0L; +--- 6950,6956 ---- +*************** +*** 6979,6987 **** + + retval = nfa_regtry(prog, col); + +- #ifdef DEBUG + nfa_regengine.expr = NULL; +- #endif + + theend: + return retval; +--- 6998,7004 ---- +*************** +*** 7003,7011 **** + if (expr == NULL) + return NULL; + +- #ifdef DEBUG + nfa_regengine.expr = expr; +- #endif + + init_class_tab(); + +--- 7020,7026 ---- +*************** +*** 7082,7091 **** + /* Remember whether this pattern has any \z specials in it. */ + prog->reghasz = re_has_z; + #endif +- #ifdef DEBUG + prog->pattern = vim_strsave(expr); + nfa_regengine.expr = NULL; +- #endif + + out: + vim_free(post_start); +--- 7097,7104 ---- +*************** +*** 7099,7107 **** + #ifdef ENABLE_LOG + nfa_postfix_dump(expr, FAIL); + #endif +- #ifdef DEBUG + nfa_regengine.expr = NULL; +- #endif + goto out; + } + +--- 7112,7118 ---- +*************** +*** 7115,7123 **** + if (prog != NULL) + { + vim_free(((nfa_regprog_T *)prog)->match_text); +- #ifdef DEBUG + vim_free(((nfa_regprog_T *)prog)->pattern); +- #endif + vim_free(prog); + } + } +--- 7126,7132 ---- +*** ../vim-7.4.496/src/testdir/Make_dos.mak 2014-10-21 20:57:11.534295006 +0200 +--- src/testdir/Make_dos.mak 2014-11-05 14:14:56.536775091 +0100 +*************** +*** 87,92 **** +--- 87,93 ---- + -if exist Xfind rd /s /q Xfind + -if exist viminfo del viminfo + -del test.log ++ -if exists benchmark.out del benchmark.out + + .in.out: + -if exist $*.failed del $*.failed +*************** +*** 103,105 **** +--- 104,114 ---- + + nolog: + -del test.log ++ ++ benchmark: ++ bench_re_freeze.out ++ ++ bench_re_freeze.out: bench_re_freeze.vim ++ -if exist benchmark.out del benchmark.out ++ $(VIMPROG) -u dos.vim -U NONE --noplugin $*.in ++ @IF EXIST benchmark.out ( type benchmark.out ) +*** ../vim-7.4.496/src/testdir/Make_ming.mak 2014-10-21 20:57:11.534295006 +0200 +--- src/testdir/Make_ming.mak 2014-11-05 14:15:09.608774776 +0100 +*************** +*** 12,22 **** +--- 12,24 ---- + DEL = rm -f + MV = mv + CP = cp ++ CAT = cat + DIRSLASH = / + else + DEL = del + MV = rename + CP = copy ++ CAT = type + DIRSLASH = \\ + endif + +*************** +*** 72,77 **** +--- 74,81 ---- + + SCRIPTS_GUI = test16.out + ++ SCRIPTS_BENCH = bench_re_freeze.out ++ + .SUFFIXES: .in .out + + vimall: fixff $(SCRIPTS16) $(SCRIPTS) $(SCRIPTS_GUI) $(SCRIPTS32) +*************** +*** 80,85 **** +--- 84,91 ---- + nongui: fixff $(SCRIPTS16) $(SCRIPTS) + echo ALL DONE + ++ benchmark: $(SCRIPTS_BENCH) ++ + small: + echo ALL DONE + +*************** +*** 114,116 **** +--- 120,127 ---- + -$(DEL) X* + -$(DEL) test.ok + -$(DEL) viminfo ++ ++ bench_re_freeze.out: bench_re_freeze.vim ++ -$(DEL) benchmark.out ++ $(VIMPROG) -u dos.vim -U NONE --noplugin $*.in ++ $(CAT) benchmark.out +*** ../vim-7.4.496/src/testdir/Make_os2.mak 2014-10-21 20:57:11.538295006 +0200 +--- src/testdir/Make_os2.mak 2014-11-05 12:57:59.616886342 +0100 +*************** +*** 50,55 **** +--- 50,57 ---- + test_signs.out \ + test_utf8.out + ++ SCRIPTS_BENCH = bench_re_freeze.out ++ + .SUFFIXES: .in .out + + all: /tmp $(SCRIPTS) +*************** +*** 57,62 **** +--- 59,66 ---- + + $(SCRIPTS): $(VIMPROG) + ++ benchmark: $(SCRIPTS_BENCH) ++ + clean: + -rm -rf *.out Xdotest test.ok tiny.vim small.vim mbyte.vim viminfo + +*************** +*** 75,77 **** +--- 79,88 ---- + # Create a directory for temp files + /tmp: + -mkdir /tmp ++ ++ bench_re_freeze.out: bench_re_freeze.vim ++ -del $*.failed test.ok benchmark.out ++ copy $*.ok test.ok ++ $(VIMPROG) -u os2.vim --noplugin -s dotest.in $*.in ++ type benchmark.out ++ +*** ../vim-7.4.496/src/testdir/Makefile 2014-10-21 20:57:11.538295006 +0200 +--- src/testdir/Makefile 2014-11-05 14:15:13.320774687 +0100 +*************** +*** 48,59 **** +--- 48,63 ---- + + SCRIPTS_GUI = test16.out + ++ SCRIPTS_BENCH = bench_re_freeze.out ++ + .SUFFIXES: .in .out + + nongui: nolog $(SCRIPTS) report + + gui: nolog $(SCRIPTS) $(SCRIPTS_GUI) report + ++ benchmark: $(SCRIPTS_BENCH) ++ + report: + @echo + @echo 'Test results:' +*************** +*** 65,71 **** + $(SCRIPTS) $(SCRIPTS_GUI): $(VIMPROG) + + RM_ON_RUN = test.out X* viminfo +! RM_ON_START = tiny.vim small.vim mbyte.vim mzscheme.vim lua.vim test.ok + RUN_VIM = VIMRUNTIME=$(SCRIPTSOURCE); export VIMRUNTIME; $(VALGRIND) $(VIMPROG) -u unix.vim -U NONE --noplugin -s dotest.in + + clean: +--- 69,75 ---- + $(SCRIPTS) $(SCRIPTS_GUI): $(VIMPROG) + + RM_ON_RUN = test.out X* viminfo +! RM_ON_START = tiny.vim small.vim mbyte.vim mzscheme.vim lua.vim test.ok benchmark.out + RUN_VIM = VIMRUNTIME=$(SCRIPTSOURCE); export VIMRUNTIME; $(VALGRIND) $(VIMPROG) -u unix.vim -U NONE --noplugin -s dotest.in + + clean: +*************** +*** 120,124 **** +--- 124,137 ---- + + test60.out: test60.vim + ++ bench_re_freeze.out: bench_re_freeze.vim ++ -rm -rf benchmark.out $(RM_ON_RUN) ++ # Sleep a moment to avoid that the xterm title is messed up. ++ # 200 msec is sufficient, but only modern sleep supports a fraction of ++ # a second, fall back to a second if it fails. ++ @-/bin/sh -c "sleep .2 > /dev/null 2>&1 || sleep 1" ++ -$(RUN_VIM) $*.in ++ @/bin/sh -c "if test -f benchmark.out; then cat benchmark.out; fi" ++ + nolog: + -rm -f test.log +*** ../vim-7.4.496/src/testdir/samples/re.freeze.txt 1970-01-01 01:00:00.000000000 +0100 +--- src/testdir/samples/re.freeze.txt 2014-11-05 11:50:44.176983582 +0100 +*************** +*** 0 **** +--- 1,6 ---- ++ :set re=0 or 2 ++ Search for the pattern: /\s\+\%#\@<!$/ ++ vim should not freeze. ++ ++ <td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td><td style="border-bottom windowtext 0.5pt solid; border-left windowtext;" class=abc align=right><font face=arial><font color=#ff0000><b>5</b></font></font></td> ++ +*** ../vim-7.4.496/src/testdir/bench_re_freeze.in 2014-11-05 14:02:46.420792685 +0100 +--- src/testdir/bench_re_freeze.in 2014-11-05 14:24:33.000761201 +0100 +*************** +*** 0 **** +--- 1,13 ---- ++ Test for Benchmarking RE engine ++ ++ STARTTEST ++ :so small.vim ++ :if !has("reltime") | qa! | endif ++ :set nocp cpo&vim ++ :so bench_re_freeze.vim ++ :call Measure('samples/re.freeze.txt', '\s\+\%#\@<!$', '+5') ++ :/^" Benchmark/,$w! benchmark.out ++ :qa! ++ ENDTEST ++ ++ " Benchmark_results: +*** ../vim-7.4.496/src/testdir/bench_re_freeze.vim 2014-11-05 14:02:46.432792684 +0100 +--- src/testdir/bench_re_freeze.vim 2014-11-05 14:09:15.668783305 +0100 +*************** +*** 0 **** +--- 1,13 ---- ++ "Test for benchmarking the RE engine ++ ++ so small.vim ++ if !has("reltime") | finish | endif ++ func! Measure(file, pattern, arg) ++ for re in range(3) ++ let sstart=reltime() ++ let cmd=printf("../vim -u NONE -N --cmd ':set re=%d'". ++ \ " -c 'call search(\"%s\", \"\", \"\", 10000)' -c ':q!' %s", re, escape(a:pattern, '\\'), empty(a:arg) ? '' : a:arg) ++ call system(cmd. ' '. a:file) ++ $put =printf('file: %s, re: %d, time: %s', a:file, re, reltimestr(reltime(sstart))) ++ endfor ++ endfunc +*** ../vim-7.4.497/Filelist 2014-11-05 13:53:13.188806497 +0100 +--- Filelist 2014-11-05 14:11:48.208779629 +0100 +*************** +*** 102,107 **** +--- 102,110 ---- + src/testdir/pythonx/topmodule/submodule/subsubmodule/subsubsubmodule.py \ + src/testdir/python_after/*.py \ + src/testdir/python_before/*.py \ ++ src/testdir/bench*.in \ ++ src/testdir/bench*.vim \ ++ src/testdir/samples.*.txt \ + src/proto.h \ + src/proto/blowfish.pro \ + src/proto/buffer.pro \ +*** ../vim-7.4.496/src/version.c 2014-11-05 13:53:13.188806497 +0100 +--- src/version.c 2014-11-05 14:02:11.728793520 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 497, + /**/ + +-- + With sufficient thrust, pigs fly just fine. + -- RFC 1925 + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.498 b/SOURCES/7.4.498 new file mode 100644 index 0000000..bd74d77 --- /dev/null +++ b/SOURCES/7.4.498 @@ -0,0 +1,57 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.498 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.498 (after 7.4.497) +Problem: Typo in DOS makefile. +Solution: Change exists to exist. (Ken Takata) +Files: src/testdir/Make_dos.mak + + +*** ../vim-7.4.497/src/testdir/Make_dos.mak 2014-11-05 14:26:30.764758363 +0100 +--- src/testdir/Make_dos.mak 2014-11-05 15:44:09.476646105 +0100 +*************** +*** 87,93 **** + -if exist Xfind rd /s /q Xfind + -if exist viminfo del viminfo + -del test.log +! -if exists benchmark.out del benchmark.out + + .in.out: + -if exist $*.failed del $*.failed +--- 87,93 ---- + -if exist Xfind rd /s /q Xfind + -if exist viminfo del viminfo + -del test.log +! -if exist benchmark.out del benchmark.out + + .in.out: + -if exist $*.failed del $*.failed +*** ../vim-7.4.497/src/version.c 2014-11-05 14:26:30.768758363 +0100 +--- src/version.c 2014-11-05 15:44:54.832645012 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 498, + /**/ + +-- +BLACK KNIGHT: I move for no man. +ARTHUR: So be it! + [hah] [parry thrust] + [ARTHUR chops the BLACK KNIGHT's left arm off] +ARTHUR: Now stand aside, worthy adversary. +BLACK KNIGHT: 'Tis but a scratch. + The Quest for the Holy Grail (Monty Python) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.499 b/SOURCES/7.4.499 new file mode 100644 index 0000000..74a47ac --- /dev/null +++ b/SOURCES/7.4.499 @@ -0,0 +1,76 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.499 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.499 +Problem: substitute() can be slow with long strings. +Solution: Store a pointer to the end, instead of calling strlen() every + time. (Ozaki Kiichi) +Files: src/eval.c + + +*** ../vim-7.4.498/src/eval.c 2014-10-31 15:45:49.171053328 +0100 +--- src/eval.c 2014-11-05 15:49:49.040637923 +0100 +*************** +*** 25076,25081 **** +--- 25076,25082 ---- + int i; + int do_all; + char_u *tail; ++ char_u *end; + garray_T ga; + char_u *ret; + char_u *save_cpo; +*************** +*** 25094,25099 **** +--- 25095,25101 ---- + if (regmatch.regprog != NULL) + { + tail = str; ++ end = str + STRLEN(str); + while (vim_regexec_nl(®match, str, (colnr_T)(tail - str))) + { + /* Skip empty match except for first match. */ +*************** +*** 25120,25126 **** + * - The text after the match. + */ + sublen = vim_regsub(®match, sub, tail, FALSE, TRUE, FALSE); +! if (ga_grow(&ga, (int)(STRLEN(tail) + sublen - + (regmatch.endp[0] - regmatch.startp[0]))) == FAIL) + { + ga_clear(&ga); +--- 25122,25128 ---- + * - The text after the match. + */ + sublen = vim_regsub(®match, sub, tail, FALSE, TRUE, FALSE); +! if (ga_grow(&ga, (int)((end - tail) + sublen - + (regmatch.endp[0] - regmatch.startp[0]))) == FAIL) + { + ga_clear(&ga); +*** ../vim-7.4.498/src/version.c 2014-11-05 15:46:06.212643292 +0100 +--- src/version.c 2014-11-05 15:50:52.880636385 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 499, + /**/ + +-- +ARTHUR: A scratch? Your arm's off! +BLACK KNIGHT: No, it isn't. +ARTHUR: Well, what's that then? +BLACK KNIGHT: I've had worse. + The Quest for the Holy Grail (Monty Python) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.500 b/SOURCES/7.4.500 new file mode 100644 index 0000000..0f6089c --- /dev/null +++ b/SOURCES/7.4.500 @@ -0,0 +1,78 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.500 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.500 +Problem: Test 72 still fails once in a while. +Solution: Don't set 'fileformat' to unix, reset it. (Ken Takata) +Files: src/testdir/test72.in + + +*** ../vim-7.4.499/src/testdir/test72.in 2014-08-16 17:34:31.186128463 +0200 +--- src/testdir/test72.in 2014-11-05 16:34:30.068573320 +0100 +*************** +*** 8,14 **** + :" Test 'undofile': first a simple one-line change. + :set nocompatible viminfo+=nviminfo visualbell + :set ul=100 undofile nomore +- :set ff=unix + :e! Xtestfile + ggdGithis is one line:set ul=100 + :s/one/ONE/ +--- 8,13 ---- +*************** +*** 83,89 **** + :" With encryption, cryptmethod=blowfish + :e! Xtestfile + rubbish +! :set undofile cm=blowfish + ggdGijan + feb + mar +--- 82,88 ---- + :" With encryption, cryptmethod=blowfish + :e! Xtestfile + rubbish +! :set undofile cm=blowfish ff& + ggdGijan + feb + mar +*************** +*** 109,115 **** + :" With encryption, cryptmethod=blowfish2 + :e! Xtestfile + rubbish +! :set undofile cm=blowfish2 + ggdGijan + feb + mar +--- 108,114 ---- + :" With encryption, cryptmethod=blowfish2 + :e! Xtestfile + rubbish +! :set undofile cm=blowfish2 ff& + ggdGijan + feb + mar +*** ../vim-7.4.499/src/version.c 2014-11-05 16:03:40.588617886 +0100 +--- src/version.c 2014-11-05 16:34:20.368573554 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 500, + /**/ + +-- +No letters of the alphabet were harmed in the creation of this message. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.501 b/SOURCES/7.4.501 new file mode 100644 index 0000000..e21745a --- /dev/null +++ b/SOURCES/7.4.501 @@ -0,0 +1,52 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.501 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.501 (after 7.4.497) +Problem: Typo in file pattern. +Solution: Insert a slash and remove a dot. +Files: Filelist + + +*** ../vim-7.4.500/Filelist 2014-11-05 14:29:27.708754099 +0100 +--- Filelist 2014-11-05 17:03:41.104531126 +0100 +*************** +*** 104,110 **** + src/testdir/python_before/*.py \ + src/testdir/bench*.in \ + src/testdir/bench*.vim \ +! src/testdir/samples.*.txt \ + src/proto.h \ + src/proto/blowfish.pro \ + src/proto/buffer.pro \ +--- 104,110 ---- + src/testdir/python_before/*.py \ + src/testdir/bench*.in \ + src/testdir/bench*.vim \ +! src/testdir/samples/*.txt \ + src/proto.h \ + src/proto/blowfish.pro \ + src/proto/buffer.pro \ +*** ../vim-7.4.500/src/version.c 2014-11-05 16:39:24.712566220 +0100 +--- src/version.c 2014-11-05 17:03:19.828531639 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 501, + /**/ + +-- +"It's so simple to be wise. Just think of something stupid to say +and then don't say it." -- Sam Levenson + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.502 b/SOURCES/7.4.502 new file mode 100644 index 0000000..812ef79 --- /dev/null +++ b/SOURCES/7.4.502 @@ -0,0 +1,191 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.502 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.502 +Problem: Language mapping also applies to mapped characters. +Solution: Add the 'langnoremap' option, when on 'langmap' does not apply to + mapped characters. (Christian Brabandt) +Files: runtime/doc/options.txt, runtime/vimrc_example.vim, src/macros.h, + src/option.c, src/option.h + + +*** ../vim-7.4.501/runtime/doc/options.txt 2014-11-05 14:26:30.760758363 +0100 +--- runtime/doc/options.txt 2014-11-05 17:21:15.676505715 +0100 +*************** +*** 4533,4538 **** +--- 4534,4543 ---- + be able to execute Normal mode commands. + This is the opposite of the 'keymap' option, where characters are + mapped in Insert mode. ++ Also consider setting 'langnoremap' to avoid 'langmap' applies to ++ characters resulting from a mapping. ++ This option cannot be set from a |modeline| or in the |sandbox|, for ++ security reasons. + + Example (for Greek, in UTF-8): *greek* > + :set langmap=ΑA,ΒB,ΨC,ΔD,ΕE,ΦF,ΓG,ΗH,ΙI,ΞJ,ΚK,ΛL,ΜM,ΝN,ΟO,ΠP,QQ,ΡR,ΣS,ΤT,ΘU,ΩV,WW,ΧX,ΥY,ΖZ,αa,βb,ψc,δd,εe,φf,γg,ηh,ιi,ξj,κk,λl,μm,νn,οo,πp,qq,ρr,σs,τt,θu,ωv,ςw,χx,υy,ζz +*************** +*** 4586,4591 **** +--- 4591,4608 ---- + :source $VIMRUNTIME/menu.vim + < Warning: This deletes all menus that you defined yourself! + ++ *'langnoremap'* *'lnr'* ++ 'langnoremap' 'lnr' boolean (default off) ++ global ++ {not in Vi} ++ {only available when compiled with the |+langmap| ++ feature} ++ When on, setting 'langmap' does not apply to characters resulting from ++ a mapping. This basically means, if you noticed that setting ++ 'langmap' disables some of your mappings, try setting this option. ++ This option defaults to off for backwards compatibility. Set it on if ++ that works for you to avoid mappings to break. ++ + *'laststatus'* *'ls'* + 'laststatus' 'ls' number (default 1) + global +*** ../vim-7.4.501/runtime/vimrc_example.vim 2014-02-05 22:01:56.686546587 +0100 +--- runtime/vimrc_example.vim 2014-11-05 17:23:26.808502555 +0100 +*************** +*** 1,7 **** + " An example for a vimrc file. + " + " Maintainer: Bram Moolenaar <Bram@vim.org> +! " Last change: 2014 Feb 05 + " + " To use it, copy it to + " for Unix and OS/2: ~/.vimrc +--- 1,7 ---- + " An example for a vimrc file. + " + " Maintainer: Bram Moolenaar <Bram@vim.org> +! " Last change: 2014 Nov 05 + " + " To use it, copy it to + " for Unix and OS/2: ~/.vimrc +*************** +*** 95,97 **** +--- 95,104 ---- + command DiffOrig vert new | set bt=nofile | r ++edit # | 0d_ | diffthis + \ | wincmd p | diffthis + endif ++ ++ if has('langmap') && exists('+langnoremap') ++ " Prevent that the langmap option applies to characters that result from a ++ " mapping. If unset (default), this may break plugins (but it's backward ++ " compatible). ++ set langnoremap ++ endif +*** ../vim-7.4.501/src/macros.h 2014-05-13 20:19:53.569808877 +0200 +--- src/macros.h 2014-11-05 17:26:42.172497848 +0100 +*************** +*** 128,140 **** + * Adjust chars in a language according to 'langmap' option. + * NOTE that there is no noticeable overhead if 'langmap' is not set. + * When set the overhead for characters < 256 is small. +! * Don't apply 'langmap' if the character comes from the Stuff buffer. + * The do-while is just to ignore a ';' after the macro. + */ + # ifdef FEAT_MBYTE + # define LANGMAP_ADJUST(c, condition) \ + do { \ +! if (*p_langmap && (condition) && !KeyStuffed && (c) >= 0) \ + { \ + if ((c) < 256) \ + c = langmap_mapchar[c]; \ +--- 128,145 ---- + * Adjust chars in a language according to 'langmap' option. + * NOTE that there is no noticeable overhead if 'langmap' is not set. + * When set the overhead for characters < 256 is small. +! * Don't apply 'langmap' if the character comes from the Stuff buffer or from +! * a mapping and the langnoremap option was set. + * The do-while is just to ignore a ';' after the macro. + */ + # ifdef FEAT_MBYTE + # define LANGMAP_ADJUST(c, condition) \ + do { \ +! if (*p_langmap \ +! && (condition) \ +! && (!p_lnr || (p_lnr && typebuf_maplen() == 0)) \ +! && !KeyStuffed \ +! && (c) >= 0) \ + { \ + if ((c) < 256) \ + c = langmap_mapchar[c]; \ +*************** +*** 145,151 **** + # else + # define LANGMAP_ADJUST(c, condition) \ + do { \ +! if (*p_langmap && (condition) && !KeyStuffed && (c) >= 0 && (c) < 256) \ + c = langmap_mapchar[c]; \ + } while (0) + # endif +--- 150,160 ---- + # else + # define LANGMAP_ADJUST(c, condition) \ + do { \ +! if (*p_langmap \ +! && (condition) \ +! && (!p_lnr || (p_lnr && typebuf_maplen() == 0)) \ +! && !KeyStuffed \ +! && (c) >= 0 && (c) < 256) \ + c = langmap_mapchar[c]; \ + } while (0) + # endif +*** ../vim-7.4.501/src/option.c 2014-09-29 17:15:09.963945227 +0200 +--- src/option.c 2014-11-05 17:17:44.208510810 +0100 +*************** +*** 1691,1696 **** +--- 1691,1703 ---- + (char_u *)NULL, PV_NONE, + #endif + {(char_u *)"", (char_u *)0L} SCRIPTID_INIT}, ++ {"langnoremap", "lnr", P_BOOL|P_VI_DEF, ++ #ifdef FEAT_LANGMAP ++ (char_u *)&p_lnr, PV_NONE, ++ #else ++ (char_u *)NULL, PV_NONE, ++ #endif ++ {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT}, + {"laststatus", "ls", P_NUM|P_VI_DEF|P_RALL, + #ifdef FEAT_WINDOWS + (char_u *)&p_ls, PV_NONE, +*** ../vim-7.4.501/src/option.h 2014-09-23 15:45:04.870801055 +0200 +--- src/option.h 2014-11-05 17:17:44.212510810 +0100 +*************** +*** 576,581 **** +--- 576,582 ---- + EXTERN char_u *p_km; /* 'keymodel' */ + #ifdef FEAT_LANGMAP + EXTERN char_u *p_langmap; /* 'langmap'*/ ++ EXTERN int p_lnr; /* 'langnoremap' */ + #endif + #if defined(FEAT_MENU) && defined(FEAT_MULTI_LANG) + EXTERN char_u *p_lm; /* 'langmenu' */ +*** ../vim-7.4.501/src/version.c 2014-11-05 17:04:10.516530418 +0100 +--- src/version.c 2014-11-05 17:15:31.820514001 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 502, + /**/ + +-- +MARTHA'S WAY: Don't throw out all that leftover wine. Freeze into ice cubes + for future use in casseroles and sauces. +MY WAY: What leftover wine? + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.503 b/SOURCES/7.4.503 new file mode 100644 index 0000000..9cad01c --- /dev/null +++ b/SOURCES/7.4.503 @@ -0,0 +1,193 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.503 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.503 +Problem: Cannot append a list of lines to a file. +Solution: Add the append option to writefile(). (Yasuhiro Matsumoto) +Files: runtime/doc/eval.txt, src/Makefile, src/eval.c, + src/testdir/test_writefile.in, src/testdir/test_writefile.ok + + +*** ../vim-7.4.502/runtime/doc/eval.txt 2014-09-09 16:13:05.040531695 +0200 +--- runtime/doc/eval.txt 2014-11-05 17:57:01.592454006 +0100 +*************** +*** 2040,2046 **** + winrestview( {dict}) none restore view of current window + winsaveview() Dict save view of current window + winwidth( {nr}) Number width of window {nr} +! writefile( {list}, {fname} [, {binary}]) + Number write list of lines to file {fname} + xor( {expr}, {expr}) Number bitwise XOR + +--- 2041,2047 ---- + winrestview( {dict}) none restore view of current window + winsaveview() Dict save view of current window + winwidth( {nr}) Number width of window {nr} +! writefile( {list}, {fname} [, {flags}]) + Number write list of lines to file {fname} + xor( {expr}, {expr}) Number bitwise XOR + +*************** +*** 6532,6545 **** + :endif + < + *writefile()* +! writefile({list}, {fname} [, {binary}]) + Write |List| {list} to file {fname}. Each list item is + separated with a NL. Each list item must be a String or + Number. +! When {binary} is equal to "b" binary mode is used: There will + not be a NL after the last list item. An empty item at the + end does cause the last line in the file to end in a NL. +! All NL characters are replaced with a NUL character. + Inserting CR characters needs to be done before passing {list} + to writefile(). + An existing file is overwritten, if possible. +--- 6555,6574 ---- + :endif + < + *writefile()* +! writefile({list}, {fname} [, {flags}]) + Write |List| {list} to file {fname}. Each list item is + separated with a NL. Each list item must be a String or + Number. +! When {flags} contains "b" then binary mode is used: There will + not be a NL after the last list item. An empty item at the + end does cause the last line in the file to end in a NL. +! +! When {flags} contains "a" then append mode is used, lines are +! append to the file: > +! :call writefile(["foo"], "event.log", "a") +! :call writefile(["bar"], "event.log", "a") +! > +! < All NL characters are replaced with a NUL character. + Inserting CR characters needs to be done before passing {list} + to writefile(). + An existing file is overwritten, if possible. +*** ../vim-7.4.502/src/Makefile 2014-11-05 14:26:30.760758363 +0100 +--- src/Makefile 2014-11-05 17:54:36.864457494 +0100 +*************** +*** 1899,1906 **** +--- 1899,1910 ---- + test_insertcount \ + test_listlbr \ + test_listlbr_utf8 \ ++ test_mapping \ + test_options \ + test_qf_title \ ++ test_signs \ ++ test_utf8 \ ++ test_writefile \ + test10 test11 test12 test13 test14 test15 test16 test17 test18 test19 \ + test20 test21 test22 test23 test24 test25 test26 test27 test28 test29 \ + test30 test31 test32 test33 test34 test35 test36 test37 test38 test39 \ +*** ../vim-7.4.502/src/eval.c 2014-11-05 16:03:40.588617886 +0100 +--- src/eval.c 2014-11-05 17:59:15.388450782 +0100 +*************** +*** 19689,19694 **** +--- 19689,19695 ---- + typval_T *rettv; + { + int binary = FALSE; ++ int append = FALSE; + char_u *fname; + FILE *fd; + int ret = 0; +*************** +*** 19704,19717 **** + if (argvars[0].vval.v_list == NULL) + return; + +! if (argvars[2].v_type != VAR_UNKNOWN +! && STRCMP(get_tv_string(&argvars[2]), "b") == 0) +! binary = TRUE; + + /* Always open the file in binary mode, library functions have a mind of + * their own about CR-LF conversion. */ + fname = get_tv_string(&argvars[1]); +! if (*fname == NUL || (fd = mch_fopen((char *)fname, WRITEBIN)) == NULL) + { + EMSG2(_(e_notcreate), *fname == NUL ? (char_u *)_("<empty>") : fname); + ret = -1; +--- 19705,19723 ---- + if (argvars[0].vval.v_list == NULL) + return; + +! if (argvars[2].v_type != VAR_UNKNOWN) +! { +! if (vim_strchr(get_tv_string(&argvars[2]), 'b') != NULL) +! binary = TRUE; +! if (vim_strchr(get_tv_string(&argvars[2]), 'a') != NULL) +! append = TRUE; +! } + + /* Always open the file in binary mode, library functions have a mind of + * their own about CR-LF conversion. */ + fname = get_tv_string(&argvars[1]); +! if (*fname == NUL || (fd = mch_fopen((char *)fname, +! append ? APPENDBIN : WRITEBIN)) == NULL) + { + EMSG2(_(e_notcreate), *fname == NUL ? (char_u *)_("<empty>") : fname); + ret = -1; +*** ../vim-7.4.502/src/testdir/test_writefile.in 2014-11-05 18:04:54.912442601 +0100 +--- src/testdir/test_writefile.in 2014-11-05 18:01:07.408448083 +0100 +*************** +*** 0 **** +--- 1,18 ---- ++ Tests for writefile() ++ ++ STARTTEST ++ :source small.vim ++ :%delete _ ++ :let f = tempname() ++ :call writefile(["over","written"], f, "b") ++ :call writefile(["hello","world"], f, "b") ++ :call writefile(["!", "good"], f, "a") ++ :call writefile(["morning"], f, "ab") ++ :call writefile(["", "vimmers"], f, "ab") ++ :bwipeout! ++ :$put =readfile(f) ++ :1 delete _ ++ :w! test.out ++ :qa! ++ ENDTEST ++ +*** ../vim-7.4.502/src/testdir/test_writefile.ok 2014-11-05 18:04:54.916442601 +0100 +--- src/testdir/test_writefile.ok 2014-11-05 17:53:19.776459351 +0100 +*************** +*** 0 **** +--- 1,5 ---- ++ hello ++ world! ++ good ++ morning ++ vimmers +*** ../vim-7.4.502/src/version.c 2014-11-05 17:44:47.676471691 +0100 +--- src/version.c 2014-11-05 17:55:08.508456731 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 503, + /**/ + +-- +BLACK KNIGHT: Come on you pansy! + [hah] [parry thrust] + [ARTHUR chops the BLACK KNIGHT's right arm off] +ARTHUR: Victory is mine! [kneeling] + We thank thee Lord, that in thy merc- + [Black Knight kicks Arthur in the head while he is praying] + The Quest for the Holy Grail (Monty Python) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.504 b/SOURCES/7.4.504 new file mode 100644 index 0000000..536853e --- /dev/null +++ b/SOURCES/7.4.504 @@ -0,0 +1,83 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.504 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.504 +Problem: Restriction of the MS-Windows installer that the path must end in + "Vim" prevents installing more than one version. +Solution: Remove the restriction. (Tim Lebedkov) +Files: nsis/gvim.nsi + + +*** ../vim-7.4.503/nsis/gvim.nsi 2013-08-10 13:25:08.000000000 +0200 +--- nsis/gvim.nsi 2014-11-05 18:17:11.096424861 +0100 +*************** +*** 1,6 **** + # NSIS file to create a self-installing exe for Vim. + # It requires NSIS version 2.0 or later. +! # Last Change: 2010 Jul 30 + + # WARNING: if you make changes to this script, look out for $0 to be valid, + # because uninstall deletes most files in $0. +--- 1,6 ---- + # NSIS file to create a self-installing exe for Vim. + # It requires NSIS version 2.0 or later. +! # Last Change: 2014 Nov 5 + + # WARNING: if you make changes to this script, look out for $0 to be valid, + # because uninstall deletes most files in $0. +*************** +*** 38,44 **** + RequestExecutionLevel highest + + ComponentText "This will install Vim ${VER_MAJOR}.${VER_MINOR} on your computer." +! DirText "Choose a directory to install Vim (must end in 'vim')" + Icon icons\vim_16c.ico + # NSIS2 uses a different strategy with six different images in a strip... + #EnabledBitmap icons\enabled.bmp +--- 38,44 ---- + RequestExecutionLevel highest + + ComponentText "This will install Vim ${VER_MAJOR}.${VER_MINOR} on your computer." +! DirText "Choose a directory to install Vim (should contain 'vim')" + Icon icons\vim_16c.ico + # NSIS2 uses a different strategy with six different images in a strip... + #EnabledBitmap icons\enabled.bmp +*************** +*** 135,145 **** + # We only accept the directory if it ends in "vim". Using .onVerifyInstDir has + # the disadvantage that the browse dialog is difficult to use. + Function CheckInstallDir +- StrCpy $0 $INSTDIR 3 -3 +- StrCmp $0 "vim" PathGood +- MessageBox MB_OK "The path must end in 'vim'." +- Abort +- PathGood: + FunctionEnd + + Function .onInstSuccess +--- 135,140 ---- +*** ../vim-7.4.503/src/version.c 2014-11-05 18:05:48.660441306 +0100 +--- src/version.c 2014-11-05 18:14:51.076428235 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 504, + /**/ + +-- +-rwxr-xr-x 1 root 24 Oct 29 1929 /bin/ed +-rwxr-xr-t 4 root 131720 Jan 1 1970 /usr/ucb/vi +-rwxr-xr-x 1 root 5.89824e37 Oct 22 1990 /usr/bin/emacs + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.505 b/SOURCES/7.4.505 new file mode 100644 index 0000000..54f1558 --- /dev/null +++ b/SOURCES/7.4.505 @@ -0,0 +1,68 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.505 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.505 +Problem: On MS-Windows when 'encoding' is a double-byte encoding a file + name longer than MAX_PATH bytes but shorter than that in + characters causes problems. +Solution: Fail on file names longer than MAX_PATH bytes. (Ken Takata) +Files: src/os_win32.c + + +*** ../vim-7.4.504/src/os_win32.c 2014-10-16 16:16:33.970230873 +0200 +--- src/os_win32.c 2014-11-05 18:32:54.624402126 +0100 +*************** +*** 6139,6144 **** +--- 6139,6151 ---- + } + # endif + ++ /* open() can open a file which name is longer than _MAX_PATH bytes ++ * and shorter than _MAX_PATH characters successfully, but sometimes it ++ * causes unexpected error in another part. We make it an error explicitly ++ * here. */ ++ if (strlen(name) >= _MAX_PATH) ++ return -1; ++ + return open(name, flags, mode); + } + +*************** +*** 6188,6193 **** +--- 6195,6207 ---- + * the _wfopen() fails for missing wide functions. */ + } + ++ /* fopen() can open a file which name is longer than _MAX_PATH bytes ++ * and shorter than _MAX_PATH characters successfully, but sometimes it ++ * causes unexpected error in another part. We make it an error explicitly ++ * here. */ ++ if (strlen(name) >= _MAX_PATH) ++ return NULL; ++ + return fopen(name, mode); + } + #endif +*** ../vim-7.4.504/src/version.c 2014-11-05 18:18:13.156423366 +0100 +--- src/version.c 2014-11-05 18:33:06.684401835 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 505, + /**/ + +-- +5 out of 4 people have trouble with fractions. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.506 b/SOURCES/7.4.506 new file mode 100644 index 0000000..d55aaba --- /dev/null +++ b/SOURCES/7.4.506 @@ -0,0 +1,51 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.506 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.506 +Problem: MS-Windows: Cannot open a file with 259 characters. +Solution: Fix off-by-one error. (Ken Takata) +Files: src/os_mswin.c + + +*** ../vim-7.4.505/src/os_mswin.c 2014-10-16 20:35:32.146264814 +0200 +--- src/os_mswin.c 2014-11-05 19:32:59.748315256 +0100 +*************** +*** 411,417 **** + * - convert the result from UCS2 to 'encoding'. + */ + wname = enc_to_utf16(fname, NULL); +! if (wname != NULL && _wfullpath(wbuf, wname, MAX_PATH - 1) != NULL) + { + cname = utf16_to_enc((short_u *)wbuf, NULL); + if (cname != NULL) +--- 411,417 ---- + * - convert the result from UCS2 to 'encoding'. + */ + wname = enc_to_utf16(fname, NULL); +! if (wname != NULL && _wfullpath(wbuf, wname, MAX_PATH) != NULL) + { + cname = utf16_to_enc((short_u *)wbuf, NULL); + if (cname != NULL) +*** ../vim-7.4.505/src/version.c 2014-11-05 18:35:59.104397681 +0100 +--- src/version.c 2014-11-05 19:27:04.520323815 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 506, + /**/ + +-- +Trees moving back and forth is what makes the wind blow. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.507 b/SOURCES/7.4.507 new file mode 100644 index 0000000..408dbdf --- /dev/null +++ b/SOURCES/7.4.507 @@ -0,0 +1,68 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.507 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.507 (after 7.4.496) +Problem: Building with MingW and Perl may fail. +Solution: Remove quotes. (Ken Takata) +Files: src/Make_cyg_ming.mak + + +*** ../vim-7.4.506/src/Make_cyg_ming.mak 2014-11-05 13:53:13.188806497 +0100 +--- src/Make_cyg_ming.mak 2014-11-06 09:59:51.523061961 +0100 +*************** +*** 132,138 **** + endif + XSUBPP_EXISTS=$(shell $(PERLEXE) -e "print 1 unless -e '$(XSUBPPTRY)'") + ifeq "$(XSUBPP_EXISTS)" "" +! XSUBPP=$(PERLEXE) "$(XSUBPPTRY)" + else + XSUBPP=xsubpp + endif +--- 132,138 ---- + endif + XSUBPP_EXISTS=$(shell $(PERLEXE) -e "print 1 unless -e '$(XSUBPPTRY)'") + ifeq "$(XSUBPP_EXISTS)" "" +! XSUBPP=$(PERLEXE) $(XSUBPPTRY) + else + XSUBPP=xsubpp + endif +*************** +*** 809,815 **** + + if_perl.c: if_perl.xs typemap + $(XSUBPP) -prototypes -typemap \ +! "$(PERLTYPEMAP)" if_perl.xs > $@ + + $(OUTDIR)/netbeans.o: netbeans.c $(INCL) $(NBDEBUG_INCL) $(NBDEBUG_SRC) + $(CC) -c $(CFLAGS) netbeans.c -o $(OUTDIR)/netbeans.o +--- 809,815 ---- + + if_perl.c: if_perl.xs typemap + $(XSUBPP) -prototypes -typemap \ +! $(PERLTYPEMAP) if_perl.xs > $@ + + $(OUTDIR)/netbeans.o: netbeans.c $(INCL) $(NBDEBUG_INCL) $(NBDEBUG_SRC) + $(CC) -c $(CFLAGS) netbeans.c -o $(OUTDIR)/netbeans.o +*** ../vim-7.4.506/src/version.c 2014-11-05 19:33:19.552314778 +0100 +--- src/version.c 2014-11-06 10:02:45.647057766 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 507, + /**/ + +-- +Advice to worms: Sleep late. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.508 b/SOURCES/7.4.508 new file mode 100644 index 0000000..b587117 --- /dev/null +++ b/SOURCES/7.4.508 @@ -0,0 +1,57 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.508 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.508 +Problem: When generating ja.sjis.po the header is not correctly adjusted. +Solution: Check for the right header string. (Ken Takata) +Files: src/po/sjiscorr.c + + +*** ../vim-7.4.507/src/po/sjiscorr.c 2013-05-19 05:15:15.000000000 +0200 +--- src/po/sjiscorr.c 2014-11-12 13:01:37.574369693 +0100 +*************** +*** 23,31 **** + fputs("charset=cp932", stdout); + p += 12; + } +! else if (strncmp(p, "ja.po - Japanese message file", 29) == 0) + { +- fputs("ja.sjis.po - Japanese message file for Vim (version 6.x)\n", stdout); + fputs("# generated from ja.po, DO NOT EDIT", stdout); + while (p[1] != '\n') + ++p; +--- 23,30 ---- + fputs("charset=cp932", stdout); + p += 12; + } +! else if (strncmp(p, "# Original translations", 23) == 0) + { + fputs("# generated from ja.po, DO NOT EDIT", stdout); + while (p[1] != '\n') + ++p; +*** ../vim-7.4.507/src/version.c 2014-11-06 10:02:57.023057491 +0100 +--- src/version.c 2014-11-12 13:04:27.308402708 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 508, + /**/ + +-- +TALL KNIGHT: Firstly. You must get us another shrubbery! +OTHER KNIGHTS: More shrubberies! More shrubberies for the ex-Knights of Ni! +ARTHUR: Not another shrubbery - + "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.509 b/SOURCES/7.4.509 new file mode 100644 index 0000000..e4ed105 --- /dev/null +++ b/SOURCES/7.4.509 @@ -0,0 +1,115 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.509 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.509 +Problem: Users are not aware their encryption is weak. +Solution: Give a warning when prompting for the key. +Files: src/crypt.c, src/ex_docmd.c, src/fileio.c, src/main.c, + src/proto/crypt.pro + + +*** ../vim-7.4.508/src/crypt.c 2014-08-13 22:05:49.032892299 +0200 +--- src/crypt.c 2014-11-12 15:10:22.359161977 +0100 +*************** +*** 504,509 **** +--- 504,529 ---- + } + + /* ++ * Check the crypt method and give a warning if it's outdated. ++ */ ++ void ++ crypt_check_method(method) ++ int method; ++ { ++ if (method < CRYPT_M_BF2) ++ { ++ msg_scroll = TRUE; ++ MSG(_("Warning: Using a weak encryption method; see :help 'cm'")); ++ } ++ } ++ ++ void ++ crypt_check_current_method() ++ { ++ crypt_check_method(crypt_get_method_nr(curbuf)); ++ } ++ ++ /* + * Ask the user for a crypt key. + * When "store" is TRUE, the new key is stored in the 'key' option, and the + * 'key' option value is returned: Don't free it. +*** ../vim-7.4.508/src/ex_docmd.c 2014-11-05 09:53:19.989153321 +0100 +--- src/ex_docmd.c 2014-11-12 14:53:09.621921631 +0100 +*************** +*** 11524,11529 **** +--- 11524,11530 ---- + ex_X(eap) + exarg_T *eap UNUSED; + { ++ crypt_check_current_method(); + (void)crypt_get_key(TRUE, TRUE); + } + #endif +*** ../vim-7.4.508/src/fileio.c 2014-10-31 19:51:33.010698056 +0100 +--- src/fileio.c 2014-11-12 15:10:44.986925300 +0100 +*************** +*** 2958,2963 **** +--- 2958,2964 ---- + * Happens when retrying to detect encoding. */ + smsg((char_u *)_(need_key_msg), fname); + msg_scroll = TRUE; ++ crypt_check_method(method); + cryptkey = crypt_get_key(newfile, FALSE); + *did_ask = TRUE; + +*** ../vim-7.4.508/src/main.c 2014-09-19 13:46:49.550399801 +0200 +--- src/main.c 2014-11-12 14:52:47.866169622 +0100 +*************** +*** 854,859 **** +--- 854,860 ---- + #ifdef FEAT_CRYPT + if (params.ask_for_key) + { ++ crypt_check_current_method(); + (void)crypt_get_key(TRUE, TRUE); + TIME_MSG("getting crypt key"); + } +*** ../vim-7.4.508/src/proto/crypt.pro 2014-08-10 13:34:59.060785459 +0200 +--- src/proto/crypt.pro 2014-11-12 15:06:51.349363319 +0100 +*************** +*** 19,24 **** +--- 19,26 ---- + void crypt_encode_inplace __ARGS((cryptstate_T *state, char_u *buf, size_t len)); + void crypt_decode_inplace __ARGS((cryptstate_T *state, char_u *buf, size_t len)); + void crypt_free_key __ARGS((char_u *key)); ++ void crypt_check_method __ARGS((int method)); ++ void crypt_check_current_method __ARGS((void)); + char_u *crypt_get_key __ARGS((int store, int twice)); + void crypt_append_msg __ARGS((buf_T *buf)); + /* vim: set ft=c : */ +*** ../vim-7.4.508/src/version.c 2014-11-12 13:07:48.774069557 +0100 +--- src/version.c 2014-11-12 14:45:09.979391243 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 509, + /**/ + +-- +Q: How do you tell the difference between a female cat and a male cat? +A: You ask it a question and if HE answers, it's a male but, if SHE + answers, it's a female. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.510 b/SOURCES/7.4.510 new file mode 100644 index 0000000..e140bba --- /dev/null +++ b/SOURCES/7.4.510 @@ -0,0 +1,65 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.510 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.510 +Problem: "-fwrapv" argument breaks use of cproto. +Solution: Remove the alphabetic arguments in a drastic way. +Files: src/Makefile + + +*** ../vim-7.4.509/src/Makefile 2014-11-05 18:05:48.652441306 +0100 +--- src/Makefile 2014-11-12 15:24:56.357941730 +0100 +*************** +*** 1779,1791 **** + proto: $(PRO_AUTO) $(PRO_MANUAL) + + # Filter out arguments that cproto doesn't support. +! # Don't pass "-pthread" to cproto, it sees it as a list of individual flags. +! # Don't pass "-fstack-protector" to cproto, for the same reason. +! # Don't pass "-g" to cproto. + # The -E"gcc -E" argument must be separate to avoid problems with shell + # quoting. + CPROTO = cproto $(PROTO_FLAGS) -DPROTO \ +! `echo '$(LINT_CFLAGS)' | sed -e 's/-pthread//g' -e 's/-fstack-protector//g' -e 's/\ -g\ / /g'` + + ### Would be nice if this would work for "normal" make. + ### Currently it only works for (Free)BSD make. +--- 1779,1790 ---- + proto: $(PRO_AUTO) $(PRO_MANUAL) + + # Filter out arguments that cproto doesn't support. +! # Don't pass "-pthread", "-fwrapv" and similar arguments to cproto, it sees +! # them as a list of individual flags. + # The -E"gcc -E" argument must be separate to avoid problems with shell + # quoting. + CPROTO = cproto $(PROTO_FLAGS) -DPROTO \ +! `echo '$(LINT_CFLAGS)' | sed -e 's/ -[a-z-]\+//g'` + + ### Would be nice if this would work for "normal" make. + ### Currently it only works for (Free)BSD make. +*** ../vim-7.4.509/src/version.c 2014-11-12 15:15:34.983882077 +0100 +--- src/version.c 2014-11-12 15:37:34.401182559 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 510, + /**/ + +-- + [Autumn changed into Winter ... Winter changed into Spring ... Spring + changed back into Autumn and Autumn gave Winter and Spring a miss and + went straight on into Summer ... Until one day ...] + "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.511 b/SOURCES/7.4.511 new file mode 100644 index 0000000..547ac63 --- /dev/null +++ b/SOURCES/7.4.511 @@ -0,0 +1,57 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.511 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.511 +Problem: Generating proto for if_ruby.c uses type not defined elsewhere. +Solution: Do not generate a prototype for + rb_gc_writebarrier_unprotect_promoted() +Files: src/if_ruby.c + + +*** ../vim-7.4.510/src/if_ruby.c 2014-03-28 21:58:17.878256914 +0100 +--- src/if_ruby.c 2014-11-12 15:28:07.971812917 +0100 +*************** +*** 418,424 **** + # endif + # endif + +! # if defined(USE_RGENGC) && USE_RGENGC + void rb_gc_writebarrier_unprotect_promoted_stub(VALUE obj) + { + return dll_rb_gc_writebarrier_unprotect_promoted(obj); +--- 418,425 ---- + # endif + # endif + +! /* Do not generate a prototype here, VALUE isn't always defined. */ +! # if defined(USE_RGENGC) && USE_RGENGC && !defined(PROTO) + void rb_gc_writebarrier_unprotect_promoted_stub(VALUE obj) + { + return dll_rb_gc_writebarrier_unprotect_promoted(obj); +*** ../vim-7.4.510/src/version.c 2014-11-12 15:45:16.595789120 +0100 +--- src/version.c 2014-11-12 16:04:18.698532684 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 511, + /**/ + +-- +TIM: To the north there lies a cave, the cave of Caerbannog, wherein, carved + in mystic runes, upon the very living rock, the last words of Olfin + Bedwere of Rheged make plain the last resting place of the most Holy + Grail. + "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.512 b/SOURCES/7.4.512 new file mode 100644 index 0000000..0dd1945 --- /dev/null +++ b/SOURCES/7.4.512 @@ -0,0 +1,99 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.512 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.512 +Problem: Cannot generate prototypes for Win32 files and VMS. +Solution: Add typedefs and #ifdef +Files: src/os_win32.c, src/gui_w32.c, src/os_vms.c + + +*** ../vim-7.4.511/src/os_win32.c 2014-11-05 18:35:59.104397681 +0100 +--- src/os_win32.c 2014-11-12 15:33:13.136237810 +0100 +*************** +*** 135,140 **** +--- 135,142 ---- + typedef int SE_OBJECT_TYPE; + typedef int PSNSECINFO; + typedef int PSNSECINFOW; ++ typedef int STARTUPINFO; ++ typedef int PROCESS_INFORMATION; + #endif + + #ifndef FEAT_GUI_W32 +*** ../vim-7.4.511/src/gui_w32.c 2014-10-06 18:10:04.521273516 +0200 +--- src/gui_w32.c 2014-11-12 15:30:44.309980459 +0100 +*************** +*** 29,40 **** + # include "gui_dwrite.h" + #endif + +! #if defined(FEAT_DIRECTX) || defined(PROTO) + static DWriteContext *s_dwc = NULL; + static int s_directx_enabled = 0; + static int s_directx_load_attempted = 0; + # define IS_ENABLE_DIRECTX() (s_directx_enabled && s_dwc != NULL) + + int + directx_enabled(void) + { +--- 29,42 ---- + # include "gui_dwrite.h" + #endif + +! #if defined(FEAT_DIRECTX) + static DWriteContext *s_dwc = NULL; + static int s_directx_enabled = 0; + static int s_directx_load_attempted = 0; + # define IS_ENABLE_DIRECTX() (s_directx_enabled && s_dwc != NULL) ++ #endif + ++ #if defined(FEAT_DIRECTX) || defined(PROTO) + int + directx_enabled(void) + { +*** ../vim-7.4.511/src/os_vms.c 2014-04-01 21:00:45.436733663 +0200 +--- src/os_vms.c 2014-11-12 15:34:04.223639992 +0100 +*************** +*** 12,18 **** + #include "vim.h" + + /* define _generic_64 for use in time functions */ +! #ifndef VAX + # include <gen64def.h> + #else + /* based on Alpha's gen64def.h; the file is absent on VAX */ +--- 12,18 ---- + #include "vim.h" + + /* define _generic_64 for use in time functions */ +! #if !defined(VAX) && !defined(PROTO) + # include <gen64def.h> + #else + /* based on Alpha's gen64def.h; the file is absent on VAX */ +*** ../vim-7.4.511/src/version.c 2014-11-12 16:05:01.142042845 +0100 +--- src/version.c 2014-11-12 16:05:52.861446039 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 512, + /**/ + +-- +TIM: But follow only if you are men of valour. For the entrance to this cave + is guarded by a monster, a creature so foul and cruel that no man yet has + fought with it and lived. Bones of full fifty men lie strewn about its + lair ... + "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.513 b/SOURCES/7.4.513 new file mode 100644 index 0000000..aff5d6a --- /dev/null +++ b/SOURCES/7.4.513 @@ -0,0 +1,46 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.513 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.513 +Problem: Crash because reference count is wrong for list returned by + getreg(). +Solution: Increment the reference count. (Kimmy Lindvall) +Files: src/eval.c + + +*** ../vim-7.4.512/src/eval.c 2014-11-05 18:05:48.656441306 +0100 +--- src/eval.c 2014-11-12 17:07:32.695012604 +0100 +*************** +*** 12008,12013 **** +--- 12008,12015 ---- + rettv->v_type = VAR_LIST; + rettv->vval.v_list = (list_T *)get_reg_contents(regname, + (arg2 ? GREG_EXPR_SRC : 0) | GREG_LIST); ++ if (rettv->vval.v_list != NULL) ++ ++rettv->vval.v_list->lv_refcount; + } + else + { +*** ../vim-7.4.512/src/version.c 2014-11-12 16:10:44.258085148 +0100 +--- src/version.c 2014-11-12 17:06:37.443703083 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 513, + /**/ + +-- +Save the plankton - eat a whale. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.514 b/SOURCES/7.4.514 new file mode 100644 index 0000000..ed81859 --- /dev/null +++ b/SOURCES/7.4.514 @@ -0,0 +1,46 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.514 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.514 (after 7.4.492) +Problem: Memory access error. (Dominique Pelle) +Solution: Update tpos. (Christian Brabandt) +Files: src/edit.c + + +*** ../vim-7.4.513/src/edit.c 2014-10-31 19:20:30.782742928 +0100 +--- src/edit.c 2014-11-12 18:53:10.890098796 +0100 +*************** +*** 6918,6923 **** +--- 6918,6925 ---- + curwin->w_cursor = tpos; + else + { ++ /* reset tpos, could have been invalidated in the loop above */ ++ tpos = curwin->w_cursor; + tpos.col++; + if (cc != NUL && gchar_pos(&tpos) == NUL) + ++curwin->w_cursor.col; /* put cursor back on the NUL */ +*** ../vim-7.4.513/src/version.c 2014-11-12 18:49:12.992752234 +0100 +--- src/version.c 2014-11-12 18:52:50.738323726 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 514, + /**/ + +-- +My girlfriend told me I should be more affectionate. +So I got TWO girlfriends. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.515 b/SOURCES/7.4.515 new file mode 100644 index 0000000..0f57a6a --- /dev/null +++ b/SOURCES/7.4.515 @@ -0,0 +1,208 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.515 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.515 +Problem: In a help buffer the global 'foldmethod' is used. (Paul Marshall) +Solution: Reset 'foldmethod' when starting to edit a help file. Move the + code to a separate function. +Files: src/ex_cmds.c + + +*** ../vim-7.4.514/src/ex_cmds.c 2014-09-19 22:23:22.398467500 +0200 +--- src/ex_cmds.c 2014-11-12 19:23:48.357576278 +0100 +*************** +*** 34,39 **** +--- 34,40 ---- + _RTLENTRYF + #endif + help_compare __ARGS((const void *s1, const void *s2)); ++ static void prepare_help_buffer __ARGS((void)); + + /* + * ":ascii" and "ga". +*************** +*** 3531,3601 **** + oldbuf = (flags & ECMD_OLDBUF); + } + +- if ((flags & ECMD_SET_HELP) || keep_help_flag) +- { +- char_u *p; +- +- curbuf->b_help = TRUE; +- #ifdef FEAT_QUICKFIX +- set_string_option_direct((char_u *)"buftype", -1, +- (char_u *)"help", OPT_FREE|OPT_LOCAL, 0); +- #endif +- +- /* +- * Always set these options after jumping to a help tag, because the +- * user may have an autocommand that gets in the way. +- * Accept all ASCII chars for keywords, except ' ', '*', '"', '|', and +- * latin1 word characters (for translated help files). +- * Only set it when needed, buf_init_chartab() is some work. +- */ +- p = +- #ifdef EBCDIC +- (char_u *)"65-255,^*,^|,^\""; +- #else +- (char_u *)"!-~,^*,^|,^\",192-255"; +- #endif +- if (STRCMP(curbuf->b_p_isk, p) != 0) +- { +- set_string_option_direct((char_u *)"isk", -1, p, +- OPT_FREE|OPT_LOCAL, 0); +- check_buf_options(curbuf); +- (void)buf_init_chartab(curbuf, FALSE); +- } +- +- curbuf->b_p_ts = 8; /* 'tabstop' is 8 */ +- curwin->w_p_list = FALSE; /* no list mode */ +- +- curbuf->b_p_ma = FALSE; /* not modifiable */ +- curbuf->b_p_bin = FALSE; /* reset 'bin' before reading file */ +- curwin->w_p_nu = 0; /* no line numbers */ +- curwin->w_p_rnu = 0; /* no relative line numbers */ +- RESET_BINDING(curwin); /* no scroll or cursor binding */ +- #ifdef FEAT_ARABIC +- curwin->w_p_arab = FALSE; /* no arabic mode */ +- #endif +- #ifdef FEAT_RIGHTLEFT +- curwin->w_p_rl = FALSE; /* help window is left-to-right */ +- #endif +- #ifdef FEAT_FOLDING +- curwin->w_p_fen = FALSE; /* No folding in the help window */ +- #endif +- #ifdef FEAT_DIFF +- curwin->w_p_diff = FALSE; /* No 'diff' */ +- #endif +- #ifdef FEAT_SPELL +- curwin->w_p_spell = FALSE; /* No spell checking */ +- #endif +- + #ifdef FEAT_AUTOCMD +! buf = curbuf; + #endif +! set_buflisted(FALSE); + } + else + { +- #ifdef FEAT_AUTOCMD +- buf = curbuf; +- #endif + /* Don't make a buffer listed if it's a help buffer. Useful when + * using CTRL-O to go back to a help file. */ + if (!curbuf->b_help) +--- 3532,3546 ---- + oldbuf = (flags & ECMD_OLDBUF); + } + + #ifdef FEAT_AUTOCMD +! buf = curbuf; + #endif +! if ((flags & ECMD_SET_HELP) || keep_help_flag) +! { +! prepare_help_buffer(); + } + else + { + /* Don't make a buffer listed if it's a help buffer. Useful when + * using CTRL-O to go back to a help file. */ + if (!curbuf->b_help) +*************** +*** 6222,6227 **** +--- 6167,6237 ---- + } + + /* ++ * Called when starting to edit a buffer for a help file. ++ */ ++ static void ++ prepare_help_buffer() ++ { ++ char_u *p; ++ ++ curbuf->b_help = TRUE; ++ #ifdef FEAT_QUICKFIX ++ set_string_option_direct((char_u *)"buftype", -1, ++ (char_u *)"help", OPT_FREE|OPT_LOCAL, 0); ++ #endif ++ ++ /* ++ * Always set these options after jumping to a help tag, because the ++ * user may have an autocommand that gets in the way. ++ * Accept all ASCII chars for keywords, except ' ', '*', '"', '|', and ++ * latin1 word characters (for translated help files). ++ * Only set it when needed, buf_init_chartab() is some work. ++ */ ++ p = ++ #ifdef EBCDIC ++ (char_u *)"65-255,^*,^|,^\""; ++ #else ++ (char_u *)"!-~,^*,^|,^\",192-255"; ++ #endif ++ if (STRCMP(curbuf->b_p_isk, p) != 0) ++ { ++ set_string_option_direct((char_u *)"isk", -1, p, OPT_FREE|OPT_LOCAL, 0); ++ check_buf_options(curbuf); ++ (void)buf_init_chartab(curbuf, FALSE); ++ } ++ ++ /* Don't use the global foldmethod.*/ ++ set_string_option_direct((char_u *)"fdm", -1, (char_u *)"manual", ++ OPT_FREE|OPT_LOCAL, 0); ++ ++ curbuf->b_p_ts = 8; /* 'tabstop' is 8 */ ++ curwin->w_p_list = FALSE; /* no list mode */ ++ ++ curbuf->b_p_ma = FALSE; /* not modifiable */ ++ curbuf->b_p_bin = FALSE; /* reset 'bin' before reading file */ ++ curwin->w_p_nu = 0; /* no line numbers */ ++ curwin->w_p_rnu = 0; /* no relative line numbers */ ++ RESET_BINDING(curwin); /* no scroll or cursor binding */ ++ #ifdef FEAT_ARABIC ++ curwin->w_p_arab = FALSE; /* no arabic mode */ ++ #endif ++ #ifdef FEAT_RIGHTLEFT ++ curwin->w_p_rl = FALSE; /* help window is left-to-right */ ++ #endif ++ #ifdef FEAT_FOLDING ++ curwin->w_p_fen = FALSE; /* No folding in the help window */ ++ #endif ++ #ifdef FEAT_DIFF ++ curwin->w_p_diff = FALSE; /* No 'diff' */ ++ #endif ++ #ifdef FEAT_SPELL ++ curwin->w_p_spell = FALSE; /* No spell checking */ ++ #endif ++ ++ set_buflisted(FALSE); ++ } ++ ++ /* + * After reading a help file: May cleanup a help buffer when syntax + * highlighting is not used. + */ +*** ../vim-7.4.514/src/version.c 2014-11-12 18:59:17.602000656 +0100 +--- src/version.c 2014-11-12 19:27:25.471182666 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 515, + /**/ + +-- +If "R" is Reverse, how come "D" is FORWARD? + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.516 b/SOURCES/7.4.516 new file mode 100644 index 0000000..19941d8 --- /dev/null +++ b/SOURCES/7.4.516 @@ -0,0 +1,66 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.516 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.516 +Problem: Completing a function name containing a # does not work. Issue + 253. +Solution: Recognize the # character. (Christian Brabandt) +Files: src/eval.c + + +*** ../vim-7.4.515/src/eval.c 2014-11-12 18:49:12.992752234 +0100 +--- src/eval.c 2014-11-12 20:05:35.609826215 +0100 +*************** +*** 3368,3378 **** + got_eq = TRUE; + xp->xp_context = EXPAND_EXPRESSION; + } +! else if (c == '<' + && xp->xp_context == EXPAND_FUNCTIONS + && vim_strchr(xp->xp_pattern, '(') == NULL) + { +! /* Function name can start with "<SNR>" */ + break; + } + else if (cmdidx != CMD_let || got_eq) +--- 3368,3378 ---- + got_eq = TRUE; + xp->xp_context = EXPAND_EXPRESSION; + } +! else if ((c == '<' || c == '#') + && xp->xp_context == EXPAND_FUNCTIONS + && vim_strchr(xp->xp_pattern, '(') == NULL) + { +! /* Function name can start with "<SNR>" and contain '#'. */ + break; + } + else if (cmdidx != CMD_let || got_eq) +*** ../vim-7.4.515/src/version.c 2014-11-12 19:28:12.682661756 +0100 +--- src/version.c 2014-11-12 20:05:00.730212577 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 516, + /**/ + +-- +The Law of VIM: +For each member b of the possible behaviour space B of program P, there exists +a finite time t before which at least one user u in the total user space U of +program P will request b becomes a member of the allowed behaviour space B' +(B' <= B). +In other words: Sooner or later everyone wants everything as an option. + -- Vince Negri + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.517 b/SOURCES/7.4.517 new file mode 100644 index 0000000..40a0d96 --- /dev/null +++ b/SOURCES/7.4.517 @@ -0,0 +1,49 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.517 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.517 +Problem: With a wrapping line the cursor may not end up in the right place. + (Nazri Ramliy) +Solution: Adjust n_extra for a Tab that wraps. (Christian Brabandt) +Files: src/screen.c + + +*** ../vim-7.4.516/src/screen.c 2014-10-10 15:28:41.985092234 +0200 +--- src/screen.c 2014-11-19 12:53:37.351818719 +0100 +*************** +*** 4456,4461 **** +--- 4456,4465 ---- + /* 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)) ++ n_extra = (int)wp->w_buffer->b_p_ts ++ - vcol % (int)wp->w_buffer->b_p_ts - 1; ++ + c_extra = ' '; + if (vim_iswhite(c)) + { +*** ../vim-7.4.516/src/version.c 2014-11-12 20:09:02.879529412 +0100 +--- src/version.c 2014-11-19 12:56:19.421955598 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 517, + /**/ + +-- +Permission is granted to read this message out aloud on Kings Cross Road, +London, under the condition that the orator is properly dressed. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.518 b/SOURCES/7.4.518 new file mode 100644 index 0000000..f3a360e --- /dev/null +++ b/SOURCES/7.4.518 @@ -0,0 +1,53 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.518 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.518 +Problem: Using status line height in width computations. +Solution: Use one instead. (Hirohito Higashi) +Files: src/window.c + + +*** ../vim-7.4.517/src/window.c 2014-10-21 20:57:11.534295006 +0200 +--- src/window.c 2014-11-19 13:36:46.758016634 +0100 +*************** +*** 796,802 **** + if (frp->fr_win != oldwin && frp->fr_win != NULL + && (frp->fr_win->w_width > new_size + || frp->fr_win->w_width > oldwin->w_width +! - new_size - STATUS_HEIGHT)) + { + do_equal = TRUE; + break; +--- 796,802 ---- + if (frp->fr_win != oldwin && frp->fr_win != NULL + && (frp->fr_win->w_width > new_size + || frp->fr_win->w_width > oldwin->w_width +! - new_size - 1)) + { + do_equal = TRUE; + break; +*** ../vim-7.4.517/src/version.c 2014-11-19 13:21:24.984724043 +0100 +--- src/version.c 2014-11-19 13:39:59.875774316 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 518, + /**/ + +-- +BRIDGEKEEPER: What is your favorite colour? +GAWAIN: Blue ... No yelloooooww! + "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.519 b/SOURCES/7.4.519 new file mode 100644 index 0000000..5b7e02b --- /dev/null +++ b/SOURCES/7.4.519 @@ -0,0 +1,866 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.519 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.519 (after 7.4.497) +Problem: Crash when using syntax highlighting. +Solution: When regprog is freed and replaced, store the result. +Files: src/buffer.c, src/regexp.c, src/syntax.c, src/spell.c, + src/ex_cmds2.c, src/fileio.c, src/proto/fileio.pro, + src/proto/regexp.pro, src/os_unix.c + + +*** ../vim-7.4.518/src/buffer.c 2014-09-23 15:45:04.870801055 +0200 +--- src/buffer.c 2014-11-19 15:50:34.129292586 +0100 +*************** +*** 28,36 **** + #include "vim.h" + + #if defined(FEAT_CMDL_COMPL) || defined(FEAT_LISTCMDS) || defined(FEAT_EVAL) || defined(FEAT_PERL) +! static char_u *buflist_match __ARGS((regprog_T *prog, buf_T *buf, int ignore_case)); + # define HAVE_BUFLIST_MATCH +! static char_u *fname_match __ARGS((regprog_T *prog, char_u *name, int ignore_case)); + #endif + static void buflist_setfpos __ARGS((buf_T *buf, win_T *win, linenr_T lnum, colnr_T col, int copy_options)); + static wininfo_T *find_wininfo __ARGS((buf_T *buf, int skip_diff_buffer)); +--- 28,36 ---- + #include "vim.h" + + #if defined(FEAT_CMDL_COMPL) || defined(FEAT_LISTCMDS) || defined(FEAT_EVAL) || defined(FEAT_PERL) +! static char_u *buflist_match __ARGS((regmatch_T *rmp, buf_T *buf, int ignore_case)); + # define HAVE_BUFLIST_MATCH +! static char_u *fname_match __ARGS((regmatch_T *rmp, char_u *name, int ignore_case)); + #endif + static void buflist_setfpos __ARGS((buf_T *buf, win_T *win, linenr_T lnum, colnr_T col, int copy_options)); + static wininfo_T *find_wininfo __ARGS((buf_T *buf, int skip_diff_buffer)); +*************** +*** 2220,2226 **** + int curtab_only; /* find buffers in current tab only */ + { + buf_T *buf; +- regprog_T *prog; + int match = -1; + int find_listed; + char_u *pat; +--- 2220,2225 ---- +*************** +*** 2265,2278 **** + { + for (attempt = 0; attempt <= 3; ++attempt) + { + /* may add '^' and '$' */ + if (toggledollar) + *patend = (attempt < 2) ? NUL : '$'; /* add/remove '$' */ + p = pat; + if (*p == '^' && !(attempt & 1)) /* add/remove '^' */ + ++p; +! prog = vim_regcomp(p, p_magic ? RE_MAGIC : 0); +! if (prog == NULL) + { + vim_free(pat); + return -1; +--- 2264,2279 ---- + { + for (attempt = 0; attempt <= 3; ++attempt) + { ++ regmatch_T regmatch; ++ + /* may add '^' and '$' */ + if (toggledollar) + *patend = (attempt < 2) ? NUL : '$'; /* add/remove '$' */ + p = pat; + if (*p == '^' && !(attempt & 1)) /* add/remove '^' */ + ++p; +! regmatch.regprog = vim_regcomp(p, p_magic ? RE_MAGIC : 0); +! if (regmatch.regprog == NULL) + { + vim_free(pat); + return -1; +*************** +*** 2283,2289 **** + #ifdef FEAT_DIFF + && (!diffmode || diff_mode_buf(buf)) + #endif +! && buflist_match(prog, buf, FALSE) != NULL) + { + if (curtab_only) + { +--- 2284,2290 ---- + #ifdef FEAT_DIFF + && (!diffmode || diff_mode_buf(buf)) + #endif +! && buflist_match(®match, buf, FALSE) != NULL) + { + if (curtab_only) + { +*************** +*** 2310,2316 **** + match = buf->b_fnum; /* remember first match */ + } + +! vim_regfree(prog); + if (match >= 0) /* found one match */ + break; + } +--- 2311,2317 ---- + match = buf->b_fnum; /* remember first match */ + } + +! vim_regfree(regmatch.regprog); + if (match >= 0) /* found one match */ + break; + } +*************** +*** 2352,2358 **** + int round; + char_u *p; + int attempt; +- regprog_T *prog; + char_u *patc; + + *num_file = 0; /* return values in case of FAIL */ +--- 2353,2358 ---- +*************** +*** 2376,2385 **** + */ + for (attempt = 0; attempt <= 1; ++attempt) + { + if (attempt > 0 && patc == pat) + break; /* there was no anchor, no need to try again */ +! prog = vim_regcomp(patc + attempt * 11, RE_MAGIC); +! if (prog == NULL) + { + if (patc != pat) + vim_free(patc); +--- 2376,2387 ---- + */ + for (attempt = 0; attempt <= 1; ++attempt) + { ++ regmatch_T regmatch; ++ + if (attempt > 0 && patc == pat) + break; /* there was no anchor, no need to try again */ +! regmatch.regprog = vim_regcomp(patc + attempt * 11, RE_MAGIC); +! if (regmatch.regprog == NULL) + { + if (patc != pat) + vim_free(patc); +*************** +*** 2397,2403 **** + { + if (!buf->b_p_bl) /* skip unlisted buffers */ + continue; +! p = buflist_match(prog, buf, p_wic); + if (p != NULL) + { + if (round == 1) +--- 2399,2405 ---- + { + if (!buf->b_p_bl) /* skip unlisted buffers */ + continue; +! p = buflist_match(®match, buf, p_wic); + if (p != NULL) + { + if (round == 1) +*************** +*** 2419,2432 **** + *file = (char_u **)alloc((unsigned)(count * sizeof(char_u *))); + if (*file == NULL) + { +! vim_regfree(prog); + if (patc != pat) + vim_free(patc); + return FAIL; + } + } + } +! vim_regfree(prog); + if (count) /* match(es) found, break here */ + break; + } +--- 2421,2434 ---- + *file = (char_u **)alloc((unsigned)(count * sizeof(char_u *))); + if (*file == NULL) + { +! vim_regfree(regmatch.regprog); + if (patc != pat) + vim_free(patc); + return FAIL; + } + } + } +! vim_regfree(regmatch.regprog); + if (count) /* match(es) found, break here */ + break; + } +*************** +*** 2445,2461 **** + * Check for a match on the file name for buffer "buf" with regprog "prog". + */ + static char_u * +! buflist_match(prog, buf, ignore_case) +! regprog_T *prog; + buf_T *buf; + int ignore_case; /* when TRUE ignore case, when FALSE use 'fic' */ + { + char_u *match; + + /* First try the short file name, then the long file name. */ +! match = fname_match(prog, buf->b_sfname, ignore_case); + if (match == NULL) +! match = fname_match(prog, buf->b_ffname, ignore_case); + + return match; + } +--- 2447,2463 ---- + * Check for a match on the file name for buffer "buf" with regprog "prog". + */ + static char_u * +! buflist_match(rmp, buf, ignore_case) +! regmatch_T *rmp; + buf_T *buf; + int ignore_case; /* when TRUE ignore case, when FALSE use 'fic' */ + { + char_u *match; + + /* First try the short file name, then the long file name. */ +! match = fname_match(rmp, buf->b_sfname, ignore_case); + if (match == NULL) +! match = fname_match(rmp, buf->b_ffname, ignore_case); + + return match; + } +*************** +*** 2465,2491 **** + * Return "name" when there is a match, NULL when not. + */ + static char_u * +! fname_match(prog, name, ignore_case) +! regprog_T *prog; + char_u *name; + int ignore_case; /* when TRUE ignore case, when FALSE use 'fic' */ + { + char_u *match = NULL; + char_u *p; +- regmatch_T regmatch; + + if (name != NULL) + { +- regmatch.regprog = prog; + /* Ignore case when 'fileignorecase' or the argument is set. */ +! regmatch.rm_ic = p_fic || ignore_case; +! if (vim_regexec(®match, name, (colnr_T)0)) + match = name; + else + { + /* Replace $(HOME) with '~' and try matching again. */ + p = home_replace_save(NULL, name); +! if (p != NULL && vim_regexec(®match, p, (colnr_T)0)) + match = name; + vim_free(p); + } +--- 2467,2491 ---- + * Return "name" when there is a match, NULL when not. + */ + static char_u * +! fname_match(rmp, name, ignore_case) +! regmatch_T *rmp; + char_u *name; + int ignore_case; /* when TRUE ignore case, when FALSE use 'fic' */ + { + char_u *match = NULL; + char_u *p; + + if (name != NULL) + { + /* Ignore case when 'fileignorecase' or the argument is set. */ +! rmp->rm_ic = p_fic || ignore_case; +! if (vim_regexec(rmp, name, (colnr_T)0)) + match = name; + else + { + /* Replace $(HOME) with '~' and try matching again. */ + p = home_replace_save(NULL, name); +! if (p != NULL && vim_regexec(rmp, p, (colnr_T)0)) + match = name; + vim_free(p); + } +*** ../vim-7.4.518/src/regexp.c 2014-11-05 14:26:30.760758363 +0100 +--- src/regexp.c 2014-11-19 16:10:43.203390451 +0100 +*************** +*** 8163,8168 **** +--- 8163,8169 ---- + /* + * Match a regexp against a string. + * "rmp->regprog" is a compiled regexp as returned by vim_regcomp(). ++ * Note: "rmp->regprog" may be freed and changed. + * Uses curbuf for line count and 'iskeyword'. + * When "nl" is TRUE consider a "\n" in "line" to be a line break. + * +*************** +*** 8203,8208 **** +--- 8204,8232 ---- + return result; + } + ++ /* ++ * Note: "*prog" may be freed and changed. ++ */ ++ int ++ vim_regexec_prog(prog, ignore_case, line, col) ++ regprog_T **prog; ++ int ignore_case; ++ char_u *line; ++ colnr_T col; ++ { ++ int r; ++ regmatch_T regmatch; ++ ++ regmatch.regprog = *prog; ++ regmatch.rm_ic = ignore_case; ++ r = vim_regexec_both(®match, line, col, FALSE); ++ *prog = regmatch.regprog; ++ return r; ++ } ++ ++ /* ++ * Note: "rmp->regprog" may be freed and changed. ++ */ + int + vim_regexec(rmp, line, col) + regmatch_T *rmp; +*************** +*** 8216,8221 **** +--- 8240,8246 ---- + || defined(FIND_REPLACE_DIALOG) || defined(PROTO) + /* + * Like vim_regexec(), but consider a "\n" in "line" to be a line break. ++ * Note: "rmp->regprog" may be freed and changed. + */ + int + vim_regexec_nl(rmp, line, col) +*************** +*** 8230,8235 **** +--- 8255,8261 ---- + /* + * Match a regexp against multiple lines. + * "rmp->regprog" is a compiled regexp as returned by vim_regcomp(). ++ * Note: "rmp->regprog" may be freed and changed. + * Uses curbuf for line count and 'iskeyword'. + * + * Return zero if there is no match. Return number of lines contained in the +*** ../vim-7.4.518/src/syntax.c 2014-06-12 12:20:50.191541385 +0200 +--- src/syntax.c 2014-11-19 15:39:08.493182536 +0100 +*************** +*** 992,1004 **** + linenr_T lnum; + { + regmmatch_T regmatch; + + if (syn_block->b_syn_linecont_prog != NULL) + { + regmatch.rmm_ic = syn_block->b_syn_linecont_ic; + regmatch.regprog = syn_block->b_syn_linecont_prog; +! return syn_regexec(®match, lnum, (colnr_T)0, + IF_SYN_TIME(&syn_block->b_syn_linecont_time)); + } + return FALSE; + } +--- 992,1007 ---- + linenr_T lnum; + { + regmmatch_T regmatch; ++ int r; + + if (syn_block->b_syn_linecont_prog != NULL) + { + regmatch.rmm_ic = syn_block->b_syn_linecont_ic; + regmatch.regprog = syn_block->b_syn_linecont_prog; +! r = syn_regexec(®match, lnum, (colnr_T)0, + IF_SYN_TIME(&syn_block->b_syn_linecont_time)); ++ syn_block->b_syn_linecont_prog = regmatch.regprog; ++ return r; + } + return FALSE; + } +*************** +*** 2075,2080 **** +--- 2078,2085 ---- + cur_si->si_cont_list, &spp->sp_syn, + spp->sp_flags & HL_CONTAINED)))) + { ++ int r; ++ + /* If we already tried matching in this line, and + * there isn't a match before next_match_col, skip + * this item. */ +*************** +*** 2089,2098 **** + + regmatch.rmm_ic = spp->sp_ic; + regmatch.regprog = spp->sp_prog; +! if (!syn_regexec(®match, + current_lnum, + (colnr_T)lc_col, +! IF_SYN_TIME(&spp->sp_time))) + { + /* no match in this line, try another one */ + spp->sp_startcol = MAXCOL; +--- 2094,2105 ---- + + regmatch.rmm_ic = spp->sp_ic; + regmatch.regprog = spp->sp_prog; +! r = syn_regexec(®match, + current_lnum, + (colnr_T)lc_col, +! IF_SYN_TIME(&spp->sp_time)); +! spp->sp_prog = regmatch.regprog; +! if (!r) + { + /* no match in this line, try another one */ + spp->sp_startcol = MAXCOL; +*************** +*** 2963,2968 **** +--- 2970,2976 ---- + for (idx = start_idx; idx < syn_block->b_syn_patterns.ga_len; ++idx) + { + int lc_col = matchcol; ++ int r; + + spp = &(SYN_ITEMS(syn_block)[idx]); + if (spp->sp_type != SPTYPE_END) /* past last END pattern */ +*************** +*** 2973,2980 **** + + regmatch.rmm_ic = spp->sp_ic; + regmatch.regprog = spp->sp_prog; +! if (syn_regexec(®match, startpos->lnum, lc_col, +! IF_SYN_TIME(&spp->sp_time))) + { + if (best_idx == -1 || regmatch.startpos[0].col + < best_regmatch.startpos[0].col) +--- 2981,2990 ---- + + regmatch.rmm_ic = spp->sp_ic; + regmatch.regprog = spp->sp_prog; +! r = syn_regexec(®match, startpos->lnum, lc_col, +! IF_SYN_TIME(&spp->sp_time)); +! spp->sp_prog = regmatch.regprog; +! if (r) + { + if (best_idx == -1 || regmatch.startpos[0].col + < best_regmatch.startpos[0].col) +*************** +*** 3000,3013 **** + if (spp_skip != NULL) + { + int lc_col = matchcol - spp_skip->sp_offsets[SPO_LC_OFF]; + + if (lc_col < 0) + lc_col = 0; + regmatch.rmm_ic = spp_skip->sp_ic; + regmatch.regprog = spp_skip->sp_prog; +! if (syn_regexec(®match, startpos->lnum, lc_col, +! IF_SYN_TIME(&spp_skip->sp_time)) +! && regmatch.startpos[0].col + <= best_regmatch.startpos[0].col) + { + /* Add offset to skip pattern match */ +--- 3010,3025 ---- + if (spp_skip != NULL) + { + int lc_col = matchcol - spp_skip->sp_offsets[SPO_LC_OFF]; ++ int r; + + if (lc_col < 0) + lc_col = 0; + regmatch.rmm_ic = spp_skip->sp_ic; + regmatch.regprog = spp_skip->sp_prog; +! r = syn_regexec(®match, startpos->lnum, lc_col, +! IF_SYN_TIME(&spp_skip->sp_time)); +! spp_skip->sp_prog = regmatch.regprog; +! if (r && regmatch.startpos[0].col + <= best_regmatch.startpos[0].col) + { + /* Add offset to skip pattern match */ +*** ../vim-7.4.518/src/spell.c 2014-09-19 16:04:08.050417797 +0200 +--- src/spell.c 2014-11-19 16:28:49.798964748 +0100 +*************** +*** 1154,1164 **** + if (capcol != NULL && wp->w_s->b_cap_prog != NULL) + { + regmatch_T regmatch; + + /* Check for end of sentence. */ + regmatch.regprog = wp->w_s->b_cap_prog; + regmatch.rm_ic = FALSE; +! if (vim_regexec(®match, ptr, 0)) + *capcol = (int)(regmatch.endp[0] - ptr); + } + +--- 1154,1167 ---- + if (capcol != NULL && wp->w_s->b_cap_prog != NULL) + { + regmatch_T regmatch; ++ int r; + + /* Check for end of sentence. */ + regmatch.regprog = wp->w_s->b_cap_prog; + regmatch.rm_ic = FALSE; +! r = vim_regexec(®match, ptr, 0); +! wp->w_s->b_cap_prog = regmatch.regprog; +! if (r) + *capcol = (int)(regmatch.endp[0] - ptr); + } + +*************** +*** 1786,1792 **** + char_u *word; + char_u *flags; + { +- regmatch_T regmatch; + #ifdef FEAT_MBYTE + char_u uflags[MAXWLEN * 2]; + int i; +--- 1789,1794 ---- +*************** +*** 1808,1816 **** + else + #endif + p = flags; +! regmatch.regprog = slang->sl_compprog; +! regmatch.rm_ic = FALSE; +! if (!vim_regexec(®match, p, 0)) + return FALSE; + + /* Count the number of syllables. This may be slow, do it last. If there +--- 1810,1816 ---- + else + #endif + p = flags; +! if (!vim_regexec_prog(&slang->sl_compprog, FALSE, p, 0)) + return FALSE; + + /* Count the number of syllables. This may be slow, do it last. If there +*************** +*** 1930,1937 **** + { + int prefcnt; + int pidx; +! regprog_T *rp; +! regmatch_T regmatch; + int prefid; + + prefid = (unsigned)flags >> 24; +--- 1930,1936 ---- + { + int prefcnt; + int pidx; +! regprog_T **rp; + int prefid; + + prefid = (unsigned)flags >> 24; +*************** +*** 1950,1961 **** + + /* Check the condition, if there is one. The condition index is + * stored in the two bytes above the prefix ID byte. */ +! rp = slang->sl_prefprog[((unsigned)pidx >> 8) & 0xffff]; +! if (rp != NULL) + { +! regmatch.regprog = rp; +! regmatch.rm_ic = FALSE; +! if (!vim_regexec(®match, word, 0)) + continue; + } + else if (cond_req) +--- 1949,1958 ---- + + /* Check the condition, if there is one. The condition index is + * stored in the two bytes above the prefix ID byte. */ +! rp = &slang->sl_prefprog[((unsigned)pidx >> 8) & 0xffff]; +! if (*rp != NULL) + { +! if (!vim_regexec_prog(rp, FALSE, word, 0)) + continue; + } + else if (cond_req) +*************** +*** 6903,6909 **** + hashitem_T *hi; + affheader_T *ah; + affentry_T *ae; +- regmatch_T regmatch; + char_u newword[MAXWLEN]; + int retval = OK; + int i, j; +--- 6900,6905 ---- +*************** +*** 6944,6958 **** + * When a previously added affix had CIRCUMFIX this one + * must have it too, if it had not then this one must not + * have one either. */ +- regmatch.regprog = ae->ae_prog; +- regmatch.rm_ic = FALSE; + if ((xht != NULL || !affile->af_pfxpostpone + || ae->ae_chop != NULL + || ae->ae_flags != NULL) + && (ae->ae_chop == NULL + || STRLEN(ae->ae_chop) < wordlen) + && (ae->ae_prog == NULL +! || vim_regexec(®match, word, (colnr_T)0)) + && (((condit & CONDIT_CFIX) == 0) + == ((condit & CONDIT_AFF) == 0 + || ae->ae_flags == NULL +--- 6940,6953 ---- + * When a previously added affix had CIRCUMFIX this one + * must have it too, if it had not then this one must not + * have one either. */ + if ((xht != NULL || !affile->af_pfxpostpone + || ae->ae_chop != NULL + || ae->ae_flags != NULL) + && (ae->ae_chop == NULL + || STRLEN(ae->ae_chop) < wordlen) + && (ae->ae_prog == NULL +! || vim_regexec_prog(&ae->ae_prog, FALSE, +! word, (colnr_T)0)) + && (((condit & CONDIT_CFIX) == 0) + == ((condit & CONDIT_AFF) == 0 + || ae->ae_flags == NULL +*************** +*** 10478,10483 **** +--- 10473,10479 ---- + break; + } + } ++ curwin->w_s->b_cap_prog = regmatch.regprog; + } + + vim_free(line_copy); +*** ../vim-7.4.518/src/ex_cmds2.c 2014-08-06 18:17:03.471147780 +0200 +--- src/ex_cmds2.c 2014-11-19 16:24:22.162013396 +0100 +*************** +*** 739,745 **** + struct debuggy *bp; + int i; + linenr_T lnum = 0; +- regmatch_T regmatch; + char_u *name = fname; + int prev_got_int; + +--- 739,744 ---- +*************** +*** 771,778 **** + #endif + (bp->dbg_lnum > after && (lnum == 0 || bp->dbg_lnum < lnum))))) + { +- regmatch.regprog = bp->dbg_prog; +- regmatch.rm_ic = FALSE; + /* + * Save the value of got_int and reset it. We don't want a + * previous interruption cancel matching, only hitting CTRL-C +--- 770,775 ---- +*************** +*** 780,786 **** + */ + prev_got_int = got_int; + got_int = FALSE; +! if (vim_regexec(®match, name, (colnr_T)0)) + { + lnum = bp->dbg_lnum; + if (fp != NULL) +--- 777,783 ---- + */ + prev_got_int = got_int; + got_int = FALSE; +! if (vim_regexec_prog(&bp->dbg_prog, FALSE, name, (colnr_T)0)) + { + lnum = bp->dbg_lnum; + if (fp != NULL) +*** ../vim-7.4.518/src/fileio.c 2014-11-12 15:15:34.983882077 +0100 +--- src/fileio.c 2014-11-19 15:57:01.496837984 +0100 +*************** +*** 7772,7777 **** +--- 7772,7780 ---- + static int do_autocmd_event __ARGS((event_T event, char_u *pat, int nested, char_u *cmd, int forceit, int group)); + static int apply_autocmds_group __ARGS((event_T event, char_u *fname, char_u *fname_io, int force, int group, buf_T *buf, exarg_T *eap)); + static void auto_next_pat __ARGS((AutoPatCmd *apc, int stop_at_last)); ++ #if defined(FEAT_AUTOCMD) || defined(FEAT_WILDIGN) ++ static int match_file_pat __ARGS((char_u *pattern, regprog_T **prog, char_u *fname, char_u *sfname, char_u *tail, int allow_dirs)); ++ #endif + + + static event_T last_event; +*************** +*** 9640,9646 **** + { + /* execution-condition */ + if (ap->buflocal_nr == 0 +! ? (match_file_pat(NULL, ap->reg_prog, apc->fname, + apc->sfname, apc->tail, ap->allow_dirs)) + : ap->buflocal_nr == apc->arg_bufnr) + { +--- 9643,9649 ---- + { + /* execution-condition */ + if (ap->buflocal_nr == 0 +! ? (match_file_pat(NULL, &ap->reg_prog, apc->fname, + apc->sfname, apc->tail, ap->allow_dirs)) + : ap->buflocal_nr == apc->arg_bufnr) + { +*************** +*** 9774,9780 **** + for (ap = first_autopat[(int)event]; ap != NULL; ap = ap->next) + if (ap->pat != NULL && ap->cmds != NULL + && (ap->buflocal_nr == 0 +! ? match_file_pat(NULL, ap->reg_prog, + fname, sfname, tail, ap->allow_dirs) + : buf != NULL && ap->buflocal_nr == buf->b_fnum + )) +--- 9777,9783 ---- + for (ap = first_autopat[(int)event]; ap != NULL; ap = ap->next) + if (ap->pat != NULL && ap->cmds != NULL + && (ap->buflocal_nr == 0 +! ? match_file_pat(NULL, &ap->reg_prog, + fname, sfname, tail, ap->allow_dirs) + : buf != NULL && ap->buflocal_nr == buf->b_fnum + )) +*************** +*** 10035,10044 **** + * Used for autocommands and 'wildignore'. + * Returns TRUE if there is a match, FALSE otherwise. + */ +! int + match_file_pat(pattern, prog, fname, sfname, tail, allow_dirs) + char_u *pattern; /* pattern to match with */ +! regprog_T *prog; /* pre-compiled regprog or NULL */ + char_u *fname; /* full path of file name */ + char_u *sfname; /* short file name or NULL */ + char_u *tail; /* tail of path */ +--- 10038,10047 ---- + * Used for autocommands and 'wildignore'. + * Returns TRUE if there is a match, FALSE otherwise. + */ +! static int + match_file_pat(pattern, prog, fname, sfname, tail, allow_dirs) + char_u *pattern; /* pattern to match with */ +! regprog_T **prog; /* pre-compiled regprog or NULL */ + char_u *fname; /* full path of file name */ + char_u *sfname; /* short file name or NULL */ + char_u *tail; /* tail of path */ +*************** +*** 10093,10099 **** + #endif + { + if (prog != NULL) +! regmatch.regprog = prog; + else + regmatch.regprog = vim_regcomp(pattern, RE_MAGIC); + } +--- 10096,10102 ---- + #endif + { + if (prog != NULL) +! regmatch.regprog = *prog; + else + regmatch.regprog = vim_regcomp(pattern, RE_MAGIC); + } +*************** +*** 10119,10125 **** + || (!allow_dirs && vim_regexec(®match, tail, (colnr_T)0))))) + result = TRUE; + +! if (prog == NULL) + vim_regfree(regmatch.regprog); + return result; + } +--- 10122,10130 ---- + || (!allow_dirs && vim_regexec(®match, tail, (colnr_T)0))))) + result = TRUE; + +! if (prog != NULL) +! *prog = regmatch.regprog; +! else + vim_regfree(regmatch.regprog); + return result; + } +*** ../vim-7.4.518/src/proto/fileio.pro 2014-08-22 23:05:50.106606614 +0200 +--- src/proto/fileio.pro 2014-11-19 15:55:55.013602515 +0100 +*************** +*** 59,65 **** + char_u *get_event_name __ARGS((expand_T *xp, int idx)); + int autocmd_supported __ARGS((char_u *name)); + int au_exists __ARGS((char_u *arg)); +- int match_file_pat __ARGS((char_u *pattern, regprog_T *prog, char_u *fname, char_u *sfname, char_u *tail, int allow_dirs)); + int match_file_list __ARGS((char_u *list, char_u *sfname, char_u *ffname)); + char_u *file_pat_to_reg_pat __ARGS((char_u *pat, char_u *pat_end, char *allow_dirs, int no_bslash)); + long read_eintr __ARGS((int fd, void *buf, size_t bufsize)); +--- 59,64 ---- +*** ../vim-7.4.518/src/proto/regexp.pro 2014-04-02 19:00:53.043644100 +0200 +--- src/proto/regexp.pro 2014-11-19 16:11:34.522800480 +0100 +*************** +*** 13,18 **** +--- 13,19 ---- + list_T *reg_submatch_list __ARGS((int no)); + regprog_T *vim_regcomp __ARGS((char_u *expr_arg, int re_flags)); + void vim_regfree __ARGS((regprog_T *prog)); ++ int vim_regexec_prog __ARGS((regprog_T **prog, int ignore_case, char_u *line, colnr_T col)); + int vim_regexec __ARGS((regmatch_T *rmp, char_u *line, colnr_T col)); + int vim_regexec_nl __ARGS((regmatch_T *rmp, char_u *line, colnr_T col)); + long vim_regexec_multi __ARGS((regmmatch_T *rmp, win_T *win, buf_T *buf, linenr_T lnum, colnr_T col, proftime_T *tm)); +*** ../vim-7.4.518/src/os_unix.c 2014-10-11 14:47:22.829275547 +0200 +--- src/os_unix.c 2014-11-19 16:26:48.504346537 +0100 +*************** +*** 1610,1617 **** + static int + x_connect_to_server() + { +- regmatch_T regmatch; +- + #if defined(FEAT_CLIENTSERVER) + if (x_force_connect) + return TRUE; +--- 1610,1615 ---- +*************** +*** 1622,1630 **** + /* Check for a match with "exclude:" from 'clipboard'. */ + if (clip_exclude_prog != NULL) + { +! regmatch.rm_ic = FALSE; /* Don't ignore case */ +! regmatch.regprog = clip_exclude_prog; +! if (vim_regexec(®match, T_NAME, (colnr_T)0)) + return FALSE; + } + return TRUE; +--- 1620,1626 ---- + /* Check for a match with "exclude:" from 'clipboard'. */ + if (clip_exclude_prog != NULL) + { +! if (vim_regexec_prog(&clip_exclude_prog, FALSE, T_NAME, (colnr_T)0)) + return FALSE; + } + return TRUE; +*** ../vim-7.4.518/src/version.c 2014-11-19 13:40:04.903715962 +0100 +--- src/version.c 2014-11-19 15:22:36.464620036 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 519, + /**/ + +-- +BRIDGEKEEPER: What is your favorite editor? +GAWAIN: Emacs ... No, Viiiiiiiiiiimmmmmmm! + "Monty Python and the Holy editor wars" PYTHON (MONTY) SOFTWARE LTD + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.520 b/SOURCES/7.4.520 new file mode 100644 index 0000000..4b5928e --- /dev/null +++ b/SOURCES/7.4.520 @@ -0,0 +1,48 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.520 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.520 +Problem: Sun PCK locale is not recognzed. +Solution: Add PCK in the table. (Keiichi Oono) +Files: src/mbyte.c + + +*** ../vim-7.4.519/src/mbyte.c 2014-09-15 14:25:51.305650006 +0200 +--- src/mbyte.c 2014-11-19 16:48:14.205705174 +0100 +*************** +*** 405,410 **** +--- 405,411 ---- + {"unix-jis", IDX_EUC_JP}, + {"ujis", IDX_EUC_JP}, + {"shift-jis", IDX_SJIS}, ++ {"pck", IDX_SJIS}, /* Sun: PCK */ + {"euckr", IDX_EUC_KR}, + {"5601", IDX_EUC_KR}, /* Sun: KS C 5601 */ + {"euccn", IDX_EUC_CN}, +*** ../vim-7.4.519/src/version.c 2014-11-19 16:38:01.520679869 +0100 +--- src/version.c 2014-11-19 16:49:28.404860112 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 520, + /**/ + +-- +BRIDGEKEEPER: What is the air-speed velocity of an unladen swallow? +ARTHUR: What do you mean? An African or European swallow? +BRIDGEKEEPER: Er ... I don't know that ... Aaaaarrrrrrggghhh! + BRIDGEKEEPER is cast into the gorge. + "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.521 b/SOURCES/7.4.521 new file mode 100644 index 0000000..20f13b4 --- /dev/null +++ b/SOURCES/7.4.521 @@ -0,0 +1,49 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.521 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.521 +Problem: When using "vep" a mark is moved to the next line. (Maxi Padulo, + Issue 283) +Solution: Decrement the line number. (Christian Brabandt) +Files: src/ops.c + + +*** ../vim-7.4.520/src/ops.c 2014-08-16 18:36:38.593993280 +0200 +--- src/ops.c 2014-11-19 17:29:55.697280694 +0100 +*************** +*** 3831,3836 **** +--- 3831,3839 ---- + lnum++; + } while (VIsual_active && lnum <= curbuf->b_visual.vi_end.lnum); + ++ if (VIsual_active) /* reset lnum to the last visual line */ ++ lnum--; ++ + curbuf->b_op_end = curwin->w_cursor; + /* For "CTRL-O p" in Insert mode, put cursor after last char */ + if (totlen && (restart_edit != 0 || (flags & PUT_CURSEND))) +*** ../vim-7.4.520/src/version.c 2014-11-19 17:05:52.209648533 +0100 +--- src/version.c 2014-11-19 17:30:30.220890822 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 521, + /**/ + +-- +BEDEVERE: How do you know so much about swallows? +ARTHUR: Well you have to know these things when you're a king, you know. + "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.522 b/SOURCES/7.4.522 new file mode 100644 index 0000000..fa23c23 --- /dev/null +++ b/SOURCES/7.4.522 @@ -0,0 +1,51 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.522 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.522 +Problem: Specifying wrong buffer size for GetLongPathName(). +Solution: Use the actual size. (Ken Takata) +Files: src/eval.c + + +*** ../vim-7.4.521/src/eval.c 2014-11-12 20:09:02.875529458 +0100 +--- src/eval.c 2014-11-19 18:01:14.560028682 +0100 +*************** +*** 24762,24768 **** + p = alloc(_MAX_PATH + 1); + if (p != NULL) + { +! if (GetLongPathName(*fnamep, p, MAXPATHL)) + { + vim_free(*bufp); + *bufp = *fnamep = p; +--- 24762,24768 ---- + p = alloc(_MAX_PATH + 1); + if (p != NULL) + { +! if (GetLongPathName(*fnamep, p, _MAX_PATH)) + { + vim_free(*bufp); + *bufp = *fnamep = p; +*** ../vim-7.4.521/src/version.c 2014-11-19 17:35:35.085446649 +0100 +--- src/version.c 2014-11-19 18:02:02.003491140 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 522, + /**/ + +-- +Every person is responsible for the choices he makes. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.523 b/SOURCES/7.4.523 new file mode 100644 index 0000000..488e8fd --- /dev/null +++ b/SOURCES/7.4.523 @@ -0,0 +1,99 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.523 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.523 +Problem: When the X11 server is stopped and restarted, while Vim is kept in + the background, copy/paste no longer works. (Issue 203) +Solution: Setup the clipboard again. (Christian Brabandt) +Files: src/os_unix.c + + +*** ../vim-7.4.522/src/os_unix.c 2014-11-19 16:38:01.520679869 +0100 +--- src/os_unix.c 2014-11-19 18:34:45.505245180 +0100 +*************** +*** 1586,1597 **** +--- 1586,1600 ---- + * An X IO Error handler, used to catch terminal errors. + */ + static int x_IOerror_handler __ARGS((Display *dpy)); ++ static void may_restore_clipboard __ARGS((void)); ++ static int xterm_dpy_was_reset = FALSE; + + static int + x_IOerror_handler(dpy) + Display *dpy UNUSED; + { + xterm_dpy = NULL; ++ xterm_dpy_was_reset = TRUE; + x11_window = 0; + x11_display = NULL; + xterm_Shell = (Widget)0; +*************** +*** 1602,1607 **** +--- 1605,1626 ---- + return 0; /* avoid the compiler complains about missing return value */ + # endif + } ++ ++ /* ++ * If the X11 connection was lost try to restore it. ++ * Helps when the X11 server was stopped and restarted while Vim was inactive ++ * (e.g. though tmux). ++ */ ++ static void ++ may_restore_clipboard() ++ { ++ if (xterm_dpy_was_reset) ++ { ++ xterm_dpy_was_reset = FALSE; ++ setup_term_clip(); ++ get_x11_title(FALSE); ++ } ++ } + #endif + + /* +*************** +*** 5274,5279 **** +--- 5293,5299 ---- + } + # endif + # ifdef FEAT_XCLIPBOARD ++ may_restore_clipboard(); + if (xterm_Shell != (Widget)0) + { + xterm_idx = nfd; +*************** +*** 5426,5431 **** +--- 5446,5452 ---- + } + # endif + # ifdef FEAT_XCLIPBOARD ++ may_restore_clipboard(); + if (xterm_Shell != (Widget)0) + { + FD_SET(ConnectionNumber(xterm_dpy), &rfds); +*** ../vim-7.4.522/src/version.c 2014-11-19 18:03:24.202559721 +0100 +--- src/version.c 2014-11-19 18:48:06.140215792 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 523, + /**/ + +-- +There is no right or wrong, there is only your personal opinion. + (Bram Moolenaar) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.524 b/SOURCES/7.4.524 new file mode 100644 index 0000000..3553ca1 --- /dev/null +++ b/SOURCES/7.4.524 @@ -0,0 +1,96 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.524 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.524 +Problem: When using ":ownsyntax" spell checking is messed up. (Issue 78) +Solution: Use the window-local option values. (Christian Brabandt) +Files: src/option.c, src/syntax.c + + +*** ../vim-7.4.523/src/option.c 2014-11-05 17:44:47.676471691 +0100 +--- src/option.c 2014-11-19 19:29:49.351843116 +0100 +*************** +*** 6706,6720 **** + #ifdef FEAT_SPELL + /* When 'spelllang' or 'spellfile' is set and there is a window for this + * buffer in which 'spell' is set load the wordlists. */ +! else if (varp == &(curbuf->b_s.b_p_spl) || varp == &(curbuf->b_s.b_p_spf)) + { + win_T *wp; + int l; + +! if (varp == &(curbuf->b_s.b_p_spf)) + { +! l = (int)STRLEN(curbuf->b_s.b_p_spf); +! if (l > 0 && (l < 4 || STRCMP(curbuf->b_s.b_p_spf + l - 4, + ".add") != 0)) + errmsg = e_invarg; + } +--- 6706,6721 ---- + #ifdef FEAT_SPELL + /* When 'spelllang' or 'spellfile' is set and there is a window for this + * buffer in which 'spell' is set load the wordlists. */ +! else if (varp == &(curwin->w_s->b_p_spl) +! || varp == &(curwin->w_s->b_p_spf)) + { + win_T *wp; + int l; + +! if (varp == &(curwin->w_s->b_p_spf)) + { +! l = (int)STRLEN(curwin->w_s->b_p_spf); +! if (l > 0 && (l < 4 || STRCMP(curwin->w_s->b_p_spf + l - 4, + ".add") != 0)) + errmsg = e_invarg; + } +*** ../vim-7.4.523/src/syntax.c 2014-11-19 16:38:01.512679964 +0100 +--- src/syntax.c 2014-11-19 19:24:56.431160659 +0100 +*************** +*** 6304,6314 **** + curwin->w_s = (synblock_T *)alloc(sizeof(synblock_T)); + memset(curwin->w_s, 0, sizeof(synblock_T)); + #ifdef FEAT_SPELL + curwin->w_p_spell = FALSE; /* No spell checking */ + clear_string_option(&curwin->w_s->b_p_spc); + clear_string_option(&curwin->w_s->b_p_spf); +- vim_regfree(curwin->w_s->b_cap_prog); +- curwin->w_s->b_cap_prog = NULL; + clear_string_option(&curwin->w_s->b_p_spl); + #endif + } +--- 6304,6313 ---- + curwin->w_s = (synblock_T *)alloc(sizeof(synblock_T)); + memset(curwin->w_s, 0, sizeof(synblock_T)); + #ifdef FEAT_SPELL ++ /* TODO: keep the spell checking as it was. */ + curwin->w_p_spell = FALSE; /* No spell checking */ + clear_string_option(&curwin->w_s->b_p_spc); + clear_string_option(&curwin->w_s->b_p_spf); + clear_string_option(&curwin->w_s->b_p_spl); + #endif + } +*** ../vim-7.4.523/src/version.c 2014-11-19 18:48:41.515814987 +0100 +--- src/version.c 2014-11-19 19:26:00.158438943 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 524, + /**/ + +-- +A special law prohibits unmarried women from parachuting on Sunday or she +shall risk arrest, fine, and/or jailing. + [real standing law in Florida, United States of America] + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.525 b/SOURCES/7.4.525 new file mode 100644 index 0000000..63f584e --- /dev/null +++ b/SOURCES/7.4.525 @@ -0,0 +1,87 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.525 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.525 +Problem: map() leaks memory when there is an error in the expression. +Solution: Call clear_tv(). (Christian Brabandt) +Files: src/eval.c + + +*** ../vim-7.4.524/src/eval.c 2014-11-19 18:03:24.198559765 +0100 +--- src/eval.c 2014-11-19 20:01:36.426226654 +0100 +*************** +*** 10720,10737 **** + { + if (!HASHITEM_EMPTY(hi)) + { + --todo; + di = HI2DI(hi); + if (tv_check_lock(di->di_tv.v_lock, + (char_u *)_(arg_errmsg))) + break; + vimvars[VV_KEY].vv_str = vim_strsave(di->di_key); +! if (filter_map_one(&di->di_tv, expr, map, &rem) == FAIL +! || did_emsg) + break; + if (!map && rem) + dictitem_remove(d, di); +- clear_tv(&vimvars[VV_KEY].vv_tv); + } + } + hash_unlock(ht); +--- 10720,10739 ---- + { + if (!HASHITEM_EMPTY(hi)) + { ++ int r; ++ + --todo; + di = HI2DI(hi); + if (tv_check_lock(di->di_tv.v_lock, + (char_u *)_(arg_errmsg))) + break; + vimvars[VV_KEY].vv_str = vim_strsave(di->di_key); +! r = filter_map_one(&di->di_tv, expr, map, &rem); +! clear_tv(&vimvars[VV_KEY].vv_tv); +! if (r == FAIL || did_emsg) + break; + if (!map && rem) + dictitem_remove(d, di); + } + } + hash_unlock(ht); +*************** +*** 10782,10787 **** +--- 10784,10790 ---- + if (*s != NUL) /* check for trailing chars after expr */ + { + EMSG2(_(e_invexpr2), s); ++ clear_tv(&rettv); + goto theend; + } + if (map) +*** ../vim-7.4.524/src/version.c 2014-11-19 19:33:13.373532135 +0100 +--- src/version.c 2014-11-19 19:58:41.356215390 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 525, + /**/ + +-- +If an elephant is left tied to a parking meter, the parking fee has to be paid +just as it would for a vehicle. + [real standing law in Florida, United States of America] + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.526 b/SOURCES/7.4.526 new file mode 100644 index 0000000..7d120ca --- /dev/null +++ b/SOURCES/7.4.526 @@ -0,0 +1,191 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.526 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.526 +Problem: matchstr() fails on long text. Daniel Hahler) +Solution: Return NFA_TOO_EXPENSIVE from regexec_nl(). (Christian Brabandt) +Files: src/regexp.c, src/regexec_nfa.c + + +*** ../vim-7.4.525/src/regexp.c 2014-11-19 16:38:01.508680012 +0100 +--- src/regexp.c 2014-11-20 22:59:03.865027911 +0100 +*************** +*** 3739,3745 **** + * Uses curbuf for line count and 'iskeyword'. + * if "line_lbr" is TRUE consider a "\n" in "line" to be a line break. + * +! * Return TRUE if there is a match, FALSE if not. + */ + static int + bt_regexec_nl(rmp, line, col, line_lbr) +--- 3739,3745 ---- + * Uses curbuf for line count and 'iskeyword'. + * if "line_lbr" is TRUE consider a "\n" in "line" to be a line break. + * +! * Returns 0 for failure, number of lines contained in the match otherwise. + */ + static int + bt_regexec_nl(rmp, line, col, line_lbr) +*************** +*** 3759,3765 **** + ireg_icombine = FALSE; + #endif + ireg_maxcol = 0; +! return (bt_regexec_both(line, col, NULL) != 0); + } + + static long bt_regexec_multi __ARGS((regmmatch_T *rmp, win_T *win, buf_T *buf, linenr_T lnum, colnr_T col, proftime_T *tm)); +--- 3759,3766 ---- + ireg_icombine = FALSE; + #endif + ireg_maxcol = 0; +! +! return bt_regexec_both(line, col, NULL); + } + + static long bt_regexec_multi __ARGS((regmmatch_T *rmp, win_T *win, buf_T *buf, linenr_T lnum, colnr_T col, proftime_T *tm)); +*************** +*** 3781,3788 **** + colnr_T col; /* column to start looking for match */ + proftime_T *tm; /* timeout limit or NULL */ + { +- long r; +- + reg_match = NULL; + reg_mmatch = rmp; + reg_buf = buf; +--- 3782,3787 ---- +*************** +*** 3796,3809 **** + #endif + ireg_maxcol = rmp->rmm_maxcol; + +! r = bt_regexec_both(NULL, col, tm); +! +! return r; + } + + /* + * Match a regexp against a string ("line" points to the string) or multiple + * lines ("line" is NULL, use reg_getline()). + */ + static long + bt_regexec_both(line, col, tm) +--- 3795,3807 ---- + #endif + ireg_maxcol = rmp->rmm_maxcol; + +! return bt_regexec_both(NULL, col, tm); + } + + /* + * Match a regexp against a string ("line" points to the string) or multiple + * lines ("line" is NULL, use reg_getline()). ++ * Returns 0 for failure, number of lines contained in the match otherwise. + */ + static long + bt_regexec_both(line, col, tm) +*************** +*** 3811,3819 **** + colnr_T col; /* column to start looking for match */ + proftime_T *tm UNUSED; /* timeout limit or NULL */ + { +! bt_regprog_T *prog; +! char_u *s; +! long retval = 0L; + + /* Create "regstack" and "backpos" if they are not allocated yet. + * We allocate *_INITIAL amount of bytes first and then set the grow size +--- 3809,3817 ---- + colnr_T col; /* column to start looking for match */ + proftime_T *tm UNUSED; /* timeout limit or NULL */ + { +! bt_regprog_T *prog; +! char_u *s; +! long retval = 0L; + + /* Create "regstack" and "backpos" if they are not allocated yet. + * We allocate *_INITIAL amount of bytes first and then set the grow size +*************** +*** 8201,8211 **** + + p_re = save_p_re; + } +! return result; + } + + /* + * Note: "*prog" may be freed and changed. + */ + int + vim_regexec_prog(prog, ignore_case, line, col) +--- 8199,8210 ---- + + p_re = save_p_re; + } +! return result > 0; + } + + /* + * Note: "*prog" may be freed and changed. ++ * Return TRUE if there is a match, FALSE if not. + */ + int + vim_regexec_prog(prog, ignore_case, line, col) +*************** +*** 8226,8231 **** +--- 8225,8231 ---- + + /* + * Note: "rmp->regprog" may be freed and changed. ++ * Return TRUE if there is a match, FALSE if not. + */ + int + vim_regexec(rmp, line, col) +*************** +*** 8241,8246 **** +--- 8241,8247 ---- + /* + * Like vim_regexec(), but consider a "\n" in "line" to be a line break. + * Note: "rmp->regprog" may be freed and changed. ++ * Return TRUE if there is a match, FALSE if not. + */ + int + vim_regexec_nl(rmp, line, col) +*************** +*** 8297,8301 **** + p_re = save_p_re; + } + +! return result; + } +--- 8298,8302 ---- + p_re = save_p_re; + } + +! return result <= 0 ? 0 : result; + } +*** ../vim-7.4.525/src/version.c 2014-11-19 20:04:43.656099839 +0100 +--- src/version.c 2014-11-20 22:55:15.899663148 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 526, + /**/ + +-- +Why don't cannibals eat clowns? +Because they taste funny. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.527 b/SOURCES/7.4.527 new file mode 100644 index 0000000..ac2edcf --- /dev/null +++ b/SOURCES/7.4.527 @@ -0,0 +1,120 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.527 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.527 +Problem: Still confusing regexp failure and NFA_TOO_EXPENSIVE. +Solution: NFA changes equivalent of 7.4.526. +Files: src/regexp_nfa.c + + +*** ../vim-7.4.526/src/regexp_nfa.c 2014-11-05 14:26:30.764758363 +0100 +--- src/regexp_nfa.c 2014-11-23 15:50:57.980625347 +0100 +*************** +*** 6767,6773 **** + + /* + * Try match of "prog" with at regline["col"]. +! * Returns 0 for failure, number of lines contained in the match otherwise. + */ + static long + nfa_regtry(prog, col) +--- 6767,6773 ---- + + /* + * Try match of "prog" with at regline["col"]. +! * Returns <= 0 for failure, number of lines contained in the match otherwise. + */ + static long + nfa_regtry(prog, col) +*************** +*** 6897,6903 **** + * Match a regexp against a string ("line" points to the string) or multiple + * lines ("line" is NULL, use reg_getline()). + * +! * Returns 0 for failure, number of lines contained in the match otherwise. + */ + static long + nfa_regexec_both(line, startcol) +--- 6897,6903 ---- + * Match a regexp against a string ("line" points to the string) or multiple + * lines ("line" is NULL, use reg_getline()). + * +! * Returns <= 0 for failure, number of lines contained in the match otherwise. + */ + static long + nfa_regexec_both(line, startcol) +*************** +*** 7137,7143 **** + * Uses curbuf for line count and 'iskeyword'. + * If "line_lbr" is TRUE consider a "\n" in "line" to be a line break. + * +! * Return TRUE if there is a match, FALSE if not. + */ + static int + nfa_regexec_nl(rmp, line, col, line_lbr) +--- 7137,7143 ---- + * Uses curbuf for line count and 'iskeyword'. + * If "line_lbr" is TRUE consider a "\n" in "line" to be a line break. + * +! * Returns <= 0 for failure, number of lines contained in the match otherwise. + */ + static int + nfa_regexec_nl(rmp, line, col, line_lbr) +*************** +*** 7157,7163 **** + ireg_icombine = FALSE; + #endif + ireg_maxcol = 0; +! return (nfa_regexec_both(line, col) != 0); + } + + +--- 7157,7163 ---- + ireg_icombine = FALSE; + #endif + ireg_maxcol = 0; +! return nfa_regexec_both(line, col); + } + + +*************** +*** 7166,7172 **** + * "rmp->regprog" is a compiled regexp as returned by vim_regcomp(). + * Uses curbuf for line count and 'iskeyword'. + * +! * Return zero if there is no match. Return number of lines contained in the + * match otherwise. + * + * Note: the body is the same as bt_regexec() except for nfa_regexec_both() +--- 7166,7172 ---- + * "rmp->regprog" is a compiled regexp as returned by vim_regcomp(). + * Uses curbuf for line count and 'iskeyword'. + * +! * Return <= 0 if there is no match. Return number of lines contained in the + * match otherwise. + * + * Note: the body is the same as bt_regexec() except for nfa_regexec_both() +*** ../vim-7.4.526/src/version.c 2014-11-20 23:07:00.515474686 +0100 +--- src/version.c 2014-11-23 15:53:23.170981186 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 527, + /**/ + +-- +"I know that there are people who don't love their fellow man, +and I hate those people!" - Tom Lehrer + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.528 b/SOURCES/7.4.528 new file mode 100644 index 0000000..decf8fb --- /dev/null +++ b/SOURCES/7.4.528 @@ -0,0 +1,62 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.528 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.528 +Problem: Crash when using matchadd() (Yasuhiro Matsumoto) +Solution: Copy the match regprog. +Files: src/screen.c + + +*** ../vim-7.4.527/src/screen.c 2014-11-19 13:21:24.984724043 +0100 +--- src/screen.c 2014-11-27 13:26:05.754837048 +0100 +*************** +*** 7588,7593 **** +--- 7588,7599 ---- + shl->lnum = lnum; + if (shl->rm.regprog != NULL) + { ++ /* Remember whether shl->rm is using a copy of the regprog in ++ * cur->match. */ ++ int regprog_is_copy = (shl != &search_hl && cur != NULL ++ && shl == &cur->hl ++ && cur->match.regprog == cur->hl.rm.regprog); ++ + nmatched = vim_regexec_multi(&shl->rm, win, shl->buf, lnum, + matchcol, + #ifdef FEAT_RELTIME +*************** +*** 7596,7601 **** +--- 7602,7611 ---- + NULL + #endif + ); ++ /* Copy the regprog, in case it got freed and recompiled. */ ++ if (regprog_is_copy) ++ cur->match.regprog = cur->hl.rm.regprog; ++ + if (called_emsg || got_int) + { + /* Error while handling regexp: stop using this regexp. */ +*** ../vim-7.4.527/src/version.c 2014-11-23 15:57:45.568009419 +0100 +--- src/version.c 2014-11-27 13:28:07.393495013 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 528, + /**/ + +-- +FATAL ERROR! SYSTEM HALTED! - Press any key to continue doing nothing. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.529 b/SOURCES/7.4.529 new file mode 100644 index 0000000..68c35e8 --- /dev/null +++ b/SOURCES/7.4.529 @@ -0,0 +1,224 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.529 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.529 +Problem: No test for what 7.4.517 fixes. +Solution: Adjust the tests for breakindent. (Christian Brabandt) +Files: src/testdir/test_breakindent.in, src/testdir/test_breakindent.ok + + +*** ../vim-7.4.528/src/testdir/test_breakindent.in 2014-08-24 21:39:45.488526954 +0200 +--- src/testdir/test_breakindent.in 2014-11-27 14:04:39.349335102 +0100 +*************** +*** 6,23 **** + :10new|:vsp|:vert resize 20 + :put =\"\tabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOP\" + :set ts=4 sw=4 sts=4 breakindent +! :fu! ScreenChar(width) + : let c='' + : for i in range(1,a:width) +! : let c.=nr2char(screenchar(line('.'), i)) + : endfor + : let c.="\n" + : for i in range(1,a:width) +! : let c.=nr2char(screenchar(line('.')+1, i)) + : endfor + : let c.="\n" + : for i in range(1,a:width) +! : let c.=nr2char(screenchar(line('.')+2, i)) + : endfor + : return c + :endfu +--- 6,23 ---- + :10new|:vsp|:vert resize 20 + :put =\"\tabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOP\" + :set ts=4 sw=4 sts=4 breakindent +! :fu! ScreenChar(line, width) + : let c='' + : for i in range(1,a:width) +! : let c.=nr2char(screenchar(a:line, i)) + : endfor + : let c.="\n" + : for i in range(1,a:width) +! : let c.=nr2char(screenchar(a:line+1, i)) + : endfor + : let c.="\n" + : for i in range(1,a:width) +! : let c.=nr2char(screenchar(a:line+2, i)) + : endfor + : return c + :endfu +*************** +*** 29,71 **** + :endfu + :set briopt=min:0 + :let g:test="Test 1: Simple breakindent" +! :let line1=ScreenChar(8) + :call DoRecordScreen() + :let g:test="Test 2: Simple breakindent + sbr=>>" + :set sbr=>> +! :let line1=ScreenChar(8) + :call DoRecordScreen() + :let g:test ="Test 3: Simple breakindent + briopt:sbr" + :set briopt=sbr,min:0 sbr=++ +! :let line1=ScreenChar(8) + :call DoRecordScreen() + :let g:test ="Test 4: Simple breakindent + min width: 18" + :set sbr= briopt=min:18 +! :let line1=ScreenChar(8) + :call DoRecordScreen() + :let g:test =" Test 5: Simple breakindent + shift by 2" + :set briopt=shift:2,min:0 +! :let line1=ScreenChar(8) + :call DoRecordScreen() + :let g:test=" Test 6: Simple breakindent + shift by -1" + :set briopt=shift:-1,min:0 +! :let line1=ScreenChar(8) + :call DoRecordScreen() + :let g:test=" Test 7: breakindent + shift by +1 + nu + sbr=? briopt:sbr" + :set briopt=shift:1,sbr,min:0 nu sbr=? nuw=4 +! :let line1=ScreenChar(10) + :call DoRecordScreen() + :let g:test=" Test 8: breakindent + shift:1 + nu + sbr=# list briopt:sbr" + :set briopt=shift:1,sbr,min:0 nu sbr=# list +! :let line1=ScreenChar(10) + :call DoRecordScreen() + :let g:test=" Test 9: breakindent + shift by +1 + 'nu' + sbr=# list" + :set briopt-=sbr +! :let line1=ScreenChar(10) + :call DoRecordScreen() + :let g:test=" Test 10: breakindent + shift by +1 + 'nu' + sbr=~ cpo+=n" + :set cpo+=n sbr=~ nu nuw=4 nolist briopt=sbr,min:0 +! :let line1=ScreenChar(10) + :call DoRecordScreen() + :wincmd p + :let g:test="\n Test 11: strdisplaywidth when breakindent is on" +--- 29,71 ---- + :endfu + :set briopt=min:0 + :let g:test="Test 1: Simple breakindent" +! :let line1=ScreenChar(line('.'),8) + :call DoRecordScreen() + :let g:test="Test 2: Simple breakindent + sbr=>>" + :set sbr=>> +! :let line1=ScreenChar(line('.'),8) + :call DoRecordScreen() + :let g:test ="Test 3: Simple breakindent + briopt:sbr" + :set briopt=sbr,min:0 sbr=++ +! :let line1=ScreenChar(line('.'),8) + :call DoRecordScreen() + :let g:test ="Test 4: Simple breakindent + min width: 18" + :set sbr= briopt=min:18 +! :let line1=ScreenChar(line('.'),8) + :call DoRecordScreen() + :let g:test =" Test 5: Simple breakindent + shift by 2" + :set briopt=shift:2,min:0 +! :let line1=ScreenChar(line('.'),8) + :call DoRecordScreen() + :let g:test=" Test 6: Simple breakindent + shift by -1" + :set briopt=shift:-1,min:0 +! :let line1=ScreenChar(line('.'),8) + :call DoRecordScreen() + :let g:test=" Test 7: breakindent + shift by +1 + nu + sbr=? briopt:sbr" + :set briopt=shift:1,sbr,min:0 nu sbr=? nuw=4 +! :let line1=ScreenChar(line('.'),10) + :call DoRecordScreen() + :let g:test=" Test 8: breakindent + shift:1 + nu + sbr=# list briopt:sbr" + :set briopt=shift:1,sbr,min:0 nu sbr=# list +! :let line1=ScreenChar(line('.'),10) + :call DoRecordScreen() + :let g:test=" Test 9: breakindent + shift by +1 + 'nu' + sbr=# list" + :set briopt-=sbr +! :let line1=ScreenChar(line('.'),10) + :call DoRecordScreen() + :let g:test=" Test 10: breakindent + shift by +1 + 'nu' + sbr=~ cpo+=n" + :set cpo+=n sbr=~ nu nuw=4 nolist briopt=sbr,min:0 +! :let line1=ScreenChar(line('.'),10) + :call DoRecordScreen() + :wincmd p + :let g:test="\n Test 11: strdisplaywidth when breakindent is on" +*************** +*** 74,79 **** +--- 74,87 ---- + :let width = strlen(text[1:])+indent(2)*4+strlen(&sbr)*3 " text wraps 3 times + :$put =g:test + :$put =printf(\"strdisplaywidth: %d == calculated: %d\", strdisplaywidth(text), width) ++ :let g:str="\t\t\t\t\t{" ++ :let g:test=" Test 12: breakindent + long indent" ++ :wincmd p ++ :set all& breakindent linebreak briopt=min:10 nu numberwidth=3 ts=4 ++ :$put =g:str ++ zt:let line1=ScreenChar(1,10) ++ :wincmd p ++ :call DoRecordScreen() + :" + :" Test, that the string " a\tb\tc\td\te" is correctly + :" displayed in a 20 column wide window (see bug report +*************** +*** 87,93 **** + :?^\s*z + fygjyl:let line2 = @0 + :quit! +! :$put ='Test 12: breakindent with wrapping Tab' + :$put =line1 + :$put =line2 + :" +--- 95,101 ---- + :?^\s*z + fygjyl:let line2 = @0 + :quit! +! :$put ='Test 13: breakindent with wrapping Tab' + :$put =line1 + :$put =line2 + :" +*** ../vim-7.4.528/src/testdir/test_breakindent.ok 2014-08-24 21:19:22.220571318 +0200 +--- src/testdir/test_breakindent.ok 2014-11-27 14:04:39.349335102 +0100 +*************** +*** 53,58 **** + + Test 11: strdisplaywidth when breakindent is on + strdisplaywidth: 46 == calculated: 64 +! Test 12: breakindent with wrapping Tab + d + w +--- 53,64 ---- + + Test 11: strdisplaywidth when breakindent is on + strdisplaywidth: 46 == calculated: 64 +! { +! +! Test 12: breakindent + long indent +! 56 +! +! ~ +! Test 13: breakindent with wrapping Tab + d + w +*** ../vim-7.4.528/src/version.c 2014-11-27 13:37:07.403539956 +0100 +--- src/version.c 2014-11-27 14:05:44.240619187 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 529, + /**/ + +-- +(letter from Mark to Mike, about the film's probable certificate) + I would like to get back to the Censor and agree to lose the shits, take + the odd Jesus Christ out and lose Oh fuck off, but to retain 'fart in + your general direction', 'castanets of your testicles' and 'oral sex' + and ask him for an 'A' rating on that basis. + "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.531 b/SOURCES/7.4.531 new file mode 100644 index 0000000..6acf9a0 --- /dev/null +++ b/SOURCES/7.4.531 @@ -0,0 +1,165 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.531 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.531 +Problem: Comments about parsing an Ex command are wrong. +Solution: Correct the steop numbers. +Files: src/ex_docmd.c + + +*** ../vim-7.4.530/src/ex_docmd.c 2014-11-27 16:22:42.742413039 +0100 +--- src/ex_docmd.c 2014-11-27 16:37:22.164760647 +0100 +*************** +*** 1721,1728 **** + * + * 1. skip comment lines and leading space + * 2. handle command modifiers +! * 3. parse command + * 4. parse range + * 6. parse arguments + * 7. switch on command name + * +--- 1721,1729 ---- + * + * 1. skip comment lines and leading space + * 2. handle command modifiers +! * 3. find the command + * 4. parse range ++ * 5. Parse the command. + * 6. parse arguments + * 7. switch on command name + * +*************** +*** 2335,2341 **** + ea.forceit = FALSE; + + /* +! * 5. Parse arguments. + */ + if (!IS_USER_CMDIDX(ea.cmdidx)) + ea.argt = (long)cmdnames[(int)ea.cmdidx].cmd_argt; +--- 2336,2342 ---- + ea.forceit = FALSE; + + /* +! * 6. Parse arguments. + */ + if (!IS_USER_CMDIDX(ea.cmdidx)) + ea.argt = (long)cmdnames[(int)ea.cmdidx].cmd_argt; +*************** +*** 2782,2788 **** + #endif + + /* +! * 6. Switch on command name. + * + * The "ea" structure holds the arguments that can be used. + */ +--- 2783,2789 ---- + #endif + + /* +! * 7. Switch on command name. + * + * The "ea" structure holds the arguments that can be used. + */ +*************** +*** 3319,3325 **** + ea.argt = 0; + + /* +! * 2. skip comment lines and leading space, colons or bars + */ + for (cmd = buff; vim_strchr((char_u *)" \t:|", *cmd) != NULL; cmd++) + ; +--- 3320,3326 ---- + ea.argt = 0; + + /* +! * 1. skip comment lines and leading space, colons or bars + */ + for (cmd = buff; vim_strchr((char_u *)" \t:|", *cmd) != NULL; cmd++) + ; +*************** +*** 3334,3346 **** + } + + /* +! * 3. parse a range specifier of the form: addr [,addr] [;addr] .. + */ + cmd = skip_range(cmd, &xp->xp_context); +- +- /* +- * 4. parse command +- */ + xp->xp_pattern = cmd; + if (*cmd == NUL) + return NULL; +--- 3335,3343 ---- + } + + /* +! * 3. Skip over the range to find the command. + */ + cmd = skip_range(cmd, &xp->xp_context); + xp->xp_pattern = cmd; + if (*cmd == NUL) + return NULL; +*************** +*** 3446,3452 **** + } + + /* +! * 5. parse arguments + */ + if (!IS_USER_CMDIDX(ea.cmdidx)) + ea.argt = (long)cmdnames[(int)ea.cmdidx].cmd_argt; +--- 3443,3449 ---- + } + + /* +! * 6. parse arguments + */ + if (!IS_USER_CMDIDX(ea.cmdidx)) + ea.argt = (long)cmdnames[(int)ea.cmdidx].cmd_argt; +*************** +*** 3682,3688 **** + } + + /* +! * 6. switch on command name + */ + switch (ea.cmdidx) + { +--- 3679,3685 ---- + } + + /* +! * 6. Switch on command name. + */ + switch (ea.cmdidx) + { +*** ../vim-7.4.530/src/version.c 2014-11-27 16:22:42.746412995 +0100 +--- src/version.c 2014-11-27 16:30:25.149339297 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 531, + /**/ + +-- +Wi n0t trei a h0liday in Sweden thi yer? + "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.532 b/SOURCES/7.4.532 new file mode 100644 index 0000000..88b12b9 --- /dev/null +++ b/SOURCES/7.4.532 @@ -0,0 +1,141 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.532 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.532 +Problem: When using 'incsearch' "2/pattern/e" highlights the first match. +Solution: Move the code to set extra_col inside the loop for count. (Ozaki + Kiichi) +Files: src/search.c + + +*** ../vim-7.4.531/src/search.c 2014-06-17 13:50:06.148087184 +0200 +--- src/search.c 2014-11-27 17:21:49.579489220 +0100 +*************** +*** 552,557 **** +--- 552,558 ---- + int match_ok; + long nmatched; + int submatch = 0; ++ int first_match = TRUE; + int save_called_emsg = called_emsg; + #ifdef FEAT_SEARCH_EXTRA + int break_loop = FALSE; +*************** +*** 565,597 **** + return FAIL; + } + +- /* When not accepting a match at the start position set "extra_col" to a +- * non-zero value. Don't do that when starting at MAXCOL, since MAXCOL + +- * 1 is zero. */ +- if ((options & SEARCH_START) || pos->col == MAXCOL) +- extra_col = 0; +- #ifdef FEAT_MBYTE +- /* Watch out for the "col" being MAXCOL - 2, used in a closed fold. */ +- else if (dir != BACKWARD && has_mbyte +- && pos->lnum >= 1 && pos->lnum <= buf->b_ml.ml_line_count +- && pos->col < MAXCOL - 2) +- { +- ptr = ml_get_buf(buf, pos->lnum, FALSE) + pos->col; +- if (*ptr == NUL) +- extra_col = 1; +- else +- extra_col = (*mb_ptr2len)(ptr); +- } +- #endif +- else +- extra_col = 1; +- + /* + * find the string + */ + called_emsg = FALSE; + do /* loop for count */ + { + start_pos = *pos; /* remember start pos for detecting no match */ + found = 0; /* default: not found */ + at_first_line = TRUE; /* default: start in first line */ +--- 566,598 ---- + return FAIL; + } + + /* + * find the string + */ + called_emsg = FALSE; + do /* loop for count */ + { ++ /* When not accepting a match at the start position set "extra_col" to ++ * a non-zero value. Don't do that when starting at MAXCOL, since ++ * MAXCOL + 1 is zero. */ ++ if ((options & SEARCH_START) || pos->col == MAXCOL) ++ extra_col = 0; ++ #ifdef FEAT_MBYTE ++ /* Watch out for the "col" being MAXCOL - 2, used in a closed fold. */ ++ else if (dir != BACKWARD && has_mbyte ++ && pos->lnum >= 1 && pos->lnum <= buf->b_ml.ml_line_count ++ && pos->col < MAXCOL - 2) ++ { ++ ptr = ml_get_buf(buf, pos->lnum, FALSE) + pos->col; ++ if (*ptr == NUL) ++ extra_col = 1; ++ else ++ extra_col = (*mb_ptr2len)(ptr); ++ } ++ #endif ++ else ++ extra_col = 1; ++ + start_pos = *pos; /* remember start pos for detecting no match */ + found = 0; /* default: not found */ + at_first_line = TRUE; /* default: start in first line */ +*************** +*** 677,683 **** + * otherwise "/$" will get stuck on end of line. + */ + while (matchpos.lnum == 0 +! && ((options & SEARCH_END) + ? (nmatched == 1 + && (int)endpos.col - 1 + < (int)start_pos.col + extra_col) +--- 678,684 ---- + * otherwise "/$" will get stuck on end of line. + */ + while (matchpos.lnum == 0 +! && ((options & SEARCH_END) && first_match + ? (nmatched == 1 + && (int)endpos.col - 1 + < (int)start_pos.col + extra_col) +*************** +*** 908,913 **** +--- 909,915 ---- + pos->coladd = 0; + #endif + found = 1; ++ first_match = FALSE; + + /* Set variables used for 'incsearch' highlighting. */ + search_match_lines = endpos.lnum - matchpos.lnum; +*** ../vim-7.4.531/src/version.c 2014-11-27 16:38:07.652261234 +0100 +--- src/version.c 2014-11-27 17:29:13.762616760 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 532, + /**/ + +-- +The most powerful force in the universe is gossip. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.533 b/SOURCES/7.4.533 new file mode 100644 index 0000000..3c22395 --- /dev/null +++ b/SOURCES/7.4.533 @@ -0,0 +1,229 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.533 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.533 +Problem: ":hardcopy" leaks memory in case of errors. +Solution: Free memory in all code paths. (Christian Brabandt) +Files: src/hardcopy.c + + +*** ../vim-7.4.532/src/hardcopy.c 2013-05-06 04:00:47.000000000 +0200 +--- src/hardcopy.c 2014-11-27 17:35:48.418285820 +0100 +*************** +*** 2960,2971 **** + if (!prt_find_resource("prolog", res_prolog)) + { + EMSG(_("E456: Can't find PostScript resource file \"prolog.ps\"")); +! return FALSE; + } + if (!prt_open_resource(res_prolog)) +! return FALSE; + if (!prt_check_resource(res_prolog, PRT_PROLOG_VERSION)) +! return FALSE; + #ifdef FEAT_MBYTE + if (prt_out_mbyte) + { +--- 2960,2971 ---- + if (!prt_find_resource("prolog", res_prolog)) + { + EMSG(_("E456: Can't find PostScript resource file \"prolog.ps\"")); +! goto theend; + } + if (!prt_open_resource(res_prolog)) +! goto theend; + if (!prt_check_resource(res_prolog, PRT_PROLOG_VERSION)) +! goto theend; + #ifdef FEAT_MBYTE + if (prt_out_mbyte) + { +*************** +*** 2973,2984 **** + if (!prt_find_resource("cidfont", res_cidfont)) + { + EMSG(_("E456: Can't find PostScript resource file \"cidfont.ps\"")); +! return FALSE; + } + if (!prt_open_resource(res_cidfont)) +! return FALSE; + if (!prt_check_resource(res_cidfont, PRT_CID_PROLOG_VERSION)) +! return FALSE; + } + #endif + +--- 2973,2984 ---- + if (!prt_find_resource("cidfont", res_cidfont)) + { + EMSG(_("E456: Can't find PostScript resource file \"cidfont.ps\"")); +! goto theend; + } + if (!prt_open_resource(res_cidfont)) +! goto theend; + if (!prt_check_resource(res_cidfont, PRT_CID_PROLOG_VERSION)) +! goto theend; + } + #endif + +*************** +*** 3012,3023 **** + { + EMSG2(_("E456: Can't find PostScript resource file \"%s.ps\""), + p_encoding); +! return FALSE; + } + } + } + if (!prt_open_resource(res_encoding)) +! return FALSE; + /* For the moment there are no checks on encoding resource files to + * perform */ + #ifdef FEAT_MBYTE +--- 3012,3023 ---- + { + EMSG2(_("E456: Can't find PostScript resource file \"%s.ps\""), + p_encoding); +! goto theend; + } + } + } + if (!prt_open_resource(res_encoding)) +! goto theend; + /* For the moment there are no checks on encoding resource files to + * perform */ + #ifdef FEAT_MBYTE +*************** +*** 3034,3043 **** + { + EMSG2(_("E456: Can't find PostScript resource file \"%s.ps\""), + prt_ascii_encoding); +! return FALSE; + } + if (!prt_open_resource(res_encoding)) +! return FALSE; + /* For the moment there are no checks on encoding resource files to + * perform */ + } +--- 3034,3043 ---- + { + EMSG2(_("E456: Can't find PostScript resource file \"%s.ps\""), + prt_ascii_encoding); +! goto theend; + } + if (!prt_open_resource(res_encoding)) +! goto theend; + /* For the moment there are no checks on encoding resource files to + * perform */ + } +*************** +*** 3050,3056 **** + { + EMSG2(_("E620: Unable to convert to print encoding \"%s\""), + p_encoding); +! return FALSE; + } + prt_do_conv = TRUE; + } +--- 3050,3056 ---- + { + EMSG2(_("E620: Unable to convert to print encoding \"%s\""), + p_encoding); +! goto theend; + } + prt_do_conv = TRUE; + } +*************** +*** 3063,3072 **** + { + EMSG2(_("E456: Can't find PostScript resource file \"%s.ps\""), + prt_cmap); +! return FALSE; + } + if (!prt_open_resource(res_cmap)) +! return FALSE; + } + #endif + +--- 3063,3072 ---- + { + EMSG2(_("E456: Can't find PostScript resource file \"%s.ps\""), + prt_cmap); +! goto theend; + } + if (!prt_open_resource(res_cmap)) +! goto theend; + } + #endif + +*************** +*** 3140,3154 **** + + /* Add required procsets - NOTE: order is important! */ + if (!prt_add_resource(res_prolog)) +! return FALSE; + #ifdef FEAT_MBYTE + if (prt_out_mbyte) + { + /* Add CID font procset, and any user supplied CMap */ + if (!prt_add_resource(res_cidfont)) +! return FALSE; + if (prt_custom_cmap && !prt_add_resource(res_cmap)) +! return FALSE; + } + #endif + +--- 3140,3154 ---- + + /* Add required procsets - NOTE: order is important! */ + if (!prt_add_resource(res_prolog)) +! goto theend; + #ifdef FEAT_MBYTE + if (prt_out_mbyte) + { + /* Add CID font procset, and any user supplied CMap */ + if (!prt_add_resource(res_cidfont)) +! goto theend; + if (prt_custom_cmap && !prt_add_resource(res_cmap)) +! goto theend; + } + #endif + +*************** +*** 3158,3164 **** + /* There will be only one Roman font encoding to be included in the PS + * file. */ + if (!prt_add_resource(res_encoding)) +! return FALSE; + + prt_dsc_noarg("EndProlog"); + +--- 3158,3164 ---- + /* There will be only one Roman font encoding to be included in the PS + * file. */ + if (!prt_add_resource(res_encoding)) +! goto theend; + + prt_dsc_noarg("EndProlog"); + +*** ../vim-7.4.532/src/version.c 2014-11-27 17:29:52.770188864 +0100 +--- src/version.c 2014-11-27 17:32:56.636171921 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 533, + /**/ + +-- +People who want to share their religious views with you +almost never want you to share yours with them. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.534 b/SOURCES/7.4.534 new file mode 100644 index 0000000..0328251 --- /dev/null +++ b/SOURCES/7.4.534 @@ -0,0 +1,94 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.534 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.534 +Problem: Warnings when compiling if_ruby.c. +Solution: Avoid the warnings. (Ken Takata) +Files: src/if_ruby.c + + +*** ../vim-7.4.533/src/if_ruby.c 2014-11-12 16:05:01.142042845 +0100 +--- src/if_ruby.c 2014-11-27 17:42:25.205922384 +0100 +*************** +*** 96,106 **** + # define rb_num2int rb_num2int_stub + #endif + +! # if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 21 + /* Ruby 2.1 adds new GC called RGenGC and RARRAY_PTR uses + * rb_gc_writebarrier_unprotect_promoted if USE_RGENGC */ +! # define rb_gc_writebarrier_unprotect_promoted rb_gc_writebarrier_unprotect_promoted_stub +! # endif + + #include <ruby.h> + #ifdef RUBY19_OR_LATER +--- 96,106 ---- + # define rb_num2int rb_num2int_stub + #endif + +! #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 21 + /* Ruby 2.1 adds new GC called RGenGC and RARRAY_PTR uses + * rb_gc_writebarrier_unprotect_promoted if USE_RGENGC */ +! # define rb_gc_writebarrier_unprotect_promoted rb_gc_writebarrier_unprotect_promoted_stub +! #endif + + #include <ruby.h> + #ifdef RUBY19_OR_LATER +*************** +*** 422,428 **** + # if defined(USE_RGENGC) && USE_RGENGC && !defined(PROTO) + void rb_gc_writebarrier_unprotect_promoted_stub(VALUE obj) + { +! return dll_rb_gc_writebarrier_unprotect_promoted(obj); + } + # endif + +--- 422,428 ---- + # if defined(USE_RGENGC) && USE_RGENGC && !defined(PROTO) + void rb_gc_writebarrier_unprotect_promoted_stub(VALUE obj) + { +! dll_rb_gc_writebarrier_unprotect_promoted(obj); + } + # endif + +*************** +*** 763,769 **** + /* suggested by Ariya Mizutani */ + int argc = 1; + char *argv[] = {"gvim.exe"}; +! NtInitialize(&argc, &argv); + #endif + { + #if defined(RUBY19_OR_LATER) || defined(RUBY_INIT_STACK) +--- 763,770 ---- + /* suggested by Ariya Mizutani */ + int argc = 1; + char *argv[] = {"gvim.exe"}; +! char **argvp = argv; +! NtInitialize(&argc, &argvp); + #endif + { + #if defined(RUBY19_OR_LATER) || defined(RUBY_INIT_STACK) +*** ../vim-7.4.533/src/version.c 2014-11-27 17:37:53.524909964 +0100 +--- src/version.c 2014-11-27 17:42:13.626049717 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 534, + /**/ + +-- +This message contains 78% recycled characters. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.535 b/SOURCES/7.4.535 new file mode 100644 index 0000000..20c32ed --- /dev/null +++ b/SOURCES/7.4.535 @@ -0,0 +1,469 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.535 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.535 (after 7.4.530) +Problem: Can't build with tiny features. +Solution: Add #ifdefs and skip a test. +Files: src/ex_docmd.c, src/testdir/test_argument_count.in + + +*** ../vim-7.4.534/src/ex_docmd.c 2014-11-27 16:38:07.648261279 +0100 +--- src/ex_docmd.c 2014-11-27 18:12:30.874072643 +0100 +*************** +*** 1713,1718 **** +--- 1713,1765 ---- + return buf->b_fnum; + } + ++ #ifdef FEAT_WINDOWS ++ static int current_win_nr __ARGS((win_T *win)); ++ static int current_tab_nr __ARGS((tabpage_T *tab)); ++ ++ static int ++ current_win_nr(win) ++ win_T *win; ++ { ++ win_T *wp; ++ int nr = 0; ++ ++ for (wp = firstwin; wp != NULL; wp = wp->w_next) ++ { ++ ++nr; ++ if (wp == win) ++ break; ++ } ++ return nr; ++ } ++ ++ static int ++ current_tab_nr(tab) ++ tabpage_T *tab; ++ { ++ tabpage_T *tp; ++ int nr = 0; ++ ++ for (tp = first_tabpage; tp != NULL; tp = tp->tp_next) ++ { ++ ++nr; ++ if (tp == tab) ++ break; ++ } ++ return nr; ++ } ++ ++ # define CURRENT_WIN_NR current_win_nr(curwin) ++ # define LAST_WIN_NR current_win_nr(NULL) ++ # define CURRENT_TAB_NR current_tab_nr(curtab) ++ # define LAST_TAB_NR current_tab_nr(NULL) ++ #else ++ # define CURRENT_WIN_NR 1 ++ # define LAST_WIN_NR 1 ++ # define CURRENT_TAB_NR 1 ++ # define LAST_TAB_NR 1 ++ #endif ++ + + /* + * Execute one Ex command. +*************** +*** 1765,1772 **** + #endif + cmdmod_T save_cmdmod; + int ni; /* set when Not Implemented */ +- win_T *wp; +- tabpage_T *tp; + char_u *cmd; + + vim_memset(&ea, 0, sizeof(ea)); +--- 1812,1817 ---- +*************** +*** 2085,2097 **** + ea.line2 = curwin->w_cursor.lnum; + break; + case ADDR_WINDOWS: +! lnum = 0; +! for (wp = firstwin; wp != NULL; wp = wp->w_next) +! { +! lnum++; +! if (wp == curwin) +! break; +! } + ea.line2 = lnum; + break; + case ADDR_ARGUMENTS: +--- 2130,2136 ---- + ea.line2 = curwin->w_cursor.lnum; + break; + case ADDR_WINDOWS: +! lnum = CURRENT_WIN_NR; + ea.line2 = lnum; + break; + case ADDR_ARGUMENTS: +*************** +*** 2102,2114 **** + ea.line2 = curbuf->b_fnum; + break; + case ADDR_TABS: +! lnum = 0; +! for(tp = first_tabpage; tp != NULL; tp = tp->tp_next) +! { +! lnum++; +! if (tp == curtab) +! break; +! } + ea.line2 = lnum; + break; + } +--- 2141,2147 ---- + ea.line2 = curbuf->b_fnum; + break; + case ADDR_TABS: +! lnum = CURRENT_TAB_NR; + ea.line2 = lnum; + break; + } +*************** +*** 4198,4205 **** + pos_T pos; + pos_T *fp; + linenr_T lnum; +- win_T *wp; +- tabpage_T *tp; + + cmd = skipwhite(*ptr); + lnum = MAXLNUM; +--- 4231,4236 ---- +*************** +*** 4215,4227 **** + lnum = curwin->w_cursor.lnum; + break; + case ADDR_WINDOWS: +! lnum = 0; +! for (wp = firstwin; wp != NULL; wp = wp->w_next) +! { +! lnum++; +! if (wp == curwin) +! break; +! } + break; + case ADDR_ARGUMENTS: + lnum = curwin->w_arg_idx + 1; +--- 4246,4252 ---- + lnum = curwin->w_cursor.lnum; + break; + case ADDR_WINDOWS: +! lnum = CURRENT_WIN_NR; + break; + case ADDR_ARGUMENTS: + lnum = curwin->w_arg_idx + 1; +*************** +*** 4231,4243 **** + lnum = curbuf->b_fnum; + break; + case ADDR_TABS: +! lnum = 0; +! for(tp = first_tabpage; tp != NULL; tp = tp->tp_next) +! { +! lnum++; +! if (tp == curtab) +! break; +! } + break; + } + break; +--- 4256,4262 ---- + lnum = curbuf->b_fnum; + break; + case ADDR_TABS: +! lnum = CURRENT_TAB_NR; + break; + } + break; +*************** +*** 4250,4258 **** + lnum = curbuf->b_ml.ml_line_count; + break; + case ADDR_WINDOWS: +! lnum = 0; +! for (wp = firstwin; wp != NULL; wp = wp->w_next) +! lnum++; + break; + case ADDR_ARGUMENTS: + lnum = ARGCOUNT; +--- 4269,4275 ---- + lnum = curbuf->b_ml.ml_line_count; + break; + case ADDR_WINDOWS: +! lnum = LAST_WIN_NR; + break; + case ADDR_ARGUMENTS: + lnum = ARGCOUNT; +*************** +*** 4262,4270 **** + lnum = lastbuf->b_fnum; + break; + case ADDR_TABS: +! lnum = 0; +! for(tp = first_tabpage; tp != NULL; tp = tp->tp_next) +! lnum++; + break; + } + break; +--- 4279,4285 ---- + lnum = lastbuf->b_fnum; + break; + case ADDR_TABS: +! lnum = LAST_TAB_NR; + break; + } + break; +*************** +*** 4419,4434 **** + switch (addr_type) + { + case ADDR_LINES: +! lnum = curwin->w_cursor.lnum; /* "+1" is same as ".+1" */ + break; + case ADDR_WINDOWS: +! lnum = 0; +! for (wp = firstwin; wp != NULL; wp = wp->w_next) +! { +! lnum++; +! if (wp == curwin) +! break; +! } + break; + case ADDR_ARGUMENTS: + lnum = curwin->w_arg_idx + 1; +--- 4434,4444 ---- + switch (addr_type) + { + case ADDR_LINES: +! /* "+1" is same as ".+1" */ +! lnum = curwin->w_cursor.lnum; + break; + case ADDR_WINDOWS: +! lnum = CURRENT_WIN_NR; + break; + case ADDR_ARGUMENTS: + lnum = curwin->w_arg_idx + 1; +*************** +*** 4438,4450 **** + lnum = curbuf->b_fnum; + break; + case ADDR_TABS: +! lnum = 0; +! for(tp = first_tabpage; tp != NULL; tp = tp->tp_next) +! { +! lnum++; +! if (tp == curtab) +! break; +! } + break; + } + } +--- 4448,4454 ---- + lnum = curbuf->b_fnum; + break; + case ADDR_TABS: +! lnum = CURRENT_TAB_NR; + break; + } + } +*************** +*** 4481,4489 **** + lnum = 0; + break; + } +! c = 0; +! for (tp = first_tabpage; tp != NULL; tp = tp->tp_next) +! c++; + if (lnum >= c) + lnum = c; + break; +--- 4485,4491 ---- + lnum = 0; + break; + } +! c = LAST_TAB_NR; + if (lnum >= c) + lnum = c; + break; +*************** +*** 4493,4501 **** + lnum = 0; + break; + } +! c = 0; +! for (wp = firstwin; wp != NULL; wp = wp->w_next) +! c++; + if (lnum > c) + lnum = c; + break; +--- 4495,4501 ---- + lnum = 0; + break; + } +! c = LAST_WIN_NR; + if (lnum > c) + lnum = c; + break; +*************** +*** 6805,6819 **** + } + + /* +! * ":quit": quit current window, quit Vim if closed the last window. + */ + static void + ex_quit(eap) + exarg_T *eap; + { + win_T *wp; +! buf_T *buf; +! int wnr; + + #ifdef FEAT_CMDWIN + if (cmdwin_type != 0) +--- 6805,6819 ---- + } + + /* +! * ":quit": quit current window, quit Vim if the last window is closed. + */ + static void + ex_quit(eap) + exarg_T *eap; + { ++ #if defined(FEAT_WINDOWS) || defined(FEAT_AUTOCMD) + win_T *wp; +! #endif + + #ifdef FEAT_CMDWIN + if (cmdwin_type != 0) +*************** +*** 6828,6855 **** + text_locked_msg(); + return; + } + if (eap->addr_count > 0) + { +! wnr = eap->line2; +! for (wp = firstwin; --wnr > 0; ) +! { +! if (wp->w_next == NULL) + break; +- else +- wp = wp->w_next; +- } +- buf = wp->w_buffer; + } + else +! { + wp = curwin; +! buf = curbuf; +! } + #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() || (buf->b_nwindows == 1 && buf->b_closing)) + return; + #endif + +--- 6828,6854 ---- + text_locked_msg(); + return; + } ++ #ifdef FEAT_WINDOWS + if (eap->addr_count > 0) + { +! int wnr = eap->line2; +! +! for (wp = firstwin; wp->w_next != NULL; wp = wp->w_next) +! if (--wnr <= 0) + break; + } + else +! #endif +! #if defined(FEAT_WINDOWS) || defined(FEAT_AUTOCMD) + wp = curwin; +! #endif +! + #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() || (wp->w_buffer->b_nwindows == 1 +! && wp->w_buffer->b_closing)) + return; + #endif + +*************** +*** 7214,7222 **** + ex_hide(eap) + exarg_T *eap; + { +- win_T *win; +- int winnr = 0; +- + if (*eap->arg != NUL && check_nextcmd(eap->arg) == NULL) + eap->errmsg = e_invarg; + else +--- 7213,7218 ---- +*************** +*** 7231,7237 **** + # endif + if (eap->addr_count == 0) + win_close(curwin, FALSE); /* don't free buffer */ +! else { + for (win = firstwin; win != NULL; win = win->w_next) + { + winnr++; +--- 7227,7237 ---- + # endif + if (eap->addr_count == 0) + win_close(curwin, FALSE); /* don't free buffer */ +! else +! { +! int winnr = 0; +! win_T *win; +! + for (win = firstwin; win != NULL; win = win->w_next) + { + winnr++; +*** ../vim-7.4.534/src/testdir/test_argument_count.in 2014-11-27 16:22:42.746412995 +0100 +--- src/testdir/test_argument_count.in 2014-11-27 18:21:05.568408375 +0100 +*************** +*** 1,6 **** +--- 1,7 ---- + Tests for :[count]argument! and :[count]argdelete vim: set ft=vim : + + STARTTEST ++ :so small.vim + :%argd + :argadd a b c d + :set hidden +*** ../vim-7.4.534/src/version.c 2014-11-27 17:44:05.380820867 +0100 +--- src/version.c 2014-11-27 18:30:32.826167330 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 535, + /**/ + +-- +Mushrooms always grow in damp places and so they look like umbrellas. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.536 b/SOURCES/7.4.536 new file mode 100644 index 0000000..4d32a95 --- /dev/null +++ b/SOURCES/7.4.536 @@ -0,0 +1,55 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.536 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.536 +Problem: Test 63 fails when using a black&white terminal. +Solution: Add attributes for a non-color terminal. (Christian Brabandt) +Files: src/testdir/test63.in + + +*** ../vim-7.4.535/src/testdir/test63.in 2014-08-16 16:28:31.882272056 +0200 +--- src/testdir/test63.in 2014-11-27 18:38:27.936941297 +0100 +*************** +*** 7,15 **** + :" --- Check that "matcharg()" returns the correct group and pattern if a match + :" --- is defined. + :let @r = "*** Test 1: " +! :highlight MyGroup1 ctermbg=red guibg=red +! :highlight MyGroup2 ctermbg=green guibg=green +! :highlight MyGroup3 ctermbg=blue guibg=blue + :match MyGroup1 /TODO/ + :2match MyGroup2 /FIXME/ + :3match MyGroup3 /XXX/ +--- 7,15 ---- + :" --- Check that "matcharg()" returns the correct group and pattern if a match + :" --- is defined. + :let @r = "*** Test 1: " +! :highlight MyGroup1 term=bold ctermbg=red guibg=red +! :highlight MyGroup2 term=italic ctermbg=green guibg=green +! :highlight MyGroup3 term=underline ctermbg=blue guibg=blue + :match MyGroup1 /TODO/ + :2match MyGroup2 /FIXME/ + :3match MyGroup3 /XXX/ +*** ../vim-7.4.535/src/version.c 2014-11-27 18:32:58.532564506 +0100 +--- src/version.c 2014-11-27 18:37:25.493628091 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 536, + /**/ + +-- +To keep milk from turning sour: Keep it in the cow. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.537 b/SOURCES/7.4.537 new file mode 100644 index 0000000..982a06c --- /dev/null +++ b/SOURCES/7.4.537 @@ -0,0 +1,120 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.537 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.537 +Problem: Value of v:hlsearch reflects an internal variable. +Solution: Make the value reflect whether search highlighting is actually + displayed. (Christian Brabandt) +Files: runtime/doc/eval.txt, src/testdir/test101.in, + src/testdir/test101.ok, src/vim.h + + +*** ../vim-7.4.536/runtime/doc/eval.txt 2014-11-05 18:05:48.652441306 +0100 +--- runtime/doc/eval.txt 2014-11-27 19:05:43.646912096 +0100 +*************** +*** 1457,1466 **** + Read-only in the |sandbox|. |fold-foldtext| + + *v:hlsearch* *hlsearch-variable* +! v:hlsearch Variable that determines whether search highlighting is on. +! Makes sense only if 'hlsearch' is enabled which requires +! |+extra_search|. Setting this variable to zero acts the like +! |:nohlsearch| command, setting it to one acts like > + let &hlsearch = &hlsearch + < + *v:insertmode* *insertmode-variable* +--- 1457,1466 ---- + Read-only in the |sandbox|. |fold-foldtext| + + *v:hlsearch* *hlsearch-variable* +! v:hlsearch Variable that indicates whether search highlighting is on. +! Setting it makes sense only if 'hlsearch' is enabled which +! requires |+extra_search|. Setting this variable to zero acts +! the like |:nohlsearch| command, setting it to one acts like > + let &hlsearch = &hlsearch + < + *v:insertmode* *insertmode-variable* +*** ../vim-7.4.536/src/testdir/test101.in 2013-11-08 04:30:06.000000000 +0100 +--- src/testdir/test101.in 2014-11-27 19:07:09.509965031 +0100 +*************** +*** 25,30 **** +--- 25,33 ---- + :AddR + / + :AddR ++ :set nohls ++ / ++ :AddR + :let r1=r[0][0] + :" I guess it is not guaranteed that screenattr outputs always the same character + :call map(r, 'v:val[1].":".(v:val[0]==r1?"highlighted":"not highlighted")') +*** ../vim-7.4.536/src/testdir/test101.ok 2013-11-08 04:30:06.000000000 +0100 +--- src/testdir/test101.ok 2014-11-27 19:07:09.509965031 +0100 +*************** +*** 8,11 **** +--- 8,12 ---- + 1:highlighted + 0:not highlighted + 1:highlighted ++ 0:not highlighted + Vim(let):E706: +*** ../vim-7.4.536/src/vim.h 2014-08-29 12:58:38.246430208 +0200 +--- src/vim.h 2014-11-27 19:07:09.509965031 +0100 +*************** +*** 1998,2004 **** + + #ifndef FEAT_VIRTUALEDIT + # define getvvcol(w, p, s, c, e) getvcol(w, p, s, c, e) +! # define virtual_active() 0 + # define virtual_op FALSE + #endif + +--- 1998,2004 ---- + + #ifndef FEAT_VIRTUALEDIT + # define getvvcol(w, p, s, c, e) getvcol(w, p, s, c, e) +! # define virtual_active() FALSE + # define virtual_op FALSE + #endif + +*************** +*** 2277,2283 **** + #define AUTOLOAD_CHAR '#' + + #ifdef FEAT_EVAL +! # define SET_NO_HLSEARCH(flag) no_hlsearch = (flag); set_vim_var_nr(VV_HLSEARCH, !no_hlsearch) + #else + # define SET_NO_HLSEARCH(flag) no_hlsearch = (flag) + #endif +--- 2277,2283 ---- + #define AUTOLOAD_CHAR '#' + + #ifdef FEAT_EVAL +! # define SET_NO_HLSEARCH(flag) no_hlsearch = (flag); set_vim_var_nr(VV_HLSEARCH, !no_hlsearch && p_hls) + #else + # define SET_NO_HLSEARCH(flag) no_hlsearch = (flag) + #endif +*** ../vim-7.4.536/src/version.c 2014-11-27 18:57:07.472605147 +0100 +--- src/version.c 2014-11-27 19:07:39.973629032 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 537, + /**/ + +-- +A M00se once bit my sister ... + "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.538 b/SOURCES/7.4.538 new file mode 100644 index 0000000..ddd4619 --- /dev/null +++ b/SOURCES/7.4.538 @@ -0,0 +1,162 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.538 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.538 +Problem: Tests fail with small features plus Python. +Solution: Disallow weird combination of options. Do not set "fdm" when + folding is disabled. +Files: src/option.c, src/ex_cmds.c, src/configure.in, src/auto/configure, + src/feature.h + + +*** ../vim-7.4.537/src/option.c 2014-11-19 19:33:13.369532180 +0100 +--- src/option.c 2014-11-30 12:56:25.150896626 +0100 +*************** +*** 5575,5580 **** +--- 5575,5581 ---- + if (idx < 0) /* not found (should not happen) */ + { + EMSG2(_(e_intern2), "set_string_option_direct()"); ++ EMSG2(_("For option %s"), name); + return; + } + } +*** ../vim-7.4.537/src/ex_cmds.c 2014-11-12 19:28:12.682661756 +0100 +--- src/ex_cmds.c 2014-11-30 12:58:01.761820052 +0100 +*************** +*** 6200,6208 **** +--- 6200,6210 ---- + (void)buf_init_chartab(curbuf, FALSE); + } + ++ #ifdef FEAT_FOLDING + /* Don't use the global foldmethod.*/ + set_string_option_direct((char_u *)"fdm", -1, (char_u *)"manual", + OPT_FREE|OPT_LOCAL, 0); ++ #endif + + curbuf->b_p_ts = 8; /* 'tabstop' is 8 */ + curwin->w_p_list = FALSE; /* no list mode */ +*** ../vim-7.4.537/src/configure.in 2014-10-11 14:47:22.817275547 +0200 +--- src/configure.in 2014-11-30 13:16:17.549623303 +0100 +*************** +*** 1041,1046 **** +--- 1041,1050 ---- + [enable_pythoninterp="no"]) + AC_MSG_RESULT($enable_pythoninterp) + if test "$enable_pythoninterp" = "yes" -o "$enable_pythoninterp" = "dynamic"; then ++ if test "x$features" = "xtiny" -o "x$features" = "xsmall"; then ++ AC_MSG_ERROR([cannot use Python with tiny or small features]) ++ fi ++ + dnl -- find the python executable + AC_PATH_PROGS(vi_cv_path_python, python2 python) + if test "X$vi_cv_path_python" != "X"; then +*************** +*** 1243,1248 **** +--- 1247,1256 ---- + [enable_python3interp="no"]) + AC_MSG_RESULT($enable_python3interp) + if test "$enable_python3interp" = "yes" -o "$enable_python3interp" = "dynamic"; then ++ if test "x$features" = "xtiny" -o "x$features" = "xsmall"; then ++ AC_MSG_ERROR([cannot use Python with tiny or small features]) ++ fi ++ + dnl -- find the python3 executable + AC_PATH_PROGS(vi_cv_path_python3, python3 python) + if test "X$vi_cv_path_python3" != "X"; then +*************** +*** 1720,1725 **** +--- 1728,1737 ---- + [enable_rubyinterp="no"]) + AC_MSG_RESULT($enable_rubyinterp) + if test "$enable_rubyinterp" = "yes" -o "$enable_rubyinterp" = "dynamic"; then ++ if test "x$features" = "xtiny" -o "x$features" = "xsmall"; then ++ AC_MSG_ERROR([cannot use Ruby with tiny or small features]) ++ fi ++ + AC_MSG_CHECKING(--with-ruby-command argument) + AC_SUBST(vi_cv_path_ruby) + AC_ARG_WITH(ruby-command, [ --with-ruby-command=RUBY name of the Ruby command (default: ruby)], +*** ../vim-7.4.537/src/auto/configure 2014-10-11 14:47:22.825275547 +0200 +--- src/auto/configure 2014-11-30 13:16:24.781542840 +0100 +*************** +*** 5728,5733 **** +--- 5728,5737 ---- + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_pythoninterp" >&5 + $as_echo "$enable_pythoninterp" >&6; } + if test "$enable_pythoninterp" = "yes" -o "$enable_pythoninterp" = "dynamic"; then ++ if test "x$features" = "xtiny" -o "x$features" = "xsmall"; then ++ as_fn_error $? "cannot use Python with tiny or small features" "$LINENO" 5 ++ fi ++ + for ac_prog in python2 python + do + # Extract the first word of "$ac_prog", so it can be a program name with args. +*************** +*** 6044,6049 **** +--- 6048,6057 ---- + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_python3interp" >&5 + $as_echo "$enable_python3interp" >&6; } + if test "$enable_python3interp" = "yes" -o "$enable_python3interp" = "dynamic"; then ++ if test "x$features" = "xtiny" -o "x$features" = "xsmall"; then ++ as_fn_error $? "cannot use Python with tiny or small features" "$LINENO" 5 ++ fi ++ + for ac_prog in python3 python + do + # Extract the first word of "$ac_prog", so it can be a program name with args. +*************** +*** 6929,6934 **** +--- 6937,6946 ---- + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_rubyinterp" >&5 + $as_echo "$enable_rubyinterp" >&6; } + if test "$enable_rubyinterp" = "yes" -o "$enable_rubyinterp" = "dynamic"; then ++ if test "x$features" = "xtiny" -o "x$features" = "xsmall"; then ++ as_fn_error $? "cannot use Ruby with tiny or small features" "$LINENO" 5 ++ fi ++ + { $as_echo "$as_me:${as_lineno-$LINENO}: checking --with-ruby-command argument" >&5 + $as_echo_n "checking --with-ruby-command argument... " >&6; } + +*** ../vim-7.4.537/src/feature.h 2014-03-23 15:12:29.943264337 +0100 +--- src/feature.h 2014-11-30 13:22:11.997681089 +0100 +*************** +*** 385,397 **** + #endif + + /* +- * +python and +python3 require FEAT_EVAL. +- */ +- #if !defined(FEAT_EVAL) && (defined(FEAT_PYTHON3) || defined(FEAT_PYTHON)) +- # define FEAT_EVAL +- #endif +- +- /* + * +profile Profiling for functions and scripts. + */ + #if defined(FEAT_HUGE) \ +--- 385,390 ---- +*** ../vim-7.4.537/src/version.c 2014-11-27 19:14:45.080940970 +0100 +--- src/version.c 2014-11-30 13:22:33.565441297 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 538, + /**/ + +-- +Computers make very fast, very accurate, mistakes. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.539 b/SOURCES/7.4.539 new file mode 100644 index 0000000..b6e42ca --- /dev/null +++ b/SOURCES/7.4.539 @@ -0,0 +1,258 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.539 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.539 (after 7.4.530) +Problem: Crash when computing buffer count. Problem with range for user + commands. Line range wrong in Visual area. +Solution: Avoid segfault in compute_buffer_local_count(). Check for + CMD_USER when checking type of range. (Marcin Szamotulski) +Files: runtime/doc/windows.txt, src/ex_docmd.c + + +*** ../vim-7.4.538/runtime/doc/windows.txt 2014-11-27 16:22:42.738413084 +0100 +--- runtime/doc/windows.txt 2014-11-30 14:34:30.241835431 +0100 +*************** +*** 1026,1032 **** + Actually, the buffer isn't completely deleted, it is removed + from the buffer list |unlisted-buffer| and option values, + variables and mappings/abbreviations for the buffer are +! cleared. + + :bdelete[!] {bufname} *E93* *E94* + Like ":bdelete[!] [N]", but buffer given by name. Note that a +--- 1029,1039 ---- + Actually, the buffer isn't completely deleted, it is removed + from the buffer list |unlisted-buffer| and option values, + variables and mappings/abbreviations for the buffer are +! cleared. Examples: > +! :.,$-bdelete " delete buffers from the current one to +! " last but one +! :%bdelete " delete all buffers +! < + + :bdelete[!] {bufname} *E93* *E94* + Like ":bdelete[!] [N]", but buffer given by name. Note that a +*************** +*** 1050,1056 **** + Like |:bdelete|, but really delete the buffer. Everything + related to the buffer is lost. All marks in this buffer + become invalid, option settings are lost, etc. Don't use this +! unless you know what you are doing. + + :[N]bun[load][!] *:bun* *:bunload* *E515* + :bun[load][!] [N] +--- 1057,1067 ---- + Like |:bdelete|, but really delete the buffer. Everything + related to the buffer is lost. All marks in this buffer + become invalid, option settings are lost, etc. Don't use this +! unless you know what you are doing. Examples: > +! :.+,$bwipeout " wipe out all buffers after the current +! " one +! :%bwipeout " wipe out all buffers +! < + + :[N]bun[load][!] *:bun* *:bunload* *E515* + :bun[load][!] [N] +*** ../vim-7.4.538/src/ex_docmd.c 2014-11-27 18:32:58.528564550 +0100 +--- src/ex_docmd.c 2014-11-30 14:40:28.521847466 +0100 +*************** +*** 1694,1699 **** +--- 1694,1700 ---- + int offset; + { + buf_T *buf; ++ buf_T *nextbuf; + int count = offset; + + buf = firstbuf; +*************** +*** 1701,1715 **** + buf = buf->b_next; + while (count != 0) + { +! count += (count < 0) ? 1 : -1; +! if (buf->b_prev == NULL) + break; +! buf = (count < 0) ? buf->b_prev : buf->b_next; + if (addr_type == ADDR_LOADED_BUFFERS) + /* skip over unloaded buffers */ +! while (buf->b_prev != NULL && buf->b_ml.ml_mfp == NULL) +! buf = (count < 0) ? buf->b_prev : buf->b_next; + } + return buf->b_fnum; + } + +--- 1702,1731 ---- + buf = buf->b_next; + while (count != 0) + { +! count += (offset < 0) ? 1 : -1; +! nextbuf = (offset < 0) ? buf->b_prev : buf->b_next; +! if (nextbuf == NULL) + break; +! buf = nextbuf; + if (addr_type == ADDR_LOADED_BUFFERS) + /* skip over unloaded buffers */ +! while (buf->b_ml.ml_mfp == NULL) +! { +! nextbuf = (offset < 0) ? buf->b_prev : buf->b_next; +! if (nextbuf == NULL) +! break; +! buf = nextbuf; +! } + } ++ /* we might have gone too far, last buffer is not loadedd */ ++ if (addr_type == ADDR_LOADED_BUFFERS) ++ while (buf->b_ml.ml_mfp == NULL) ++ { ++ nextbuf = (offset >= 0) ? buf->b_prev : buf->b_next; ++ if (nextbuf == NULL) ++ break; ++ buf = nextbuf; ++ } + return buf->b_fnum; + } + +*************** +*** 2113,2119 **** + * is equal to the lower. + */ + +! if (ea.cmdidx != CMD_SIZE) + ea.addr_type = cmdnames[(int)ea.cmdidx].cmd_addr_type; + else + ea.addr_type = ADDR_LINES; +--- 2129,2135 ---- + * is equal to the lower. + */ + +! if (ea.cmdidx != CMD_USER && ea.cmdidx != CMD_SIZE) + ea.addr_type = cmdnames[(int)ea.cmdidx].cmd_addr_type; + else + ea.addr_type = ADDR_LINES; +*************** +*** 2153,2158 **** +--- 2169,2175 ---- + { + if (*ea.cmd == '%') /* '%' - all lines */ + { ++ buf_T *buf; + ++ea.cmd; + switch (ea.addr_type) + { +*************** +*** 2160,2168 **** + ea.line1 = 1; + ea.line2 = curbuf->b_ml.ml_line_count; + break; +- case ADDR_WINDOWS: + case ADDR_LOADED_BUFFERS: + case ADDR_UNLOADED_BUFFERS: + case ADDR_TABS: + errormsg = (char_u *)_(e_invrange); + goto doend; +--- 2177,2197 ---- + ea.line1 = 1; + ea.line2 = curbuf->b_ml.ml_line_count; + break; + case ADDR_LOADED_BUFFERS: ++ buf = firstbuf; ++ while (buf->b_next != NULL && buf->b_ml.ml_mfp == NULL) ++ buf = buf->b_next; ++ ea.line1 = buf->b_fnum; ++ buf = lastbuf; ++ while (buf->b_prev != NULL && buf->b_ml.ml_mfp == NULL) ++ buf = buf->b_prev; ++ ea.line2 = buf->b_fnum; ++ break; + case ADDR_UNLOADED_BUFFERS: ++ ea.line1 = firstbuf->b_fnum; ++ ea.line2 = lastbuf->b_fnum; ++ break; ++ case ADDR_WINDOWS: + case ADDR_TABS: + errormsg = (char_u *)_(e_invrange); + goto doend; +*************** +*** 4463,4469 **** + n = getdigits(&cmd); + if (addr_type == ADDR_LOADED_BUFFERS + || addr_type == ADDR_UNLOADED_BUFFERS) +! lnum = compute_buffer_local_count(addr_type, lnum, n); + else if (i == '-') + lnum -= n; + else +--- 4492,4498 ---- + n = getdigits(&cmd); + if (addr_type == ADDR_LOADED_BUFFERS + || addr_type == ADDR_UNLOADED_BUFFERS) +! lnum = compute_buffer_local_count(addr_type, lnum, (i == '-') ? -1 * n : n); + else if (i == '-') + lnum -= n; + else +*************** +*** 4485,4493 **** + lnum = 0; + break; + } +! c = LAST_TAB_NR; +! if (lnum >= c) +! lnum = c; + break; + case ADDR_WINDOWS: + if (lnum < 0) +--- 4514,4521 ---- + lnum = 0; + break; + } +! if (lnum >= LAST_TAB_NR) +! lnum = LAST_TAB_NR; + break; + case ADDR_WINDOWS: + if (lnum < 0) +*************** +*** 4495,4503 **** + lnum = 0; + break; + } +! c = LAST_WIN_NR; +! if (lnum > c) +! lnum = c; + break; + case ADDR_LOADED_BUFFERS: + case ADDR_UNLOADED_BUFFERS: +--- 4523,4530 ---- + lnum = 0; + break; + } +! if (lnum >= LAST_WIN_NR) +! lnum = LAST_WIN_NR; + break; + case ADDR_LOADED_BUFFERS: + case ADDR_UNLOADED_BUFFERS: +*** ../vim-7.4.538/src/version.c 2014-11-30 13:34:16.893626683 +0100 +--- src/version.c 2014-11-30 14:33:29.622510487 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 539, + /**/ + +-- +SOLDIER: What? Ridden on a horse? +ARTHUR: Yes! +SOLDIER: You're using coconuts! + "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.540 b/SOURCES/7.4.540 new file mode 100644 index 0000000..685fb7a --- /dev/null +++ b/SOURCES/7.4.540 @@ -0,0 +1,58 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.540 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.540 (after 7.4.539) +Problem: Cannot build with tiny and small features. (Taro Muraoka) +Solution: Add #ifdef around CMD_USER. +Files: src/ex_docmd.c + + +*** ../vim-7.4.539/src/ex_docmd.c 2014-11-30 14:50:12.259356186 +0100 +--- src/ex_docmd.c 2014-11-30 22:32:24.213687119 +0100 +*************** +*** 2129,2135 **** + * is equal to the lower. + */ + +! if (ea.cmdidx != CMD_USER && ea.cmdidx != CMD_SIZE) + ea.addr_type = cmdnames[(int)ea.cmdidx].cmd_addr_type; + else + ea.addr_type = ADDR_LINES; +--- 2129,2139 ---- + * is equal to the lower. + */ + +! if (ea.cmdidx != CMD_SIZE +! #ifdef FEAT_USR_CMDS +! && ea.cmdidx != CMD_USER +! #endif +! ) + ea.addr_type = cmdnames[(int)ea.cmdidx].cmd_addr_type; + else + ea.addr_type = ADDR_LINES; +*** ../vim-7.4.539/src/version.c 2014-11-30 14:50:12.259356186 +0100 +--- src/version.c 2014-11-30 22:34:06.820539874 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 540, + /**/ + +-- +SECOND SOLDIER: It could be carried by an African swallow! +FIRST SOLDIER: Oh yes! An African swallow maybe ... but not a European + swallow. that's my point. + "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.541 b/SOURCES/7.4.541 new file mode 100644 index 0000000..27f407b --- /dev/null +++ b/SOURCES/7.4.541 @@ -0,0 +1,86 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.541 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.541 +Problem: Crash when doing a range assign. +Solution: Check for NULL poiter. (Yukihiro Nakadaira) +Files: src/eval.c, src/testdir/test55.in, src/testdir/test55.ok + + +*** ../vim-7.4.540/src/eval.c 2014-11-19 20:04:43.656099839 +0100 +--- src/eval.c 2014-12-07 00:05:47.404278920 +0100 +*************** +*** 2951,2957 **** + /* + * Check whether any of the list items is locked + */ +! for (ri = rettv->vval.v_list->lv_first; ri != NULL; ) + { + if (tv_check_lock(ll_li->li_tv.v_lock, lp->ll_name)) + return; +--- 2951,2957 ---- + /* + * Check whether any of the list items is locked + */ +! for (ri = rettv->vval.v_list->lv_first; ri != NULL && ll_li != NULL; ) + { + if (tv_check_lock(ll_li->li_tv.v_lock, lp->ll_name)) + return; +*** ../vim-7.4.540/src/testdir/test55.in 2014-08-29 09:46:04.262404970 +0200 +--- src/testdir/test55.in 2014-12-07 00:04:41.892976604 +0100 +*************** +*** 401,406 **** +--- 401,411 ---- + : $put =v:exception[:15] . v:exception[-1:-1] + :endtry + :$put =string(d) ++ :" ++ :" test for range assign ++ :let l = [0] ++ :let l[:] = [1, 2] ++ :$put =string(l) + :endfun + :" + :call Test(1, 2, [3, 4], {5: 6}) " This may take a while +*** ../vim-7.4.540/src/testdir/test55.ok 2014-08-29 09:46:04.266404970 +0200 +--- src/testdir/test55.ok 2014-12-07 00:05:08.208695651 +0100 +*************** +*** 129,134 **** +--- 129,135 ---- + {'a': {'b': 'B'}} + Vim(call):E737: a + {'a': {'b': 'B'}} ++ [1, 2] + Vim(foldopen):E490: + + +*** ../vim-7.4.540/src/version.c 2014-11-30 22:51:00.629191482 +0100 +--- src/version.c 2014-12-07 00:04:11.237300854 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 541, + /**/ + +-- +Any resemblance between the above views and those of my employer, my terminal, +or the view out my window are purely coincidental. Any resemblance between +the above and my own views is non-deterministic. The question of the +existence of views in the absence of anyone to hold them is left as an +exercise for the reader. The question of the existence of the reader is left +as an exercise for the second god coefficient. (A discussion of +non-orthogonal, non-integral polytheism is beyond the scope of this article.) + (Ralph Jennings) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.542 b/SOURCES/7.4.542 new file mode 100644 index 0000000..9532766 --- /dev/null +++ b/SOURCES/7.4.542 @@ -0,0 +1,992 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.5 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.542 +Problem: Using a range for window and buffer commands has a few problems. + Cannot specify the type of range for a user command. +Solution: Add the -addr argument for user commands. Fix problems. (Marcin + Szamotulski) +Files: src/testdir/test_command_count.in, + src/testdir/test_command_count.ok src/testdir/Make_amiga.mak + src/testdir/Make_dos.mak, src/testdir/Make_ming.mak, + src/testdir/Make_os2.mak, src/testdir/Make_vms.mms, + src/testdir/Makefile, runtime/doc/map.txt, src/Makefile, + src/ex_cmds.h, src/ex_docmd.c, src/ex_getln.c, + src/proto/ex_docmd.pro, src/vim.h, + + +*** ../vim-7.4.541/src/testdir/test_command_count.in 2014-12-08 04:12:53.163981827 +0100 +--- src/testdir/test_command_count.in 2014-12-08 03:25:41.562266976 +0100 +*************** +*** 0 **** +--- 1,50 ---- ++ Test for user command counts vim: set ft=vim : ++ ++ STARTTEST ++ :let g:lines = [] ++ :so tiny.vim ++ :com -range RangeLines :call add(g:lines, 'Rangeg:Lines '.<line1>.' '.<line2>) ++ :com -range -addr=arguments RangeArguments :call add(g:lines, 'RangeArguments '.<line1>.' '.<line2>) ++ :com -range=% -addr=arguments RangeArgumentsAll :call add(g:lines, 'RangeArgumentsAll '.<line1>.' '.<line2>) ++ :com -range -addr=loaded_buffers RangeLoadedBuffers :call add(g:lines, 'RangeLoadedBuffers '.<line1>.' '.<line2>) ++ :com -range=% -addr=loaded_buffers RangeLoadedBuffersAll :call add(g:lines, 'RangeLoadedBuffersAll '.<line1>.' '.<line2>) ++ :com -range -addr=buffers RangeBuffers :call add(g:lines, 'RangeBuffers '.<line1>.' '.<line2>) ++ :com -range=% -addr=buffers RangeBuffersAll :call add(g:lines, 'RangeBuffersAll '.<line1>.' '.<line2>) ++ :com -range -addr=windows RangeWindows :call add(g:lines, 'RangeWindows '.<line1>.' '.<line2>) ++ :com -range=% -addr=windows RangeWindowsAll :call add(g:lines, 'RangeWindowsAll '.<line1>.' '.<line2>) ++ :com -range -addr=tabs RangeTabs :call add(g:lines, 'RangeTabs '.<line1>.' '.<line2>) ++ :com -range=% -addr=tabs RangeTabsAll :call add(g:lines, 'RangeTabsAll '.<line1>.' '.<line2>) ++ :set hidden ++ :arga a b c d ++ :argdo echo "loading buffers" ++ :argu 3 ++ :.-,$-RangeArguments ++ :%RangeArguments ++ :RangeArgumentsAll ++ :N ++ :.RangeArguments ++ :split|split|split|split ++ :3wincmd w ++ :.,$RangeWindows ++ :%RangeWindows ++ :RangeWindowsAll ++ :only ++ :blast|bd ++ :.,$RangeLoadedBuffers ++ :%RangeLoadedBuffers ++ :RangeLoadedBuffersAll ++ :.,$RangeBuffers ++ :%RangeBuffers ++ :RangeBuffersAll ++ :tabe|tabe|tabe|tabe ++ :normal 2gt ++ :.,$RangeTabs ++ :%RangeTabs ++ :RangeTabsAll ++ :1tabonly ++ :e! test.out ++ :call append(0, g:lines) ++ :w|qa! ++ ENDTEST ++ ++ +*** ../vim-7.4.541/src/testdir/test_command_count.ok 2014-12-08 04:12:53.163981827 +0100 +--- src/testdir/test_command_count.ok 2014-12-08 03:26:11.769943969 +0100 +*************** +*** 0 **** +--- 1,17 ---- ++ RangeArguments 2 4 ++ RangeArguments 1 5 ++ RangeArgumentsAll 1 5 ++ RangeArguments 2 2 ++ RangeWindows 3 5 ++ RangeWindows 1 5 ++ RangeWindowsAll 1 5 ++ RangeLoadedBuffers 2 4 ++ RangeLoadedBuffers 1 4 ++ RangeLoadedBuffersAll 1 4 ++ RangeBuffers 2 5 ++ RangeBuffers 1 5 ++ RangeBuffersAll 1 5 ++ RangeTabs 2 5 ++ RangeTabs 1 5 ++ RangeTabsAll 1 5 ++ +*** ../vim-7.4.541/src/testdir/Make_amiga.mak 2014-11-27 16:22:42.742413039 +0100 +--- src/testdir/Make_amiga.mak 2014-12-08 03:28:30.984456524 +0100 +*************** +*** 41,46 **** +--- 41,47 ---- + test_breakindent.out \ + test_changelist.out \ + test_close_count.out \ ++ test_command_count.out \ + test_eval.out \ + test_insertcount.out \ + test_listlbr.out \ +*************** +*** 178,183 **** +--- 179,185 ---- + test_breakindent.out: test_breakindent.in + test_changelist.out: test_changelist.in + test_close_count.out: test_close_count.in ++ test_command_count.out: test_command_count.in + test_eval.out: test_eval.in + test_insertcount.out: test_insertcount.in + test_listlbr.out: test_listlbr.in +*** ../vim-7.4.541/src/testdir/Make_dos.mak 2014-11-27 16:22:42.742413039 +0100 +--- src/testdir/Make_dos.mak 2014-12-08 03:28:43.168326713 +0100 +*************** +*** 40,45 **** +--- 40,46 ---- + test_breakindent.out \ + test_changelist.out \ + test_close_count.out \ ++ test_command_count.out \ + test_eval.out \ + test_insertcount.out \ + test_listlbr.out \ +*** ../vim-7.4.541/src/testdir/Make_ming.mak 2014-11-27 16:22:42.742413039 +0100 +--- src/testdir/Make_ming.mak 2014-12-08 03:28:54.020208323 +0100 +*************** +*** 62,67 **** +--- 62,68 ---- + test_breakindent.out \ + test_changelist.out \ + test_close_count.out \ ++ test_command_count.out \ + test_eval.out \ + test_insertcount.out \ + test_listlbr.out \ +*** ../vim-7.4.541/src/testdir/Make_os2.mak 2014-11-27 16:22:42.742413039 +0100 +--- src/testdir/Make_os2.mak 2014-12-08 03:29:03.304108543 +0100 +*************** +*** 42,47 **** +--- 42,48 ---- + test_breakindent.out \ + test_changelist.out \ + test_close_count.out \ ++ test_command_count.out \ + test_eval.out \ + test_insertcount.out \ + test_listlbr.out \ +*** ../vim-7.4.541/src/testdir/Make_vms.mms 2014-11-27 16:22:42.746412995 +0100 +--- src/testdir/Make_vms.mms 2014-12-08 03:29:12.596009487 +0100 +*************** +*** 4,10 **** + # Authors: Zoltan Arpadffy, <arpadffy@polarhome.com> + # Sandor Kopanyi, <sandor.kopanyi@mailbox.hu> + # +! # Last change: 2014 Nov 27 + # + # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64. + # Edit the lines in the Configuration section below to select. +--- 4,10 ---- + # Authors: Zoltan Arpadffy, <arpadffy@polarhome.com> + # Sandor Kopanyi, <sandor.kopanyi@mailbox.hu> + # +! # Last change: 2014 Dec 08 + # + # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64. + # Edit the lines in the Configuration section below to select. +*************** +*** 101,106 **** +--- 101,107 ---- + test_breakindent.out \ + test_changelist.out \ + test_close_count.out \ ++ test_command_count.out \ + test_eval.out \ + test_insertcount.out \ + test_listlbr.out \ +*** ../vim-7.4.541/src/testdir/Makefile 2014-11-27 16:22:42.746412995 +0100 +--- src/testdir/Makefile 2014-12-08 03:29:36.519753429 +0100 +*************** +*** 38,43 **** +--- 38,44 ---- + test_breakindent.out \ + test_changelist.out \ + test_close_count.out \ ++ test_command_count.out \ + test_eval.out \ + test_insertcount.out \ + test_listlbr.out \ +*** ../vim-7.4.541/runtime/doc/map.txt 2014-02-23 23:38:58.820760280 +0100 +--- runtime/doc/map.txt 2014-12-08 03:33:48.569056762 +0100 +*************** +*** 1344,1349 **** +--- 1358,1376 ---- + Note that -range=N and -count=N are mutually exclusive - only one should be + specified. + ++ *E889* *:command-addr* ++ It is possible that the special characters in the range like ., $ or % which ++ by default correspond to the current line, last line and the whole buffer, ++ relate to arguments, (loaded) buffers, windows or tab pages. ++ ++ Possible values are: ++ -addr=lines Range of lines (this is the default) ++ -addr=arguments Range for arguments ++ -addr=buffers Range for buffers (also not loaded buffers) ++ -addr=loaded_buffers Range for loaded buffers ++ -addr=windows Range for windows ++ -addr=tabs Range for tab pages ++ + Special cases *:command-bang* *:command-bar* + *:command-register* *:command-buffer* + There are some special cases as well: +*** ../vim-7.4.541/src/Makefile 2014-11-27 16:22:42.738413084 +0100 +--- src/Makefile 2014-12-08 03:30:06.167435718 +0100 +*************** +*** 1896,1901 **** +--- 1896,1902 ---- + test_breakindent \ + test_changelist \ + test_close_count \ ++ test_command_count \ + test_eval \ + test_insertcount \ + test_listlbr \ +*** ../vim-7.4.541/src/ex_cmds.h 2014-11-27 16:22:42.742413039 +0100 +--- src/ex_cmds.h 2014-12-08 03:30:59.278867940 +0100 +*************** +*** 63,69 **** + #define ADDR_WINDOWS 1 + #define ADDR_ARGUMENTS 2 + #define ADDR_LOADED_BUFFERS 3 +! #define ADDR_UNLOADED_BUFFERS 4 + #define ADDR_TABS 5 + + #ifndef DO_DECLARE_EXCMD +--- 63,69 ---- + #define ADDR_WINDOWS 1 + #define ADDR_ARGUMENTS 2 + #define ADDR_LOADED_BUFFERS 3 +! #define ADDR_BUFFERS 4 + #define ADDR_TABS 5 + + #ifndef DO_DECLARE_EXCMD +*************** +*** 161,167 **** + ADDR_LINES), + EX(CMD_buffer, "buffer", ex_buffer, + BANG|RANGE|NOTADR|BUFNAME|BUFUNL|COUNT|EXTRA|EDITCMD|TRLBAR, +! ADDR_UNLOADED_BUFFERS), + EX(CMD_bNext, "bNext", ex_bprevious, + BANG|RANGE|NOTADR|COUNT|EDITCMD|TRLBAR, + ADDR_LINES), +--- 161,167 ---- + ADDR_LINES), + EX(CMD_buffer, "buffer", ex_buffer, + BANG|RANGE|NOTADR|BUFNAME|BUFUNL|COUNT|EXTRA|EDITCMD|TRLBAR, +! ADDR_BUFFERS), + EX(CMD_bNext, "bNext", ex_bprevious, + BANG|RANGE|NOTADR|COUNT|EDITCMD|TRLBAR, + ADDR_LINES), +*************** +*** 227,233 **** + ADDR_LOADED_BUFFERS), + EX(CMD_bwipeout, "bwipeout", ex_bunload, + BANG|RANGE|NOTADR|BUFNAME|BUFUNL|COUNT|EXTRA|TRLBAR, +! ADDR_UNLOADED_BUFFERS), + EX(CMD_change, "change", ex_change, + BANG|WHOLEFOLD|RANGE|COUNT|TRLBAR|CMDWIN|MODIFY, + ADDR_LINES), +--- 227,233 ---- + ADDR_LOADED_BUFFERS), + EX(CMD_bwipeout, "bwipeout", ex_bunload, + BANG|RANGE|NOTADR|BUFNAME|BUFUNL|COUNT|EXTRA|TRLBAR, +! ADDR_BUFFERS), + EX(CMD_change, "change", ex_change, + BANG|WHOLEFOLD|RANGE|COUNT|TRLBAR|CMDWIN|MODIFY, + ADDR_LINES), +*************** +*** 1184,1190 **** + ADDR_LINES), + EX(CMD_sbuffer, "sbuffer", ex_buffer, + BANG|RANGE|NOTADR|BUFNAME|BUFUNL|COUNT|EXTRA|EDITCMD|TRLBAR, +! ADDR_UNLOADED_BUFFERS), + EX(CMD_sbNext, "sbNext", ex_bprevious, + RANGE|NOTADR|COUNT|EDITCMD|TRLBAR, + ADDR_LINES), +--- 1184,1190 ---- + ADDR_LINES), + EX(CMD_sbuffer, "sbuffer", ex_buffer, + BANG|RANGE|NOTADR|BUFNAME|BUFUNL|COUNT|EXTRA|EDITCMD|TRLBAR, +! ADDR_BUFFERS), + EX(CMD_sbNext, "sbNext", ex_bprevious, + RANGE|NOTADR|COUNT|EDITCMD|TRLBAR, + ADDR_LINES), +*** ../vim-7.4.541/src/ex_docmd.c 2014-11-30 22:51:00.629191482 +0100 +--- src/ex_docmd.c 2014-12-08 04:00:14.540095591 +0100 +*************** +*** 27,32 **** +--- 27,33 ---- + char_u *uc_rep; /* The command's replacement string */ + long uc_def; /* The default value for a range/count */ + int uc_compl; /* completion type */ ++ int uc_addr_type; /* The command's address type */ + # ifdef FEAT_EVAL + scid_T uc_scriptID; /* SID where the command was defined */ + # ifdef FEAT_CMDL_COMPL +*************** +*** 2136,2142 **** +--- 2137,2147 ---- + ) + ea.addr_type = cmdnames[(int)ea.cmdidx].cmd_addr_type; + else ++ #ifdef FEAT_USR_CMDS ++ if (ea.cmdidx != CMD_USER) ++ #endif + ea.addr_type = ADDR_LINES; ++ /* ea.addr_type for user commands is set by find_ucmd */ + ea.cmd = cmd; + + /* repeat for all ',' or ';' separated addresses */ +*************** +*** 2157,2163 **** + ea.line2 = curwin->w_arg_idx + 1; + break; + case ADDR_LOADED_BUFFERS: +! case ADDR_UNLOADED_BUFFERS: + ea.line2 = curbuf->b_fnum; + break; + case ADDR_TABS: +--- 2162,2168 ---- + ea.line2 = curwin->w_arg_idx + 1; + break; + case ADDR_LOADED_BUFFERS: +! case ADDR_BUFFERS: + ea.line2 = curbuf->b_fnum; + break; + case ADDR_TABS: +*************** +*** 2191,2208 **** + buf = buf->b_prev; + ea.line2 = buf->b_fnum; + break; +! case ADDR_UNLOADED_BUFFERS: + ea.line1 = firstbuf->b_fnum; + ea.line2 = lastbuf->b_fnum; + break; + case ADDR_WINDOWS: + case ADDR_TABS: +! errormsg = (char_u *)_(e_invrange); +! goto doend; + break; + case ADDR_ARGUMENTS: +! ea.line1 = 1; +! ea.line2 = ARGCOUNT; + break; + } + ++ea.addr_count; +--- 2196,2229 ---- + buf = buf->b_prev; + ea.line2 = buf->b_fnum; + break; +! case ADDR_BUFFERS: + ea.line1 = firstbuf->b_fnum; + ea.line2 = lastbuf->b_fnum; + break; + case ADDR_WINDOWS: + case ADDR_TABS: +! if (IS_USER_CMDIDX(ea.cmdidx)) +! { +! ea.line1 = 1; +! ea.line2 = ea.addr_type == ADDR_WINDOWS +! ? LAST_WIN_NR : LAST_TAB_NR; +! } +! else +! { +! /* there is no Vim command which uses '%' and +! * ADDR_WINDOWS or ADDR_TABS */ +! errormsg = (char_u *)_(e_invrange); +! goto doend; +! } + break; + case ADDR_ARGUMENTS: +! if (ARGCOUNT == 0) +! ea.line1 = ea.line2 = 0; +! else +! { +! ea.line1 = 1; +! ea.line2 = ARGCOUNT; +! } + break; + } + ++ea.addr_count; +*************** +*** 2629,2636 **** + + if ((ea.argt & DFLALL) && ea.addr_count == 0) + { + ea.line1 = 1; +! ea.line2 = curbuf->b_ml.ml_line_count; + } + + /* accept numbered register only when no count allowed (:put) */ +--- 2650,2690 ---- + + if ((ea.argt & DFLALL) && ea.addr_count == 0) + { ++ buf_T *buf; ++ + ea.line1 = 1; +! switch (ea.addr_type) +! { +! case ADDR_LINES: +! ea.line2 = curbuf->b_ml.ml_line_count; +! break; +! case ADDR_LOADED_BUFFERS: +! buf = firstbuf; +! while (buf->b_next != NULL && buf->b_ml.ml_mfp == NULL) +! buf = buf->b_next; +! ea.line1 = buf->b_fnum; +! buf = lastbuf; +! while (buf->b_prev != NULL && buf->b_ml.ml_mfp == NULL) +! buf = buf->b_prev; +! ea.line2 = buf->b_fnum; +! break; +! case ADDR_BUFFERS: +! ea.line1 = firstbuf->b_fnum; +! ea.line2 = lastbuf->b_fnum; +! break; +! case ADDR_WINDOWS: +! ea.line2 = LAST_WIN_NR; +! break; +! case ADDR_TABS: +! ea.line2 = LAST_TAB_NR; +! break; +! case ADDR_ARGUMENTS: +! if (ARGCOUNT == 0) +! ea.line1 = ea.line2 = 0; +! else +! ea.line2 = ARGCOUNT; +! break; +! } + } + + /* accept numbered register only when no count allowed (:put) */ +*************** +*** 3211,3216 **** +--- 3265,3271 ---- + eap->cmdidx = CMD_USER_BUF; + eap->argt = (long)uc->uc_argt; + eap->useridx = j; ++ eap->addr_type = uc->uc_addr_type; + + # ifdef FEAT_CMDL_COMPL + if (compl != NULL) +*************** +*** 3839,3845 **** + return NULL; + } + +! /* For the -complete and -nargs attributes, we complete + * their arguments as well. + */ + if (STRNICMP(arg, "complete", p - arg) == 0) +--- 3894,3900 ---- + return NULL; + } + +! /* For the -complete, -nargs and -addr attributes, we complete + * their arguments as well. + */ + if (STRNICMP(arg, "complete", p - arg) == 0) +*************** +*** 3854,3859 **** +--- 3909,3920 ---- + xp->xp_pattern = p + 1; + return NULL; + } ++ else if (STRNICMP(arg, "addr", p - arg) == 0) ++ { ++ xp->xp_context = EXPAND_USER_ADDR_TYPE; ++ xp->xp_pattern = p + 1; ++ return NULL; ++ } + return NULL; + } + arg = skipwhite(p); +*************** +*** 4264,4269 **** +--- 4325,4331 ---- + pos_T pos; + pos_T *fp; + linenr_T lnum; ++ buf_T *buf; + + cmd = skipwhite(*ptr); + lnum = MAXLNUM; +*************** +*** 4285,4291 **** + lnum = curwin->w_arg_idx + 1; + break; + case ADDR_LOADED_BUFFERS: +! case ADDR_UNLOADED_BUFFERS: + lnum = curbuf->b_fnum; + break; + case ADDR_TABS: +--- 4347,4353 ---- + lnum = curwin->w_arg_idx + 1; + break; + case ADDR_LOADED_BUFFERS: +! case ADDR_BUFFERS: + lnum = curbuf->b_fnum; + break; + case ADDR_TABS: +*************** +*** 4308,4314 **** + lnum = ARGCOUNT; + break; + case ADDR_LOADED_BUFFERS: +! case ADDR_UNLOADED_BUFFERS: + lnum = lastbuf->b_fnum; + break; + case ADDR_TABS: +--- 4370,4385 ---- + lnum = ARGCOUNT; + break; + case ADDR_LOADED_BUFFERS: +! buf = lastbuf; +! while (buf->b_ml.ml_mfp == NULL) +! { +! if (buf->b_prev == NULL) +! break; +! buf = buf->b_prev; +! } +! lnum = buf->b_fnum; +! break; +! case ADDR_BUFFERS: + lnum = lastbuf->b_fnum; + break; + case ADDR_TABS: +*************** +*** 4477,4483 **** + lnum = curwin->w_arg_idx + 1; + break; + case ADDR_LOADED_BUFFERS: +! case ADDR_UNLOADED_BUFFERS: + lnum = curbuf->b_fnum; + break; + case ADDR_TABS: +--- 4548,4554 ---- + lnum = curwin->w_arg_idx + 1; + break; + case ADDR_LOADED_BUFFERS: +! case ADDR_BUFFERS: + lnum = curbuf->b_fnum; + break; + case ADDR_TABS: +*************** +*** 4495,4501 **** + else + n = getdigits(&cmd); + if (addr_type == ADDR_LOADED_BUFFERS +! || addr_type == ADDR_UNLOADED_BUFFERS) + lnum = compute_buffer_local_count(addr_type, lnum, (i == '-') ? -1 * n : n); + else if (i == '-') + lnum -= n; +--- 4566,4572 ---- + else + n = getdigits(&cmd); + if (addr_type == ADDR_LOADED_BUFFERS +! || addr_type == ADDR_BUFFERS) + lnum = compute_buffer_local_count(addr_type, lnum, (i == '-') ? -1 * n : n); + else if (i == '-') + lnum -= n; +*************** +*** 4531,4537 **** + lnum = LAST_WIN_NR; + break; + case ADDR_LOADED_BUFFERS: +! case ADDR_UNLOADED_BUFFERS: + if (lnum < firstbuf->b_fnum) + { + lnum = firstbuf->b_fnum; +--- 4602,4608 ---- + lnum = LAST_WIN_NR; + break; + case ADDR_LOADED_BUFFERS: +! case ADDR_BUFFERS: + if (lnum < firstbuf->b_fnum) + { + lnum = firstbuf->b_fnum; +*************** +*** 5585,5598 **** + #endif + + #if defined(FEAT_USR_CMDS) || defined(PROTO) +! static int uc_add_command __ARGS((char_u *name, size_t name_len, char_u *rep, long argt, long def, int flags, int compl, char_u *compl_arg, int force)); + static void uc_list __ARGS((char_u *name, size_t name_len)); +! static int uc_scan_attr __ARGS((char_u *attr, size_t len, long *argt, long *def, int *flags, int *compl, char_u **compl_arg)); + static char_u *uc_split_args __ARGS((char_u *arg, size_t *lenp)); + static size_t uc_check_code __ARGS((char_u *code, size_t len, char_u *buf, ucmd_T *cmd, exarg_T *eap, char_u **split_buf, size_t *split_len)); + + static int +! uc_add_command(name, name_len, rep, argt, def, flags, compl, compl_arg, force) + char_u *name; + size_t name_len; + char_u *rep; +--- 5656,5669 ---- + #endif + + #if defined(FEAT_USR_CMDS) || defined(PROTO) +! static int uc_add_command __ARGS((char_u *name, size_t name_len, char_u *rep, long argt, long def, int flags, int compl, char_u *compl_arg, int addr_type, int force)); + static void uc_list __ARGS((char_u *name, size_t name_len)); +! static int uc_scan_attr __ARGS((char_u *attr, size_t len, long *argt, long *def, int *flags, int *compl, char_u **compl_arg, int* attr_type_arg)); + static char_u *uc_split_args __ARGS((char_u *arg, size_t *lenp)); + static size_t uc_check_code __ARGS((char_u *code, size_t len, char_u *buf, ucmd_T *cmd, exarg_T *eap, char_u **split_buf, size_t *split_len)); + + static int +! uc_add_command(name, name_len, rep, argt, def, flags, compl, compl_arg, addr_type, force) + char_u *name; + size_t name_len; + char_u *rep; +*************** +*** 5601,5606 **** +--- 5672,5678 ---- + int flags; + int compl; + char_u *compl_arg; ++ int addr_type; + int force; + { + ucmd_T *cmd = NULL; +*************** +*** 5695,5700 **** +--- 5767,5773 ---- + cmd->uc_compl_arg = compl_arg; + # endif + #endif ++ cmd->uc_addr_type = addr_type; + + return OK; + +*************** +*** 5707,5712 **** +--- 5780,5802 ---- + } + #endif + ++ #if defined(FEAT_USR_CMDS) ++ static struct ++ { ++ int expand; ++ char *name; ++ } addr_type_complete[] = ++ { ++ {ADDR_ARGUMENTS, "arguments"}, ++ {ADDR_LINES, "lines"}, ++ {ADDR_LOADED_BUFFERS, "loaded_buffers"}, ++ {ADDR_TABS, "tabs"}, ++ {ADDR_BUFFERS, "buffers"}, ++ {ADDR_WINDOWS, "windows"}, ++ {-1, NULL} ++ }; ++ #endif ++ + #if defined(FEAT_USR_CMDS) || defined(FEAT_EVAL) || defined(PROTO) + /* + * List of names for completion for ":command" with the EXPAND_ flag. +*************** +*** 5794,5800 **** + + /* Put out the title first time */ + if (!found) +! MSG_PUTS_TITLE(_("\n Name Args Range Complete Definition")); + found = TRUE; + msg_putchar('\n'); + if (got_int) +--- 5884,5890 ---- + + /* Put out the title first time */ + if (!found) +! MSG_PUTS_TITLE(_("\n Name Args Address Complete Definition")); + found = TRUE; + msg_putchar('\n'); + if (got_int) +*************** +*** 5855,5860 **** +--- 5945,5964 ---- + IObuff[len++] = ' '; + } while (len < 11); + ++ /* Address Type */ ++ for (j = 0; addr_type_complete[j].expand != -1; ++j) ++ if (addr_type_complete[j].expand != ADDR_LINES ++ && addr_type_complete[j].expand == cmd->uc_addr_type) ++ { ++ STRCPY(IObuff + len, addr_type_complete[j].name); ++ len += (int)STRLEN(IObuff + len); ++ break; ++ } ++ ++ do { ++ IObuff[len++] = ' '; ++ } while (len < 21); ++ + /* Completion */ + for (j = 0; command_complete[j].expand != 0; ++j) + if (command_complete[j].expand == cmd->uc_compl) +*************** +*** 5866,5872 **** + + do { + IObuff[len++] = ' '; +! } while (len < 21); + + IObuff[len] = '\0'; + msg_outtrans(IObuff); +--- 5970,5976 ---- + + do { + IObuff[len++] = ' '; +! } while (len < 35); + + IObuff[len] = '\0'; + msg_outtrans(IObuff); +*************** +*** 5906,5912 **** + } + + static int +! uc_scan_attr(attr, len, argt, def, flags, compl, compl_arg) + char_u *attr; + size_t len; + long *argt; +--- 6010,6016 ---- + } + + static int +! uc_scan_attr(attr, len, argt, def, flags, compl, compl_arg, addr_type_arg) + char_u *attr; + size_t len; + long *argt; +*************** +*** 5914,5919 **** +--- 6018,6024 ---- + int *flags; + int *compl; + char_u **compl_arg; ++ int *addr_type_arg; + { + char_u *p; + +*************** +*** 6032,6037 **** +--- 6137,6156 ---- + == FAIL) + return FAIL; + } ++ else if (STRNICMP(attr, "addr", attrlen) == 0) ++ { ++ *argt |= RANGE; ++ if (val == NULL) ++ { ++ EMSG(_("E179: argument required for -addr")); ++ return FAIL; ++ } ++ if (parse_addr_type_arg(val, (int)vallen, argt, addr_type_arg) ++ == FAIL) ++ return FAIL; ++ if (addr_type_arg != ADDR_LINES) ++ *argt |= (ZEROR | NOTADR) ; ++ } + else + { + char_u ch = attr[len]; +*************** +*** 6060,6065 **** +--- 6179,6185 ---- + int flags = 0; + int compl = EXPAND_NOTHING; + char_u *compl_arg = NULL; ++ int addr_type_arg = ADDR_LINES; + int has_attr = (eap->arg[0] == '-'); + int name_len; + +*************** +*** 6070,6076 **** + { + ++p; + end = skiptowhite(p); +! if (uc_scan_attr(p, end - p, &argt, &def, &flags, &compl, &compl_arg) + == FAIL) + return; + p = skipwhite(end); +--- 6190,6196 ---- + { + ++p; + end = skiptowhite(p); +! if (uc_scan_attr(p, end - p, &argt, &def, &flags, &compl, &compl_arg, &addr_type_arg) + == FAIL) + return; + p = skipwhite(end); +*************** +*** 6111,6117 **** + } + else + uc_add_command(name, end - name, p, argt, def, flags, compl, compl_arg, +! eap->forceit); + } + + /* +--- 6231,6237 ---- + } + else + uc_add_command(name, end - name, p, argt, def, flags, compl, compl_arg, +! addr_type_arg, eap->forceit); + } + + /* +*************** +*** 6652,6657 **** +--- 6772,6788 ---- + } + + /* ++ * Function given to ExpandGeneric() to obtain the list of user address type names. ++ */ ++ char_u * ++ get_user_cmd_addr_type(xp, idx) ++ expand_T *xp UNUSED; ++ int idx; ++ { ++ return (char_u *)addr_type_complete[idx].name; ++ } ++ ++ /* + * Function given to ExpandGeneric() to obtain the list of user command + * attributes. + */ +*************** +*** 6661,6668 **** + int idx; + { + static char *user_cmd_flags[] = +! {"bang", "bar", "buffer", "complete", "count", +! "nargs", "range", "register"}; + + if (idx >= (int)(sizeof(user_cmd_flags) / sizeof(user_cmd_flags[0]))) + return NULL; +--- 6792,6799 ---- + int idx; + { + static char *user_cmd_flags[] = +! {"addr", "bang", "bar", "buffer", "complete", +! "count", "nargs", "range", "register"}; + + if (idx >= (int)(sizeof(user_cmd_flags) / sizeof(user_cmd_flags[0]))) + return NULL; +*************** +*** 6696,6701 **** +--- 6827,6869 ---- + } + # endif /* FEAT_CMDL_COMPL */ + ++ /* ++ * Parse address type argument ++ */ ++ int ++ parse_addr_type_arg(value, vallen, argt, addr_type_arg) ++ char_u *value; ++ int vallen; ++ long *argt; ++ int *addr_type_arg; ++ { ++ int i, a, b; ++ for (i = 0; addr_type_complete[i].expand != -1; ++i) ++ { ++ a = (int)STRLEN(addr_type_complete[i].name) == vallen; ++ b = STRNCMP(value, addr_type_complete[i].name, vallen) == 0; ++ if (a && b) ++ { ++ *addr_type_arg = addr_type_complete[i].expand; ++ break; ++ } ++ } ++ ++ if (addr_type_complete[i].expand == -1) ++ { ++ char_u *err = value; ++ for (i=0; err[i] == NUL || !vim_iswhite(err[i]); i++); ++ err[i] = NUL; ++ EMSG2(_("E180: Invalid address type value: %s"), err); ++ return FAIL; ++ } ++ ++ if (*addr_type_arg != ADDR_LINES) ++ *argt |= NOTADR; ++ ++ return OK; ++ } ++ + #endif /* FEAT_USR_CMDS */ + + #if defined(FEAT_USR_CMDS) || defined(FEAT_EVAL) || defined(PROTO) +*** ../vim-7.4.541/src/ex_getln.c 2014-09-09 18:45:45.884551705 +0200 +--- src/ex_getln.c 2014-12-08 03:30:59.286867854 +0100 +*************** +*** 4697,4702 **** +--- 4697,4703 ---- + #endif + #ifdef FEAT_USR_CMDS + {EXPAND_USER_COMMANDS, get_user_commands, FALSE, TRUE}, ++ {EXPAND_USER_ADDR_TYPE, get_user_cmd_addr_type, FALSE, TRUE}, + {EXPAND_USER_CMD_FLAGS, get_user_cmd_flags, FALSE, TRUE}, + {EXPAND_USER_NARGS, get_user_cmd_nargs, FALSE, TRUE}, + {EXPAND_USER_COMPLETE, get_user_cmd_complete, FALSE, TRUE}, +*** ../vim-7.4.541/src/proto/ex_docmd.pro 2014-04-01 17:49:40.140891378 +0200 +--- src/proto/ex_docmd.pro 2014-12-08 03:55:53.314888997 +0100 +*************** +*** 19,27 **** +--- 19,29 ---- + void ex_comclear __ARGS((exarg_T *eap)); + void uc_clear __ARGS((garray_T *gap)); + char_u *get_user_commands __ARGS((expand_T *xp, int idx)); ++ char_u *get_user_cmd_addr_type __ARGS((expand_T *xp, int idx)); + char_u *get_user_cmd_flags __ARGS((expand_T *xp, int idx)); + char_u *get_user_cmd_nargs __ARGS((expand_T *xp, int idx)); + char_u *get_user_cmd_complete __ARGS((expand_T *xp, int idx)); ++ int parse_addr_type_arg __ARGS((char_u *value, int vallen, long *argt, int *addr_type_arg)); + int parse_compl_arg __ARGS((char_u *value, int vallen, int *complp, long *argt, char_u **compl_arg)); + void not_exiting __ARGS((void)); + void tabpage_close __ARGS((int forceit)); +*************** +*** 43,48 **** +--- 45,51 ---- + void post_chdir __ARGS((int local)); + void ex_cd __ARGS((exarg_T *eap)); + void do_sleep __ARGS((long msec)); ++ void ex_may_print __ARGS((exarg_T *eap)); + int vim_mkdir_emsg __ARGS((char_u *name, int prot)); + FILE *open_exfile __ARGS((char_u *fname, int forceit, char *mode)); + void update_topline_cursor __ARGS((void)); +*************** +*** 54,58 **** + int put_line __ARGS((FILE *fd, char *s)); + void dialog_msg __ARGS((char_u *buff, char *format, char_u *fname)); + char_u *get_behave_arg __ARGS((expand_T *xp, int idx)); +- void ex_may_print __ARGS((exarg_T *eap)); + /* vim: set ft=c : */ +--- 57,60 ---- +*** ../vim-7.4.541/src/vim.h 2014-11-27 19:14:45.080940970 +0100 +--- src/vim.h 2014-12-08 03:30:59.290867811 +0100 +*************** +*** 798,803 **** +--- 798,804 ---- + #define EXPAND_HISTORY 41 + #define EXPAND_USER 42 + #define EXPAND_SYNTIME 43 ++ #define EXPAND_USER_ADDR_TYPE 44 + + /* Values for exmode_active (0 is no exmode) */ + #define EXMODE_NORMAL 1 +*** ../vim-7.4.541/src/version.c 2014-12-07 00:18:27.528202992 +0100 +--- src/version.c 2014-12-08 03:32:08.402128425 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 542, + /**/ + +-- +CRONE: Who sent you? +ARTHUR: The Knights Who Say GNU! +CRONE: Aaaagh! (she looks around in rear) No! We have no licenses here. + "Monty Python and the Holy editor wars" PYTHON (MONTY) SOFTWARE LTD + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.543 b/SOURCES/7.4.543 new file mode 100644 index 0000000..d0f03f9 --- /dev/null +++ b/SOURCES/7.4.543 @@ -0,0 +1,132 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.543 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.543 +Problem: Since patch 7.4.232 "1,3s/\n//" joins two lines instead of three. + (Eliseo Martínez) Issue 287 +Solution: Correct the line count. (Christian Brabandt) + Also set the last used search pattern. +Files: src/ex_cmds.c, src/search.c, src/proto/search.pro + + +*** ../vim-7.4.542/src/ex_cmds.c 2014-11-30 13:34:16.889626728 +0100 +--- src/ex_cmds.c 2014-12-13 03:11:09.032894963 +0100 +*************** +*** 4408,4413 **** +--- 4408,4415 ---- + && (*cmd == NUL || (cmd[1] == NUL && (*cmd == 'g' || *cmd == 'l' + || *cmd == 'p' || *cmd == '#')))) + { ++ linenr_T joined_lines_count; ++ + curwin->w_cursor.lnum = eap->line1; + if (*cmd == 'l') + eap->flags = EXFLAG_LIST; +*************** +*** 4416,4425 **** + else if (*cmd == 'p') + eap->flags = EXFLAG_PRINT; + +! (void)do_join(eap->line2 - eap->line1 + 1, FALSE, TRUE, FALSE, TRUE); +! sub_nlines = sub_nsubs = eap->line2 - eap->line1 + 1; +! (void)do_sub_msg(FALSE); +! ex_may_print(eap); + return; + } + +--- 4418,4444 ---- + else if (*cmd == 'p') + eap->flags = EXFLAG_PRINT; + +! /* The number of lines joined is the number of lines in the range plus +! * one. One less when the last line is included. */ +! joined_lines_count = eap->line2 - eap->line1 + 1; +! if (eap->line2 < curbuf->b_ml.ml_line_count) +! ++joined_lines_count; +! if (joined_lines_count > 1) +! { +! (void)do_join(joined_lines_count, FALSE, TRUE, FALSE, TRUE); +! sub_nsubs = joined_lines_count - 1; +! sub_nlines = 1; +! (void)do_sub_msg(FALSE); +! ex_may_print(eap); +! } +! +! if (!cmdmod.keeppatterns) +! save_re_pat(RE_SUBST, pat, p_magic); +! #ifdef FEAT_CMDHIST +! /* put pattern in history */ +! add_to_history(HIST_SEARCH, pat, TRUE, NUL); +! #endif +! + return; + } + +*** ../vim-7.4.542/src/search.c 2014-11-27 17:29:52.770188864 +0100 +--- src/search.c 2014-12-13 03:12:18.032159491 +0100 +*************** +*** 12,18 **** + + #include "vim.h" + +- static void save_re_pat __ARGS((int idx, char_u *pat, int magic)); + #ifdef FEAT_EVAL + static void set_vv_searchforward __ARGS((void)); + static int first_submatch __ARGS((regmmatch_T *rp)); +--- 12,17 ---- +*************** +*** 272,278 **** + } + #endif + +! static void + save_re_pat(idx, pat, magic) + int idx; + char_u *pat; +--- 271,277 ---- + } + #endif + +! void + save_re_pat(idx, pat, magic) + int idx; + char_u *pat; +*** ../vim-7.4.542/src/proto/search.pro 2013-08-10 13:37:25.000000000 +0200 +--- src/proto/search.pro 2014-12-13 03:12:21.440123253 +0100 +*************** +*** 2,7 **** +--- 2,8 ---- + int search_regcomp __ARGS((char_u *pat, int pat_save, int pat_use, int options, regmmatch_T *regmatch)); + char_u *get_search_pat __ARGS((void)); + char_u *reverse_text __ARGS((char_u *s)); ++ void save_re_pat __ARGS((int idx, char_u *pat, int magic)); + void save_search_patterns __ARGS((void)); + void restore_search_patterns __ARGS((void)); + void free_search_patterns __ARGS((void)); +*** ../vim-7.4.542/src/version.c 2014-12-08 04:16:26.273702793 +0100 +--- src/version.c 2014-12-13 02:54:27.295570327 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 543, + /**/ + +-- +For large projects, Team Leaders use sophisticated project management software +to keep track of who's doing what. The software collects the lies and guesses +of the project team and organizes them in to instantly outdated charts that +are too boring to look at closely. This is called "planning". + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.544 b/SOURCES/7.4.544 new file mode 100644 index 0000000..137480a --- /dev/null +++ b/SOURCES/7.4.544 @@ -0,0 +1,57 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.544 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.544 +Problem: Warnings for unused arguments when compiling with a combination of + features. +Solution: Add "UNUSED". +Files: src/if_cscope.c + + +*** ../vim-7.4.543/src/if_cscope.c 2013-06-30 14:59:21.000000000 +0200 +--- src/if_cscope.c 2014-11-30 13:19:06.699741651 +0100 +*************** +*** 1131,1138 **** + char *pat; + int forceit; + int verbose; +! int use_ll; +! char_u *cmdline; + { + int i; + char *cmd; +--- 1131,1138 ---- + char *pat; + int forceit; + int verbose; +! int use_ll UNUSED; +! char_u *cmdline UNUSED; + { + int i; + char *cmd; +*** ../vim-7.4.543/src/version.c 2014-12-13 03:17:07.465046539 +0100 +--- src/version.c 2014-12-13 03:19:54.743238147 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 544, + /**/ + +-- +At some point in the project somebody will start whining about the need to +determine the project "requirements". This involves interviewing people who +don't know what they want but, curiously, know exactly when they need it. + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.545 b/SOURCES/7.4.545 new file mode 100644 index 0000000..1fd6027 --- /dev/null +++ b/SOURCES/7.4.545 @@ -0,0 +1,64 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.545 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.545 +Problem: Highlighting for multi-line matches is not correct. +Solution: Stop highlight at the end of the match. (Hirohito Higashi) +Files: src/screen.c + + +*** ../vim-7.4.544/src/screen.c 2014-11-27 13:37:07.399540002 +0100 +--- src/screen.c 2014-12-13 03:30:31.520358269 +0100 +*************** +*** 3864,3872 **** + && v >= (long)shl->startcol + && v < (long)shl->endcol) + { + shl->attr_cur = shl->attr; + } +! else if (v >= (long)shl->endcol && shl->lnum == lnum) + { + shl->attr_cur = 0; + next_search_hl(wp, shl, lnum, (colnr_T)v, cur); +--- 3864,3878 ---- + && v >= (long)shl->startcol + && v < (long)shl->endcol) + { ++ #ifdef FEAT_MBYTE ++ int tmp_col = v + MB_PTR2LEN(ptr); ++ ++ if (shl->endcol < tmp_col) ++ shl->endcol = tmp_col; ++ #endif + shl->attr_cur = shl->attr; + } +! else if (v == (long)shl->endcol) + { + shl->attr_cur = 0; + next_search_hl(wp, shl, lnum, (colnr_T)v, cur); +*** ../vim-7.4.544/src/version.c 2014-12-13 03:20:10.543067406 +0100 +--- src/version.c 2014-12-13 03:36:19.704599650 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 545, + /**/ + +-- +You can test a person's importance in the organization by asking how much RAM +his computer has. Anybody who knows the answer to that question is not a +decision-maker. + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.546 b/SOURCES/7.4.546 new file mode 100644 index 0000000..94b51ae --- /dev/null +++ b/SOURCES/7.4.546 @@ -0,0 +1,149 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.546 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.546 +Problem: Repeated use of vim_snprintf() with a number. +Solution: Move these vim_snprintf() calls into a function. +Files: src/window.c + + +*** ../vim-7.4.545/src/window.c 2014-11-27 16:22:42.746412995 +0100 +--- src/window.c 2014-12-13 03:54:57.760646343 +0100 +*************** +*** 11,16 **** +--- 11,17 ---- + + static int path_is_url __ARGS((char_u *p)); + #if defined(FEAT_WINDOWS) || defined(PROTO) ++ static void cmd_with_count __ARGS((char *cmd, char_u *bufp, size_t bufsize, long Prenum)); + static void win_init __ARGS((win_T *newp, win_T *oldp, int flags)); + static void win_init_some __ARGS((win_T *newp, win_T *oldp)); + static void frame_comp_pos __ARGS((frame_T *topfrp, int *row, int *col)); +*************** +*** 167,176 **** + case '^': + CHECK_CMDWIN + reset_VIsual_and_resel(); /* stop Visual mode */ +! STRCPY(cbuf, "split #"); +! if (Prenum) +! vim_snprintf((char *)cbuf + 7, sizeof(cbuf) - 7, +! "%ld", Prenum); + do_cmdline_cmd(cbuf); + break; + +--- 168,174 ---- + case '^': + CHECK_CMDWIN + reset_VIsual_and_resel(); /* stop Visual mode */ +! cmd_with_count("split #", cbuf, sizeof(cbuf), Prenum); + do_cmdline_cmd(cbuf); + break; + +*************** +*** 199,208 **** + case Ctrl_Q: + case 'q': + reset_VIsual_and_resel(); /* stop Visual mode */ +! STRCPY(cbuf, "quit"); +! if (Prenum) +! vim_snprintf((char *)cbuf + 4, sizeof(cbuf) - 5, +! "%ld", Prenum); + do_cmdline_cmd(cbuf); + break; + +--- 197,203 ---- + case Ctrl_Q: + case 'q': + reset_VIsual_and_resel(); /* stop Visual mode */ +! cmd_with_count("quit", cbuf, sizeof(cbuf), Prenum); + do_cmdline_cmd(cbuf); + break; + +*************** +*** 210,219 **** + case Ctrl_C: + case 'c': + reset_VIsual_and_resel(); /* stop Visual mode */ +! STRCPY(cbuf, "close"); +! if (Prenum) +! vim_snprintf((char *)cbuf + 5, sizeof(cbuf) - 5, +! "%ld", Prenum); + do_cmdline_cmd(cbuf); + break; + +--- 205,211 ---- + case Ctrl_C: + case 'c': + reset_VIsual_and_resel(); /* stop Visual mode */ +! cmd_with_count("close", cbuf, sizeof(cbuf), Prenum); + do_cmdline_cmd(cbuf); + break; + +*************** +*** 243,252 **** + case 'o': + CHECK_CMDWIN + reset_VIsual_and_resel(); /* stop Visual mode */ +! STRCPY(cbuf, "only"); +! if (Prenum > 0) +! vim_snprintf((char *)cbuf + 4, sizeof(cbuf) - 4, +! "%ld", Prenum); + do_cmdline_cmd(cbuf); + break; + +--- 235,241 ---- + case 'o': + CHECK_CMDWIN + reset_VIsual_and_resel(); /* stop Visual mode */ +! cmd_with_count("only", cbuf, sizeof(cbuf), Prenum); + do_cmdline_cmd(cbuf); + break; + +*************** +*** 635,640 **** +--- 624,643 ---- + } + } + ++ static void ++ cmd_with_count(cmd, bufp, bufsize, Prenum) ++ char *cmd; ++ char_u *bufp; ++ size_t bufsize; ++ long Prenum; ++ { ++ size_t len = STRLEN(cmd); ++ ++ STRCPY(bufp, cmd); ++ if (Prenum > 0) ++ vim_snprintf((char *)bufp + len, bufsize - len, "%ld", Prenum); ++ } ++ + /* + * split the current window, implements CTRL-W s and :split + * +*** ../vim-7.4.545/src/version.c 2014-12-13 03:36:34.992435104 +0100 +--- src/version.c 2014-12-13 03:43:58.447663037 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 546, + /**/ + +-- +The only way the average employee can speak to an executive is by taking a +second job as a golf caddie. + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.547 b/SOURCES/7.4.547 new file mode 100644 index 0000000..e550140 --- /dev/null +++ b/SOURCES/7.4.547 @@ -0,0 +1,55 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.547 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.547 +Problem: Using "vit" does not select a multi-byte character at the end + correctly. +Solution: Advance the cursor over the multi-byte character. (Christian + Brabandt) +Files: src/search.c + + +*** ../vim-7.4.546/src/search.c 2014-12-13 03:17:07.465046539 +0100 +--- src/search.c 2014-12-13 20:08:39.464238348 +0100 +*************** +*** 3932,3938 **** + if (lt(end_pos, start_pos)) + curwin->w_cursor = start_pos; + else if (*p_sel == 'e') +! ++curwin->w_cursor.col; + VIsual = start_pos; + VIsual_mode = 'v'; + redraw_curbuf_later(INVERTED); /* update the inversion */ +--- 3932,3938 ---- + if (lt(end_pos, start_pos)) + curwin->w_cursor = start_pos; + else if (*p_sel == 'e') +! inc_cursor(); + VIsual = start_pos; + VIsual_mode = 'v'; + redraw_curbuf_later(INVERTED); /* update the inversion */ +*** ../vim-7.4.546/src/version.c 2014-12-13 03:58:03.798672391 +0100 +--- src/version.c 2014-12-13 20:08:44.652181415 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 547, + /**/ + +-- +Engineers will go without food and hygiene for days to solve a problem. +(Other times just because they forgot.) + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.548 b/SOURCES/7.4.548 new file mode 100644 index 0000000..71df1f5 --- /dev/null +++ b/SOURCES/7.4.548 @@ -0,0 +1,53 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.548 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.548 +Problem: Compilation fails with native version of MinGW-w64, because the + it doesn't have x86_64-w64-mingw32-windres.exe. +Solution: Use windres instead. (Ken Takata) +Files: src/Make_cyg_ming.mak + + +*** ../vim-7.4.547/src/Make_cyg_ming.mak 2014-11-06 10:02:57.019057492 +0100 +--- src/Make_cyg_ming.mak 2014-12-13 20:47:00.291904877 +0100 +*************** +*** 366,372 **** +--- 366,376 ---- + endif + CC := $(CROSS_COMPILE)gcc + CXX := $(CROSS_COMPILE)g++ ++ ifeq ($(UNDER_CYGWIN),yes) + WINDRES := $(CROSS_COMPILE)windres ++ else ++ WINDRES := windres ++ endif + WINDRES_CC = $(CC) + + #>>>>> end of choices +*** ../vim-7.4.547/src/version.c 2014-12-13 20:11:29.582422289 +0100 +--- src/version.c 2014-12-13 20:49:27.018361058 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 548, + /**/ + +-- +Article in the first Free Software Magazine: "Bram Moolenaar studied electrical +engineering at the Technical University of Delft and graduated in 1985 on a +multi-processor Unix architecture." +Response by "dimator": Could the school not afford a proper stage for the +ceremony? + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.549 b/SOURCES/7.4.549 new file mode 100644 index 0000000..a6af54c --- /dev/null +++ b/SOURCES/7.4.549 @@ -0,0 +1,221 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.549 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.549 +Problem: Function name not recognized correctly when inside a function. +Solution: Don't check for an alpha character. +Files: src/eval.c, src/testdir/test_nested_function.in, + src/testdir/test_nested_function.ok, src/testdir/Make_amiga.mak, + src/testdir/Make_dos.mak, src/testdir/Make_ming.mak, + src/testdir/Make_os2.mak, src/testdir/Make_vms.mms, + src/testdir/Makefile + + +*** ../vim-7.4.548/src/eval.c 2014-12-07 00:18:27.524203161 +0100 +--- src/eval.c 2014-12-13 20:27:16.728347709 +0100 +*************** +*** 22283,22296 **** + if (*p == '!') + p = skipwhite(p + 1); + p += eval_fname_script(p); +! if (ASCII_ISALPHA(*p)) + { +! vim_free(trans_function_name(&p, TRUE, 0, NULL)); +! if (*skipwhite(p) == '(') +! { +! ++nesting; +! indent += 2; +! } + } + } + +--- 22283,22293 ---- + if (*p == '!') + p = skipwhite(p + 1); + p += eval_fname_script(p); +! vim_free(trans_function_name(&p, TRUE, 0, NULL)); +! if (*skipwhite(p) == '(') + { +! ++nesting; +! indent += 2; + } + } + +*** ../vim-7.4.548/src/testdir/test_nested_function.in 2014-12-13 21:00:22.243356614 +0100 +--- src/testdir/test_nested_function.in 2014-12-13 20:21:18.080145982 +0100 +*************** +*** 0 **** +--- 1,34 ---- ++ Tests for Nested function vim: set ft=vim : ++ ++ STARTTEST ++ :so small.vim ++ :fu! NestedFunc() ++ : fu! Func1() ++ : $put ='Func1' ++ : endfunction ++ : call Func1() ++ : fu! s:func2() ++ : $put ='s:func2' ++ : endfunction ++ : call s:func2() ++ : fu! s:_func3() ++ : $put ='s:_func3' ++ : endfunction ++ : call s:_func3() ++ : let fn = 'Func4' ++ : fu! {fn}() ++ : $put ='Func4' ++ : endfunction ++ : call {fn}() ++ : let fn = 'func5' ++ : fu! s:{fn}() ++ : $put ='s:func5' ++ : endfunction ++ : call s:{fn}() ++ :endfunction ++ :call NestedFunc() ++ :/^result:/,$w! test.out ++ :qa! ++ ENDTEST ++ ++ result: +*** ../vim-7.4.548/src/testdir/test_nested_function.ok 2014-12-13 21:00:22.251356529 +0100 +--- src/testdir/test_nested_function.ok 2014-12-13 20:21:44.215867748 +0100 +*************** +*** 0 **** +--- 1,6 ---- ++ result: ++ Func1 ++ s:func2 ++ s:_func3 ++ Func4 ++ s:func5 +*** ../vim-7.4.548/src/testdir/Make_amiga.mak 2014-12-08 04:16:26.253702999 +0100 +--- src/testdir/Make_amiga.mak 2014-12-13 20:23:59.554425738 +0100 +*************** +*** 47,52 **** +--- 47,53 ---- + test_listlbr.out \ + test_listlbr_utf8.out \ + test_mapping.out \ ++ test_nested_function.out \ + test_options.out \ + test_qf_title.out \ + test_signs.out \ +*************** +*** 184,189 **** +--- 185,192 ---- + test_insertcount.out: test_insertcount.in + test_listlbr.out: test_listlbr.in + test_listlbr_utf8.out: test_listlbr_utf8.in ++ test_mapping.out: test_mapping.in ++ test_nested_function.out: test_nested_function.in + test_options.out: test_options.in + test_qf_title.out: test_qf_title.in + test_signs.out: test_signs.in +*** ../vim-7.4.548/src/testdir/Make_dos.mak 2014-12-08 04:16:26.253702999 +0100 +--- src/testdir/Make_dos.mak 2014-12-13 20:24:11.946293504 +0100 +*************** +*** 46,51 **** +--- 46,52 ---- + test_listlbr.out \ + test_listlbr_utf8.out \ + test_mapping.out \ ++ test_nested_function.out \ + test_options.out \ + test_qf_title.out \ + test_signs.out \ +*** ../vim-7.4.548/src/testdir/Make_ming.mak 2014-12-08 04:16:26.253702999 +0100 +--- src/testdir/Make_ming.mak 2014-12-13 20:24:17.058237473 +0100 +*************** +*** 68,73 **** +--- 68,74 ---- + test_listlbr.out \ + test_listlbr_utf8.out \ + test_mapping.out \ ++ test_nested_function.out \ + test_options.out \ + test_qf_title.out \ + test_signs.out \ +*** ../vim-7.4.548/src/testdir/Make_os2.mak 2014-12-08 04:16:26.253702999 +0100 +--- src/testdir/Make_os2.mak 2014-12-13 20:24:21.598190646 +0100 +*************** +*** 48,53 **** +--- 48,54 ---- + test_listlbr.out \ + test_listlbr_utf8.out \ + test_mapping.out \ ++ test_nested_function.out \ + test_options.out \ + test_qf_title.out \ + test_signs.out \ +*** ../vim-7.4.548/src/testdir/Make_vms.mms 2014-12-08 04:16:26.253702999 +0100 +--- src/testdir/Make_vms.mms 2014-12-13 20:24:29.302110051 +0100 +*************** +*** 4,10 **** + # Authors: Zoltan Arpadffy, <arpadffy@polarhome.com> + # Sandor Kopanyi, <sandor.kopanyi@mailbox.hu> + # +! # Last change: 2014 Dec 08 + # + # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64. + # Edit the lines in the Configuration section below to select. +--- 4,10 ---- + # Authors: Zoltan Arpadffy, <arpadffy@polarhome.com> + # Sandor Kopanyi, <sandor.kopanyi@mailbox.hu> + # +! # Last change: 2014 Dec 13 + # + # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64. + # Edit the lines in the Configuration section below to select. +*************** +*** 107,112 **** +--- 107,113 ---- + test_listlbr.out \ + test_listlbr_utf8.out \ + test_mapping.out \ ++ test_nested_function.out \ + test_options.out \ + test_qf_title.out \ + test_signs.out \ +*** ../vim-7.4.548/src/testdir/Makefile 2014-12-08 04:16:26.253702999 +0100 +--- src/testdir/Makefile 2014-12-13 20:24:42.609966838 +0100 +*************** +*** 44,49 **** +--- 44,50 ---- + test_listlbr.out \ + test_listlbr_utf8.out \ + test_mapping.out \ ++ test_nested_function.out \ + test_options.out \ + test_qf_title.out \ + test_signs.out \ +*** ../vim-7.4.548/src/version.c 2014-12-13 20:50:01.793994592 +0100 +--- src/version.c 2014-12-13 20:56:11.850046569 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 549, + /**/ + +-- +Engineers are always delighted to share wisdom, even in areas in which they +have no experience whatsoever. Their logic provides them with inherent +insight into any field of expertise. This can be a problem when dealing with +the illogical people who believe that knowledge can only be derived through +experience. + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.550 b/SOURCES/7.4.550 new file mode 100644 index 0000000..9886741 --- /dev/null +++ b/SOURCES/7.4.550 @@ -0,0 +1,147 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.550 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.550 +Problem: curs_rows() function is always called with the second argument + false. +Solution: Remove the argument. (Christian Brabandt) + validate_botline_win() can then also be removed. +Files: src/move.c + + +*** ../vim-7.4.549/src/move.c 2014-09-23 18:37:52.422823701 +0200 +--- src/move.c 2014-12-13 20:54:33.687102446 +0100 +*************** +*** 23,30 **** + static void redraw_for_cursorline __ARGS((win_T *wp)); + static int scrolljump_value __ARGS((void)); + static int check_top_offset __ARGS((void)); +! static void curs_rows __ARGS((win_T *wp, int do_botline)); +! static void validate_botline_win __ARGS((win_T *wp)); + static void validate_cheight __ARGS((void)); + + typedef struct +--- 23,29 ---- + static void redraw_for_cursorline __ARGS((win_T *wp)); + static int scrolljump_value __ARGS((void)); + static int check_top_offset __ARGS((void)); +! static void curs_rows __ARGS((win_T *wp)); + static void validate_cheight __ARGS((void)); + + typedef struct +*************** +*** 609,625 **** + } + + /* +- * Make sure the value of wp->w_botline is valid. +- */ +- static void +- validate_botline_win(wp) +- win_T *wp; +- { +- if (!(wp->w_valid & VALID_BOTLINE)) +- comp_botline(wp); +- } +- +- /* + * Mark curwin->w_botline as invalid (because of some change in the buffer). + */ + void +--- 608,613 ---- +*************** +*** 678,697 **** + update_topline(); + check_cursor_moved(curwin); + if (!(curwin->w_valid & VALID_CROW)) +! curs_rows(curwin, FALSE); + } + #endif + + /* + * Compute wp->w_cline_row and wp->w_cline_height, based on the current value + * of wp->w_topline. +- * +- * Returns OK when cursor is in the window, FAIL when it isn't. + */ + static void +! curs_rows(wp, do_botline) + win_T *wp; +- int do_botline; /* also compute w_botline */ + { + linenr_T lnum; + int i; +--- 666,682 ---- + update_topline(); + check_cursor_moved(curwin); + if (!(curwin->w_valid & VALID_CROW)) +! curs_rows(curwin); + } + #endif + + /* + * Compute wp->w_cline_row and wp->w_cline_height, based on the current value + * of wp->w_topline. + */ + static void +! curs_rows(wp) + win_T *wp; + { + linenr_T lnum; + int i; +*************** +*** 810,818 **** + redraw_for_cursorline(curwin); + wp->w_valid |= VALID_CROW|VALID_CHEIGHT; + +- /* validate botline too, if update_screen doesn't do it */ +- if (do_botline && all_invalid) +- validate_botline_win(wp); + } + + /* +--- 795,800 ---- +*************** +*** 986,992 **** + * Next make sure that w_cline_row is valid. + */ + if (!(curwin->w_valid & VALID_CROW)) +! curs_rows(curwin, FALSE); + + /* + * Compute the number of virtual columns. +--- 968,974 ---- + * Next make sure that w_cline_row is valid. + */ + if (!(curwin->w_valid & VALID_CROW)) +! curs_rows(curwin); + + /* + * Compute the number of virtual columns. +*** ../vim-7.4.549/src/version.c 2014-12-13 21:00:52.059036480 +0100 +--- src/version.c 2014-12-13 21:04:26.080739460 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 550, + /**/ + +-- +For humans, honesty is a matter of degree. Engineers are always honest in +matters of technology and human relationships. That's why it's a good idea +to keep engineers away from customers, romantic interests, and other people +who can't handle the truth. + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.551 b/SOURCES/7.4.551 new file mode 100644 index 0000000..cd67a7e --- /dev/null +++ b/SOURCES/7.4.551 @@ -0,0 +1,205 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.551 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.551 +Problem: "ygn" may yank too much. (Fritzophrenic) Issue 295. +Solution: Check the width of the next match. (Christian Brabandt) +Files: src/search.c, src/testdir/test53.in, src/testdir/test53.ok + + +*** ../vim-7.4.550/src/search.c 2014-12-13 20:11:29.582422289 +0100 +--- src/search.c 2014-12-13 21:55:26.608363239 +0100 +*************** +*** 4441,4452 **** + + #endif /* FEAT_TEXTOBJ */ + +! static int is_one_char __ARGS((char_u *pattern)); + + /* + * Find next search match under cursor, cursor at end. + * Used while an operator is pending, and in Visual mode. +- * TODO: redo only works when used in operator pending mode + */ + int + current_search(count, forward) +--- 4441,4451 ---- + + #endif /* FEAT_TEXTOBJ */ + +! static int is_one_char __ARGS((char_u *pattern, int move)); + + /* + * Find next search match under cursor, cursor at end. + * Used while an operator is pending, and in Visual mode. + */ + int + current_search(count, forward) +*************** +*** 4491,4497 **** + orig_pos = pos = start_pos = curwin->w_cursor; + + /* Is the pattern is zero-width? */ +! one_char = is_one_char(spats[last_idx].pat); + if (one_char == -1) + { + p_ws = old_p_ws; +--- 4490,4496 ---- + orig_pos = pos = start_pos = curwin->w_cursor; + + /* Is the pattern is zero-width? */ +! one_char = is_one_char(spats[last_idx].pat, TRUE); + if (one_char == -1) + { + p_ws = old_p_ws; +*************** +*** 4550,4555 **** +--- 4549,4558 ---- + start_pos = pos; + flags = forward ? SEARCH_END : 0; + ++ /* 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); ++ + /* move to match, except for zero-width matches, in which case, we are + * already on the next match */ + if (!one_char) +*************** +*** 4599,4624 **** + + /* + * Check if the pattern is one character or zero-width. + * Returns TRUE, FALSE or -1 for failure. + */ + static int +! is_one_char(pattern) + char_u *pattern; + { + regmmatch_T regmatch; + int nmatched = 0; + int result = -1; + pos_T pos; + int save_called_emsg = called_emsg; + + if (search_regcomp(pattern, RE_SEARCH, RE_SEARCH, + SEARCH_KEEP, ®match) == FAIL) + return -1; + + /* move to match */ +! clearpos(&pos); + if (searchit(curwin, curbuf, &pos, FORWARD, spats[last_idx].pat, 1, +! SEARCH_KEEP, RE_SEARCH, 0, NULL) != FAIL) + { + /* Zero-width pattern should match somewhere, then we can check if + * start and end are in the same position. */ +--- 4602,4639 ---- + + /* + * Check if the pattern is one character or zero-width. ++ * If move is TRUE, check from the beginning of the buffer, else from the ++ * current cursor position. + * Returns TRUE, FALSE or -1 for failure. + */ + static int +! is_one_char(pattern, move) + char_u *pattern; ++ int move; + { + regmmatch_T regmatch; + int nmatched = 0; + int result = -1; + pos_T pos; + int save_called_emsg = called_emsg; ++ int flag = 0; + + if (search_regcomp(pattern, RE_SEARCH, RE_SEARCH, + SEARCH_KEEP, ®match) == FAIL) + return -1; + + /* move to match */ +! if (move) +! clearpos(&pos) +! else +! { +! pos = curwin->w_cursor; +! /* accept a match at the cursor position */ +! flag = SEARCH_START; +! } +! + if (searchit(curwin, curbuf, &pos, FORWARD, spats[last_idx].pat, 1, +! SEARCH_KEEP + flag, RE_SEARCH, 0, NULL) != FAIL) + { + /* Zero-width pattern should match somewhere, then we can check if + * start and end are in the same position. */ +*** ../vim-7.4.550/src/testdir/test53.in 2014-02-22 22:18:39.536905522 +0100 +--- src/testdir/test53.in 2014-12-13 21:52:43.314091440 +0100 +*************** +*** 79,84 **** +--- 79,86 ---- + :" test repeating gUgn + /^Depp + gggUgn. ++ gg/a:0\@!\zs\d\+ ++ nygnop + :/^start:/,/^end:/wq! test.out + ENDTEST + +*************** +*** 108,113 **** +--- 110,120 ---- + uniquepattern uniquepattern + my very excellent mother just served us nachos + for (i=0; i<=10; i++) ++ a:10 ++ ++ a:1 ++ ++ a:20 + Y + text + Y +*** ../vim-7.4.550/src/testdir/test53.ok 2014-02-22 22:18:39.536905522 +0100 +--- src/testdir/test53.ok 2014-12-13 21:52:43.314091440 +0100 +*************** +*** 49,54 **** +--- 49,60 ---- + uniquepattern + my very excellent mongoose just served us nachos + for (j=0; i<=10; i++) ++ a:10 ++ ++ a:1 ++ 1 ++ ++ a:20 + + text + Y +*** ../vim-7.4.550/src/version.c 2014-12-13 21:09:53.721226911 +0100 +--- src/version.c 2014-12-13 21:52:20.346334198 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 551, + /**/ + +-- +While it's true that many normal people whould prefer not to _date_ an +engineer, most normal people harbor an intense desire to _mate_ with them, +thus producing engineerlike children who will have high-paying jobs long +before losing their virginity. + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.552 b/SOURCES/7.4.552 new file mode 100644 index 0000000..118c226 --- /dev/null +++ b/SOURCES/7.4.552 @@ -0,0 +1,83 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.552 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.552 +Problem: Langmap applies to Insert mode expression mappings. +Solution: Check for Insert mode. (Daniel Hahler) +Files: src/getchar.c, src/testdir/test_mapping.in, + src/testdir/test_mapping.ok + + +*** ../vim-7.4.551/src/getchar.c 2014-10-21 19:35:28.406284296 +0200 +--- src/getchar.c 2014-12-14 00:35:48.712903309 +0100 +*************** +*** 2145,2151 **** + nolmaplen = 2; + else + { +! LANGMAP_ADJUST(c1, TRUE); + nolmaplen = 0; + } + #endif +--- 2145,2151 ---- + nolmaplen = 2; + else + { +! LANGMAP_ADJUST(c1, (State & INSERT) == 0); + nolmaplen = 0; + } + #endif +*** ../vim-7.4.551/src/testdir/test_mapping.in 2014-10-22 22:08:58.386493141 +0200 +--- src/testdir/test_mapping.in 2014-12-14 00:35:12.713288209 +0100 +*************** +*** 8,13 **** +--- 8,22 ---- + :inoreab чкпр vim + GAчкпр + ++ ++ : " langmap should not get remapped in insert mode ++ :inoremap { FAIL_ilangmap ++ :set langmap=+{ langnoremap ++ o+ ++ : " expr mapping with langmap ++ :inoremap <expr> { "FAIL_iexplangmap" ++ o+ ++ + :/^test/,$w! test.out + :qa! + ENDTEST +*** ../vim-7.4.551/src/testdir/test_mapping.ok 2014-10-21 16:22:01.407175226 +0200 +--- src/testdir/test_mapping.ok 2014-12-14 00:29:32.216931811 +0100 +*************** +*** 1,2 **** +--- 1,4 ---- + test starts here: + vim ++ + ++ + +*** ../vim-7.4.551/src/version.c 2014-12-13 22:00:18.161279370 +0100 +--- src/version.c 2014-12-14 00:27:36.310171797 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 552, + /**/ + +-- +Engineers are widely recognized as superior marriage material: intelligent, +dependable, employed, honest, and handy around the house. + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.553 b/SOURCES/7.4.553 new file mode 100644 index 0000000..a2bfc3e --- /dev/null +++ b/SOURCES/7.4.553 @@ -0,0 +1,315 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.553 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.553 +Problem: Various small issues. +Solution: Fix those issues. +Files: src/ex_cmds.h, src/gui.h, src/message.c, src/testdir/test39.in, + src/proto/eval.pro, src/proto/misc1.pro, src/proto/ops.pro, + src/proto/screen.pro, src/proto/window.pro. src/os_unix.c, + src/Make_vms.mms, src/proto/os_vms.pro, src/INSTALL + + +*** ../vim-7.4.552/src/ex_cmds.h 2014-12-08 04:16:26.257702950 +0100 +--- src/ex_cmds.h 2014-12-17 12:41:18.536370067 +0100 +*************** +*** 63,69 **** + #define ADDR_WINDOWS 1 + #define ADDR_ARGUMENTS 2 + #define ADDR_LOADED_BUFFERS 3 +! #define ADDR_BUFFERS 4 + #define ADDR_TABS 5 + + #ifndef DO_DECLARE_EXCMD +--- 63,69 ---- + #define ADDR_WINDOWS 1 + #define ADDR_ARGUMENTS 2 + #define ADDR_LOADED_BUFFERS 3 +! #define ADDR_BUFFERS 4 + #define ADDR_TABS 5 + + #ifndef DO_DECLARE_EXCMD +*** ../vim-7.4.552/src/gui.h 2013-06-17 22:22:49.000000000 +0200 +--- src/gui.h 2014-11-20 22:14:04.635717128 +0100 +*************** +*** 41,47 **** + # include <Events.h> + # include <Menus.h> + # if !(defined (TARGET_API_MAC_CARBON) && (TARGET_API_MAC_CARBON)) +! # include <Windows.h> + # endif + # include <Controls.h> + /*# include <TextEdit.h>*/ +--- 41,47 ---- + # include <Events.h> + # include <Menus.h> + # if !(defined (TARGET_API_MAC_CARBON) && (TARGET_API_MAC_CARBON)) +! # include <Windows.h> + # endif + # include <Controls.h> + /*# include <TextEdit.h>*/ +*** ../vim-7.4.552/src/message.c 2014-02-23 22:52:33.368764715 +0100 +--- src/message.c 2014-10-31 13:43:15.075230535 +0100 +*************** +*** 4030,4040 **** + * pointer for resulting string argument if "str_m" is zero (as per ISO C99). + * + * The return value is the number of characters which would be generated +! * for the given input, excluding the trailing null. If this value + * is greater or equal to "str_m", not all characters from the result + * have been stored in str, output bytes beyond the ("str_m"-1) -th character + * are discarded. If "str_m" is greater than zero it is guaranteed +! * the resulting string will be null-terminated. + */ + + /* +--- 4030,4040 ---- + * pointer for resulting string argument if "str_m" is zero (as per ISO C99). + * + * The return value is the number of characters which would be generated +! * for the given input, excluding the trailing NUL. If this value + * is greater or equal to "str_m", not all characters from the result + * have been stored in str, output bytes beyond the ("str_m"-1) -th character + * are discarded. If "str_m" is greater than zero it is guaranteed +! * the resulting string will be NUL-terminated. + */ + + /* +*** ../vim-7.4.552/src/testdir/test39.in 2014-08-16 18:13:00.082044726 +0200 +--- src/testdir/test39.in 2014-08-16 18:22:56.418023098 +0200 +*************** +*** 85,90 **** +--- 85,94 ---- + cccc + dddd + ++ yaaa ++ ¿¿¿ ++ bbb ++ + A23 + 4567 + +*** ../vim-7.4.552/src/proto/eval.pro 2014-05-07 17:31:32.473182497 +0200 +--- src/proto/eval.pro 2014-11-12 15:34:08.671587958 +0100 +*************** +*** 59,66 **** + int list_append_dict __ARGS((list_T *list, dict_T *dict)); + int list_append_string __ARGS((list_T *l, char_u *str, int len)); + int list_insert_tv __ARGS((list_T *l, typval_T *tv, listitem_T *item)); +- void vimlist_remove __ARGS((list_T *l, listitem_T *item, listitem_T *item2)); + void list_insert __ARGS((list_T *l, listitem_T *ni, listitem_T *item)); + int garbage_collect __ARGS((void)); + void set_ref_in_ht __ARGS((hashtab_T *ht, int copyID)); + void set_ref_in_list __ARGS((list_T *l, int copyID)); +--- 59,66 ---- + int list_append_dict __ARGS((list_T *list, dict_T *dict)); + int list_append_string __ARGS((list_T *l, char_u *str, int len)); + int list_insert_tv __ARGS((list_T *l, typval_T *tv, listitem_T *item)); + void list_insert __ARGS((list_T *l, listitem_T *ni, listitem_T *item)); ++ void vimlist_remove __ARGS((list_T *l, listitem_T *item, listitem_T *item2)); + int garbage_collect __ARGS((void)); + void set_ref_in_ht __ARGS((hashtab_T *ht, int copyID)); + void set_ref_in_list __ARGS((list_T *l, int copyID)); +*** ../vim-7.4.552/src/proto/misc1.pro 2014-06-25 14:39:35.110348584 +0200 +--- src/proto/misc1.pro 2014-11-12 15:34:16.043501712 +0100 +*************** +*** 5,11 **** + int get_indent_str __ARGS((char_u *ptr, int ts, int list)); + int set_indent __ARGS((int size, int flags)); + int get_number_indent __ARGS((linenr_T lnum)); +! int get_breakindent_win __ARGS((win_T *wp, char_u *ptr)); + int open_line __ARGS((int dir, int flags, int second_line_indent)); + int get_leader_len __ARGS((char_u *line, char_u **flags, int backward, int include_space)); + int get_last_leader_offset __ARGS((char_u *line, char_u **flags)); +--- 5,11 ---- + int get_indent_str __ARGS((char_u *ptr, int ts, int list)); + int set_indent __ARGS((int size, int flags)); + int get_number_indent __ARGS((linenr_T lnum)); +! int get_breakindent_win __ARGS((win_T *wp, char_u *line)); + int open_line __ARGS((int dir, int flags, int second_line_indent)); + int get_leader_len __ARGS((char_u *line, char_u **flags, int backward, int include_space)); + int get_last_leader_offset __ARGS((char_u *line, char_u **flags)); +*** ../vim-7.4.552/src/proto/ops.pro 2014-04-29 12:15:22.860032651 +0200 +--- src/proto/ops.pro 2014-11-12 15:34:17.567483882 +0100 +*************** +*** 55,62 **** + char_u get_reg_type __ARGS((int regname, long *reglen)); + char_u *get_reg_contents __ARGS((int regname, int flags)); + void write_reg_contents __ARGS((int name, char_u *str, int maxlen, int must_append)); +- void write_reg_contents_ex __ARGS((int name, char_u *str, int maxlen, int must_append, int yank_type, long block_len)); + void write_reg_contents_lst __ARGS((int name, char_u **strings, int maxlen, int must_append, int yank_type, long block_len)); + void clear_oparg __ARGS((oparg_T *oap)); + void cursor_pos_info __ARGS((void)); + /* vim: set ft=c : */ +--- 55,62 ---- + char_u get_reg_type __ARGS((int regname, long *reglen)); + char_u *get_reg_contents __ARGS((int regname, int flags)); + void write_reg_contents __ARGS((int name, char_u *str, int maxlen, int must_append)); + void write_reg_contents_lst __ARGS((int name, char_u **strings, int maxlen, int must_append, int yank_type, long block_len)); ++ void write_reg_contents_ex __ARGS((int name, char_u *str, int maxlen, int must_append, int yank_type, long block_len)); + void clear_oparg __ARGS((oparg_T *oap)); + void cursor_pos_info __ARGS((void)); + /* vim: set ft=c : */ +*** ../vim-7.4.552/src/proto/screen.pro 2013-08-10 13:37:25.000000000 +0200 +--- src/proto/screen.pro 2014-11-12 15:34:19.455461795 +0100 +*************** +*** 26,32 **** + void screen_putchar __ARGS((int c, int row, int col, int attr)); + void screen_getbytes __ARGS((int row, int col, char_u *bytes, int *attrp)); + void screen_puts __ARGS((char_u *text, int row, int col, int attr)); +! void screen_puts_len __ARGS((char_u *text, int len, int row, int col, int attr)); + void screen_stop_highlight __ARGS((void)); + void reset_cterm_colors __ARGS((void)); + void screen_draw_rectangle __ARGS((int row, int col, int height, int width, int invert)); +--- 26,32 ---- + void screen_putchar __ARGS((int c, int row, int col, int attr)); + void screen_getbytes __ARGS((int row, int col, char_u *bytes, int *attrp)); + void screen_puts __ARGS((char_u *text, int row, int col, int attr)); +! void screen_puts_len __ARGS((char_u *text, int textlen, int row, int col, int attr)); + void screen_stop_highlight __ARGS((void)); + void reset_cterm_colors __ARGS((void)); + void screen_draw_rectangle __ARGS((int row, int col, int height, int width, int invert)); +*** ../vim-7.4.552/src/os_unix.c 2014-11-19 18:48:41.515814987 +0100 +--- src/os_unix.c 2014-11-23 13:47:50.484703720 +0100 +*************** +*** 1609,1615 **** + /* + * If the X11 connection was lost try to restore it. + * Helps when the X11 server was stopped and restarted while Vim was inactive +! * (e.g. though tmux). + */ + static void + may_restore_clipboard() +--- 1609,1615 ---- + /* + * If the X11 connection was lost try to restore it. + * Helps when the X11 server was stopped and restarted while Vim was inactive +! * (e.g. through tmux). + */ + static void + may_restore_clipboard() +*** ../vim-7.4.552/src/Make_vms.mms 2014-03-12 16:51:35.048792541 +0100 +--- src/Make_vms.mms 2014-08-10 16:27:11.040711199 +0200 +*************** +*** 2,8 **** + # Makefile for Vim on OpenVMS + # + # Maintainer: Zoltan Arpadffy <arpadffy@polarhome.com> +! # Last change: 2014 Feb 24 + # + # This has script been tested on VMS 6.2 to 8.2 on DEC Alpha, VAX and IA64 + # with MMS and MMK +--- 2,8 ---- + # Makefile for Vim on OpenVMS + # + # Maintainer: Zoltan Arpadffy <arpadffy@polarhome.com> +! # Last change: 2014 Aug 10 + # + # This has script been tested on VMS 6.2 to 8.2 on DEC Alpha, VAX and IA64 + # with MMS and MMK +*************** +*** 309,315 **** + ALL_LIBS = $(LIBS) $(GUI_LIB_DIR) $(GUI_LIB) \ + $(PERL_LIB) $(PYTHON_LIB) $(TCL_LIB) $(SNIFF_LIB) $(RUBY_LIB) + +! SRC = blowfish.c buffer.c charset.c diff.c digraph.c edit.c eval.c ex_cmds.c ex_cmds2.c \ + ex_docmd.c ex_eval.c ex_getln.c if_xcmdsrv.c fileio.c fold.c getchar.c \ + hardcopy.c hashtab.c main.c mark.c menu.c mbyte.c memfile.c memline.c message.c misc1.c \ + misc2.c move.c normal.c ops.c option.c popupmnu.c quickfix.c regexp.c search.c sha256.c\ +--- 309,315 ---- + ALL_LIBS = $(LIBS) $(GUI_LIB_DIR) $(GUI_LIB) \ + $(PERL_LIB) $(PYTHON_LIB) $(TCL_LIB) $(SNIFF_LIB) $(RUBY_LIB) + +! SRC = blowfish.c buffer.c charset.c crypt.c, crypt_zip.c diff.c digraph.c edit.c eval.c ex_cmds.c ex_cmds2.c \ + ex_docmd.c ex_eval.c ex_getln.c if_xcmdsrv.c fileio.c fold.c getchar.c \ + hardcopy.c hashtab.c main.c mark.c menu.c mbyte.c memfile.c memline.c message.c misc1.c \ + misc2.c move.c normal.c ops.c option.c popupmnu.c quickfix.c regexp.c search.c sha256.c\ +*************** +*** 318,324 **** + $(GUI_SRC) $(PERL_SRC) $(PYTHON_SRC) $(TCL_SRC) $(SNIFF_SRC) \ + $(RUBY_SRC) $(HANGULIN_SRC) $(MZSCH_SRC) + +! OBJ = blowfish.obj buffer.obj charset.obj diff.obj digraph.obj edit.obj eval.obj \ + ex_cmds.obj ex_cmds2.obj ex_docmd.obj ex_eval.obj ex_getln.obj \ + if_xcmdsrv.obj fileio.obj fold.obj getchar.obj hardcopy.obj hashtab.obj main.obj mark.obj \ + menu.obj memfile.obj memline.obj message.obj misc1.obj misc2.obj \ +--- 318,324 ---- + $(GUI_SRC) $(PERL_SRC) $(PYTHON_SRC) $(TCL_SRC) $(SNIFF_SRC) \ + $(RUBY_SRC) $(HANGULIN_SRC) $(MZSCH_SRC) + +! OBJ = blowfish.obj buffer.obj charset.obj crypt.obj, crypt_zip.obj diff.obj digraph.obj edit.obj eval.obj \ + ex_cmds.obj ex_cmds2.obj ex_docmd.obj ex_eval.obj ex_getln.obj \ + if_xcmdsrv.obj fileio.obj fold.obj getchar.obj hardcopy.obj hashtab.obj main.obj mark.obj \ + menu.obj memfile.obj memline.obj message.obj misc1.obj misc2.obj \ +*** ../vim-7.4.552/src/proto/os_vms.pro 2014-03-12 16:51:35.060792541 +0100 +--- src/proto/os_vms.pro 2014-11-12 15:34:29.219347574 +0100 +*************** +*** 5,15 **** + char_u *mch_getenv __ARGS((char_u *lognam)); + int mch_setenv __ARGS((char *var, char *value, int x)); + int vms_sys __ARGS((char *cmd, char *out, char *inp)); + int vms_sys_status __ARGS((int status)); + int vms_read __ARGS((char *inbuf, size_t nbytes)); +- char *vms_tolower __ARGS((char *name)); + int mch_expand_wildcards __ARGS((int num_pat, char_u **pat, int *num_file, char_u ***file, int flags)); + int mch_expandpath __ARGS((garray_T *gap, char_u *path, int flags)); + void *vms_fixfilename __ARGS((void *instring)); + void vms_remove_version __ARGS((void *fname)); + /* vim: set ft=c : */ +--- 5,16 ---- + char_u *mch_getenv __ARGS((char_u *lognam)); + int mch_setenv __ARGS((char *var, char *value, int x)); + int vms_sys __ARGS((char *cmd, char *out, char *inp)); ++ char *vms_tolower __ARGS((char *name)); + int vms_sys_status __ARGS((int status)); + int vms_read __ARGS((char *inbuf, size_t nbytes)); + int mch_expand_wildcards __ARGS((int num_pat, char_u **pat, int *num_file, char_u ***file, int flags)); + int mch_expandpath __ARGS((garray_T *gap, char_u *path, int flags)); + void *vms_fixfilename __ARGS((void *instring)); + void vms_remove_version __ARGS((void *fname)); ++ int RealWaitForChar __ARGS((int fd, long msec, int *check_for_gpm)); + /* vim: set ft=c : */ +*** ../vim-7.4.552/src/INSTALL 2011-05-19 12:36:17.000000000 +0200 +--- src/INSTALL 2014-07-06 14:30:41.411368351 +0200 +*************** +*** 316,322 **** + the `configure' script. `configure' automatically checks for the + source code in the directory that `configure' is in and in `..'. + +! If you have to use a `make' that does not supports the `VPATH' + variable, you have to compile the package for one architecture at a time + in the source code directory. After you have installed the package for + one architecture, use `make distclean' before reconfiguring for another +--- 316,322 ---- + the `configure' script. `configure' automatically checks for the + source code in the directory that `configure' is in and in `..'. + +! If you have to use a `make' that does not support the `VPATH' + variable, you have to compile the package for one architecture at a time + in the source code directory. After you have installed the package for + one architecture, use `make distclean' before reconfiguring for another +*** ../vim-7.4.552/src/version.c 2014-12-14 00:43:50.335749455 +0100 +--- src/version.c 2014-12-17 12:39:41.933558755 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 553, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +1. You actually wore a blue ribbon to protest the Communications Decency Act. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.554 b/SOURCES/7.4.554 new file mode 100644 index 0000000..b159251 --- /dev/null +++ b/SOURCES/7.4.554 @@ -0,0 +1,65 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.554 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.554 +Problem: Missing part of patch 7.4.519. +Solution: Copy back regprog after calling vim_regexec. +Files: src/quickfix.c + + +*** ../vim-7.4.553/src/quickfix.c 2014-07-23 16:33:04.075886500 +0200 +--- src/quickfix.c 2014-11-19 16:21:16.404128731 +0100 +*************** +*** 592,597 **** +--- 592,599 ---- + restofline: + for ( ; fmt_ptr != NULL; fmt_ptr = fmt_ptr->next) + { ++ int r; ++ + idx = fmt_ptr->prefix; + if (multiscan && vim_strchr((char_u *)"OPQ", idx) == NULL) + continue; +*************** +*** 607,613 **** + tail = NULL; + + regmatch.regprog = fmt_ptr->prog; +! if (vim_regexec(®match, IObuff, (colnr_T)0)) + { + if ((idx == 'C' || idx == 'Z') && !multiline) + continue; +--- 609,617 ---- + tail = NULL; + + regmatch.regprog = fmt_ptr->prog; +! r = vim_regexec(®match, IObuff, (colnr_T)0); +! fmt_ptr->prog = regmatch.regprog; +! if (r) + { + if ((idx == 'C' || idx == 'Z') && !multiline) + continue; +*** ../vim-7.4.553/src/version.c 2014-12-17 14:36:10.367090935 +0100 +--- src/version.c 2014-12-17 14:40:51.463618087 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 554, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +2. You kiss your girlfriend's home page. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.555 b/SOURCES/7.4.555 new file mode 100644 index 0000000..431985d --- /dev/null +++ b/SOURCES/7.4.555 @@ -0,0 +1,84 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.555 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.555 +Problem: test_close_count may fail for some combination of features. +Solution: Require normal features. +Files: src/testdir/test_close_count.in + + +*** ../vim-7.4.554/src/testdir/test_close_count.in 2014-11-27 16:22:42.746412995 +0100 +--- src/testdir/test_close_count.in 2014-11-30 13:07:39.347388895 +0100 +*************** +*** 1,8 **** + Tests for :[count]close! and :[count]hide vim: set ft=vim : + + STARTTEST + :let tests = [] +- :so tiny.vim + :for i in range(5) + :new + :endfor +--- 1,8 ---- + Tests for :[count]close! and :[count]hide vim: set ft=vim : + + STARTTEST ++ :so small.vim + :let tests = [] + :for i in range(5) + :new + :endfor +*************** +*** 46,52 **** + + STARTTEST + :let tests = [] +- :so tiny.vim + :for i in range(5) + :new + :endfor +--- 46,51 ---- +*************** +*** 94,100 **** + + STARTTEST + :let tests = [] +- :so tiny.vim + :set hidden + :for i in range(5) + :new +--- 93,98 ---- +*************** +*** 123,129 **** + + STARTTEST + :let tests = [] +- :so tiny.vim + :set hidden + :for i in range(5) + :new +--- 121,126 ---- +*** ../vim-7.4.554/src/version.c 2014-12-17 14:41:06.083437433 +0100 +--- src/version.c 2014-12-17 14:42:07.426679571 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 555, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +3. Your bookmark takes 15 minutes to scroll from top to bottom. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.556 b/SOURCES/7.4.556 new file mode 100644 index 0000000..e0cf3c2 --- /dev/null +++ b/SOURCES/7.4.556 @@ -0,0 +1,70 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.556 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.556 +Problem: Failed commands in Python interface not handled correctly. +Solution: Restore window and buffer on failure. +Files: src/if_py_both.h + + +*** ../vim-7.4.555/src/if_py_both.h 2014-08-29 13:49:48.678436915 +0200 +--- src/if_py_both.h 2014-09-19 14:21:33.474404353 +0200 +*************** +*** 3172,3177 **** +--- 3172,3178 ---- + if (switch_win(&save_curwin, &save_curtab, (win_T *)from, + win_find_tabpage((win_T *)from), FALSE) == FAIL) + { ++ restore_win(save_curwin, save_curtab, TRUE); + if (VimTryEnd()) + return -1; + PyErr_SET_VIM(N_("problem while switching windows")); +*************** +*** 4032,4040 **** + win_T *wp; + tabpage_T *tp; + +! if (find_win_for_buf(buf, &wp, &tp) == FAIL +! || switch_win(save_curwinp, save_curtabp, wp, tp, TRUE) == FAIL) + switch_buffer(save_curbufp, buf); + } + + static void +--- 4033,4045 ---- + win_T *wp; + tabpage_T *tp; + +! if (find_win_for_buf(buf, &wp, &tp) == FAIL) + switch_buffer(save_curbufp, buf); ++ else if (switch_win(save_curwinp, save_curtabp, wp, tp, TRUE) == FAIL) ++ { ++ restore_win(*save_curwinp, *save_curtabp, TRUE); ++ switch_buffer(save_curbufp, buf); ++ } + } + + static void +*** ../vim-7.4.555/src/version.c 2014-12-17 14:42:42.990240206 +0100 +--- src/version.c 2014-12-17 14:44:33.304877367 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 556, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +4. Your eyeglasses have a web site burned in on them. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.557 b/SOURCES/7.4.557 new file mode 100644 index 0000000..8d249f7 --- /dev/null +++ b/SOURCES/7.4.557 @@ -0,0 +1,52 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.557 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.557 +Problem: One more small issue. +Solution: Update function proto. +Files: src/proto/window.pro + + +*** ../vim-7.4.556/src/proto/window.pro 2014-06-17 17:48:21.780628008 +0200 +--- src/proto/window.pro 2014-11-12 15:34:22.895421553 +0100 +*************** +*** 75,81 **** + void switch_buffer __ARGS((buf_T **save_curbuf, buf_T *buf)); + void restore_buffer __ARGS((buf_T *save_curbuf)); + int win_hasvertsplit __ARGS((void)); +! int match_add __ARGS((win_T *wp, char_u *grp, char_u *pat, int prio, int id, list_T *pos)); + int match_delete __ARGS((win_T *wp, int id, int perr)); + void clear_matches __ARGS((win_T *wp)); + matchitem_T *get_match __ARGS((win_T *wp, int id)); +--- 75,81 ---- + void switch_buffer __ARGS((buf_T **save_curbuf, buf_T *buf)); + void restore_buffer __ARGS((buf_T *save_curbuf)); + int win_hasvertsplit __ARGS((void)); +! int match_add __ARGS((win_T *wp, char_u *grp, char_u *pat, int prio, int id, list_T *pos_list)); + int match_delete __ARGS((win_T *wp, int id, int perr)); + void clear_matches __ARGS((win_T *wp)); + matchitem_T *get_match __ARGS((win_T *wp, int id)); +*** ../vim-7.4.556/src/version.c 2014-12-17 14:45:56.095854545 +0100 +--- src/version.c 2014-12-17 14:47:19.674822175 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 557, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +5. You find yourself brainstorming for new subjects to search. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.558 b/SOURCES/7.4.558 new file mode 100644 index 0000000..74046e6 --- /dev/null +++ b/SOURCES/7.4.558 @@ -0,0 +1,55 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.558 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.558 +Problem: When the X server restarts Vim may get stuck. +Solution: Destroy the application context and create it again. (Issue 203) +Files: src/os_unix.c + + +*** ../vim-7.4.557/src/os_unix.c 2014-12-17 14:36:10.367090935 +0100 +--- src/os_unix.c 2014-12-17 17:55:23.187644328 +0100 +*************** +*** 1617,1622 **** +--- 1617,1633 ---- + if (xterm_dpy_was_reset) + { + xterm_dpy_was_reset = FALSE; ++ ++ # ifndef LESSTIF_VERSION ++ /* This has been reported to avoid Vim getting stuck. */ ++ if (app_context != (XtAppContext)NULL) ++ { ++ XtDestroyApplicationContext(app_context); ++ app_context = (XtAppContext)NULL; ++ x11_display = NULL; /* freed by XtDestroyApplicationContext() */ ++ } ++ # endif ++ + setup_term_clip(); + get_x11_title(FALSE); + } +*** ../vim-7.4.557/src/version.c 2014-12-17 14:47:52.870412129 +0100 +--- src/version.c 2014-12-17 17:57:10.026323560 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 558, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +14. You start introducing yourself as "Jim at I-I-Net dot net dot au" + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.559 b/SOURCES/7.4.559 new file mode 100644 index 0000000..7425f53 --- /dev/null +++ b/SOURCES/7.4.559 @@ -0,0 +1,96 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.559 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.559 +Problem: Appending a block in the middle of a tab does not work correctly + when virtualedit is set. +Solution: Decrement spaces and count, don't reset them. (James McCoy) +Files: src/ops.c, src/testdir/test39.in, src/testdir/test39.ok + + +*** ../vim-7.4.558/src/ops.c 2014-11-19 17:35:35.081446695 +0100 +--- src/ops.c 2014-12-17 18:28:39.034973177 +0100 +*************** +*** 612,631 **** + #ifdef FEAT_MBYTE + if (has_mbyte && spaces > 0) + { + /* Avoid starting halfway a multi-byte character. */ + if (b_insert) + { +! int off = (*mb_head_off)(oldp, oldp + offset + spaces); +! spaces -= off; +! count -= off; + } + else + { +! int off = (*mb_off_next)(oldp, oldp + offset); + offset += off; +- spaces = 0; +- count = 0; + } + } + #endif + +--- 612,631 ---- + #ifdef FEAT_MBYTE + if (has_mbyte && spaces > 0) + { ++ int off; ++ + /* Avoid starting halfway a multi-byte character. */ + if (b_insert) + { +! off = (*mb_head_off)(oldp, oldp + offset + spaces); + } + else + { +! off = (*mb_off_next)(oldp, oldp + offset); + offset += off; + } ++ spaces -= off; ++ count -= off; + } + #endif + +*** ../vim-7.4.558/src/testdir/test39.ok 2014-08-16 18:13:00.082044726 +0200 +--- src/testdir/test39.ok 2014-12-17 18:18:33.090470463 +0100 +*************** +*** 26,31 **** +--- 26,35 ---- + x line2 + x line3 + ++ x x line1 ++ x x line2 ++ x x line3 ++ + the YOUTUSSEUU end + - yOUSSTUSSEXu - + THE YOUTUSSEUU END +*** ../vim-7.4.558/src/version.c 2014-12-17 17:59:26.916631344 +0100 +--- src/version.c 2014-12-17 18:32:23.276199179 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 559, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +15. Your heart races faster and beats irregularly each time you see a new WWW + site address in print or on TV, even though you've never had heart + problems before. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.560 b/SOURCES/7.4.560 new file mode 100644 index 0000000..2da74c4 --- /dev/null +++ b/SOURCES/7.4.560 @@ -0,0 +1,205 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.560 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.560 +Problem: Memory leak using :wviminfo. Issue 296. +Solution: Free memory when needed. (idea by Christian Brabandt) +Files: src/ops.c + + +*** ../vim-7.4.559/src/ops.c 2014-12-17 18:35:37.553795955 +0100 +--- src/ops.c 2014-12-17 20:59:49.722557613 +0100 +*************** +*** 5663,5668 **** +--- 5663,5670 ---- + int set_prev = FALSE; + char_u *str; + char_u **array = NULL; ++ int new_type; ++ colnr_T new_width; + + /* We only get here (hopefully) if line[0] == '"' */ + str = virp->vir_line + 1; +*************** +*** 5695,5715 **** + limit = 100; /* Optimized for registers containing <= 100 lines */ + if (do_it) + { + if (set_prev) + y_previous = y_current; +! vim_free(y_current->y_array); +! array = y_current->y_array = +! (char_u **)alloc((unsigned)(limit * sizeof(char_u *))); + str = skipwhite(skiptowhite(str)); + if (STRNCMP(str, "CHAR", 4) == 0) +! y_current->y_type = MCHAR; + else if (STRNCMP(str, "BLOCK", 5) == 0) +! y_current->y_type = MBLOCK; + else +! y_current->y_type = MLINE; + /* get the block width; if it's missing we get a zero, which is OK */ + str = skipwhite(skiptowhite(str)); +! y_current->y_width = getdigits(&str); + } + + while (!(eof = viminfo_readline(virp)) +--- 5697,5721 ---- + limit = 100; /* Optimized for registers containing <= 100 lines */ + if (do_it) + { ++ /* ++ * Build the new register in array[]. ++ * y_array is kept as-is until done. ++ * The "do_it" flag is reset when something is wrong, in which case ++ * array[] needs to be freed. ++ */ + if (set_prev) + y_previous = y_current; +! array = (char_u **)alloc((unsigned)(limit * sizeof(char_u *))); + str = skipwhite(skiptowhite(str)); + if (STRNCMP(str, "CHAR", 4) == 0) +! new_type = MCHAR; + else if (STRNCMP(str, "BLOCK", 5) == 0) +! new_type = MBLOCK; + else +! new_type = MLINE; + /* get the block width; if it's missing we get a zero, which is OK */ + str = skipwhite(skiptowhite(str)); +! new_width = getdigits(&str); + } + + while (!(eof = viminfo_readline(virp)) +*************** +*** 5717,5756 **** + { + if (do_it) + { +! if (size >= limit) + { +! y_current->y_array = (char_u **) + alloc((unsigned)(limit * 2 * sizeof(char_u *))); + for (i = 0; i < limit; i++) +! y_current->y_array[i] = array[i]; + vim_free(array); + limit *= 2; +- array = y_current->y_array; + } + str = viminfo_readstring(virp, 1, TRUE); + if (str != NULL) + array[size++] = str; + else + do_it = FALSE; + } + } + if (do_it) + { + if (size == 0) + { +- vim_free(array); + y_current->y_array = NULL; + } +! else if (size < limit) + { + y_current->y_array = + (char_u **)alloc((unsigned)(size * sizeof(char_u *))); + for (i = 0; i < size; i++) +! y_current->y_array[i] = array[i]; +! vim_free(array); + } +- y_current->y_size = size; + } + return eof; + } + +--- 5723,5788 ---- + { + if (do_it) + { +! if (size == limit) + { +! char_u **new_array = (char_u **) + alloc((unsigned)(limit * 2 * sizeof(char_u *))); ++ ++ if (new_array == NULL) ++ { ++ do_it = FALSE; ++ break; ++ } + for (i = 0; i < limit; i++) +! new_array[i] = array[i]; + vim_free(array); ++ array = new_array; + limit *= 2; + } + str = viminfo_readstring(virp, 1, TRUE); + if (str != NULL) + array[size++] = str; + else ++ /* error, don't store the result */ + do_it = FALSE; + } + } + if (do_it) + { ++ /* free y_array[] */ ++ for (i = 0; i < y_current->y_size; i++) ++ vim_free(y_current->y_array[i]); ++ vim_free(y_current->y_array); ++ ++ y_current->y_type = new_type; ++ y_current->y_width = new_width; ++ y_current->y_size = size; + if (size == 0) + { + y_current->y_array = NULL; + } +! else + { ++ /* Move the lines from array[] to y_array[]. */ + y_current->y_array = + (char_u **)alloc((unsigned)(size * sizeof(char_u *))); + for (i = 0; i < size; i++) +! { +! if (y_current->y_array == NULL) +! vim_free(array[i]); +! else +! y_current->y_array[i] = array[i]; +! } + } + } ++ else ++ { ++ /* Free array[] if it was filled. */ ++ for (i = 0; i < size; i++) ++ vim_free(array[i]); ++ } ++ vim_free(array); ++ + return eof; + } + +*** ../vim-7.4.559/src/version.c 2014-12-17 18:35:37.553795955 +0100 +--- src/version.c 2014-12-17 18:56:33.810259558 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 560, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +17. You turn on your intercom when leaving the room so you can hear if new + e-mail arrives. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.561 b/SOURCES/7.4.561 new file mode 100644 index 0000000..d28c780 --- /dev/null +++ b/SOURCES/7.4.561 @@ -0,0 +1,109 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.561 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.561 +Problem: Ex range handling is wrong for buffer-local user commands. +Solution: Check for CMD_USER_BUF. (Marcin Szamotulski) +Files: src/ex_docmd.c, src/testdir/test_command_count.in, + src/testdir/test_command_count.ok + + +*** ../vim-7.4.560/src/ex_docmd.c 2014-12-08 04:16:26.265702875 +0100 +--- src/ex_docmd.c 2015-01-07 13:11:45.740538584 +0100 +*************** +*** 2133,2144 **** + if (ea.cmdidx != CMD_SIZE + #ifdef FEAT_USR_CMDS + && ea.cmdidx != CMD_USER + #endif + ) + ea.addr_type = cmdnames[(int)ea.cmdidx].cmd_addr_type; + else + #ifdef FEAT_USR_CMDS +! if (ea.cmdidx != CMD_USER) + #endif + ea.addr_type = ADDR_LINES; + /* ea.addr_type for user commands is set by find_ucmd */ +--- 2133,2145 ---- + if (ea.cmdidx != CMD_SIZE + #ifdef FEAT_USR_CMDS + && ea.cmdidx != CMD_USER ++ && ea.cmdidx != CMD_USER_BUF + #endif + ) + ea.addr_type = cmdnames[(int)ea.cmdidx].cmd_addr_type; + else + #ifdef FEAT_USR_CMDS +! if (ea.cmdidx != CMD_USER && ea.cmdidx != CMD_USER_BUF) + #endif + ea.addr_type = ADDR_LINES; + /* ea.addr_type for user commands is set by find_ucmd */ +*** ../vim-7.4.560/src/testdir/test_command_count.in 2014-12-08 04:16:26.249703054 +0100 +--- src/testdir/test_command_count.in 2015-01-07 13:12:34.099980778 +0100 +*************** +*** 3,9 **** + STARTTEST + :let g:lines = [] + :so tiny.vim +! :com -range RangeLines :call add(g:lines, 'Rangeg:Lines '.<line1>.' '.<line2>) + :com -range -addr=arguments RangeArguments :call add(g:lines, 'RangeArguments '.<line1>.' '.<line2>) + :com -range=% -addr=arguments RangeArgumentsAll :call add(g:lines, 'RangeArgumentsAll '.<line1>.' '.<line2>) + :com -range -addr=loaded_buffers RangeLoadedBuffers :call add(g:lines, 'RangeLoadedBuffers '.<line1>.' '.<line2>) +--- 3,9 ---- + STARTTEST + :let g:lines = [] + :so tiny.vim +! :com -range=% RangeLines :call add(g:lines, 'RangeLines '.<line1>.' '.<line2>) + :com -range -addr=arguments RangeArguments :call add(g:lines, 'RangeArguments '.<line1>.' '.<line2>) + :com -range=% -addr=arguments RangeArgumentsAll :call add(g:lines, 'RangeArgumentsAll '.<line1>.' '.<line2>) + :com -range -addr=loaded_buffers RangeLoadedBuffers :call add(g:lines, 'RangeLoadedBuffers '.<line1>.' '.<line2>) +*************** +*** 42,47 **** +--- 42,53 ---- + :%RangeTabs + :RangeTabsAll + :1tabonly ++ :s/\n/\r\r\r\r\r/ ++ :2ma< ++ :$-ma> ++ :'<,'>RangeLines ++ :com -range=% -buffer LocalRangeLines :call add(g:lines, 'LocalRangeLines '.<line1>.' '.<line2>) ++ :'<,'>LocalRangeLines + :e! test.out + :call append(0, g:lines) + :w|qa! +*** ../vim-7.4.560/src/testdir/test_command_count.ok 2014-12-08 04:16:26.249703054 +0100 +--- src/testdir/test_command_count.ok 2015-01-07 12:59:08.657271709 +0100 +*************** +*** 14,17 **** +--- 14,19 ---- + RangeTabs 2 5 + RangeTabs 1 5 + RangeTabsAll 1 5 ++ RangeLines 2 5 ++ LocalRangeLines 2 5 + +*** ../vim-7.4.560/src/version.c 2014-12-17 21:00:44.989871256 +0100 +--- src/version.c 2015-01-07 12:58:04.754008894 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 561, + /**/ + +-- +Q: What is a patch 22? +A: A patch you need to include to make it possible to include patches. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.562 b/SOURCES/7.4.562 new file mode 100644 index 0000000..d462c38 --- /dev/null +++ b/SOURCES/7.4.562 @@ -0,0 +1,65 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.562 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.562 +Problem: Segfault with wide screen and error in 'rulerformat'. (Ingo Karkat) +Solution: Check there is enough space. (Christian Brabandt) +Files: src/buffer.c, src/screen.c + + +*** ../vim-7.4.561/src/buffer.c 2014-11-19 16:38:01.500680103 +0100 +--- src/buffer.c 2015-01-07 13:24:22.663808167 +0100 +*************** +*** 4409,4414 **** +--- 4409,4416 ---- + long above; /* number of lines above window */ + long below; /* number of lines below window */ + ++ if (buflen < 3) /* need at least 3 chars for writing */ ++ return; + above = wp->w_topline - 1; + #ifdef FEAT_DIFF + above += diff_check_fill(wp, wp->w_topline) - wp->w_topfill; +*** ../vim-7.4.561/src/screen.c 2014-12-13 03:36:34.988435244 +0100 +--- src/screen.c 2015-01-07 13:28:04.069254599 +0100 +*************** +*** 10588,10594 **** + this_ru_col = (WITH_WIDTH(width) + 1) / 2; + if (this_ru_col + o < WITH_WIDTH(width)) + { +! while (this_ru_col + o < WITH_WIDTH(width)) + { + #ifdef FEAT_MBYTE + if (has_mbyte) +--- 10588,10595 ---- + this_ru_col = (WITH_WIDTH(width) + 1) / 2; + if (this_ru_col + o < WITH_WIDTH(width)) + { +! /* need at least 3 chars left for get_rel_pos() + NUL */ +! while (this_ru_col + o < WITH_WIDTH(width) && RULER_BUF_LEN > i + 4) + { + #ifdef FEAT_MBYTE + if (has_mbyte) +*** ../vim-7.4.561/src/version.c 2015-01-07 13:15:40.609829496 +0100 +--- src/version.c 2015-01-07 13:22:59.184770984 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 562, + /**/ + +-- +"I can't complain, but sometimes I still do." (Joe Walsh) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.564 b/SOURCES/7.4.564 new file mode 100644 index 0000000..16f5e75 --- /dev/null +++ b/SOURCES/7.4.564 @@ -0,0 +1,246 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.564 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.564 +Problem: FEAT_OSFILETYPE is used even though it's never defined. +Solution: Remove the code. (Christian Brabandt) +Files: src/fileio.c + + +*** ../vim-7.4.563/src/fileio.c 2014-11-19 16:38:01.516679915 +0100 +--- src/fileio.c 2015-01-07 14:40:04.731344734 +0100 +*************** +*** 10049,10105 **** + { + regmatch_T regmatch; + int result = FALSE; +- #ifdef FEAT_OSFILETYPE +- int no_pattern = FALSE; /* TRUE if check is filetype only */ +- char_u *type_start; +- char_u c; +- int match = FALSE; +- #endif + + regmatch.rm_ic = p_fic; /* ignore case if 'fileignorecase' is set */ +! #ifdef FEAT_OSFILETYPE +! if (*pattern == '<') +! { +! /* There is a filetype condition specified with this pattern. +! * Check the filetype matches first. If not, don't bother with the +! * pattern (set regprog to NULL). +! * Always use magic for the regexp. +! */ +! +! for (type_start = pattern + 1; (c = *pattern); pattern++) +! { +! if ((c == ';' || c == '>') && match == FALSE) +! { +! *pattern = NUL; /* Terminate the string */ +! /* TODO: match with 'filetype' of buffer that "fname" comes +! * from. */ +! match = mch_check_filetype(fname, type_start); +! *pattern = c; /* Restore the terminator */ +! type_start = pattern + 1; +! } +! if (c == '>') +! break; +! } +! +! /* (c should never be NUL, but check anyway) */ +! if (match == FALSE || c == NUL) +! regmatch.regprog = NULL; /* Doesn't match - don't check pat. */ +! else if (*pattern == NUL) +! { +! regmatch.regprog = NULL; /* Vim will try to free regprog later */ +! no_pattern = TRUE; /* Always matches - don't check pat. */ +! } +! else +! regmatch.regprog = vim_regcomp(pattern + 1, RE_MAGIC); +! } + else +! #endif +! { +! if (prog != NULL) +! regmatch.regprog = *prog; +! else +! regmatch.regprog = vim_regcomp(pattern, RE_MAGIC); +! } + + /* + * Try for a match with the pattern with: +--- 10049,10060 ---- + { + regmatch_T regmatch; + int result = FALSE; + + regmatch.rm_ic = p_fic; /* ignore case if 'fileignorecase' is set */ +! if (prog != NULL) +! regmatch.regprog = *prog; + else +! regmatch.regprog = vim_regcomp(pattern, RE_MAGIC); + + /* + * Try for a match with the pattern with: +*************** +*** 10107,10125 **** + * 2. the short file name, when the pattern has a '/'. + * 3. the tail of the file name, when the pattern has no '/'. + */ +! if ( +! #ifdef FEAT_OSFILETYPE +! /* If the check is for a filetype only and we don't care +! * about the path then skip all the regexp stuff. +! */ +! no_pattern || +! #endif +! (regmatch.regprog != NULL + && ((allow_dirs + && (vim_regexec(®match, fname, (colnr_T)0) + || (sfname != NULL + && vim_regexec(®match, sfname, (colnr_T)0)))) +! || (!allow_dirs && vim_regexec(®match, tail, (colnr_T)0))))) + result = TRUE; + + if (prog != NULL) +--- 10062,10073 ---- + * 2. the short file name, when the pattern has a '/'. + * 3. the tail of the file name, when the pattern has no '/'. + */ +! if (regmatch.regprog != NULL + && ((allow_dirs + && (vim_regexec(®match, fname, (colnr_T)0) + || (sfname != NULL + && vim_regexec(®match, sfname, (colnr_T)0)))) +! || (!allow_dirs && vim_regexec(®match, tail, (colnr_T)0)))) + result = TRUE; + + if (prog != NULL) +*************** +*** 10176,10184 **** + * allow_dirs, otherwise FALSE is put there -- webb. + * Handle backslashes before special characters, like "\*" and "\ ". + * +- * If FEAT_OSFILETYPE defined then pass initial <type> through unchanged. Eg: +- * '<html>myfile' becomes '<html>^myfile$' -- leonard. +- * + * Returns NULL when out of memory. + */ + char_u * +--- 10124,10129 ---- +*************** +*** 10188,10241 **** + char *allow_dirs; /* Result passed back out in here */ + int no_bslash UNUSED; /* Don't use a backward slash as pathsep */ + { +! int size; + char_u *endp; + char_u *reg_pat; + char_u *p; + int i; + int nested = 0; + int add_dollar = TRUE; +- #ifdef FEAT_OSFILETYPE +- int check_length = 0; +- #endif + + if (allow_dirs != NULL) + *allow_dirs = FALSE; + if (pat_end == NULL) + pat_end = pat + STRLEN(pat); + +- #ifdef FEAT_OSFILETYPE +- /* Find out how much of the string is the filetype check */ +- if (*pat == '<') +- { +- /* Count chars until the next '>' */ +- for (p = pat + 1; p < pat_end && *p != '>'; p++) +- ; +- if (p < pat_end) +- { +- /* Pattern is of the form <.*>.* */ +- check_length = p - pat + 1; +- if (p + 1 >= pat_end) +- { +- /* The 'pattern' is a filetype check ONLY */ +- reg_pat = (char_u *)alloc(check_length + 1); +- if (reg_pat != NULL) +- { +- mch_memmove(reg_pat, pat, (size_t)check_length); +- reg_pat[check_length] = NUL; +- } +- return reg_pat; +- } +- } +- /* else: there was no closing '>' - assume it was a normal pattern */ +- +- } +- pat += check_length; +- size = 2 + check_length; +- #else +- size = 2; /* '^' at start, '$' at end */ +- #endif +- + for (p = pat; p < pat_end; p++) + { + switch (*p) +--- 10133,10151 ---- + char *allow_dirs; /* Result passed back out in here */ + int no_bslash UNUSED; /* Don't use a backward slash as pathsep */ + { +! int size = 2; /* '^' at start, '$' at end */ + char_u *endp; + char_u *reg_pat; + char_u *p; + int i; + int nested = 0; + int add_dollar = TRUE; + + if (allow_dirs != NULL) + *allow_dirs = FALSE; + if (pat_end == NULL) + pat_end = pat + STRLEN(pat); + + for (p = pat; p < pat_end; p++) + { + switch (*p) +*************** +*** 10270,10283 **** + if (reg_pat == NULL) + return NULL; + +- #ifdef FEAT_OSFILETYPE +- /* Copy the type check in to the start. */ +- if (check_length) +- mch_memmove(reg_pat, pat - check_length, (size_t)check_length); +- i = check_length; +- #else + i = 0; +- #endif + + if (pat[0] == '*') + while (pat[0] == '*' && pat < pat_end - 1) +--- 10180,10186 ---- +*** ../vim-7.4.563/src/version.c 2015-01-07 14:02:47.609220508 +0100 +--- src/version.c 2015-01-07 14:32:36.464539801 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 564, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +55. You ask your doctor to implant a gig in your brain. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.565 b/SOURCES/7.4.565 new file mode 100644 index 0000000..c513c4d --- /dev/null +++ b/SOURCES/7.4.565 @@ -0,0 +1,411 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.565 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.565 +Problem: Ranges for arguments, buffers, tabs, etc. are not checked to be + valid but limited to the maximum. This can cause the wrong thing + to happen. +Solution: Give an error for an invalid value. (Marcin Szamotulski) + Use windows range for ":wincmd". +Files: src/ex_docmd.c, src/ex_cmds.h, src/testdir/test62.in, + src/testdir/test_argument_count.in, + src/testdir/test_argument_count.ok, + src/testdir/test_close_count.in, + src/testdir/test_command_count.in, + src/testdir/test_command_count.ok + + +*** ../vim-7.4.564/src/ex_docmd.c 2015-01-07 13:15:40.605829542 +0100 +--- src/ex_docmd.c 2015-01-07 15:33:21.950217606 +0100 +*************** +*** 2161,2166 **** +--- 2161,2168 ---- + break; + case ADDR_ARGUMENTS: + ea.line2 = curwin->w_arg_idx + 1; ++ if (ea.line2 > ARGCOUNT) ++ ea.line2 = ARGCOUNT; + break; + case ADDR_LOADED_BUFFERS: + case ADDR_BUFFERS: +*************** +*** 3110,3116 **** + * Exceptions: + * - the 'k' command can directly be followed by any character. + * - the 's' command can be followed directly by 'c', 'g', 'i', 'I' or 'r' +! * but :sre[wind] is another command, as are :scrip[tnames], + * :scs[cope], :sim[alt], :sig[ns] and :sil[ent]. + * - the "d" command can directly be followed by 'l' or 'p' flag. + */ +--- 3112,3118 ---- + * Exceptions: + * - the 'k' command can directly be followed by any character. + * - the 's' command can be followed directly by 'c', 'g', 'i', 'I' or 'r' +! * but :sre[wind] is another command, as are :scr[iptnames], + * :scs[cope], :sim[alt], :sig[ns] and :sil[ent]. + * - the "d" command can directly be followed by 'l' or 'p' flag. + */ +*************** +*** 4573,4618 **** + lnum -= n; + else + lnum += n; +- +- switch (addr_type) +- { +- case ADDR_LINES: +- break; +- case ADDR_ARGUMENTS: +- if (lnum < 0) +- lnum = 0; +- else if (lnum >= ARGCOUNT) +- lnum = ARGCOUNT; +- break; +- case ADDR_TABS: +- if (lnum < 0) +- { +- lnum = 0; +- break; +- } +- if (lnum >= LAST_TAB_NR) +- lnum = LAST_TAB_NR; +- break; +- case ADDR_WINDOWS: +- if (lnum < 0) +- { +- lnum = 0; +- break; +- } +- if (lnum >= LAST_WIN_NR) +- lnum = LAST_WIN_NR; +- break; +- case ADDR_LOADED_BUFFERS: +- case ADDR_BUFFERS: +- if (lnum < firstbuf->b_fnum) +- { +- lnum = firstbuf->b_fnum; +- break; +- } +- if (lnum > lastbuf->b_fnum) +- lnum = lastbuf->b_fnum; +- break; +- } + } + } while (*cmd == '/' || *cmd == '?'); + +--- 4575,4580 ---- +*************** +*** 4675,4691 **** + invalid_range(eap) + exarg_T *eap; + { + if ( eap->line1 < 0 + || eap->line2 < 0 +! || eap->line1 > eap->line2 +! || ((eap->argt & RANGE) +! && !(eap->argt & NOTADR) +! && eap->line2 > curbuf->b_ml.ml_line_count + #ifdef FEAT_DIFF +! + (eap->cmdidx == CMD_diffget) + #endif +! )) +! return (char_u *)_(e_invrange); + return NULL; + } + +--- 4637,4701 ---- + invalid_range(eap) + exarg_T *eap; + { ++ buf_T *buf; + if ( eap->line1 < 0 + || eap->line2 < 0 +! || eap->line1 > eap->line2) +! return (char_u *)_(e_invrange); +! +! if (eap->argt & RANGE) +! { +! switch(eap->addr_type) +! { +! case ADDR_LINES: +! if (!(eap->argt & NOTADR) +! && eap->line2 > curbuf->b_ml.ml_line_count + #ifdef FEAT_DIFF +! + (eap->cmdidx == CMD_diffget) + #endif +! ) +! return (char_u *)_(e_invrange); +! break; +! case ADDR_ARGUMENTS: +! if (eap->line2 > ARGCOUNT + (!ARGCOUNT)) // add 1 if ARCOUNT is 0 +! return (char_u *)_(e_invrange); +! break; +! case ADDR_BUFFERS: +! if (eap->line1 < firstbuf->b_fnum +! || eap->line2 > lastbuf->b_fnum) +! return (char_u *)_(e_invrange); +! break; +! case ADDR_LOADED_BUFFERS: +! buf = firstbuf; +! while (buf->b_ml.ml_mfp == NULL) +! { +! if (buf->b_next == NULL) +! return (char_u *)_(e_invrange); +! buf = buf->b_next; +! } +! if (eap->line1 < buf->b_fnum) +! return (char_u *)_(e_invrange); +! buf = lastbuf; +! while (buf->b_ml.ml_mfp == NULL) +! { +! if (buf->b_prev == NULL) +! return (char_u *)_(e_invrange); +! buf = buf->b_prev; +! } +! if (eap->line2 > buf->b_fnum) +! return (char_u *)_(e_invrange); +! break; +! case ADDR_WINDOWS: +! if (eap->line1 < 1 +! || eap->line2 > LAST_WIN_NR) +! return (char_u *)_(e_invrange); +! break; +! case ADDR_TABS: +! if (eap->line2 > LAST_TAB_NR) +! return (char_u *)_(e_invrange); +! break; +! } +! } + return NULL; + } + +*** ../vim-7.4.564/src/ex_cmds.h 2014-12-17 14:36:10.363090985 +0100 +--- src/ex_cmds.h 2015-01-07 15:47:15.336518550 +0100 +*************** +*** 1574,1580 **** + ADDR_LINES), + EX(CMD_wincmd, "wincmd", ex_wincmd, + NEEDARG|WORD1|RANGE|NOTADR, +! ADDR_LINES), + EX(CMD_windo, "windo", ex_listdo, + BANG|NEEDARG|EXTRA|NOTRLCOM, + ADDR_LINES), +--- 1574,1580 ---- + ADDR_LINES), + EX(CMD_wincmd, "wincmd", ex_wincmd, + NEEDARG|WORD1|RANGE|NOTADR, +! ADDR_WINDOWS), + EX(CMD_windo, "windo", ex_listdo, + BANG|NEEDARG|EXTRA|NOTRLCOM, + ADDR_LINES), +*** ../vim-7.4.564/src/testdir/test62.in 2014-04-29 11:55:26.172053624 +0200 +--- src/testdir/test62.in 2015-01-07 15:33:21.950217606 +0100 +*************** +*** 13,19 **** + :" Open three tab pages and use ":tabdo" + :0tabnew + :1tabnew +! :888tabnew + :tabdo call append(line('$'), 'this is tab page ' . tabpagenr()) + :tabclose! 2 + :tabrewind +--- 13,19 ---- + :" Open three tab pages and use ":tabdo" + :0tabnew + :1tabnew +! :$tabnew + :tabdo call append(line('$'), 'this is tab page ' . tabpagenr()) + :tabclose! 2 + :tabrewind +*** ../vim-7.4.564/src/testdir/test_argument_count.in 2014-11-27 18:32:58.532564506 +0100 +--- src/testdir/test_argument_count.in 2015-01-07 15:33:21.950217606 +0100 +*************** +*** 27,36 **** + :1arga c + :1arga b + :$argu +- :+arga d + :$arga x + :call add(arglists, argv()) +! :$-10arga Y + :call add(arglists, argv()) + :%argd + :call add(arglists, argv()) +--- 27,35 ---- + :1arga c + :1arga b + :$argu + :$arga x + :call add(arglists, argv()) +! :0arga Y + :call add(arglists, argv()) + :%argd + :call add(arglists, argv()) +*** ../vim-7.4.564/src/testdir/test_argument_count.ok 2014-11-27 16:22:42.746412995 +0100 +--- src/testdir/test_argument_count.ok 2015-01-07 15:33:21.950217606 +0100 +*************** +*** 7,13 **** + a b d + a d + a +! a b c d x +! Y a b c d x + + a f +--- 7,13 ---- + a b d + a d + a +! a b c x +! Y a b c x + + a f +*** ../vim-7.4.564/src/testdir/test_close_count.in 2014-12-17 14:42:42.990240206 +0100 +--- src/testdir/test_close_count.in 2015-01-07 15:33:21.950217606 +0100 +*************** +*** 28,34 **** + :new + :new + :2wincmd w +! :-2close! + :let buffers = [] + :windo call add(buffers, bufnr('%')) + :call add(tests, buffers) +--- 28,34 ---- + :new + :new + :2wincmd w +! :-1close! + :let buffers = [] + :windo call add(buffers, bufnr('%')) + :call add(tests, buffers) +*************** +*** 61,67 **** + :let buffers = [] + :windo call add(buffers, bufnr('%')) + :call add(tests, buffers) +! :9hide + :let buffers = [] + :windo call add(buffers, bufnr('%')) + :call add(tests, buffers) +--- 61,67 ---- + :let buffers = [] + :windo call add(buffers, bufnr('%')) + :call add(tests, buffers) +! :$hide + :let buffers = [] + :windo call add(buffers, bufnr('%')) + :call add(tests, buffers) +*** ../vim-7.4.564/src/testdir/test_command_count.in 2015-01-07 13:15:40.609829496 +0100 +--- src/testdir/test_command_count.in 2015-01-07 15:49:24.343016552 +0100 +*************** +*** 1,8 **** + Test for user command counts vim: set ft=vim : + + STARTTEST +- :let g:lines = [] + :so tiny.vim + :com -range=% RangeLines :call add(g:lines, 'RangeLines '.<line1>.' '.<line2>) + :com -range -addr=arguments RangeArguments :call add(g:lines, 'RangeArguments '.<line1>.' '.<line2>) + :com -range=% -addr=arguments RangeArgumentsAll :call add(g:lines, 'RangeArgumentsAll '.<line1>.' '.<line2>) +--- 1,8 ---- + Test for user command counts vim: set ft=vim : + + STARTTEST + :so tiny.vim ++ :let g:lines = [] + :com -range=% RangeLines :call add(g:lines, 'RangeLines '.<line1>.' '.<line2>) + :com -range -addr=arguments RangeArguments :call add(g:lines, 'RangeArguments '.<line1>.' '.<line2>) + :com -range=% -addr=arguments RangeArgumentsAll :call add(g:lines, 'RangeArgumentsAll '.<line1>.' '.<line2>) +*************** +*** 48,53 **** +--- 48,93 ---- + :'<,'>RangeLines + :com -range=% -buffer LocalRangeLines :call add(g:lines, 'LocalRangeLines '.<line1>.' '.<line2>) + :'<,'>LocalRangeLines ++ :b1 ++ ENDTEST ++ ++ STARTTEST ++ :call add(g:lines, '') ++ :%argd ++ :arga a b c d ++ :let v:errmsg = '' ++ :5argu ++ :call add(g:lines, '5argu ' . v:errmsg) ++ :$argu ++ :call add(g:lines, '4argu ' . expand('%:t')) ++ :let v:errmsg = '' ++ :1argu ++ :call add(g:lines, '1argu ' . expand('%:t')) ++ :let v:errmsg = '' ++ :100b ++ :call add(g:lines, '100b ' . v:errmsg) ++ :split|split|split|split ++ :let v:errmsg = '' ++ :0close ++ :call add(g:lines, '0close ' . v:errmsg) ++ :$wincmd w ++ :$close ++ :call add(g:lines, '$close ' . winnr()) ++ :let v:errmsg = '' ++ :$+close ++ :call add(g:lines, '$+close ' . v:errmsg) ++ :$tabe ++ :call add(g:lines, '$tabe ' . tabpagenr()) ++ :let v:errmsg = '' ++ :$+tabe ++ :call add(g:lines, '$+tabe ' . v:errmsg) ++ :only! ++ :e x ++ :0tabm ++ :normal 1gt ++ :call add(g:lines, '0tabm ' . expand('%:t')) ++ :tabonly! ++ :only! + :e! test.out + :call append(0, g:lines) + :w|qa! +*** ../vim-7.4.564/src/testdir/test_command_count.ok 2015-01-07 13:15:40.609829496 +0100 +--- src/testdir/test_command_count.ok 2015-01-07 15:49:19.223076159 +0100 +*************** +*** 17,19 **** +--- 17,30 ---- + RangeLines 2 5 + LocalRangeLines 2 5 + ++ 5argu E16: Invalid range ++ 4argu d ++ 1argu a ++ 100b E16: Invalid range ++ 0close E16: Invalid range ++ $close 4 ++ $+close E16: Invalid range ++ $tabe 2 ++ $+tabe E16: Invalid range ++ 0tabm x ++ +*** ../vim-7.4.564/src/version.c 2015-01-07 14:43:35.728900384 +0100 +--- src/version.c 2015-01-07 15:32:05.899101868 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 565, + /**/ + +-- +"I simultaneously try to keep my head in the clouds and my feet on the +ground. Sometimes it's a stretch, though." -- Larry Wall + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.566 b/SOURCES/7.4.566 new file mode 100644 index 0000000..96bb68e --- /dev/null +++ b/SOURCES/7.4.566 @@ -0,0 +1,612 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.566 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.566 +Problem: :argdo, :bufdo, :windo and :tabdo don't take a range. +Solution: Support the range. (Marcin Szamotulski) +Files: runtime/doc/editing.txt, runtime/doc/tabpage.txt, + runtime/doc/windows.txt, src/ex_cmds.h, src/ex_cmds2.c, + src/testdir/test_command_count.in, + src/testdir/test_command_count.ok + + +*** ../vim-7.4.565/runtime/doc/editing.txt 2014-11-27 16:22:42.734413130 +0100 +--- runtime/doc/editing.txt 2015-01-07 16:09:20.501100753 +0100 +*************** +*** 38,43 **** +--- 38,44 ---- + file name. It can be used with "#" on the command line |:_#| and you can use + the |CTRL-^| command to toggle between the current and the alternate file. + However, the alternate file name is not changed when |:keepalt| is used. ++ An alternate file name is remembered for each window. + + *:keepalt* *:keepa* + :keepalt {cmd} Execute {cmd} while keeping the current alternate file +*************** +*** 610,616 **** + :[count]arga[dd] {name} .. *:arga* *:argadd* *E479* + :[count]arga[dd] + Add the {name}s to the argument list. When {name} is +! omitted at the current buffer name to the argument + list. + If [count] is omitted, the {name}s are added just + after the current entry in the argument list. +--- 611,617 ---- + :[count]arga[dd] {name} .. *:arga* *:argadd* *E479* + :[count]arga[dd] + Add the {name}s to the argument list. When {name} is +! omitted add the current buffer name to the argument + list. + If [count] is omitted, the {name}s are added just + after the current entry in the argument list. +*************** +*** 831,838 **** + USING THE ARGUMENT LIST + + *:argdo* +! :argdo[!] {cmd} Execute {cmd} for each file in the argument list. +! It works like doing this: > + :rewind + :{cmd} + :next +--- 832,840 ---- + USING THE ARGUMENT LIST + + *:argdo* +! :[range]argdo[!] {cmd} Execute {cmd} for each file in the argument list or +! if [range] is specified only for arguments in that +! range. It works like doing this: > + :rewind + :{cmd} + :next +*************** +*** 1090,1096 **** + + :q[uit]! Quit without writing, also when currently visible + buffers have changes. Does not exit when this is the +! last window and there are is a changed hidden buffer. + In this case, the first changed hidden buffer becomes + the current buffer. + Use ":qall!" to exit always. +--- 1092,1098 ---- + + :q[uit]! Quit without writing, also when currently visible + buffers have changes. Does not exit when this is the +! last window and there is a changed hidden buffer. + In this case, the first changed hidden buffer becomes + the current buffer. + Use ":qall!" to exit always. +*************** +*** 1390,1396 **** + You could do this to edit very secret text: > + :set noundofile viminfo= + :noswapfile edit secrets.txt +! Keep in mind that without a swap file you risk loosing your work in a crash. + + WARNING: If you make a typo when entering the key and then write the file and + exit, the text will be lost! +--- 1392,1398 ---- + You could do this to edit very secret text: > + :set noundofile viminfo= + :noswapfile edit secrets.txt +! Keep in mind that without a swap file you risk losing your work in a crash. + + WARNING: If you make a typo when entering the key and then write the file and + exit, the text will be lost! +*************** +*** 1426,1438 **** + set automatically to the method used when that file was written. You can + change 'cryptmethod' before writing that file to change the method. + +! To set the default method, used for new files, use one of these in your +! |vimrc| file: > +! set cm=zip + set cm=blowfish2 +! Use the first one if you need to be compatible with Vim 7.2 and older. Using +! "blowfish2" is highly recommended if you can use a Vim version that supports +! it. + + The message given for reading and writing a file will show "[crypted]" when + using zip, "[blowfish]" when using blowfish, etc. +--- 1428,1438 ---- + set automatically to the method used when that file was written. You can + change 'cryptmethod' before writing that file to change the method. + +! To set the default method, used for new files, use this in your |vimrc| +! file: > + set cm=blowfish2 +! Using "blowfish2" is highly recommended. Only use another method if you +! must use an older Vim version that does not support it. + + The message given for reading and writing a file will show "[crypted]" when + using zip, "[blowfish]" when using blowfish, etc. +*************** +*** 1494,1501 **** + - Pkzip uses the same encryption as 'cryptmethod' "zip", and US Govt has no + objection to its export. Pkzip's public file APPNOTE.TXT describes this + algorithm in detail. +! - The implmentation of 'cryptmethod' "blowfish" has a flaw. It is possible to +! crack the first 64 bytes of a file and in some circumstances more of the + file. Use of it is not recommended, but it's still the strongest method + supported by Vim 7.3 and 7.4. The "zip" method is even weaker. + - Vim originates from the Netherlands. That is where the sources come from. +--- 1494,1501 ---- + - Pkzip uses the same encryption as 'cryptmethod' "zip", and US Govt has no + objection to its export. Pkzip's public file APPNOTE.TXT describes this + algorithm in detail. +! - The implementation of 'cryptmethod' "blowfish" has a flaw. It is possible +! to crack the first 64 bytes of a file and in some circumstances more of the + file. Use of it is not recommended, but it's still the strongest method + supported by Vim 7.3 and 7.4. The "zip" method is even weaker. + - Vim originates from the Netherlands. That is where the sources come from. +*** ../vim-7.4.565/runtime/doc/tabpage.txt 2014-11-27 16:22:42.738413084 +0100 +--- runtime/doc/tabpage.txt 2015-01-07 16:09:20.501100753 +0100 +*************** +*** 206,212 **** + :tabmove " move the tab page to the right + :.tabmove " as above + :+tabmove " as above +! :0tabmove " move the tab page to the begining of the tab + " list + :$tabmove " move the tab page to the end of the tab list + < +--- 206,212 ---- + :tabmove " move the tab page to the right + :.tabmove " as above + :+tabmove " as above +! :0tabmove " move the tab page to the beginning of the tab + " list + :$tabmove " move the tab page to the end of the tab list + < +*************** +*** 224,231 **** + LOOPING OVER TAB PAGES: + + *:tabd* *:tabdo* +! :tabd[o] {cmd} Execute {cmd} in each tab page. +! It works like doing this: > + :tabfirst + :{cmd} + :tabnext +--- 224,233 ---- + LOOPING OVER TAB PAGES: + + *:tabd* *:tabdo* +! :[range]tabd[o] {cmd} +! Execute {cmd} in each tab page or if [range] is given only in +! tab pages which tab page number is in the [range]. It works +! like doing this: > + :tabfirst + :{cmd} + :tabnext +*************** +*** 271,278 **** + triggers: + WinLeave leave current window + TabLeave leave current tab page +- TabEnter enter new tab page + WinEnter enter window in new tab page + BufLeave leave current buffer + BufEnter enter new empty buffer + +--- 273,280 ---- + triggers: + WinLeave leave current window + TabLeave leave current tab page + WinEnter enter window in new tab page ++ TabEnter enter new tab page + BufLeave leave current buffer + BufEnter enter new empty buffer + +*** ../vim-7.4.565/runtime/doc/windows.txt 2014-11-30 14:50:12.255356230 +0100 +--- runtime/doc/windows.txt 2015-01-07 16:09:20.501100753 +0100 +*************** +*** 278,293 **** + and there is only one window for the current buffer, and the + buffer was changed, the command fails. + +! (Note: CTRL-Q does not +! work on all terminals). If [count] is greater than +! the last window number the last window will be closed: > + :1quit " quit the first window + :$quit " quit the last window + :9quit " quit the last window + " if there are less than 9 windows opened + :-quit " quit the previews window + :+quit " quit the next window +! :+2quit " will also work as expected + < + :q[uit]! + :{count}q[uit]! +--- 278,294 ---- + and there is only one window for the current buffer, and the + buffer was changed, the command fails. + +! (Note: CTRL-Q does not work on all terminals). +! +! If [count] is greater than the last window number the last +! window will be closed: > + :1quit " quit the first window + :$quit " quit the last window + :9quit " quit the last window + " if there are less than 9 windows opened + :-quit " quit the previews window + :+quit " quit the next window +! :+2quit " quit the second next window + < + :q[uit]! + :{count}q[uit]! +*************** +*** 332,340 **** + screen. For {count} see |:quit| command. + + The buffer becomes hidden (unless there is another window +! editing it or 'bufhidden' is "unload" or "delete"). If the +! window is the last one in the current tab page the tab page is +! closed. |tab-page| + + The value of 'hidden' is irrelevant for this command. Changes + to the buffer are not written and won't get lost, so this is a +--- 333,341 ---- + screen. For {count} see |:quit| command. + + The buffer becomes hidden (unless there is another window +! editing it or 'bufhidden' is "unload", "delete" or "wipe"). +! If the window is the last one in the current tab page the tab +! page is closed. |tab-page| + + The value of 'hidden' is irrelevant for this command. Changes + to the buffer are not written and won't get lost, so this is a +*************** +*** 697,704 **** + 8. Do a command in all buffers or windows *list-repeat* + + *:windo* +! :windo {cmd} Execute {cmd} in each window. +! It works like doing this: > + CTRL-W t + :{cmd} + CTRL-W w +--- 698,706 ---- + 8. Do a command in all buffers or windows *list-repeat* + + *:windo* +! :[range]windo {cmd} Execute {cmd} in each window or if [range] is given +! only in windows for which the window number lies in +! the [range]. It works like doing this: > + CTRL-W t + :{cmd} + CTRL-W w +*************** +*** 716,723 **** + Also see |:tabdo|, |:argdo| and |:bufdo|. + + *:bufdo* +! :bufdo[!] {cmd} Execute {cmd} in each buffer in the buffer list. +! It works like doing this: > + :bfirst + :{cmd} + :bnext +--- 718,727 ---- + Also see |:tabdo|, |:argdo| and |:bufdo|. + + *:bufdo* +! :[range]bufdo[!] {cmd} Execute {cmd} in each buffer in the buffer list or if +! [range] is given only for buffers for which their +! buffer numer is in the [range]. It works like doing +! this: > + :bfirst + :{cmd} + :bnext +*************** +*** 763,780 **** + + CTRL-W ] *CTRL-W_]* *CTRL-W_CTRL-]* + CTRL-W CTRL-] Split current window in two. Use identifier under cursor as a +! tag and jump to it in the new upper window. Make new window N +! high. + + *CTRL-W_g]* + CTRL-W g ] Split current window in two. Use identifier under cursor as a + tag and perform ":tselect" on it in the new upper window. + Make new window N high. + + *CTRL-W_g_CTRL-]* + CTRL-W g CTRL-] Split current window in two. Use identifier under cursor as a +! tag and perform ":tjump" on it in the new upper window. Make +! new window N high. + + CTRL-W f *CTRL-W_f* *CTRL-W_CTRL-F* + CTRL-W CTRL-F Split current window in two. Edit file name under cursor. +--- 767,787 ---- + + CTRL-W ] *CTRL-W_]* *CTRL-W_CTRL-]* + CTRL-W CTRL-] Split current window in two. Use identifier under cursor as a +! tag and jump to it in the new upper window. +! In Visual mode uses the Visually selected text as a tag. +! Make new window N high. + + *CTRL-W_g]* + CTRL-W g ] Split current window in two. Use identifier under cursor as a + tag and perform ":tselect" on it in the new upper window. ++ In Visual mode uses the Visually selected text as a tag. + Make new window N high. + + *CTRL-W_g_CTRL-]* + CTRL-W g CTRL-] Split current window in two. Use identifier under cursor as a +! tag and perform ":tjump" on it in the new upper window. +! In Visual mode uses the Visually selected text as a tag. +! Make new window N high. + + CTRL-W f *CTRL-W_f* *CTRL-W_CTRL-F* + CTRL-W CTRL-F Split current window in two. Edit file name under cursor. +*** ../vim-7.4.565/src/ex_cmds.h 2015-01-07 15:57:13.145559792 +0100 +--- src/ex_cmds.h 2015-01-07 16:13:24.406265045 +0100 +*************** +*** 133,140 **** + BANG|RANGE|NOTADR|FILES|TRLBAR, + ADDR_ARGUMENTS), + EX(CMD_argdo, "argdo", ex_listdo, +! BANG|NEEDARG|EXTRA|NOTRLCOM, +! ADDR_LINES), + EX(CMD_argedit, "argedit", ex_argedit, + BANG|NEEDARG|RANGE|NOTADR|FILE1|EDITCMD|ARGOPT|TRLBAR, + ADDR_ARGUMENTS), +--- 133,140 ---- + BANG|RANGE|NOTADR|FILES|TRLBAR, + ADDR_ARGUMENTS), + EX(CMD_argdo, "argdo", ex_listdo, +! BANG|NEEDARG|EXTRA|NOTRLCOM|RANGE|NOTADR|DFLALL, +! ADDR_ARGUMENTS), + EX(CMD_argedit, "argedit", ex_argedit, + BANG|NEEDARG|RANGE|NOTADR|FILE1|EDITCMD|ARGOPT|TRLBAR, + ADDR_ARGUMENTS), +*************** +*** 220,227 **** + BANG|TRLBAR|CMDWIN, + ADDR_LINES), + EX(CMD_bufdo, "bufdo", ex_listdo, +! BANG|NEEDARG|EXTRA|NOTRLCOM, +! ADDR_LINES), + EX(CMD_bunload, "bunload", ex_bunload, + BANG|RANGE|NOTADR|BUFNAME|COUNT|EXTRA|TRLBAR, + ADDR_LOADED_BUFFERS), +--- 220,227 ---- + BANG|TRLBAR|CMDWIN, + ADDR_LINES), + EX(CMD_bufdo, "bufdo", ex_listdo, +! BANG|NEEDARG|EXTRA|NOTRLCOM|RANGE|NOTADR|DFLALL, +! ADDR_BUFFERS), + EX(CMD_bunload, "bunload", ex_bunload, + BANG|RANGE|NOTADR|BUFNAME|COUNT|EXTRA|TRLBAR, + ADDR_LOADED_BUFFERS), +*************** +*** 1384,1391 **** + RANGE|NOTADR|COUNT|BANG|TRLBAR|CMDWIN, + ADDR_TABS), + EX(CMD_tabdo, "tabdo", ex_listdo, +! NEEDARG|EXTRA|NOTRLCOM, +! ADDR_LINES), + EX(CMD_tabedit, "tabedit", ex_splitview, + BANG|FILE1|RANGE|NOTADR|ZEROR|EDITCMD|ARGOPT|TRLBAR, + ADDR_TABS), +--- 1384,1391 ---- + RANGE|NOTADR|COUNT|BANG|TRLBAR|CMDWIN, + ADDR_TABS), + EX(CMD_tabdo, "tabdo", ex_listdo, +! NEEDARG|EXTRA|NOTRLCOM|RANGE|NOTADR|DFLALL, +! ADDR_TABS), + EX(CMD_tabedit, "tabedit", ex_splitview, + BANG|FILE1|RANGE|NOTADR|ZEROR|EDITCMD|ARGOPT|TRLBAR, + ADDR_TABS), +*************** +*** 1576,1583 **** + NEEDARG|WORD1|RANGE|NOTADR, + ADDR_WINDOWS), + EX(CMD_windo, "windo", ex_listdo, +! BANG|NEEDARG|EXTRA|NOTRLCOM, +! ADDR_LINES), + EX(CMD_winpos, "winpos", ex_winpos, + EXTRA|TRLBAR|CMDWIN, + ADDR_LINES), +--- 1576,1583 ---- + NEEDARG|WORD1|RANGE|NOTADR, + ADDR_WINDOWS), + EX(CMD_windo, "windo", ex_listdo, +! BANG|NEEDARG|EXTRA|NOTRLCOM|RANGE|NOTADR|DFLALL, +! ADDR_WINDOWS), + EX(CMD_winpos, "winpos", ex_winpos, + EXTRA|TRLBAR|CMDWIN, + ADDR_LINES), +*** ../vim-7.4.565/src/ex_cmds2.c 2014-11-19 16:38:01.512679964 +0100 +--- src/ex_cmds2.c 2015-01-07 16:12:42.526751920 +0100 +*************** +*** 2472,2486 **** + | (eap->forceit ? CCGD_FORCEIT : 0) + | CCGD_EXCMD)) + { +- /* start at the first argument/window/buffer */ + i = 0; + #ifdef FEAT_WINDOWS + wp = firstwin; + tp = first_tabpage; + #endif + /* set pcmark now */ + if (eap->cmdidx == CMD_bufdo) +! goto_buffer(eap, DOBUF_FIRST, FORWARD, 0); + else + setpcmark(); + listcmd_busy = TRUE; /* avoids setting pcmark below */ +--- 2472,2507 ---- + | (eap->forceit ? CCGD_FORCEIT : 0) + | CCGD_EXCMD)) + { + i = 0; ++ /* start at the eap->line1 argument/window/buffer */ + #ifdef FEAT_WINDOWS + wp = firstwin; + tp = first_tabpage; + #endif ++ switch (eap->cmdidx) ++ { ++ #ifdef FEAT_WINDOWS ++ case CMD_windo: ++ for ( ; wp != NULL && i + 1 < eap->line1; wp = wp->w_next) ++ i++; ++ break; ++ case CMD_tabdo: ++ for( ; tp != NULL && i + 1 < eap->line1; tp = tp->tp_next) ++ i++; ++ break; ++ #endif ++ case CMD_argdo: ++ i = eap->line1 - 1; ++ break; ++ case CMD_bufdo: ++ i = eap->line1; ++ break; ++ default: ++ break; ++ } + /* set pcmark now */ + if (eap->cmdidx == CMD_bufdo) +! goto_buffer(eap, DOBUF_FIRST, FORWARD, i); + else + setpcmark(); + listcmd_busy = TRUE; /* avoids setting pcmark below */ +*************** +*** 2506,2512 **** + } + if (curwin->w_arg_idx != i) + break; +- ++i; + } + #ifdef FEAT_WINDOWS + else if (eap->cmdidx == CMD_windo) +--- 2527,2532 ---- +*************** +*** 2541,2546 **** +--- 2561,2568 ---- + } + } + ++ ++i; ++ + /* execute the command */ + do_cmdline(eap->arg, eap->getline, eap->cookie, + DOCMD_VERBOSE + DOCMD_NOWAIT); +*************** +*** 2548,2554 **** + if (eap->cmdidx == CMD_bufdo) + { + /* Done? */ +! if (next_fnum < 0) + break; + /* Check if the buffer still exists. */ + for (buf = firstbuf; buf != NULL; buf = buf->b_next) +--- 2570,2576 ---- + if (eap->cmdidx == CMD_bufdo) + { + /* Done? */ +! if (next_fnum < 0 || next_fnum > eap->line2) + break; + /* Check if the buffer still exists. */ + for (buf = firstbuf; buf != NULL; buf = buf->b_next) +*************** +*** 2579,2584 **** +--- 2601,2614 ---- + do_check_scrollbind(TRUE); + #endif + } ++ ++ #ifdef FEAT_WINDOWS ++ if (eap->cmdidx == CMD_windo || eap->cmdidx == CMD_tabdo) ++ if (i+1 > eap->line2) ++ break; ++ #endif ++ if (eap->cmdidx == CMD_argdo && i >= eap->line2) ++ break; + } + listcmd_busy = FALSE; + } +*** ../vim-7.4.565/src/testdir/test_command_count.in 2015-01-07 15:57:13.145559792 +0100 +--- src/testdir/test_command_count.in 2015-01-07 16:19:57.217698877 +0100 +*************** +*** 90,95 **** +--- 90,129 ---- + :only! + :e! test.out + :call append(0, g:lines) ++ :unlet g:lines ++ :w|bd ++ :se hidden ++ :b1 ++ ENDTEST ++ ++ STARTTEST ++ :only! ++ :let g:lines = [] ++ :%argd ++ :arga a b c d e f ++ :3argu ++ :let args = '' ++ :.,$-argdo let args .= ' '.expand('%') ++ :call add(g:lines, 'argdo:' . args) ++ :split|split|split|split ++ :2wincmd w ++ :let windows = '' ++ :.,$-windo let windows .= ' '.winnr() ++ :call add(g:lines, 'windo:'. windows) ++ :b2 ++ :let buffers = '' ++ :.,$-bufdo let buffers .= ' '.bufnr('%') ++ :call add(g:lines, 'bufdo:' . buffers) ++ :let buffers = '' ++ :3,7bufdo let buffers .= ' '.bufnr('%') ++ :call add(g:lines, 'bufdo:' . buffers) ++ :tabe|tabe|tabe|tabe ++ :normal! 2gt ++ :let tabpages = '' ++ :.,$-tabdo let tabpages .= ' '.tabpagenr() ++ :call add(g:lines, 'tabdo:' . tabpages) ++ :e! test.out ++ :call append('$', g:lines) + :w|qa! + ENDTEST + +*** ../vim-7.4.565/src/testdir/test_command_count.ok 2015-01-07 15:57:13.145559792 +0100 +--- src/testdir/test_command_count.ok 2015-01-07 16:19:51.805761782 +0100 +*************** +*** 28,30 **** +--- 28,35 ---- + $+tabe E16: Invalid range + 0tabm x + ++ argdo: c d e ++ windo: 2 3 4 ++ bufdo: 2 3 4 5 6 7 8 9 10 12 ++ bufdo: 3 4 5 6 7 ++ tabdo: 2 3 4 +*** ../vim-7.4.565/src/version.c 2015-01-07 15:57:13.149559746 +0100 +--- src/version.c 2015-01-07 16:50:24.620511525 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 566, + /**/ + +-- +ERROR 047: Keyboard not found. Press RETURN to continue. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.567 b/SOURCES/7.4.567 new file mode 100644 index 0000000..20024b1 --- /dev/null +++ b/SOURCES/7.4.567 @@ -0,0 +1,51 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.567 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.567 +Problem: Non-ascii vertical separater characters are always redrawn. +Solution: Compare only the one byte that's stored. (Thiago Padilha) +Files: src/screen.c + + +*** ../vim-7.4.566/src/screen.c 2015-01-07 13:31:48.890661692 +0100 +--- src/screen.c 2015-01-07 18:44:50.021472601 +0100 +*************** +*** 6062,6068 **** + int c; + + c = fillchar_vsep(&hl); +! if (ScreenLines[off_to] != c + # ifdef FEAT_MBYTE + || (enc_utf8 && (int)ScreenLinesUC[off_to] + != (c >= 0x80 ? c : 0)) +--- 6062,6068 ---- + int c; + + c = fillchar_vsep(&hl); +! if (ScreenLines[off_to] != (schar_T)c + # ifdef FEAT_MBYTE + || (enc_utf8 && (int)ScreenLinesUC[off_to] + != (c >= 0x80 ? c : 0)) +*** ../vim-7.4.566/src/version.c 2015-01-07 16:52:53.506792420 +0100 +--- src/version.c 2015-01-07 18:43:16.906545056 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 567, + /**/ + +-- +Keyboard not found. Think ENTER to continue. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.568 b/SOURCES/7.4.568 new file mode 100644 index 0000000..2be1b21 --- /dev/null +++ b/SOURCES/7.4.568 @@ -0,0 +1,73 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.568 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.568 +Problem: Giving an error for ":0wincmd w" is a problem for some plugins. +Solution: Allow the zero in the range. (Marcin Szamotulski) +Files: src/ex_docmd.c, src/testdir/test_command_count.ok + + +*** ../vim-7.4.567/src/ex_docmd.c 2015-01-07 15:57:13.145559792 +0100 +--- src/ex_docmd.c 2015-01-14 11:14:26.690308629 +0100 +*************** +*** 4686,4693 **** + return (char_u *)_(e_invrange); + break; + case ADDR_WINDOWS: +! if (eap->line1 < 1 +! || eap->line2 > LAST_WIN_NR) + return (char_u *)_(e_invrange); + break; + case ADDR_TABS: +--- 4686,4692 ---- + return (char_u *)_(e_invrange); + break; + case ADDR_WINDOWS: +! if (eap->line2 > LAST_WIN_NR) + return (char_u *)_(e_invrange); + break; + case ADDR_TABS: +*** ../vim-7.4.567/src/testdir/test_command_count.ok 2015-01-07 16:52:53.506792420 +0100 +--- src/testdir/test_command_count.ok 2015-01-14 11:22:19.405222287 +0100 +*************** +*** 21,28 **** + 4argu d + 1argu a + 100b E16: Invalid range +! 0close E16: Invalid range +! $close 4 + $+close E16: Invalid range + $tabe 2 + $+tabe E16: Invalid range +--- 21,28 ---- + 4argu d + 1argu a + 100b E16: Invalid range +! 0close +! $close 3 + $+close E16: Invalid range + $tabe 2 + $+tabe E16: Invalid range +*** ../vim-7.4.567/src/version.c 2015-01-07 19:04:25.299934570 +0100 +--- src/version.c 2015-01-14 11:15:38.117540026 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 568, + /**/ + +-- +ASCII stupid question, get a stupid ANSI. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.570 b/SOURCES/7.4.570 new file mode 100644 index 0000000..8996c2b --- /dev/null +++ b/SOURCES/7.4.570 @@ -0,0 +1,139 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.570 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.570 +Problem: Building with dynamic library does not work for Ruby 2.2.0 +Solution: Change #ifdefs and #defines. (Ken Takata) +Files: src/if_ruby.c + + +*** ../vim-7.4.569/src/if_ruby.c 2014-11-27 17:44:05.376820913 +0100 +--- src/if_ruby.c 2015-01-14 14:02:59.680115042 +0100 +*************** +*** 96,106 **** + # define rb_num2int rb_num2int_stub + #endif + +! #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 21 + /* Ruby 2.1 adds new GC called RGenGC and RARRAY_PTR uses + * rb_gc_writebarrier_unprotect_promoted if USE_RGENGC */ + # define rb_gc_writebarrier_unprotect_promoted rb_gc_writebarrier_unprotect_promoted_stub + #endif + + #include <ruby.h> + #ifdef RUBY19_OR_LATER +--- 96,110 ---- + # define rb_num2int rb_num2int_stub + #endif + +! #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER == 21 + /* Ruby 2.1 adds new GC called RGenGC and RARRAY_PTR uses + * rb_gc_writebarrier_unprotect_promoted if USE_RGENGC */ + # define rb_gc_writebarrier_unprotect_promoted rb_gc_writebarrier_unprotect_promoted_stub + #endif ++ #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 22 ++ # define rb_gc_writebarrier_unprotect rb_gc_writebarrier_unprotect_stub ++ # define rb_check_type rb_check_type_stub ++ #endif + + #include <ruby.h> + #ifdef RUBY19_OR_LATER +*************** +*** 180,186 **** + */ + # define rb_assoc_new dll_rb_assoc_new + # define rb_cObject (*dll_rb_cObject) +! # define rb_check_type dll_rb_check_type + # define rb_class_path dll_rb_class_path + # define rb_data_object_alloc dll_rb_data_object_alloc + # define rb_define_class_under dll_rb_define_class_under +--- 184,192 ---- + */ + # define rb_assoc_new dll_rb_assoc_new + # define rb_cObject (*dll_rb_cObject) +! # if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER < 22 +! # define rb_check_type dll_rb_check_type +! # endif + # define rb_class_path dll_rb_class_path + # define rb_data_object_alloc dll_rb_data_object_alloc + # define rb_define_class_under dll_rb_define_class_under +*************** +*** 382,388 **** +--- 388,398 ---- + # endif + + # if defined(USE_RGENGC) && USE_RGENGC ++ # if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER == 21 + static void (*dll_rb_gc_writebarrier_unprotect_promoted)(VALUE); ++ # else ++ static void (*dll_rb_gc_writebarrier_unprotect)(VALUE obj); ++ # endif + # endif + + # if defined(RUBY19_OR_LATER) && !defined(PROTO) +*************** +*** 420,429 **** +--- 430,453 ---- + + /* Do not generate a prototype here, VALUE isn't always defined. */ + # if defined(USE_RGENGC) && USE_RGENGC && !defined(PROTO) ++ # if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER == 21 + void rb_gc_writebarrier_unprotect_promoted_stub(VALUE obj) + { + dll_rb_gc_writebarrier_unprotect_promoted(obj); + } ++ # else ++ void rb_gc_writebarrier_unprotect_stub(VALUE obj) ++ { ++ dll_rb_gc_writebarrier_unprotect(obj); ++ } ++ # endif ++ # endif ++ ++ # if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 22 ++ void rb_check_type_stub(VALUE v, int i) ++ { ++ dll_rb_check_type(v, i); ++ } + # endif + + static HINSTANCE hinstRuby = NULL; /* Instance of ruby.dll */ +*************** +*** 542,548 **** +--- 566,576 ---- + {"ruby_init_stack", (RUBY_PROC*)&dll_ruby_init_stack}, + # endif + # if defined(USE_RGENGC) && USE_RGENGC ++ # if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER == 21 + {"rb_gc_writebarrier_unprotect_promoted", (RUBY_PROC*)&dll_rb_gc_writebarrier_unprotect_promoted}, ++ # else ++ {"rb_gc_writebarrier_unprotect", (RUBY_PROC*)&dll_rb_gc_writebarrier_unprotect}, ++ # endif + # endif + {"", NULL}, + }; +*** ../vim-7.4.569/src/version.c 2015-01-14 12:44:38.407422077 +0100 +--- src/version.c 2015-01-14 14:02:53.868178396 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 570, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +89. In addition to your e-mail address being on your business + cards you even have your own domain. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.571 b/SOURCES/7.4.571 new file mode 100644 index 0000000..1b86116 --- /dev/null +++ b/SOURCES/7.4.571 @@ -0,0 +1,64 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.571 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.571 (after 7.4.569) +Problem: Can't build with tiny features. (Ike Devolder) +Solution: Add #ifdef. +Files: src/getchar.c + + +*** ../vim-7.4.570/src/getchar.c 2015-01-14 12:44:38.403422124 +0100 +--- src/getchar.c 2015-01-14 14:06:14.457992406 +0100 +*************** +*** 3710,3718 **** +--- 3710,3720 ---- + else if (*keys == Ctrl_C) + { + /* If CTRL-C has been unmapped, reuse it for Interrupting. */ ++ #ifdef FEAT_LOCALMAP + if (map_table == curbuf->b_maphash) + curbuf->b_mapped_ctrl_c &= ~mode; + else ++ #endif + mapped_ctrl_c &= ~mode; + } + goto theend; +*************** +*** 3750,3758 **** +--- 3752,3762 ---- + /* If CTRL-C has been mapped, don't always use it for Interrupting. */ + if (*keys == Ctrl_C) + { ++ #ifdef FEAT_LOCALMAP + if (map_table == curbuf->b_maphash) + curbuf->b_mapped_ctrl_c |= mode; + else ++ #endif + mapped_ctrl_c |= mode; + } + +*** ../vim-7.4.570/src/version.c 2015-01-14 14:04:05.511397639 +0100 +--- src/version.c 2015-01-14 14:07:02.889464623 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 571, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +91. It's Saturday afternoon in the middle of May and you + are on computer. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.572 b/SOURCES/7.4.572 new file mode 100644 index 0000000..54423b2 --- /dev/null +++ b/SOURCES/7.4.572 @@ -0,0 +1,257 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.572 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.572 +Problem: Address type of :wincmd depends on the argument. +Solution: Check the argument. +Files: src/ex_docmd.c, src/window.c, src/proto/window.pro + + +*** ../vim-7.4.571/src/ex_docmd.c 2015-01-14 11:24:51.851582151 +0100 +--- src/ex_docmd.c 2015-01-14 14:48:24.586468863 +0100 +*************** +*** 2130,2151 **** + * is equal to the lower. + */ + +- if (ea.cmdidx != CMD_SIZE +- #ifdef FEAT_USR_CMDS +- && ea.cmdidx != CMD_USER +- && ea.cmdidx != CMD_USER_BUF +- #endif +- ) +- ea.addr_type = cmdnames[(int)ea.cmdidx].cmd_addr_type; +- else +- #ifdef FEAT_USR_CMDS +- if (ea.cmdidx != CMD_USER && ea.cmdidx != CMD_USER_BUF) +- #endif +- ea.addr_type = ADDR_LINES; + /* ea.addr_type for user commands is set by find_ucmd */ +! ea.cmd = cmd; + + /* repeat for all ',' or ';' separated addresses */ + for (;;) + { + ea.line1 = ea.line2; +--- 2130,2152 ---- + * is equal to the lower. + */ + + /* ea.addr_type for user commands is set by find_ucmd */ +! if (!IS_USER_CMDIDX(ea.cmdidx)) +! { +! if (ea.cmdidx != CMD_SIZE) +! ea.addr_type = cmdnames[(int)ea.cmdidx].cmd_addr_type; +! else +! ea.addr_type = ADDR_LINES; +! +! #ifdef FEAT_WINDOWS +! /* :wincmd range depends on the argument. */ +! if (ea.cmdidx == CMD_wincmd) +! get_wincmd_addr_type(p, &ea); +! #endif +! } + + /* repeat for all ',' or ';' separated addresses */ ++ ea.cmd = cmd; + for (;;) + { + ea.line1 = ea.line2; +*************** +*** 2181,2187 **** + { + if (*ea.cmd == '%') /* '%' - all lines */ + { +- buf_T *buf; + ++ea.cmd; + switch (ea.addr_type) + { +--- 2182,2187 ---- +*************** +*** 2190,2204 **** + ea.line2 = curbuf->b_ml.ml_line_count; + break; + case ADDR_LOADED_BUFFERS: +! buf = firstbuf; +! while (buf->b_next != NULL && buf->b_ml.ml_mfp == NULL) +! buf = buf->b_next; +! ea.line1 = buf->b_fnum; +! buf = lastbuf; +! while (buf->b_prev != NULL && buf->b_ml.ml_mfp == NULL) +! buf = buf->b_prev; +! ea.line2 = buf->b_fnum; +! break; + case ADDR_BUFFERS: + ea.line1 = firstbuf->b_fnum; + ea.line2 = lastbuf->b_fnum; +--- 2190,2209 ---- + ea.line2 = curbuf->b_ml.ml_line_count; + break; + case ADDR_LOADED_BUFFERS: +! { +! buf_T *buf = firstbuf; +! +! while (buf->b_next != NULL +! && buf->b_ml.ml_mfp == NULL) +! buf = buf->b_next; +! ea.line1 = buf->b_fnum; +! buf = lastbuf; +! while (buf->b_prev != NULL +! && buf->b_ml.ml_mfp == NULL) +! buf = buf->b_prev; +! ea.line2 = buf->b_fnum; +! break; +! } + case ADDR_BUFFERS: + ea.line1 = firstbuf->b_fnum; + ea.line2 = lastbuf->b_fnum; +*** ../vim-7.4.571/src/window.c 2014-12-13 03:58:03.794672546 +0100 +--- src/window.c 2015-01-14 15:17:18.543647480 +0100 +*************** +*** 624,629 **** +--- 624,733 ---- + } + } + ++ /* ++ * Figure out the address type for ":wnncmd". ++ */ ++ void ++ get_wincmd_addr_type(arg, eap) ++ char_u *arg; ++ exarg_T *eap; ++ { ++ switch (*arg) ++ { ++ case 'S': ++ case Ctrl_S: ++ case 's': ++ case Ctrl_N: ++ case 'n': ++ case 'j': ++ case Ctrl_J: ++ case 'k': ++ case Ctrl_K: ++ case 'T': ++ case Ctrl_R: ++ case 'r': ++ case 'R': ++ case 'K': ++ case 'J': ++ case '+': ++ case '-': ++ case Ctrl__: ++ case '_': ++ case '|': ++ case ']': ++ case Ctrl_RSB: ++ case 'g': ++ case Ctrl_G: ++ #ifdef FEAT_VERTSPLIT ++ case Ctrl_V: ++ case 'v': ++ case 'h': ++ case Ctrl_H: ++ case 'l': ++ case Ctrl_L: ++ case 'H': ++ case 'L': ++ case '>': ++ case '<': ++ #endif ++ #if defined(FEAT_QUICKFIX) ++ case '}': ++ #endif ++ #ifdef FEAT_SEARCHPATH ++ case 'f': ++ case 'F': ++ case Ctrl_F: ++ #endif ++ #ifdef FEAT_FIND_ID ++ case 'i': ++ case Ctrl_I: ++ case 'd': ++ case Ctrl_D: ++ #endif ++ /* window size or any count */ ++ eap->addr_type = ADDR_LINES; ++ break; ++ ++ case Ctrl_HAT: ++ case '^': ++ /* buffer number */ ++ eap->addr_type = ADDR_BUFFERS; ++ break; ++ ++ case Ctrl_Q: ++ case 'q': ++ case Ctrl_C: ++ case 'c': ++ case Ctrl_O: ++ case 'o': ++ case Ctrl_W: ++ case 'w': ++ case 'W': ++ case 'x': ++ case Ctrl_X: ++ /* window number */ ++ eap->addr_type = ADDR_WINDOWS; ++ break; ++ ++ #if defined(FEAT_QUICKFIX) ++ case Ctrl_Z: ++ case 'z': ++ case 'P': ++ #endif ++ case 't': ++ case Ctrl_T: ++ case 'b': ++ case Ctrl_B: ++ case 'p': ++ case Ctrl_P: ++ case '=': ++ case CAR: ++ /* no count */ ++ eap->addr_type = 0; ++ break; ++ } ++ } ++ + static void + cmd_with_count(cmd, bufp, bufsize, Prenum) + char *cmd; +*** ../vim-7.4.571/src/proto/window.pro 2014-12-17 14:47:52.870412129 +0100 +--- src/proto/window.pro 2015-01-14 15:16:37.544092744 +0100 +*************** +*** 1,5 **** +--- 1,6 ---- + /* window.c */ + void do_window __ARGS((int nchar, long Prenum, int xchar)); ++ void get_wincmd_addr_type __ARGS((char_u *arg, exarg_T *eap)); + int win_split __ARGS((int size, int flags)); + int win_split_ins __ARGS((int size, int flags, win_T *new_wp, int dir)); + int win_valid __ARGS((win_T *win)); +*** ../vim-7.4.571/src/version.c 2015-01-14 14:08:40.364402377 +0100 +--- src/version.c 2015-01-14 15:46:36.136651958 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 572, + /**/ + +-- +From "know your smileys": + :^[/ mean-smiley-with-cigarette + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.574 b/SOURCES/7.4.574 new file mode 100644 index 0000000..8fef99b --- /dev/null +++ b/SOURCES/7.4.574 @@ -0,0 +1,89 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.574 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.574 +Problem: No error for eval('$'). +Solution: Check for empty name. (Yasuhiro Matsumoto) +Files: src/eval.c + + +*** ../vim-7.4.573/src/eval.c 2014-12-13 21:00:52.059036480 +0100 +--- src/eval.c 2015-01-14 17:11:38.633570761 +0100 +*************** +*** 7867,7873 **** + if (evaluate) + { + if (len == 0) +! return FAIL; /* can't be an environment variable */ + + cc = name[len]; + name[len] = NUL; +--- 7867,7873 ---- + if (evaluate) + { + if (len == 0) +! return FAIL; /* invalid empty name */ + + cc = name[len]; + name[len] = NUL; +*************** +*** 10117,10130 **** + typval_T *argvars; + typval_T *rettv; + { +! char_u *s; + + s = get_tv_string_chk(&argvars[0]); + if (s != NULL) + s = skipwhite(s); + + if (s == NULL || eval1(&s, rettv, TRUE) == FAIL) + { + rettv->v_type = VAR_NUMBER; + rettv->vval.v_number = 0; + } +--- 10117,10134 ---- + typval_T *argvars; + typval_T *rettv; + { +! char_u *s, *p; + + s = get_tv_string_chk(&argvars[0]); + if (s != NULL) + s = skipwhite(s); + ++ p = s; + if (s == NULL || eval1(&s, rettv, TRUE) == FAIL) + { ++ if (p != NULL && !aborting()) ++ EMSG2(_(e_invexpr2), p); ++ need_clr_eos = FALSE; + rettv->v_type = VAR_NUMBER; + rettv->vval.v_number = 0; + } +*** ../vim-7.4.573/src/version.c 2015-01-14 16:08:29.210474234 +0100 +--- src/version.c 2015-01-14 17:05:25.357601603 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 574, + /**/ + +-- +From "know your smileys": + :-) Funny + |-) Funny Oriental + (-: Funny Australian + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.575 b/SOURCES/7.4.575 new file mode 100644 index 0000000..e5f67bb --- /dev/null +++ b/SOURCES/7.4.575 @@ -0,0 +1,737 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.575 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.575 +Problem: Unicode character properties are outdated. +Solution: Update the tables with the latest version. +Files: src/mbyte.c + + +*** ../vim-7.4.574/src/mbyte.c 2014-11-19 17:05:52.209648533 +0100 +--- src/mbyte.c 2015-01-14 17:23:56.509597627 +0100 +*************** +*** 1244,1263 **** + static struct interval doublewidth[] = + { + {0x1100, 0x115f}, +- {0x11a3, 0x11a7}, +- {0x11fa, 0x11ff}, + {0x2329, 0x232a}, + {0x2e80, 0x2e99}, + {0x2e9b, 0x2ef3}, + {0x2f00, 0x2fd5}, + {0x2ff0, 0x2ffb}, +! {0x3000, 0x3029}, +! {0x3030, 0x303e}, + {0x3041, 0x3096}, +! {0x309b, 0x30ff}, + {0x3105, 0x312d}, + {0x3131, 0x318e}, +! {0x3190, 0x31b7}, + {0x31c0, 0x31e3}, + {0x31f0, 0x321e}, + {0x3220, 0x3247}, +--- 1244,1260 ---- + static struct interval doublewidth[] = + { + {0x1100, 0x115f}, + {0x2329, 0x232a}, + {0x2e80, 0x2e99}, + {0x2e9b, 0x2ef3}, + {0x2f00, 0x2fd5}, + {0x2ff0, 0x2ffb}, +! {0x3000, 0x303e}, + {0x3041, 0x3096}, +! {0x3099, 0x30ff}, + {0x3105, 0x312d}, + {0x3131, 0x318e}, +! {0x3190, 0x31ba}, + {0x31c0, 0x31e3}, + {0x31f0, 0x321e}, + {0x3220, 0x3247}, +*************** +*** 1267,1274 **** + {0xa490, 0xa4c6}, + {0xa960, 0xa97c}, + {0xac00, 0xd7a3}, +- {0xd7b0, 0xd7c6}, +- {0xd7cb, 0xd7fb}, + {0xf900, 0xfaff}, + {0xfe10, 0xfe19}, + {0xfe30, 0xfe52}, +--- 1264,1269 ---- +*************** +*** 1276,1287 **** + {0xfe68, 0xfe6b}, + {0xff01, 0xff60}, + {0xffe0, 0xffe6}, +! {0x1f200, 0x1f200}, +! {0x1f210, 0x1f231}, + {0x1f240, 0x1f248}, + {0x20000, 0x2fffd}, + {0x30000, 0x3fffd} + }; + /* Sorted list of non-overlapping intervals of East Asian Ambiguous + * characters, generated with ../runtime/tools/unicode.vim. */ + static struct interval ambiguous[] = +--- 1271,1285 ---- + {0xfe68, 0xfe6b}, + {0xff01, 0xff60}, + {0xffe0, 0xffe6}, +! {0x1b000, 0x1b001}, +! {0x1f200, 0x1f202}, +! {0x1f210, 0x1f23a}, + {0x1f240, 0x1f248}, ++ {0x1f250, 0x1f251}, + {0x20000, 0x2fffd}, + {0x30000, 0x3fffd} + }; ++ + /* Sorted list of non-overlapping intervals of East Asian Ambiguous + * characters, generated with ../runtime/tools/unicode.vim. */ + static struct interval ambiguous[] = +*************** +*** 1339,1344 **** +--- 1337,1343 ---- + {0x02d8, 0x02db}, + {0x02dd, 0x02dd}, + {0x02df, 0x02df}, ++ {0x0300, 0x036f}, + {0x0391, 0x03a1}, + {0x03a3, 0x03a9}, + {0x03b1, 0x03c1}, +*************** +*** 1449,1470 **** + {0x2b55, 0x2b59}, + {0x3248, 0x324f}, + {0xe000, 0xf8ff}, + {0xfffd, 0xfffd}, + {0x1f100, 0x1f10a}, + {0x1f110, 0x1f12d}, +! {0x1f131, 0x1f131}, +! {0x1f13d, 0x1f13d}, +! {0x1f13f, 0x1f13f}, +! {0x1f142, 0x1f142}, +! {0x1f146, 0x1f146}, +! {0x1f14a, 0x1f14e}, +! {0x1f157, 0x1f157}, +! {0x1f15f, 0x1f15f}, +! {0x1f179, 0x1f179}, +! {0x1f17b, 0x1f17c}, +! {0x1f17f, 0x1f17f}, +! {0x1f18a, 0x1f18d}, +! {0x1f190, 0x1f190}, + {0xf0000, 0xffffd}, + {0x100000, 0x10fffd} + }; +--- 1448,1460 ---- + {0x2b55, 0x2b59}, + {0x3248, 0x324f}, + {0xe000, 0xf8ff}, ++ {0xfe00, 0xfe0f}, + {0xfffd, 0xfffd}, + {0x1f100, 0x1f10a}, + {0x1f110, 0x1f12d}, +! {0x1f130, 0x1f169}, +! {0x1f170, 0x1f19a}, +! {0xe0100, 0xe01ef}, + {0xf0000, 0xffffd}, + {0x100000, 0x10fffd} + }; +*************** +*** 2261,2270 **** + {0x05c4, 0x05c5}, + {0x05c7, 0x05c7}, + {0x0610, 0x061a}, +! {0x064b, 0x065e}, + {0x0670, 0x0670}, + {0x06d6, 0x06dc}, +! {0x06de, 0x06e4}, + {0x06e7, 0x06e8}, + {0x06ea, 0x06ed}, + {0x0711, 0x0711}, +--- 2251,2260 ---- + {0x05c4, 0x05c5}, + {0x05c7, 0x05c7}, + {0x0610, 0x061a}, +! {0x064b, 0x065f}, + {0x0670, 0x0670}, + {0x06d6, 0x06dc}, +! {0x06df, 0x06e4}, + {0x06e7, 0x06e8}, + {0x06ea, 0x06ed}, + {0x0711, 0x0711}, +*************** +*** 2275,2284 **** + {0x081b, 0x0823}, + {0x0825, 0x0827}, + {0x0829, 0x082d}, +! {0x0900, 0x0903}, +! {0x093c, 0x093c}, +! {0x093e, 0x094e}, +! {0x0951, 0x0955}, + {0x0962, 0x0963}, + {0x0981, 0x0983}, + {0x09bc, 0x09bc}, +--- 2265,2275 ---- + {0x081b, 0x0823}, + {0x0825, 0x0827}, + {0x0829, 0x082d}, +! {0x0859, 0x085b}, +! {0x08e4, 0x0903}, +! {0x093a, 0x093c}, +! {0x093e, 0x094f}, +! {0x0951, 0x0957}, + {0x0962, 0x0963}, + {0x0981, 0x0983}, + {0x09bc, 0x09bc}, +*************** +*** 2313,2332 **** + {0x0bc6, 0x0bc8}, + {0x0bca, 0x0bcd}, + {0x0bd7, 0x0bd7}, +! {0x0c01, 0x0c03}, + {0x0c3e, 0x0c44}, + {0x0c46, 0x0c48}, + {0x0c4a, 0x0c4d}, + {0x0c55, 0x0c56}, + {0x0c62, 0x0c63}, +! {0x0c82, 0x0c83}, + {0x0cbc, 0x0cbc}, + {0x0cbe, 0x0cc4}, + {0x0cc6, 0x0cc8}, + {0x0cca, 0x0ccd}, + {0x0cd5, 0x0cd6}, + {0x0ce2, 0x0ce3}, +! {0x0d02, 0x0d03}, + {0x0d3e, 0x0d44}, + {0x0d46, 0x0d48}, + {0x0d4a, 0x0d4d}, +--- 2304,2323 ---- + {0x0bc6, 0x0bc8}, + {0x0bca, 0x0bcd}, + {0x0bd7, 0x0bd7}, +! {0x0c00, 0x0c03}, + {0x0c3e, 0x0c44}, + {0x0c46, 0x0c48}, + {0x0c4a, 0x0c4d}, + {0x0c55, 0x0c56}, + {0x0c62, 0x0c63}, +! {0x0c81, 0x0c83}, + {0x0cbc, 0x0cbc}, + {0x0cbe, 0x0cc4}, + {0x0cc6, 0x0cc8}, + {0x0cca, 0x0ccd}, + {0x0cd5, 0x0cd6}, + {0x0ce2, 0x0ce3}, +! {0x0d01, 0x0d03}, + {0x0d3e, 0x0d44}, + {0x0d46, 0x0d48}, + {0x0d4a, 0x0d4d}, +*************** +*** 2352,2358 **** + {0x0f3e, 0x0f3f}, + {0x0f71, 0x0f84}, + {0x0f86, 0x0f87}, +! {0x0f90, 0x0f97}, + {0x0f99, 0x0fbc}, + {0x0fc6, 0x0fc6}, + {0x102b, 0x103e}, +--- 2343,2349 ---- + {0x0f3e, 0x0f3f}, + {0x0f71, 0x0f84}, + {0x0f86, 0x0f87}, +! {0x0f8d, 0x0f97}, + {0x0f99, 0x0fbc}, + {0x0fc6, 0x0fc6}, + {0x102b, 0x103e}, +*************** +*** 2364,2375 **** + {0x1082, 0x108d}, + {0x108f, 0x108f}, + {0x109a, 0x109d}, +! {0x135f, 0x135f}, + {0x1712, 0x1714}, + {0x1732, 0x1734}, + {0x1752, 0x1753}, + {0x1772, 0x1773}, +! {0x17b6, 0x17d3}, + {0x17dd, 0x17dd}, + {0x180b, 0x180d}, + {0x18a9, 0x18a9}, +--- 2355,2366 ---- + {0x1082, 0x108d}, + {0x108f, 0x108f}, + {0x109a, 0x109d}, +! {0x135d, 0x135f}, + {0x1712, 0x1714}, + {0x1732, 0x1734}, + {0x1752, 0x1753}, + {0x1772, 0x1773}, +! {0x17b4, 0x17d3}, + {0x17dd, 0x17dd}, + {0x180b, 0x180d}, + {0x18a9, 0x18a9}, +*************** +*** 2381,2405 **** + {0x1a55, 0x1a5e}, + {0x1a60, 0x1a7c}, + {0x1a7f, 0x1a7f}, + {0x1b00, 0x1b04}, + {0x1b34, 0x1b44}, + {0x1b6b, 0x1b73}, + {0x1b80, 0x1b82}, +! {0x1ba1, 0x1baa}, + {0x1c24, 0x1c37}, + {0x1cd0, 0x1cd2}, + {0x1cd4, 0x1ce8}, + {0x1ced, 0x1ced}, +! {0x1cf2, 0x1cf2}, +! {0x1dc0, 0x1de6}, +! {0x1dfd, 0x1dff}, + {0x20d0, 0x20f0}, + {0x2cef, 0x2cf1}, + {0x2de0, 0x2dff}, + {0x302a, 0x302f}, + {0x3099, 0x309a}, + {0xa66f, 0xa672}, +! {0xa67c, 0xa67d}, + {0xa6f0, 0xa6f1}, + {0xa802, 0xa802}, + {0xa806, 0xa806}, +--- 2372,2401 ---- + {0x1a55, 0x1a5e}, + {0x1a60, 0x1a7c}, + {0x1a7f, 0x1a7f}, ++ {0x1ab0, 0x1abe}, + {0x1b00, 0x1b04}, + {0x1b34, 0x1b44}, + {0x1b6b, 0x1b73}, + {0x1b80, 0x1b82}, +! {0x1ba1, 0x1bad}, +! {0x1be6, 0x1bf3}, + {0x1c24, 0x1c37}, + {0x1cd0, 0x1cd2}, + {0x1cd4, 0x1ce8}, + {0x1ced, 0x1ced}, +! {0x1cf2, 0x1cf4}, +! {0x1cf8, 0x1cf9}, +! {0x1dc0, 0x1df5}, +! {0x1dfc, 0x1dff}, + {0x20d0, 0x20f0}, + {0x2cef, 0x2cf1}, ++ {0x2d7f, 0x2d7f}, + {0x2de0, 0x2dff}, + {0x302a, 0x302f}, + {0x3099, 0x309a}, + {0xa66f, 0xa672}, +! {0xa674, 0xa67d}, +! {0xa69f, 0xa69f}, + {0xa6f0, 0xa6f1}, + {0xa802, 0xa802}, + {0xa806, 0xa806}, +*************** +*** 2412,2445 **** + {0xa947, 0xa953}, + {0xa980, 0xa983}, + {0xa9b3, 0xa9c0}, + {0xaa29, 0xaa36}, + {0xaa43, 0xaa43}, + {0xaa4c, 0xaa4d}, +! {0xaa7b, 0xaa7b}, + {0xaab0, 0xaab0}, + {0xaab2, 0xaab4}, + {0xaab7, 0xaab8}, + {0xaabe, 0xaabf}, + {0xaac1, 0xaac1}, + {0xabe3, 0xabea}, + {0xabec, 0xabed}, + {0xfb1e, 0xfb1e}, + {0xfe00, 0xfe0f}, +! {0xfe20, 0xfe26}, + {0x101fd, 0x101fd}, + {0x10a01, 0x10a03}, + {0x10a05, 0x10a06}, + {0x10a0c, 0x10a0f}, + {0x10a38, 0x10a3a}, + {0x10a3f, 0x10a3f}, +! {0x11080, 0x11082}, + {0x110b0, 0x110ba}, + {0x1d165, 0x1d169}, + {0x1d16d, 0x1d172}, + {0x1d17b, 0x1d182}, + {0x1d185, 0x1d18b}, + {0x1d1aa, 0x1d1ad}, + {0x1d242, 0x1d244}, + {0xe0100, 0xe01ef} + }; + +--- 2408,2476 ---- + {0xa947, 0xa953}, + {0xa980, 0xa983}, + {0xa9b3, 0xa9c0}, ++ {0xa9e5, 0xa9e5}, + {0xaa29, 0xaa36}, + {0xaa43, 0xaa43}, + {0xaa4c, 0xaa4d}, +! {0xaa7b, 0xaa7d}, + {0xaab0, 0xaab0}, + {0xaab2, 0xaab4}, + {0xaab7, 0xaab8}, + {0xaabe, 0xaabf}, + {0xaac1, 0xaac1}, ++ {0xaaeb, 0xaaef}, ++ {0xaaf5, 0xaaf6}, + {0xabe3, 0xabea}, + {0xabec, 0xabed}, + {0xfb1e, 0xfb1e}, + {0xfe00, 0xfe0f}, +! {0xfe20, 0xfe2d}, + {0x101fd, 0x101fd}, ++ {0x102e0, 0x102e0}, ++ {0x10376, 0x1037a}, + {0x10a01, 0x10a03}, + {0x10a05, 0x10a06}, + {0x10a0c, 0x10a0f}, + {0x10a38, 0x10a3a}, + {0x10a3f, 0x10a3f}, +! {0x10ae5, 0x10ae6}, +! {0x11000, 0x11002}, +! {0x11038, 0x11046}, +! {0x1107f, 0x11082}, + {0x110b0, 0x110ba}, ++ {0x11100, 0x11102}, ++ {0x11127, 0x11134}, ++ {0x11173, 0x11173}, ++ {0x11180, 0x11182}, ++ {0x111b3, 0x111c0}, ++ {0x1122c, 0x11237}, ++ {0x112df, 0x112ea}, ++ {0x11301, 0x11303}, ++ {0x1133c, 0x1133c}, ++ {0x1133e, 0x11344}, ++ {0x11347, 0x11348}, ++ {0x1134b, 0x1134d}, ++ {0x11357, 0x11357}, ++ {0x11362, 0x11363}, ++ {0x11366, 0x1136c}, ++ {0x11370, 0x11374}, ++ {0x114b0, 0x114c3}, ++ {0x115af, 0x115b5}, ++ {0x115b8, 0x115c0}, ++ {0x11630, 0x11640}, ++ {0x116ab, 0x116b7}, ++ {0x16af0, 0x16af4}, ++ {0x16b30, 0x16b36}, ++ {0x16f51, 0x16f7e}, ++ {0x16f8f, 0x16f92}, ++ {0x1bc9d, 0x1bc9e}, + {0x1d165, 0x1d169}, + {0x1d16d, 0x1d172}, + {0x1d17b, 0x1d182}, + {0x1d185, 0x1d18b}, + {0x1d1aa, 0x1d1ad}, + {0x1d242, 0x1d244}, ++ {0x1e8d0, 0x1e8d6}, + {0xe0100, 0xe01ef} + }; + +*************** +*** 2679,2684 **** +--- 2710,2716 ---- + {0x345,0x345,-1,116}, + {0x370,0x372,2,1}, + {0x376,0x376,-1,1}, ++ {0x37f,0x37f,-1,116}, + {0x386,0x386,-1,38}, + {0x388,0x38a,1,37}, + {0x38c,0x38c,-1,64}, +*************** +*** 2706,2714 **** + {0x48a,0x4be,2,1}, + {0x4c0,0x4c0,-1,15}, + {0x4c1,0x4cd,2,1}, +! {0x4d0,0x524,2,1}, + {0x531,0x556,1,48}, + {0x10a0,0x10c5,1,7264}, + {0x1e00,0x1e94,2,1}, + {0x1e9b,0x1e9b,-1,-58}, + {0x1e9e,0x1e9e,-1,-7615}, +--- 2738,2747 ---- + {0x48a,0x4be,2,1}, + {0x4c0,0x4c0,-1,15}, + {0x4c1,0x4cd,2,1}, +! {0x4d0,0x52e,2,1}, + {0x531,0x556,1,48}, + {0x10a0,0x10c5,1,7264}, ++ {0x10c7,0x10cd,6,7264}, + {0x1e00,0x1e94,2,1}, + {0x1e9b,0x1e9b,-1,-58}, + {0x1e9e,0x1e9e,-1,-7615}, +*************** +*** 2758,2774 **** + {0x2c7e,0x2c7f,1,-10815}, + {0x2c80,0x2ce2,2,1}, + {0x2ceb,0x2ced,2,1}, +! {0xa640,0xa65e,2,1}, +! {0xa662,0xa66c,2,1}, +! {0xa680,0xa696,2,1}, + {0xa722,0xa72e,2,1}, + {0xa732,0xa76e,2,1}, + {0xa779,0xa77b,2,1}, + {0xa77d,0xa77d,-1,-35332}, + {0xa77e,0xa786,2,1}, + {0xa78b,0xa78b,-1,1}, + {0xff21,0xff3a,1,32}, +! {0x10400,0x10427,1,40} + }; + + static int utf_convert __ARGS((int a, convertStruct table[], int tableSize)); +--- 2791,2817 ---- + {0x2c7e,0x2c7f,1,-10815}, + {0x2c80,0x2ce2,2,1}, + {0x2ceb,0x2ced,2,1}, +! {0x2cf2,0xa640,31054,1}, +! {0xa642,0xa66c,2,1}, +! {0xa680,0xa69a,2,1}, + {0xa722,0xa72e,2,1}, + {0xa732,0xa76e,2,1}, + {0xa779,0xa77b,2,1}, + {0xa77d,0xa77d,-1,-35332}, + {0xa77e,0xa786,2,1}, + {0xa78b,0xa78b,-1,1}, ++ {0xa78d,0xa78d,-1,-42280}, ++ {0xa790,0xa792,2,1}, ++ {0xa796,0xa7a8,2,1}, ++ {0xa7aa,0xa7aa,-1,-42308}, ++ {0xa7ab,0xa7ab,-1,-42319}, ++ {0xa7ac,0xa7ac,-1,-42315}, ++ {0xa7ad,0xa7ad,-1,-42305}, ++ {0xa7b0,0xa7b0,-1,-42258}, ++ {0xa7b1,0xa7b1,-1,-42282}, + {0xff21,0xff3a,1,32}, +! {0x10400,0x10427,1,40}, +! {0x118a0,0x118bf,1,32} + }; + + static int utf_convert __ARGS((int a, convertStruct table[], int tableSize)); +*************** +*** 2885,2890 **** +--- 2928,2934 ---- + {0x246,0x24e,2,1}, + {0x370,0x372,2,1}, + {0x376,0x376,-1,1}, ++ {0x37f,0x37f,-1,116}, + {0x386,0x386,-1,38}, + {0x388,0x38a,1,37}, + {0x38c,0x38c,-1,64}, +*************** +*** 2904,2912 **** + {0x48a,0x4be,2,1}, + {0x4c0,0x4c0,-1,15}, + {0x4c1,0x4cd,2,1}, +! {0x4d0,0x524,2,1}, + {0x531,0x556,1,48}, + {0x10a0,0x10c5,1,7264}, + {0x1e00,0x1e94,2,1}, + {0x1e9e,0x1e9e,-1,-7615}, + {0x1ea0,0x1efe,2,1}, +--- 2948,2957 ---- + {0x48a,0x4be,2,1}, + {0x4c0,0x4c0,-1,15}, + {0x4c1,0x4cd,2,1}, +! {0x4d0,0x52e,2,1}, + {0x531,0x556,1,48}, + {0x10a0,0x10c5,1,7264}, ++ {0x10c7,0x10cd,6,7264}, + {0x1e00,0x1e94,2,1}, + {0x1e9e,0x1e9e,-1,-7615}, + {0x1ea0,0x1efe,2,1}, +*************** +*** 2954,2977 **** + {0x2c7e,0x2c7f,1,-10815}, + {0x2c80,0x2ce2,2,1}, + {0x2ceb,0x2ced,2,1}, +! {0xa640,0xa65e,2,1}, +! {0xa662,0xa66c,2,1}, +! {0xa680,0xa696,2,1}, + {0xa722,0xa72e,2,1}, + {0xa732,0xa76e,2,1}, + {0xa779,0xa77b,2,1}, + {0xa77d,0xa77d,-1,-35332}, + {0xa77e,0xa786,2,1}, + {0xa78b,0xa78b,-1,1}, + {0xff21,0xff3a,1,32}, +! {0x10400,0x10427,1,40} + }; + + static convertStruct toUpper[] = + { + {0x61,0x7a,1,-32}, + {0xb5,0xb5,-1,743}, +! {0xe0,0xf6,1,-32}, /* 0xdf (German sharp s) is not upper-cased */ + {0xf8,0xfe,1,-32}, + {0xff,0xff,-1,121}, + {0x101,0x12f,2,-1}, +--- 2999,3032 ---- + {0x2c7e,0x2c7f,1,-10815}, + {0x2c80,0x2ce2,2,1}, + {0x2ceb,0x2ced,2,1}, +! {0x2cf2,0xa640,31054,1}, +! {0xa642,0xa66c,2,1}, +! {0xa680,0xa69a,2,1}, + {0xa722,0xa72e,2,1}, + {0xa732,0xa76e,2,1}, + {0xa779,0xa77b,2,1}, + {0xa77d,0xa77d,-1,-35332}, + {0xa77e,0xa786,2,1}, + {0xa78b,0xa78b,-1,1}, ++ {0xa78d,0xa78d,-1,-42280}, ++ {0xa790,0xa792,2,1}, ++ {0xa796,0xa7a8,2,1}, ++ {0xa7aa,0xa7aa,-1,-42308}, ++ {0xa7ab,0xa7ab,-1,-42319}, ++ {0xa7ac,0xa7ac,-1,-42315}, ++ {0xa7ad,0xa7ad,-1,-42305}, ++ {0xa7b0,0xa7b0,-1,-42258}, ++ {0xa7b1,0xa7b1,-1,-42282}, + {0xff21,0xff3a,1,32}, +! {0x10400,0x10427,1,40}, +! {0x118a0,0x118bf,1,32} + }; + + static convertStruct toUpper[] = + { + {0x61,0x7a,1,-32}, + {0xb5,0xb5,-1,743}, +! {0xe0,0xf6,1,-32}, + {0xf8,0xfe,1,-32}, + {0xff,0xff,-1,121}, + {0x101,0x12f,2,-1}, +*************** +*** 3021,3042 **** +--- 3076,3104 ---- + {0x256,0x257,1,-205}, + {0x259,0x259,-1,-202}, + {0x25b,0x25b,-1,-203}, ++ {0x25c,0x25c,-1,42319}, + {0x260,0x260,-1,-205}, ++ {0x261,0x261,-1,42315}, + {0x263,0x263,-1,-207}, ++ {0x265,0x265,-1,42280}, ++ {0x266,0x266,-1,42308}, + {0x268,0x268,-1,-209}, + {0x269,0x269,-1,-211}, + {0x26b,0x26b,-1,10743}, ++ {0x26c,0x26c,-1,42305}, + {0x26f,0x26f,-1,-211}, + {0x271,0x271,-1,10749}, + {0x272,0x272,-1,-213}, + {0x275,0x275,-1,-214}, + {0x27d,0x27d,-1,10727}, + {0x280,0x283,3,-218}, ++ {0x287,0x287,-1,42282}, + {0x288,0x288,-1,-218}, + {0x289,0x289,-1,-69}, + {0x28a,0x28b,1,-217}, + {0x28c,0x28c,-1,-71}, + {0x292,0x292,-1,-219}, ++ {0x29e,0x29e,-1,42258}, + {0x345,0x345,-1,84}, + {0x371,0x373,2,-1}, + {0x377,0x377,-1,-1}, +*************** +*** 3057,3062 **** +--- 3119,3125 ---- + {0x3f0,0x3f0,-1,-86}, + {0x3f1,0x3f1,-1,-80}, + {0x3f2,0x3f2,-1,7}, ++ {0x3f3,0x3f3,-1,-116}, + {0x3f5,0x3f5,-1,-96}, + {0x3f8,0x3fb,3,-1}, + {0x430,0x44f,1,-32}, +*************** +*** 3065,3071 **** + {0x48b,0x4bf,2,-1}, + {0x4c2,0x4ce,2,-1}, + {0x4cf,0x4cf,-1,-15}, +! {0x4d1,0x525,2,-1}, + {0x561,0x586,1,-48}, + {0x1d79,0x1d79,-1,35332}, + {0x1d7d,0x1d7d,-1,3814}, +--- 3128,3134 ---- + {0x48b,0x4bf,2,-1}, + {0x4c2,0x4ce,2,-1}, + {0x4cf,0x4cf,-1,-15}, +! {0x4d1,0x52f,2,-1}, + {0x561,0x586,1,-48}, + {0x1d79,0x1d79,-1,35332}, + {0x1d7d,0x1d7d,-1,3814}, +*************** +*** 3108,3126 **** + {0x2c73,0x2c76,3,-1}, + {0x2c81,0x2ce3,2,-1}, + {0x2cec,0x2cee,2,-1}, + {0x2d00,0x2d25,1,-7264}, +! {0xa641,0xa65f,2,-1}, +! {0xa663,0xa66d,2,-1}, +! {0xa681,0xa697,2,-1}, + {0xa723,0xa72f,2,-1}, + {0xa733,0xa76f,2,-1}, + {0xa77a,0xa77c,2,-1}, + {0xa77f,0xa787,2,-1}, +! {0xa78c,0xa78c,-1,-1}, + {0xff41,0xff5a,1,-32}, +! {0x10428,0x1044f,1,-40} + }; +- + /* + * Return the upper-case equivalent of "a", which is a UCS-4 character. Use + * simple case folding. +--- 3171,3192 ---- + {0x2c73,0x2c76,3,-1}, + {0x2c81,0x2ce3,2,-1}, + {0x2cec,0x2cee,2,-1}, ++ {0x2cf3,0x2cf3,-1,-1}, + {0x2d00,0x2d25,1,-7264}, +! {0x2d27,0x2d2d,6,-7264}, +! {0xa641,0xa66d,2,-1}, +! {0xa681,0xa69b,2,-1}, + {0xa723,0xa72f,2,-1}, + {0xa733,0xa76f,2,-1}, + {0xa77a,0xa77c,2,-1}, + {0xa77f,0xa787,2,-1}, +! {0xa78c,0xa791,5,-1}, +! {0xa793,0xa797,4,-1}, +! {0xa799,0xa7a9,2,-1}, + {0xff41,0xff5a,1,-32}, +! {0x10428,0x1044f,1,-40}, +! {0x118c0,0x118df,1,-32} + }; + /* + * Return the upper-case equivalent of "a", which is a UCS-4 character. Use + * simple case folding. +*** ../vim-7.4.574/src/version.c 2015-01-14 17:14:57.351424263 +0100 +--- src/version.c 2015-01-14 17:25:39.336485325 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 575, + /**/ + +-- +From "know your smileys": + :~) A man with a tape recorder up his nose + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.576 b/SOURCES/7.4.576 new file mode 100644 index 0000000..b5bc665 --- /dev/null +++ b/SOURCES/7.4.576 @@ -0,0 +1,181 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.576 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.576 +Problem: Redrawing problem with 'relativenumber' and 'linebreak'. +Solution: Temporarily reset 'linebreak' and restore it in more places. + (Christian Brabandt) +Files: src/normal.c + + +*** ../vim-7.4.575/src/normal.c 2014-10-31 13:54:21.843214469 +0100 +--- src/normal.c 2015-01-14 17:49:38.320915425 +0100 +*************** +*** 1393,1402 **** + int include_line_break = FALSE; + #endif + +- #ifdef FEAT_LINEBREAK +- curwin->w_p_lbr = FALSE; /* Avoid a problem with unwanted linebreaks in +- * block mode. */ +- #endif + #if defined(FEAT_CLIPBOARD) + /* + * Yank the visual area into the GUI selection register before we operate +--- 1393,1398 ---- +*************** +*** 1420,1425 **** +--- 1416,1425 ---- + */ + if ((finish_op || VIsual_active) && oap->op_type != OP_NOP) + { ++ #ifdef FEAT_LINEBREAK ++ /* Avoid a problem with unwanted linebreaks in block mode. */ ++ curwin->w_p_lbr = FALSE; ++ #endif + oap->is_VIsual = VIsual_active; + if (oap->motion_force == 'V') + oap->motion_type = MLINE; +*************** +*** 1819,1825 **** +--- 1819,1831 ---- + || oap->op_type == OP_FUNCTION + || oap->op_type == OP_FILTER) + && oap->motion_force == NUL) ++ { ++ #ifdef FEAT_LINEBREAK ++ /* make sure redrawing is correct */ ++ curwin->w_p_lbr = lbr_saved; ++ #endif + redraw_curbuf_later(INVERTED); ++ } + } + } + +*************** +*** 1863,1869 **** +--- 1869,1880 ---- + || oap->op_type == OP_FOLD + #endif + )) ++ { ++ #ifdef FEAT_LINEBREAK ++ curwin->w_p_lbr = lbr_saved; ++ #endif + redraw_curbuf_later(INVERTED); ++ } + + /* + * If the end of an operator is in column one while oap->motion_type +*************** +*** 1947,1953 **** +--- 1958,1969 ---- + } + } + else ++ { ++ #ifdef FEAT_LINEBREAK ++ curwin->w_p_lbr = lbr_saved; ++ #endif + (void)op_yank(oap, FALSE, !gui_yank); ++ } + check_cursor_col(); + break; + +*************** +*** 1969,1974 **** +--- 1985,1995 ---- + else + restart_edit_save = 0; + restart_edit = 0; ++ #ifdef FEAT_LINEBREAK ++ /* Restore linebreak, so that when the user edits it looks as ++ * before. */ ++ curwin->w_p_lbr = lbr_saved; ++ #endif + /* Reset finish_op now, don't want it set inside edit(). */ + finish_op = FALSE; + if (op_change(oap)) /* will call edit() */ +*************** +*** 2064,2071 **** + * Visual mode. But do this only once. */ + restart_edit_save = restart_edit; + restart_edit = 0; +! + op_insert(oap, cap->count1); + + /* TODO: when inserting in several lines, should format all + * the lines. */ +--- 2085,2100 ---- + * Visual mode. But do this only once. */ + restart_edit_save = restart_edit; + restart_edit = 0; +! #ifdef FEAT_LINEBREAK +! /* Restore linebreak, so that when the user edits it looks as +! * before. */ +! curwin->w_p_lbr = lbr_saved; +! #endif + op_insert(oap, cap->count1); ++ #ifdef FEAT_LINEBREAK ++ /* Reset linebreak, so that formatting works correctly. */ ++ curwin->w_p_lbr = FALSE; ++ #endif + + /* TODO: when inserting in several lines, should format all + * the lines. */ +*************** +*** 2090,2096 **** +--- 2119,2132 ---- + } + #ifdef FEAT_VISUALEXTRA + else ++ { ++ #ifdef FEAT_LINEBREAK ++ /* Restore linebreak, so that when the user edits it looks as ++ * before. */ ++ curwin->w_p_lbr = lbr_saved; ++ #endif + op_replace(oap, cap->nchar); ++ } + #endif + break; + +*************** +*** 2134,2140 **** +--- 2170,2181 ---- + if (!p_sol && oap->motion_type == MLINE && !oap->end_adjusted + && (oap->op_type == OP_LSHIFT || oap->op_type == OP_RSHIFT + || oap->op_type == OP_DELETE)) ++ { ++ #ifdef FEAT_LINEBREAK ++ curwin->w_p_lbr = FALSE; ++ #endif + coladvance(curwin->w_curswant = old_col); ++ } + } + else + { +*** ../vim-7.4.575/src/version.c 2015-01-14 17:40:04.407125696 +0100 +--- src/version.c 2015-01-14 17:47:45.898132017 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 576, + /**/ + +-- +From "know your smileys": + :-H Is missing teeth + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.577 b/SOURCES/7.4.577 new file mode 100644 index 0000000..dd15f02 --- /dev/null +++ b/SOURCES/7.4.577 @@ -0,0 +1,92 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.577 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.577 +Problem: Matching with a virtual column has a lot of overhead on very long + lines. (Issue 310) +Solution: Bail out early if there can't be a match. (Christian Brabandt) + Also check for CTRL-C at every position. +Files: src/regexp_nfa.c + + +*** ../vim-7.4.576/src/regexp_nfa.c 2014-11-23 15:57:45.568009419 +0100 +--- src/regexp_nfa.c 2015-01-14 18:40:12.263887756 +0100 +*************** +*** 6438,6451 **** + case NFA_VCOL: + case NFA_VCOL_GT: + case NFA_VCOL_LT: +- result = nfa_re_num_cmp(t->state->val, t->state->c - NFA_VCOL, +- (long_u)win_linetabsize( +- reg_win == NULL ? curwin : reg_win, +- regline, (colnr_T)(reginput - regline)) + 1); +- if (result) + { +! add_here = TRUE; +! add_state = t->state->out; + } + break; + +--- 6438,6461 ---- + case NFA_VCOL: + case NFA_VCOL_GT: + case NFA_VCOL_LT: + { +! int op = t->state->c - NFA_VCOL; +! colnr_T col = (colnr_T)(reginput - regline); +! +! /* Bail out quickly when there can't be a match, avoid the +! * overhead of win_linetabsize() on long lines. */ +! if ((col > t->state->val && op != 1) +! || (col - 1 > t->state->val && op == 1)) +! break; +! result = nfa_re_num_cmp(t->state->val, op, +! (long_u)win_linetabsize( +! reg_win == NULL ? curwin : reg_win, +! regline, col) + 1); +! if (result) +! { +! add_here = TRUE; +! add_state = t->state->out; +! } + } + break; + +*************** +*** 6744,6749 **** +--- 6754,6764 ---- + reg_nextline(); + else + break; ++ ++ /* Allow interrupting with CTRL-C. */ ++ fast_breakcheck(); ++ if (got_int) ++ break; + } + + #ifdef ENABLE_LOG +*** ../vim-7.4.576/src/version.c 2015-01-14 17:52:26.603094340 +0100 +--- src/version.c 2015-01-14 18:34:10.375843602 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 577, + /**/ + +-- +From "know your smileys": + !-| I-am-a-Cylon-Centurian-with-one-red-eye-bouncing-back-and-forth + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.578 b/SOURCES/7.4.578 new file mode 100644 index 0000000..49fdd7f --- /dev/null +++ b/SOURCES/7.4.578 @@ -0,0 +1,54 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.578 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.578 +Problem: Using getcurpos() after "$" in an empty line returns a negative + number. +Solution: Don't add one when this would overflow. (Hirohito Higashi) +Files: src/eval.c + + +*** ../vim-7.4.577/src/eval.c 2015-01-14 17:14:57.351424263 +0100 +--- src/eval.c 2015-01-14 18:55:46.945664363 +0100 +*************** +*** 11941,11947 **** + #endif + (varnumber_T)0); + if (getcurpos) +! list_append_number(l, (varnumber_T)curwin->w_curswant + 1); + } + else + rettv->vval.v_number = FALSE; +--- 11941,11948 ---- + #endif + (varnumber_T)0); + if (getcurpos) +! list_append_number(l, curwin->w_curswant == MAXCOL ? +! (varnumber_T)MAXCOL : (varnumber_T)curwin->w_curswant + 1); + } + else + rettv->vval.v_number = FALSE; +*** ../vim-7.4.577/src/version.c 2015-01-14 18:40:23.087769463 +0100 +--- src/version.c 2015-01-14 18:54:47.734312885 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 578, + /**/ + +-- +From "know your smileys": + ~#:-( I just washed my hair, and I can't do nuthin' with it. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.579 b/SOURCES/7.4.579 new file mode 100644 index 0000000..daf7f65 --- /dev/null +++ b/SOURCES/7.4.579 @@ -0,0 +1,169 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.579 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.579 +Problem: Wrong cursor positioning when 'linebreak' is set and lines wrap. +Solution: Solve it. (Christian Brabandt) +Files: src/charset.c, src/screen.c + + +*** ../vim-7.4.578/src/charset.c 2014-10-31 12:41:57.427319153 +0100 +--- src/charset.c 2015-01-14 19:34:38.916109031 +0100 +*************** +*** 1178,1205 **** + added = 0; + if ((*p_sbr != NUL || wp->w_p_bri) && wp->w_p_wrap && col != 0) + { +! numberextra = win_col_off(wp); + col += numberextra + mb_added; + if (col >= (colnr_T)W_WIDTH(wp)) + { + col -= W_WIDTH(wp); + numberextra = W_WIDTH(wp) - (numberextra - win_col_off2(wp)); +! if (numberextra > 0) + col %= numberextra; + if (*p_sbr != NUL) + { +! colnr_T sbrlen = (colnr_T)MB_CHARLEN(p_sbr); + if (col >= sbrlen) + col -= sbrlen; + } +! if (numberextra > 0) + col = col % numberextra; + } +! if (col == 0 || col + size > (colnr_T)W_WIDTH(wp)) + { + added = 0; + if (*p_sbr != NUL) +! added += vim_strsize(p_sbr); + if (wp->w_p_bri) + added += get_breakindent_win(wp, line); + +--- 1178,1227 ---- + added = 0; + if ((*p_sbr != NUL || wp->w_p_bri) && wp->w_p_wrap && col != 0) + { +! colnr_T sbrlen = 0; +! int numberwidth = win_col_off(wp); +! +! numberextra = numberwidth; + col += numberextra + mb_added; + if (col >= (colnr_T)W_WIDTH(wp)) + { + col -= W_WIDTH(wp); + numberextra = W_WIDTH(wp) - (numberextra - win_col_off2(wp)); +! if (col >= numberextra && numberextra > 0) + col %= numberextra; + if (*p_sbr != NUL) + { +! sbrlen = (colnr_T)MB_CHARLEN(p_sbr); + if (col >= sbrlen) + col -= sbrlen; + } +! if (col >= numberextra && numberextra > 0) + col = col % numberextra; ++ else if (col > 0 && numberextra > 0) ++ col += numberwidth - win_col_off2(wp); ++ ++ numberwidth -= win_col_off2(wp); + } +! if (col == 0 || col + size + sbrlen > (colnr_T)W_WIDTH(wp)) + { + added = 0; + if (*p_sbr != NUL) +! { +! if (size + sbrlen + numberwidth > (colnr_T)W_WIDTH(wp)) +! { +! /* 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; +! if (width == 0) +! width = (colnr_T)W_WIDTH(wp); +! added += ((size - prev_width) / width) * vim_strsize(p_sbr); +! if ((size - prev_width) % width) +! /* wrapped, add another length of 'sbr' */ +! added += vim_strsize(p_sbr); +! } +! else +! added += vim_strsize(p_sbr); +! } + if (wp->w_p_bri) + added += get_breakindent_win(wp, line); + +*** ../vim-7.4.578/src/screen.c 2015-01-07 19:04:25.299934570 +0100 +--- src/screen.c 2015-01-14 19:27:46.428652958 +0100 +*************** +*** 2842,2847 **** +--- 2842,2850 ---- + unsigned off; /* offset in ScreenLines/ScreenAttrs */ + int c = 0; /* init for GCC */ + long vcol = 0; /* virtual column (for tabs) */ ++ #ifdef FEAT_LINEBREAK ++ long vcol_sbr = -1; /* virtual column after showbreak */ ++ #endif + long vcol_prev = -1; /* "vcol" of previous character */ + char_u *line; /* current line */ + char_u *ptr; /* current position in "line" */ +*************** +*** 3759,3764 **** +--- 3762,3768 ---- + n_extra = (int)STRLEN(p_sbr); + char_attr = hl_attr(HLF_AT); + need_showbreak = FALSE; ++ vcol_sbr = vcol + MB_CHARLEN(p_sbr); + /* Correct end of highlighted area for 'showbreak', + * required when 'linebreak' is also set. */ + if (tocol == vcol) +*************** +*** 4516,4524 **** + if (c == TAB && (!wp->w_p_list || lcs_tab1)) + { + int tab_len = 0; + /* tab amount depends on current column */ + tab_len = (int)wp->w_buffer->b_p_ts +! - vcol % (int)wp->w_buffer->b_p_ts - 1; + #ifdef FEAT_LINEBREAK + if (!wp->w_p_lbr || !wp->w_p_list) + #endif +--- 4520,4536 ---- + if (c == TAB && (!wp->w_p_list || lcs_tab1)) + { + int tab_len = 0; ++ long vcol_adjusted = vcol; /* removed showbreak length */ ++ #ifdef FEAT_LINEBREAK ++ /* only adjust the tab_len, when at the first column ++ * after the showbreak value was drawn */ ++ if (*p_sbr != NUL && vcol == vcol_sbr && wp->w_p_wrap) ++ vcol_adjusted = vcol - MB_CHARLEN(p_sbr); ++ #endif + /* tab amount depends on current column */ + tab_len = (int)wp->w_buffer->b_p_ts +! - vcol_adjusted % (int)wp->w_buffer->b_p_ts - 1; +! + #ifdef FEAT_LINEBREAK + if (!wp->w_p_lbr || !wp->w_p_list) + #endif +*** ../vim-7.4.578/src/version.c 2015-01-14 19:00:33.842522901 +0100 +--- src/version.c 2015-01-14 19:28:47.291982266 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 579, + /**/ + +-- +From "know your smileys": + O:-) Saint + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.580 b/SOURCES/7.4.580 new file mode 100644 index 0000000..50675f8 --- /dev/null +++ b/SOURCES/7.4.580 @@ -0,0 +1,54 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.580 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.580 +Problem: ":52wincmd v" still gives an invalid range error. (Charles + Campbell) +Solution: Skip over white space. +Files: src/ex_docmd.c + + +*** ../vim-7.4.579/src/ex_docmd.c 2015-01-14 15:47:33.076036876 +0100 +--- src/ex_docmd.c 2015-01-14 21:17:20.831813232 +0100 +*************** +*** 2140,2147 **** + + #ifdef FEAT_WINDOWS + /* :wincmd range depends on the argument. */ +! if (ea.cmdidx == CMD_wincmd) +! get_wincmd_addr_type(p, &ea); + #endif + } + +--- 2140,2147 ---- + + #ifdef FEAT_WINDOWS + /* :wincmd range depends on the argument. */ +! if (ea.cmdidx == CMD_wincmd && p != NULL) +! get_wincmd_addr_type(skipwhite(p), &ea); + #endif + } + +*** ../vim-7.4.579/src/version.c 2015-01-14 19:35:10.967756099 +0100 +--- src/version.c 2015-01-14 21:19:22.418461266 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 580, + /**/ + +-- +How many light bulbs does it take to change a person? + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.581 b/SOURCES/7.4.581 new file mode 100644 index 0000000..390f840 --- /dev/null +++ b/SOURCES/7.4.581 @@ -0,0 +1,64 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.581 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.581 +Problem: Compiler warnings for unitinialized variables. (John Little) +Solution: Initialize the variables. +Files: src/ops.c + + +*** ../vim-7.4.580/src/ops.c 2014-12-17 21:00:44.989871256 +0100 +--- src/ops.c 2015-01-18 14:06:49.480786101 +0100 +*************** +*** 5663,5670 **** + int set_prev = FALSE; + char_u *str; + char_u **array = NULL; +! int new_type; +! colnr_T new_width; + + /* We only get here (hopefully) if line[0] == '"' */ + str = virp->vir_line + 1; +--- 5663,5670 ---- + int set_prev = FALSE; + char_u *str; + char_u **array = NULL; +! int new_type = MCHAR; /* init to shut up compiler */ +! colnr_T new_width = 0; /* init to shut up compiler */ + + /* We only get here (hopefully) if line[0] == '"' */ + str = virp->vir_line + 1; +*************** +*** 5747,5752 **** +--- 5747,5753 ---- + do_it = FALSE; + } + } ++ + if (do_it) + { + /* free y_array[] */ +*** ../vim-7.4.580/src/version.c 2015-01-14 21:21:56.924743601 +0100 +--- src/version.c 2015-01-18 14:07:36.712268926 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 581, + /**/ + +-- +From "know your smileys": + :-D Big smile + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.582 b/SOURCES/7.4.582 new file mode 100644 index 0000000..cf66c48 --- /dev/null +++ b/SOURCES/7.4.582 @@ -0,0 +1,117 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.582 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.582 (after 7.4.577) +Problem: Can't match "%>80v" properly. (Axel Bender) +Solution: Correctly handle ">". (Christian Brabandt) +Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok + + +*** ../vim-7.4.581/src/regexp_nfa.c 2015-01-14 18:40:23.083769507 +0100 +--- src/regexp_nfa.c 2015-01-18 16:38:05.437339384 +0100 +*************** +*** 6441,6456 **** + { + int op = t->state->c - NFA_VCOL; + colnr_T col = (colnr_T)(reginput - regline); + + /* Bail out quickly when there can't be a match, avoid the + * overhead of win_linetabsize() on long lines. */ +! if ((col > t->state->val && op != 1) +! || (col - 1 > t->state->val && op == 1)) + break; +! result = nfa_re_num_cmp(t->state->val, op, +! (long_u)win_linetabsize( +! reg_win == NULL ? curwin : reg_win, +! regline, col) + 1); + if (result) + { + add_here = TRUE; +--- 6441,6466 ---- + { + int op = t->state->c - NFA_VCOL; + colnr_T col = (colnr_T)(reginput - regline); ++ win_T *wp = reg_win == NULL ? curwin : reg_win; + + /* Bail out quickly when there can't be a match, avoid the + * overhead of win_linetabsize() on long lines. */ +! if (op != 1 && col > t->state->val) + break; +! result = FALSE; +! if (op == 1 && col - 1 > t->state->val && col > 100) +! { +! int ts = wp->w_buffer->b_p_ts; +! +! /* Guess that a character won't use more columns than +! * 'tabstop', with a minimum of 4. */ +! if (ts < 4) +! ts = 4; +! result = col > t->state->val * ts; +! } +! if (!result) +! result = nfa_re_num_cmp(t->state->val, op, +! (long_u)win_linetabsize(wp, regline, col) + 1); + if (result) + { + add_here = TRUE; +*** ../vim-7.4.581/src/testdir/test64.in 2014-08-29 11:56:21.350422045 +0200 +--- src/testdir/test64.in 2015-01-18 16:09:31.852099488 +0100 +*************** +*** 7,12 **** +--- 7,13 ---- + STARTTEST + :so small.vim + :" tl is a List of Lists with: ++ :" regexp engine + :" regexp pattern + :" text to test the pattern on + :" expected match (optional) +*************** +*** 451,456 **** +--- 452,460 ---- + :"""" Skip adding state twice + :call add(tl, [2, '^\%(\%(^\s*#\s*if\>\|#\s*if\)\)\(\%>1c.*$\)\@=', "#if FOO", "#if", ' FOO']) + :" ++ :""" Test \%V atom ++ :call add(tl, [2, '\%>70vGesamt', 'Jean-Michel Charlier & Victor Hubinon\Gesamtausgabe [Salleck] Buck Danny {Jean-Michel Charlier & Victor Hubinon}\Gesamtausgabe', 'Gesamt']) ++ :" + :"""" Run the tests + :" + :for t in tl +*** ../vim-7.4.581/src/testdir/test64.ok 2014-08-29 11:56:21.350422045 +0200 +--- src/testdir/test64.ok 2015-01-18 16:09:31.852099488 +0100 +*************** +*** 1030,1035 **** +--- 1030,1038 ---- + OK 0 - ^\%(\%(^\s*#\s*if\>\|#\s*if\)\)\(\%>1c.*$\)\@= + OK 1 - ^\%(\%(^\s*#\s*if\>\|#\s*if\)\)\(\%>1c.*$\)\@= + OK 2 - ^\%(\%(^\s*#\s*if\>\|#\s*if\)\)\(\%>1c.*$\)\@= ++ OK 0 - \%>70vGesamt ++ OK 1 - \%>70vGesamt ++ OK 2 - \%>70vGesamt + multi-line tests + OK 0 - ^.\(.\).\_..\1. + OK 1 - ^.\(.\).\_..\1. +*** ../vim-7.4.581/src/version.c 2015-01-18 14:08:52.699436994 +0100 +--- src/version.c 2015-01-18 16:12:32.682119256 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 582, + /**/ + +-- +There's no place like $(HOME)! + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.583 b/SOURCES/7.4.583 new file mode 100644 index 0000000..037e77b --- /dev/null +++ b/SOURCES/7.4.583 @@ -0,0 +1,46 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.583 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.583 +Problem: With tiny features test 16 may fail. +Solution: Source small.vim. (Christian Brabandt) +Files: src/testdir/test16.in + + +*** ../vim-7.4.582/src/testdir/test16.in 2012-10-11 04:02:11.000000000 +0200 +--- src/testdir/test16.in 2015-01-20 12:01:28.895462263 +0100 +*************** +*** 2,7 **** +--- 2,8 ---- + For KDE set a font, empty 'guifont' may cause a hang. + + STARTTEST ++ :so small.vim + :if $DISPLAY == "" | e! test.ok | wq! test.out | endif + :set exrc secure + :if has("gui_kde") +*** ../vim-7.4.582/src/version.c 2015-01-18 16:46:28.987828395 +0100 +--- src/version.c 2015-01-20 12:02:13.234978619 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 583, + /**/ + +-- +I AM THANKFUL... +...for the mess to clean after a party because it means I have +been surrounded by friends. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.584 b/SOURCES/7.4.584 new file mode 100644 index 0000000..3e116e2 --- /dev/null +++ b/SOURCES/7.4.584 @@ -0,0 +1,56 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.584 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.584 +Problem: With tiny features test_command_count may fail. +Solution: Source small.vim. (Christian Brabandt) +Files: src/testdir/test_command_count.in + + +*** ../vim-7.4.583/src/testdir/test_command_count.in 2015-01-07 16:52:53.506792420 +0100 +--- src/testdir/test_command_count.in 2015-01-20 12:39:27.630490602 +0100 +*************** +*** 1,7 **** + Test for user command counts vim: set ft=vim : + + STARTTEST +! :so tiny.vim + :let g:lines = [] + :com -range=% RangeLines :call add(g:lines, 'RangeLines '.<line1>.' '.<line2>) + :com -range -addr=arguments RangeArguments :call add(g:lines, 'RangeArguments '.<line1>.' '.<line2>) +--- 1,7 ---- + Test for user command counts vim: set ft=vim : + + STARTTEST +! :so small.vim + :let g:lines = [] + :com -range=% RangeLines :call add(g:lines, 'RangeLines '.<line1>.' '.<line2>) + :com -range -addr=arguments RangeArguments :call add(g:lines, 'RangeArguments '.<line1>.' '.<line2>) +*** ../vim-7.4.583/src/version.c 2015-01-20 12:13:56.975270382 +0100 +--- src/version.c 2015-01-20 12:36:04.068720526 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 584, + /**/ + +-- +The primary purpose of the DATA statement is to give names to constants; +instead of referring to pi as 3.141592653589793 at every appearance, the +variable PI can be given that value with a DATA statement and used instead +of the longer form of the constant. This also simplifies modifying the +program, should the value of pi change. + -- FORTRAN manual for Xerox Computers + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.585 b/SOURCES/7.4.585 new file mode 100644 index 0000000..d28714c --- /dev/null +++ b/SOURCES/7.4.585 @@ -0,0 +1,131 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.585 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.585 +Problem: Range for :bdelete does not work. (Ronald Schild) +Solution: Also allow unloaded buffers. +Files: src/ex_cmds.h, src/testdir/test_command_count.in, + src/testdir/test_command_count.ok + + +*** ../vim-7.4.584/src/ex_cmds.h 2015-01-07 16:52:53.506792420 +0100 +--- src/ex_cmds.h 2015-01-20 13:22:16.778245812 +0100 +*************** +*** 173,179 **** + ADDR_LINES), + EX(CMD_bdelete, "bdelete", ex_bunload, + BANG|RANGE|NOTADR|BUFNAME|COUNT|EXTRA|TRLBAR, +! ADDR_LOADED_BUFFERS), + EX(CMD_behave, "behave", ex_behave, + NEEDARG|WORD1|TRLBAR|CMDWIN, + ADDR_LINES), +--- 173,179 ---- + ADDR_LINES), + EX(CMD_bdelete, "bdelete", ex_bunload, + BANG|RANGE|NOTADR|BUFNAME|COUNT|EXTRA|TRLBAR, +! ADDR_BUFFERS), + EX(CMD_behave, "behave", ex_behave, + NEEDARG|WORD1|TRLBAR|CMDWIN, + ADDR_LINES), +*** ../vim-7.4.584/src/testdir/test_command_count.in 2015-01-20 12:39:35.918399822 +0100 +--- src/testdir/test_command_count.in 2015-01-20 13:21:55.510479070 +0100 +*************** +*** 92,102 **** + :call append(0, g:lines) + :unlet g:lines + :w|bd +- :se hidden + :b1 + ENDTEST + + STARTTEST + :only! + :let g:lines = [] + :%argd +--- 92,128 ---- + :call append(0, g:lines) + :unlet g:lines + :w|bd + :b1 + ENDTEST + + STARTTEST ++ :let g:lines = [] ++ :func BufStatus() ++ : call add(g:lines, 'aaa: ' . buflisted(g:buf_aaa) . ' bbb: ' . buflisted(g:buf_bbb) . ' ccc: ' . buflisted(g:buf_ccc)) ++ :endfunc ++ :se nohidden ++ :e aaa ++ :let buf_aaa = bufnr('%') ++ :e bbb ++ :let buf_bbb = bufnr('%') ++ :e ccc ++ :let buf_ccc = bufnr('%') ++ :b1 ++ :call BufStatus() ++ :exe buf_bbb . "," . buf_ccc . "bdelete" ++ :call BufStatus() ++ :exe buf_aaa . "bdelete" ++ :call BufStatus() ++ :e! test.out ++ :call append('$', g:lines) ++ :unlet g:lines ++ :delfunc BufStatus ++ :w|bd ++ :b1 ++ ENDTEST ++ ++ STARTTEST ++ :se hidden + :only! + :let g:lines = [] + :%argd +*** ../vim-7.4.584/src/testdir/test_command_count.ok 2015-01-14 11:24:51.851582151 +0100 +--- src/testdir/test_command_count.ok 2015-01-20 13:16:03.358341733 +0100 +*************** +*** 28,35 **** + $+tabe E16: Invalid range + 0tabm x + + argdo: c d e + windo: 2 3 4 +! bufdo: 2 3 4 5 6 7 8 9 10 12 + bufdo: 3 4 5 6 7 + tabdo: 2 3 4 +--- 28,38 ---- + $+tabe E16: Invalid range + 0tabm x + ++ aaa: 1 bbb: 1 ccc: 1 ++ aaa: 1 bbb: 0 ccc: 0 ++ aaa: 0 bbb: 0 ccc: 0 + argdo: c d e + windo: 2 3 4 +! bufdo: 2 3 4 5 6 7 8 9 10 15 + bufdo: 3 4 5 6 7 + tabdo: 2 3 4 +*** ../vim-7.4.584/src/version.c 2015-01-20 12:39:35.918399822 +0100 +--- src/version.c 2015-01-20 13:27:49.438597595 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 585, + /**/ + +-- +I AM THANKFUL... +...for a lawn that needs mowing, windows that need cleaning +and gutters that need fixing because it means I have a home. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.586 b/SOURCES/7.4.586 new file mode 100644 index 0000000..3fb001f --- /dev/null +++ b/SOURCES/7.4.586 @@ -0,0 +1,45 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.586 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.586 +Problem: Parallel building of the documentation html files is not reliable. +Solution: Remove a cyclic dependency. (Reiner Herrmann) +Files: runtime/doc/Makefile + + +*** ../vim-7.4.585/runtime/doc/Makefile 2010-07-21 20:38:06.000000000 +0200 +--- runtime/doc/Makefile 2015-01-20 17:24:26.743888063 +0100 +*************** +*** 229,235 **** + starting.html \ + syntax.html \ + tabpage.html \ +- tags.html \ + tagsrch.html \ + term.html \ + tips.html \ +--- 229,234 ---- +*** ../vim-7.4.585/src/version.c 2015-01-20 13:29:46.397315064 +0100 +--- src/version.c 2015-01-20 17:25:55.974918912 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 586, + /**/ + +-- +From "know your smileys": + |-( Contact lenses, but has lost them + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.587 b/SOURCES/7.4.587 new file mode 100644 index 0000000..ff97be1 --- /dev/null +++ b/SOURCES/7.4.587 @@ -0,0 +1,225 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.587 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.587 +Problem: Conceal does not work properly with 'linebreak'. (cs86661) +Solution: Save and restore boguscols. (Christian Brabandt) +Files: src/screen.c, src/testdir/test_listlbr_utf8.in, + src/testdir/test_listlbr_utf8.ok + + +*** ../vim-7.4.586/src/screen.c 2015-01-14 19:35:10.967756099 +0100 +--- src/screen.c 2015-01-20 18:57:39.114986010 +0100 +*************** +*** 3003,3008 **** +--- 3003,3009 ---- + wrapping */ + int vcol_off = 0; /* offset for concealed characters */ + int did_wcol = FALSE; ++ int old_boguscols = 0; + # define VCOL_HLC (vcol - vcol_off) + # define FIX_FOR_BOGUSCOLS \ + { \ +*************** +*** 3010,3015 **** +--- 3011,3017 ---- + vcol -= vcol_off; \ + vcol_off = 0; \ + col -= boguscols; \ ++ old_boguscols = boguscols; \ + boguscols = 0; \ + } + #else +*************** +*** 4545,4554 **** + int saved_nextra = n_extra; + + #ifdef FEAT_CONCEAL +! if (is_concealing && vcol_off > 0) + /* there are characters to conceal */ + tab_len += vcol_off; + #endif + /* if n_extra > 0, it gives the number of chars, to + * use for a tab, else we need to calculate the width + * for a tab */ +--- 4547,4562 ---- + int saved_nextra = n_extra; + + #ifdef FEAT_CONCEAL +! if ((is_concealing || boguscols > 0) && vcol_off > 0) + /* there are characters to conceal */ + tab_len += vcol_off; ++ /* boguscols before FIX_FOR_BOGUSCOLS macro from above ++ */ ++ if (wp->w_p_list && lcs_tab1 && old_boguscols > 0 ++ && n_extra > tab_len) ++ tab_len += n_extra - tab_len; + #endif ++ + /* if n_extra > 0, it gives the number of chars, to + * use for a tab, else we need to calculate the width + * for a tab */ +*************** +*** 4577,4583 **** + #ifdef FEAT_CONCEAL + /* n_extra will be increased by FIX_FOX_BOGUSCOLS + * macro below, so need to adjust for that here */ +! if (is_concealing && vcol_off > 0) + n_extra -= vcol_off; + #endif + } +--- 4585,4591 ---- + #ifdef FEAT_CONCEAL + /* n_extra will be increased by FIX_FOX_BOGUSCOLS + * macro below, so need to adjust for that here */ +! if ((is_concealing || boguscols > 0) && vcol_off > 0) + n_extra -= vcol_off; + #endif + } +*************** +*** 4590,4595 **** +--- 4598,4609 ---- + * the tab can be longer than 'tabstop' when there + * are concealed characters. */ + FIX_FOR_BOGUSCOLS; ++ /* Make sure, the highlighting for the tab char will be ++ * correctly set further below (effectively reverts the ++ * FIX_FOR_BOGSUCOLS macro */ ++ if (old_boguscols > 0 && n_extra > tab_len && wp->w_p_list ++ && lcs_tab1) ++ tab_len += n_extra - tab_len; + #endif + #ifdef FEAT_MBYTE + mb_utf8 = FALSE; /* don't draw as UTF-8 */ +*** ../vim-7.4.586/src/testdir/test_listlbr_utf8.in 2014-07-30 16:44:17.499534723 +0200 +--- src/testdir/test_listlbr_utf8.in 2015-01-20 18:55:32.060370459 +0100 +*************** +*** 9,17 **** + :put =\"\tabcdef hijklmn\tpqrstuvwxyz\u00a01060ABCDEFGHIJKLMNOP \" + :norm! zt + :set ts=4 sw=4 sts=4 linebreak sbr=+ wrap +! :fu! ScreenChar(width) + : let c='' +! : for j in range(1,4) + : for i in range(1,a:width) + : let c.=nr2char(screenchar(j, i)) + : endfor +--- 9,17 ---- + :put =\"\tabcdef hijklmn\tpqrstuvwxyz\u00a01060ABCDEFGHIJKLMNOP \" + :norm! zt + :set ts=4 sw=4 sts=4 linebreak sbr=+ wrap +! :fu! ScreenChar(width, lines) + : let c='' +! : for j in range(1,a:lines) + : for i in range(1,a:width) + : let c.=nr2char(screenchar(j, i)) + : endfor +*************** +*** 28,40 **** + :let g:test ="Test 1: set linebreak + set list + fancy listchars" + :exe "set linebreak list listchars=nbsp:\u2423,tab:\u2595\u2014,trail:\u02d1,eol:\ub6" + :redraw! +! :let line=ScreenChar(winwidth(0)) + :call DoRecordScreen() + :" + :let g:test ="Test 2: set nolinebreak list" + :set list nolinebreak + :redraw! +! :let line=ScreenChar(winwidth(0)) + :call DoRecordScreen() + :" + :let g:test ="Test 3: set linebreak nolist" +--- 28,40 ---- + :let g:test ="Test 1: set linebreak + set list + fancy listchars" + :exe "set linebreak list listchars=nbsp:\u2423,tab:\u2595\u2014,trail:\u02d1,eol:\ub6" + :redraw! +! :let line=ScreenChar(winwidth(0),4) + :call DoRecordScreen() + :" + :let g:test ="Test 2: set nolinebreak list" + :set list nolinebreak + :redraw! +! :let line=ScreenChar(winwidth(0),4) + :call DoRecordScreen() + :" + :let g:test ="Test 3: set linebreak nolist" +*************** +*** 43,51 **** + :norm! zt + :set nolist linebreak + :redraw! +! :let line=ScreenChar(winwidth(0)) + :call DoRecordScreen() +- :" + :%w! test.out + :qa! + ENDTEST +--- 43,61 ---- + :norm! zt + :set nolist linebreak + :redraw! +! :let line=ScreenChar(winwidth(0),4) +! :call DoRecordScreen() +! :let g:test ="Test 4: set linebreak list listchars and concealing" +! :let c_defines=['#define ABCDE 1','#define ABCDEF 1','#define ABCDEFG 1','#define ABCDEFGH 1', '#define MSG_MODE_FILE 1','#define MSG_MODE_CONSOLE 2','#define MSG_MODE_FILE_AND_CONSOLE 3','#define MSG_MODE_FILE_THEN_CONSOLE 4'] +! :call append('$', c_defines) +! :vert resize 40 +! :$-7 +! :norm! zt +! :set list linebreak listchars=tab:>- cole=1 +! :syn match Conceal conceal cchar=>'AB\|MSG_MODE' +! :redraw! +! :let line=ScreenChar(winwidth(0),7) + :call DoRecordScreen() + :%w! test.out + :qa! + ENDTEST +*** ../vim-7.4.586/src/testdir/test_listlbr_utf8.ok 2014-07-30 16:44:17.499534723 +0200 +--- src/testdir/test_listlbr_utf8.ok 2015-01-20 18:55:32.060370459 +0100 +*************** +*** 19,21 **** +--- 19,38 ---- + ~ + ~ + ~ ++ #define ABCDE 1 ++ #define ABCDEF 1 ++ #define ABCDEFG 1 ++ #define ABCDEFGH 1 ++ #define MSG_MODE_FILE 1 ++ #define MSG_MODE_CONSOLE 2 ++ #define MSG_MODE_FILE_AND_CONSOLE 3 ++ #define MSG_MODE_FILE_THEN_CONSOLE 4 ++ ++ Test 4: set linebreak list listchars and concealing ++ #define ABCDE>-->---1 ++ #define >CDEF>-->---1 ++ #define >CDEFG>->---1 ++ #define >CDEFGH>----1 ++ #define >_FILE>--------->--->---1 ++ #define >_CONSOLE>---------->---2 ++ #define >_FILE_AND_CONSOLE>---------3 +*** ../vim-7.4.586/src/version.c 2015-01-20 17:27:18.154026317 +0100 +--- src/version.c 2015-01-20 19:01:11.448672365 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 587, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +93. New mail alarm on your palmtop annoys other churchgoers. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.588 b/SOURCES/7.4.588 new file mode 100644 index 0000000..10448c8 --- /dev/null +++ b/SOURCES/7.4.588 @@ -0,0 +1,183 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.588 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.588 +Problem: ":0argedit foo" puts the new argument in the second place instead + of the first. +Solution: Adjust the range type. (Ingo Karkat) +Files: src/ex_cmds.h, src/testdir/Make_amiga.mak, + src/testdir/Make_dos.mak, src/testdir/Make_ming.mak, + src/testdir/Make_os2.mak, src/testdir/Make_vms.mms, + src/testdir/Makefile, src/testdir/test_argument_0count.in, + src/testdir/test_argument_0count.ok + + +*** ../vim-7.4.587/src/ex_cmds.h 2015-01-20 13:29:46.397315064 +0100 +--- src/ex_cmds.h 2015-01-20 19:23:58.901739397 +0100 +*************** +*** 136,142 **** + BANG|NEEDARG|EXTRA|NOTRLCOM|RANGE|NOTADR|DFLALL, + ADDR_ARGUMENTS), + EX(CMD_argedit, "argedit", ex_argedit, +! BANG|NEEDARG|RANGE|NOTADR|FILE1|EDITCMD|ARGOPT|TRLBAR, + ADDR_ARGUMENTS), + EX(CMD_argglobal, "argglobal", ex_args, + BANG|FILES|EDITCMD|ARGOPT|TRLBAR, +--- 136,142 ---- + BANG|NEEDARG|EXTRA|NOTRLCOM|RANGE|NOTADR|DFLALL, + ADDR_ARGUMENTS), + EX(CMD_argedit, "argedit", ex_argedit, +! BANG|NEEDARG|RANGE|NOTADR|ZEROR|FILE1|EDITCMD|ARGOPT|TRLBAR, + ADDR_ARGUMENTS), + EX(CMD_argglobal, "argglobal", ex_args, + BANG|FILES|EDITCMD|ARGOPT|TRLBAR, +*** ../vim-7.4.587/src/testdir/Make_amiga.mak 2014-12-13 21:00:52.059036480 +0100 +--- src/testdir/Make_amiga.mak 2015-01-20 19:22:46.050535656 +0100 +*************** +*** 36,41 **** +--- 36,42 ---- + test94.out test95.out test96.out test97.out test98.out \ + test99.out test100.out test101.out test102.out test103.out \ + test104.out test105.out test106.out test107.out \ ++ test_argument_0count.out \ + test_argument_count.out \ + test_autoformat_join.out \ + test_breakindent.out \ +*************** +*** 175,180 **** +--- 176,182 ---- + test105.out: test105.in + test106.out: test106.in + test107.out: test107.in ++ test_argument_0count.out: test_argument_0count.in + test_argument_count.out: test_argument_count.in + test_autoformat_join.out: test_autoformat_join.in + test_breakindent.out: test_breakindent.in +*** ../vim-7.4.587/src/testdir/Make_dos.mak 2014-12-13 21:00:52.059036480 +0100 +--- src/testdir/Make_dos.mak 2015-01-20 19:22:46.050535656 +0100 +*************** +*** 35,40 **** +--- 35,41 ---- + test94.out test95.out test96.out test98.out test99.out \ + test100.out test101.out test102.out test103.out test104.out \ + test105.out test106.out test107.out\ ++ test_argument_0count.out \ + test_argument_count.out \ + test_autoformat_join.out \ + test_breakindent.out \ +*** ../vim-7.4.587/src/testdir/Make_ming.mak 2014-12-13 21:00:52.059036480 +0100 +--- src/testdir/Make_ming.mak 2015-01-20 19:22:46.050535656 +0100 +*************** +*** 57,62 **** +--- 57,63 ---- + test94.out test95.out test96.out test98.out test99.out \ + test100.out test101.out test102.out test103.out test104.out \ + test105.out test106.out test107.out \ ++ test_argument_0count.out \ + test_argument_count.out \ + test_autoformat_join.out \ + test_breakindent.out \ +*** ../vim-7.4.587/src/testdir/Make_os2.mak 2014-12-13 21:00:52.059036480 +0100 +--- src/testdir/Make_os2.mak 2015-01-20 19:22:46.050535656 +0100 +*************** +*** 37,42 **** +--- 37,43 ---- + test94.out test95.out test96.out test98.out test99.out \ + test100.out test101.out test102.out test103.out test104.out \ + test105.out test106.out test107.out \ ++ test_argument_0count.out \ + test_argument_count.out \ + test_autoformat_join.out \ + test_breakindent.out \ +*** ../vim-7.4.587/src/testdir/Make_vms.mms 2014-12-13 21:00:52.059036480 +0100 +--- src/testdir/Make_vms.mms 2015-01-20 19:22:46.050535656 +0100 +*************** +*** 96,101 **** +--- 96,102 ---- + test95.out test96.out test98.out test99.out \ + test100.out test101.out test103.out test104.out \ + test105.out test106.out test107.out \ ++ test_argument_0count.out \ + test_argument_count.out \ + test_autoformat_join.out \ + test_breakindent.out \ +*** ../vim-7.4.587/src/testdir/Makefile 2014-12-13 21:00:52.059036480 +0100 +--- src/testdir/Makefile 2015-01-20 19:22:46.050535656 +0100 +*************** +*** 33,38 **** +--- 33,39 ---- + test94.out test95.out test96.out test97.out test98.out \ + test99.out test100.out test101.out test102.out test103.out \ + test104.out test105.out test106.out test107.out \ ++ test_argument_0count.out \ + test_argument_count.out \ + test_autoformat_join.out \ + test_breakindent.out \ +*** ../vim-7.4.587/src/testdir/test_argument_0count.in 2015-01-20 19:30:28.969469550 +0100 +--- src/testdir/test_argument_0count.in 2015-01-20 19:22:46.050535656 +0100 +*************** +*** 0 **** +--- 1,28 ---- ++ Tests for :0argadd and :0argedit vim: set ft=vim : ++ ++ STARTTEST ++ :so small.vim ++ :let arglists = [] ++ :%argd ++ :arga a b c d ++ :2argu ++ :0arga added ++ :call add(arglists, argv()) ++ :2argu ++ :arga third ++ :call add(arglists, argv()) ++ :%argd ++ :arga a b c d ++ :2argu ++ :0arge edited ++ :call add(arglists, argv()) ++ :2argu ++ :arga third ++ :call add(arglists, argv()) ++ :e! test.out ++ :call append(0, map(copy(arglists), 'join(v:val, " ")')) ++ :w ++ :qa! ++ ENDTEST ++ ++ +*** ../vim-7.4.587/src/testdir/test_argument_0count.ok 2015-01-20 19:30:28.973469506 +0100 +--- src/testdir/test_argument_0count.ok 2015-01-20 19:22:46.050535656 +0100 +*************** +*** 0 **** +--- 1,5 ---- ++ added a b c d ++ added a third b c d ++ edited a b c d ++ edited a third b c d ++ +*** ../vim-7.4.587/src/version.c 2015-01-20 19:01:32.384444246 +0100 +--- src/version.c 2015-01-20 19:21:15.335527208 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 588, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +94. Now admit it... How many of you have made "modem noises" into + the phone just to see if it was possible? :-) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.589 b/SOURCES/7.4.589 new file mode 100644 index 0000000..f869902 --- /dev/null +++ b/SOURCES/7.4.589 @@ -0,0 +1,79 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.589 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.589 +Problem: In the MS-Windows console Vim can't handle greek characters when + encoding is utf-8. +Solution: Escape K_NUL. (Yasuhiro Matsumoto) +Files: src/os_win32.c + + +*** ../vim-7.4.588/src/os_win32.c 2014-11-12 16:10:44.254085193 +0100 +--- src/os_win32.c 2015-01-20 19:36:59.725188180 +0100 +*************** +*** 1814,1831 **** + if (conv) + { + char_u *p = typeahead + typeaheadlen; +- char_u *e = typeahead + TYPEAHEADLEN; + +! while (*p && p < e) + { +! if (*p == K_NUL) + { + ++p; +- mch_memmove(p + 1, p, ((size_t)(e - p)) - 1); +- *p = 3; +- ++n; + } +- ++p; + } + } + +--- 1814,1835 ---- + if (conv) + { + char_u *p = typeahead + typeaheadlen; + +! if (*p != K_NUL) + { +! char_u *e = typeahead + TYPEAHEADLEN; +! +! while (*p && p < e) + { ++ if (*p == K_NUL) ++ { ++ ++p; ++ mch_memmove(p + 1, p, ((size_t)(e - p)) - 1); ++ *p = 3; ++ ++n; ++ } + ++p; + } + } + } + +*** ../vim-7.4.588/src/version.c 2015-01-20 19:30:46.669275579 +0100 +--- src/version.c 2015-01-20 19:35:35.774107846 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 589, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +95. Only communication in your household is through email. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.590 b/SOURCES/7.4.590 new file mode 100644 index 0000000..b8afcf9 --- /dev/null +++ b/SOURCES/7.4.590 @@ -0,0 +1,51 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.590 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.590 +Problem: Using ctrl_x_mode as if it contains flags. +Solution: Don't use AND with CTRL_X_OMNI. (Hirohito Higashi) +Files: src/edit.c + + +*** ../vim-7.4.589/src/edit.c 2014-11-12 18:59:17.602000656 +0100 +--- src/edit.c 2015-01-20 19:43:45.376745467 +0100 +*************** +*** 3394,3400 **** + * allow the word to be deleted, we won't match everything. */ + if ((int)(p - line) - (int)compl_col < 0 + || ((int)(p - line) - (int)compl_col == 0 +! && (ctrl_x_mode & CTRL_X_OMNI) == 0)) + return K_BS; + + /* Deleted more than what was used to find matches or didn't finish +--- 3394,3400 ---- + * allow the word to be deleted, we won't match everything. */ + if ((int)(p - line) - (int)compl_col < 0 + || ((int)(p - line) - (int)compl_col == 0 +! && ctrl_x_mode != CTRL_X_OMNI)) + return K_BS; + + /* Deleted more than what was used to find matches or didn't finish +*** ../vim-7.4.589/src/version.c 2015-01-20 19:39:31.655524020 +0100 +--- src/version.c 2015-01-22 22:40:04.297786215 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 590, + /**/ + +-- +Laughing helps. It's like jogging on the inside. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.591 b/SOURCES/7.4.591 new file mode 100644 index 0000000..ab6871a --- /dev/null +++ b/SOURCES/7.4.591 @@ -0,0 +1,53 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.591 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.591 (after 7.4.587) +Problem: test_listlbr_utf8 fails when the conceal feature is not available. +Solution: Check for the conceal feature. (Kazunobu Kuriyama) +Files: src/testdir/test_listlbr_utf8.in + + +*** ../vim-7.4.590/src/testdir/test_listlbr_utf8.in 2015-01-20 19:01:32.380444290 +0100 +--- src/testdir/test_listlbr_utf8.in 2015-01-22 22:37:43.523361845 +0100 +*************** +*** 2,8 **** + + STARTTEST + :so small.vim +! :if !exists("+linebreak") | e! test.ok | w! test.out | qa! | endif + :so mbyte.vim + :if &enc !=? 'utf-8'|:e! test.ok|:w! test.out|qa!|endif + :10new|:vsp|:vert resize 20 +--- 2,8 ---- + + STARTTEST + :so small.vim +! :if !exists("+linebreak") || !has("conceal") | e! test.ok | w! test.out | qa! | endif + :so mbyte.vim + :if &enc !=? 'utf-8'|:e! test.ok|:w! test.out|qa!|endif + :10new|:vsp|:vert resize 20 +*** ../vim-7.4.590/src/version.c 2015-01-22 22:40:16.345651420 +0100 +--- src/version.c 2015-01-22 22:41:26.464867079 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 591, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +107. When using your phone you forget that you don't have to use your + keyboard. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.592 b/SOURCES/7.4.592 new file mode 100644 index 0000000..39e4cd0 --- /dev/null +++ b/SOURCES/7.4.592 @@ -0,0 +1,52 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.592 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.592 +Problem: When doing ":e foobar" when already editing "foobar" and 'buftype' + is "nofile" the buffer is cleared. (Xavier de Gaye) +Solution: Do no clear the buffer. +Files: src/ex_cmds.c + + +*** ../vim-7.4.591/src/ex_cmds.c 2014-12-13 03:17:07.461046575 +0100 +--- src/ex_cmds.c 2015-01-27 11:21:14.752434647 +0100 +*************** +*** 3529,3534 **** +--- 3529,3541 ---- + #endif + check_fname() == FAIL) + goto theend; ++ ++ /* ":e foobar" when already editing "foobar" will reload the file. ++ * But when 'buftype' is "nofile" there is no file to load, so don't ++ * do anything. */ ++ if (curbuf->b_p_bt[0] == 'n' && curbuf->b_p_bt[2] == 'f') ++ goto theend; ++ + oldbuf = (flags & ECMD_OLDBUF); + } + +*** ../vim-7.4.591/src/version.c 2015-01-22 22:41:51.864583029 +0100 +--- src/version.c 2015-01-27 11:24:32.466265106 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 592, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +120. You ask a friend, "What's that big shiny thing?" He says, "It's the sun." + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.593 b/SOURCES/7.4.593 new file mode 100644 index 0000000..e30ef06 --- /dev/null +++ b/SOURCES/7.4.593 @@ -0,0 +1,161 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.593 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.593 +Problem: Crash when searching for "x\{0,90000}". (Dominique Pelle) +Solution: Bail out from the NFA engine when the max limit is much higher + than the min limit. +Files: src/regexp_nfa.c, src/regexp.c, src/vim.h + + +*** ../vim-7.4.592/src/regexp_nfa.c 2015-01-18 16:46:28.983828439 +0100 +--- src/regexp_nfa.c 2015-01-27 12:47:42.515592198 +0100 +*************** +*** 244,249 **** +--- 244,252 ---- + static char_u e_misplaced[] = N_("E866: (NFA regexp) Misplaced %c"); + static char_u e_ill_char_class[] = N_("E877: (NFA regexp) Invalid character class: %ld"); + ++ /* re_flags passed to nfa_regcomp() */ ++ static int nfa_re_flags; ++ + /* NFA regexp \ze operator encountered. */ + static int nfa_has_zend; + +*************** +*** 2011,2020 **** + * <atom>* */ + if (minval == 0 && maxval == MAX_LIMIT) + { +! if (greedy) + /* \{}, \{0,} */ + EMIT(NFA_STAR); +! else + /* \{-}, \{-0,} */ + EMIT(NFA_STAR_NONGREEDY); + break; +--- 2014,2023 ---- + * <atom>* */ + if (minval == 0 && maxval == MAX_LIMIT) + { +! if (greedy) /* { { (match the braces) */ + /* \{}, \{0,} */ + EMIT(NFA_STAR); +! else /* { { (match the braces) */ + /* \{-}, \{-0,} */ + EMIT(NFA_STAR_NONGREEDY); + break; +*************** +*** 2030,2035 **** +--- 2033,2044 ---- + return OK; + } + ++ /* The engine is very inefficient (uses too many states) when the ++ * maximum is much larger than the minimum. Bail out if we can ++ * use the other engine. */ ++ if ((nfa_re_flags & RE_AUTO) && maxval > minval + 200) ++ return FAIL; ++ + /* Ignore previous call to nfa_regatom() */ + post_ptr = post_start + my_post_start; + /* Save parse state after the repeated atom and the \{} */ +*************** +*** 7046,7051 **** +--- 7055,7061 ---- + return NULL; + + nfa_regengine.expr = expr; ++ nfa_re_flags = re_flags; + + init_class_tab(); + +*** ../vim-7.4.592/src/regexp.c 2014-11-20 23:07:00.515474686 +0100 +--- src/regexp.c 2015-01-27 12:49:02.170719494 +0100 +*************** +*** 8081,8087 **** + * First try the NFA engine, unless backtracking was requested. + */ + if (regexp_engine != BACKTRACKING_ENGINE) +! prog = nfa_regengine.regcomp(expr, re_flags); + else + prog = bt_regengine.regcomp(expr, re_flags); + +--- 8081,8088 ---- + * First try the NFA engine, unless backtracking was requested. + */ + if (regexp_engine != BACKTRACKING_ENGINE) +! prog = nfa_regengine.regcomp(expr, +! re_flags + (regexp_engine == AUTOMATIC_ENGINE ? RE_AUTO : 0)); + else + prog = bt_regengine.regcomp(expr, re_flags); + +*************** +*** 8105,8120 **** + #endif + /* + * If the NFA engine failed, try the backtracking engine. +! * Disabled for now, both engines fail on the same patterns. +! * Re-enable when regcomp() fails when the pattern would work better +! * with the other engine. +! * + if (regexp_engine == AUTOMATIC_ENGINE) + { + prog = bt_regengine.regcomp(expr, re_flags); +- regexp_engine == BACKTRACKING_ENGINE; + } +- */ + } + + if (prog != NULL) +--- 8106,8119 ---- + #endif + /* + * If the NFA engine failed, try the backtracking engine. +! * The NFA engine also fails for patterns that it can't handle well +! * but are still valid patterns, thus a retry should work. +! */ + if (regexp_engine == AUTOMATIC_ENGINE) + { ++ regexp_engine = BACKTRACKING_ENGINE; + prog = bt_regengine.regcomp(expr, re_flags); + } + } + + if (prog != NULL) +*** ../vim-7.4.592/src/vim.h 2014-12-08 04:16:26.269702835 +0100 +--- src/vim.h 2015-01-27 12:41:57.483371986 +0100 +*************** +*** 1020,1025 **** +--- 1020,1026 ---- + #define RE_MAGIC 1 /* 'magic' option */ + #define RE_STRING 2 /* match in string instead of buffer text */ + #define RE_STRICT 4 /* don't allow [abc] without ] */ ++ #define RE_AUTO 8 /* automatic engine selection */ + + #ifdef FEAT_SYN_HL + /* values for reg_do_extmatch */ +*** ../vim-7.4.592/src/version.c 2015-01-27 11:26:11.041183653 +0100 +--- src/version.c 2015-01-27 12:52:44.720281369 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 593, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +121. You ask for e-mail adresses instead of telephone numbers. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.594 b/SOURCES/7.4.594 new file mode 100644 index 0000000..65bab4c --- /dev/null +++ b/SOURCES/7.4.594 @@ -0,0 +1,105 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.594 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.594 +Problem: Using a block delete while 'breakindent' is set does not work + properly. +Solution: Use "line" instead of "prev_pend" as the first argument to + lbr_chartabsize_adv(). (Hirohito Higashi) +Files: src/ops.c, src/testdir/test_breakindent.in, + src/testdir/test_breakindent.ok + + +*** ../vim-7.4.593/src/ops.c 2015-01-18 14:08:52.699436994 +0100 +--- src/ops.c 2015-01-27 13:07:11.518790582 +0100 +*************** +*** 5308,5317 **** + { + /* Count a tab for what it's worth (if list mode not on) */ + prev_pend = pend; +! /* TODO: is passing prev_pend for start of the line OK? +! * perhaps it should be "line". */ +! incr = lbr_chartabsize_adv(prev_pend, &pend, +! (colnr_T)bdp->end_vcol); + bdp->end_vcol += incr; + } + if (bdp->end_vcol <= oap->end_vcol +--- 5308,5314 ---- + { + /* Count a tab for what it's worth (if list mode not on) */ + prev_pend = pend; +! incr = lbr_chartabsize_adv(line, &pend, (colnr_T)bdp->end_vcol); + bdp->end_vcol += incr; + } + if (bdp->end_vcol <= oap->end_vcol +*** ../vim-7.4.593/src/testdir/test_breakindent.in 2014-11-27 14:09:09.490354943 +0100 +--- src/testdir/test_breakindent.in 2015-01-27 13:06:51.067014258 +0100 +*************** +*** 99,104 **** +--- 99,121 ---- + :$put =line1 + :$put =line2 + :" ++ :let g:test="Test 14: breakindent + visual blockwise delete #1" ++ :set all& breakindent ++ :30vnew ++ :normal! 3a1234567890 ++ :normal! a abcde ++ :exec "normal! 0\<C-V>tex" ++ :let line1=ScreenChar(line('.'),8) ++ :call DoRecordScreen() ++ :" ++ :let g:test="Test 15: breakindent + visual blockwise delete #2" ++ :%d ++ :normal! 4a1234567890 ++ :exec "normal! >>\<C-V>3f0x" ++ :let line1=ScreenChar(line('.'),20) ++ :call DoRecordScreen() ++ :quit! ++ :" + :%w! test.out + :qa! + ENDTEST +*** ../vim-7.4.593/src/testdir/test_breakindent.ok 2014-11-27 14:09:09.490354943 +0100 +--- src/testdir/test_breakindent.ok 2015-01-27 13:06:51.067014258 +0100 +*************** +*** 62,64 **** +--- 62,74 ---- + Test 13: breakindent with wrapping Tab + d + w ++ ++ Test 14: breakindent + visual blockwise delete #1 ++ e ++ ~ ++ ~ ++ ++ Test 15: breakindent + visual blockwise delete #2 ++ 1234567890 ++ ~ ++ ~ +*** ../vim-7.4.593/src/version.c 2015-01-27 12:59:51.859602392 +0100 +--- src/version.c 2015-01-27 13:10:18.260748209 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 594, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +122. You ask if the Netaholics Anonymous t-shirt you ordered can be + sent to you via e-mail. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.595 b/SOURCES/7.4.595 new file mode 100644 index 0000000..39fc057 --- /dev/null +++ b/SOURCES/7.4.595 @@ -0,0 +1,45 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.595 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.595 +Problem: The test_command_count test fails when using Japanese. +Solution: Force the language to C. (Hirohito Higashi) +Files: src/testdir/test_command_count.in + + +*** ../vim-7.4.594/src/testdir/test_command_count.in 2015-01-20 13:29:46.397315064 +0100 +--- src/testdir/test_command_count.in 2015-01-27 13:27:02.409765684 +0100 +*************** +*** 2,7 **** +--- 2,8 ---- + + STARTTEST + :so small.vim ++ :lang C + :let g:lines = [] + :com -range=% RangeLines :call add(g:lines, 'RangeLines '.<line1>.' '.<line2>) + :com -range -addr=arguments RangeArguments :call add(g:lines, 'RangeArguments '.<line1>.' '.<line2>) +*** ../vim-7.4.594/src/version.c 2015-01-27 13:22:17.176885347 +0100 +--- src/version.c 2015-01-27 13:26:28.846132779 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 595, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +124. You begin conversations with, "Who is your internet service provider?" + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.596 b/SOURCES/7.4.596 new file mode 100644 index 0000000..e7def0b --- /dev/null +++ b/SOURCES/7.4.596 @@ -0,0 +1,52 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.596 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.596 (after 7.4.592) +Problem: Tiny build doesn't compile. (Ike Devolder) +Solution: Add #ifdef. +Files: src/ex_cmds.c + + +*** ../vim-7.4.595/src/ex_cmds.c 2015-01-27 11:26:11.041183653 +0100 +--- src/ex_cmds.c 2015-01-27 13:31:22.542920506 +0100 +*************** +*** 3530,3540 **** +--- 3530,3542 ---- + check_fname() == FAIL) + goto theend; + ++ #ifdef FEAT_QUICKFIX + /* ":e foobar" when already editing "foobar" will reload the file. + * But when 'buftype' is "nofile" there is no file to load, so don't + * do anything. */ + if (curbuf->b_p_bt[0] == 'n' && curbuf->b_p_bt[2] == 'f') + goto theend; ++ #endif + + oldbuf = (flags & ECMD_OLDBUF); + } +*** ../vim-7.4.595/src/version.c 2015-01-27 13:28:42.472671261 +0100 +--- src/version.c 2015-01-27 13:32:15.966336190 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 596, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +125. You begin to wonder how often it REALLY is necessary to get up + and shower or bathe. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.597 b/SOURCES/7.4.597 new file mode 100644 index 0000000..096aa53 --- /dev/null +++ b/SOURCES/7.4.597 @@ -0,0 +1,58 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.597 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.597 +Problem: Cannot change the result of systemlist(). +Solution: Initialize v_lock. (Yukihiro Nakadaira) +Files: src/eval.c + + +*** ../vim-7.4.596/src/eval.c 2015-01-14 19:00:33.842522901 +0100 +--- src/eval.c 2015-01-27 13:49:22.123112397 +0100 +*************** +*** 6007,6012 **** +--- 6007,6013 ---- + + /* + * Allocate a list item. ++ * It is not initialized, don't forget to set v_lock. + */ + listitem_T * + listitem_alloc() +*************** +*** 18713,18718 **** +--- 18714,18720 ---- + goto errret; + } + li->li_tv.v_type = VAR_STRING; ++ li->li_tv.v_lock = 0; + li->li_tv.vval.v_string = s; + list_append(list, li); + } +*** ../vim-7.4.596/src/version.c 2015-01-27 13:33:18.737649629 +0100 +--- src/version.c 2015-01-27 13:48:25.883727538 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 597, + /**/ + +-- +"Microsoft is like Coke. It's a secret formula, all the money is from +distribution, and their goal is to get Coke everywhere. Open source is like +selling water. There are water companies like Perrier and Poland Spring, but +you're competing with something that's free." -- Carl Howe + + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.599 b/SOURCES/7.4.599 new file mode 100644 index 0000000..bf9e341 --- /dev/null +++ b/SOURCES/7.4.599 @@ -0,0 +1,52 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.599 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.599 +Problem: Out-of-memory error. +Solution: Avoid trying to allocate a negative amount of memory, use size_t + instead of int. (Dominique Pelle) +Files: src/regexp_nfa.c + + +*** ../vim-7.4.598/src/regexp_nfa.c 2015-01-27 12:59:51.855602435 +0100 +--- src/regexp_nfa.c 2015-01-27 14:33:25.798181195 +0100 +*************** +*** 5408,5414 **** + regsubs_T *m; + { + int result; +! int size = 0; + int flag = 0; + int go_to_nextline = FALSE; + nfa_thread_T *t; +--- 5408,5414 ---- + regsubs_T *m; + { + int result; +! size_t size = 0; + int flag = 0; + int go_to_nextline = FALSE; + nfa_thread_T *t; +*** ../vim-7.4.598/src/version.c 2015-01-27 14:09:29.625898193 +0100 +--- src/version.c 2015-01-27 14:29:06.733017025 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 599, + /**/ + +-- +You cannot have a baby in one month by getting nine women pregnant. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.600 b/SOURCES/7.4.600 new file mode 100644 index 0000000..96da451 --- /dev/null +++ b/SOURCES/7.4.600 @@ -0,0 +1,546 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.600 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.600 +Problem: Memory wasted in struct because of aligning. +Solution: Split pos in lnum and col. (Dominique Pelle) +Files: src/regexp_nfa.c + + +*** ../vim-7.4.599/src/regexp_nfa.c 2015-01-27 14:39:55.661913204 +0100 +--- src/regexp_nfa.c 2015-01-27 14:43:04.323847916 +0100 +*************** +*** 1456,1462 **** + * matched an unlimited number of times. NFA_NOPEN is + * added only once at a position, while NFA_SPLIT is + * added multiple times. This is more efficient than +! * not allowsing NFA_SPLIT multiple times, it is used + * a lot. */ + EMIT(NFA_NOPEN); + break; +--- 1456,1462 ---- + * matched an unlimited number of times. NFA_NOPEN is + * added only once at a position, while NFA_SPLIT is + * added multiple times. This is more efficient than +! * not allowing NFA_SPLIT multiple times, it is used + * a lot. */ + EMIT(NFA_NOPEN); + break; +*************** +*** 3726,3733 **** + { + struct multipos + { +! lpos_T start; +! lpos_T end; + } multi[NSUBEXP]; + struct linepos + { +--- 3726,3735 ---- + { + struct multipos + { +! linenr_T start_lnum; +! linenr_T end_lnum; +! colnr_T start_col; +! colnr_T end_col; + } multi[NSUBEXP]; + struct linepos + { +*************** +*** 3812,3821 **** + if (REG_MULTI) + fprintf(log_fd, "*** group %d, start: c=%d, l=%d, end: c=%d, l=%d\n", + j, +! sub->list.multi[j].start.col, +! (int)sub->list.multi[j].start.lnum, +! sub->list.multi[j].end.col, +! (int)sub->list.multi[j].end.lnum); + else + { + char *s = (char *)sub->list.line[j].start; +--- 3814,3823 ---- + if (REG_MULTI) + fprintf(log_fd, "*** group %d, start: c=%d, l=%d, end: c=%d, l=%d\n", + j, +! sub->list.multi[j].start_col, +! (int)sub->list.multi[j].start_lnum, +! sub->list.multi[j].end_col, +! (int)sub->list.multi[j].end_lnum); + else + { + char *s = (char *)sub->list.line[j].start; +*************** +*** 3952,3959 **** + { + if (REG_MULTI) + { +! if (from->list.multi[0].end.lnum >= 0) +! to->list.multi[0].end = from->list.multi[0].end; + } + else + { +--- 3954,3964 ---- + { + if (REG_MULTI) + { +! if (from->list.multi[0].end_lnum >= 0) +! { +! to->list.multi[0].end_lnum = from->list.multi[0].end_lnum; +! to->list.multi[0].end_col = from->list.multi[0].end_col; +! } + } + else + { +*************** +*** 3985,4017 **** + for (i = 0; i < todo; ++i) + { + if (i < sub1->in_use) +! s1 = sub1->list.multi[i].start.lnum; + else + s1 = -1; + if (i < sub2->in_use) +! s2 = sub2->list.multi[i].start.lnum; + else + s2 = -1; + if (s1 != s2) + return FALSE; +! if (s1 != -1 && sub1->list.multi[i].start.col +! != sub2->list.multi[i].start.col) + return FALSE; + + if (nfa_has_backref) + { + if (i < sub1->in_use) +! s1 = sub1->list.multi[i].end.lnum; + else + s1 = -1; + if (i < sub2->in_use) +! s2 = sub2->list.multi[i].end.lnum; + else + s2 = -1; + if (s1 != s2) + return FALSE; +! if (s1 != -1 && sub1->list.multi[i].end.col +! != sub2->list.multi[i].end.col) + return FALSE; + } + } +--- 3990,4022 ---- + for (i = 0; i < todo; ++i) + { + if (i < sub1->in_use) +! s1 = sub1->list.multi[i].start_lnum; + else + s1 = -1; + if (i < sub2->in_use) +! s2 = sub2->list.multi[i].start_lnum; + else + s2 = -1; + if (s1 != s2) + return FALSE; +! if (s1 != -1 && sub1->list.multi[i].start_col +! != sub2->list.multi[i].start_col) + return FALSE; + + if (nfa_has_backref) + { + if (i < sub1->in_use) +! s1 = sub1->list.multi[i].end_lnum; + else + s1 = -1; + if (i < sub2->in_use) +! s2 = sub2->list.multi[i].end_lnum; + else + s2 = -1; + if (s1 != s2) + return FALSE; +! if (s1 != -1 && sub1->list.multi[i].end_col +! != sub2->list.multi[i].end_col) + return FALSE; + } + } +*************** +*** 4062,4068 **** + if (sub->in_use <= 0) + col = -1; + else if (REG_MULTI) +! col = sub->list.multi[0].start.col; + else + col = (int)(sub->list.line[0].start - regline); + nfa_set_code(state->c); +--- 4067,4073 ---- + if (sub->in_use <= 0) + col = -1; + else if (REG_MULTI) +! col = sub->list.multi[0].start_col; + else + col = (int)(sub->list.line[0].start - regline); + nfa_set_code(state->c); +*************** +*** 4482,4488 **** + { + if (subidx < sub->in_use) + { +! save_lpos = sub->list.multi[subidx].start; + save_in_use = -1; + } + else +--- 4487,4494 ---- + { + if (subidx < sub->in_use) + { +! save_lpos.lnum = sub->list.multi[subidx].start_lnum; +! save_lpos.col = sub->list.multi[subidx].start_col; + save_in_use = -1; + } + else +*************** +*** 4490,4509 **** + save_in_use = sub->in_use; + for (i = sub->in_use; i < subidx; ++i) + { +! sub->list.multi[i].start.lnum = -1; +! sub->list.multi[i].end.lnum = -1; + } + sub->in_use = subidx + 1; + } + if (off == -1) + { +! sub->list.multi[subidx].start.lnum = reglnum + 1; +! sub->list.multi[subidx].start.col = 0; + } + else + { +! sub->list.multi[subidx].start.lnum = reglnum; +! sub->list.multi[subidx].start.col = + (colnr_T)(reginput - regline + off); + } + } +--- 4496,4515 ---- + save_in_use = sub->in_use; + for (i = sub->in_use; i < subidx; ++i) + { +! sub->list.multi[i].start_lnum = -1; +! sub->list.multi[i].end_lnum = -1; + } + sub->in_use = subidx + 1; + } + if (off == -1) + { +! sub->list.multi[subidx].start_lnum = reglnum + 1; +! sub->list.multi[subidx].start_col = 0; + } + else + { +! sub->list.multi[subidx].start_lnum = reglnum; +! sub->list.multi[subidx].start_col = + (colnr_T)(reginput - regline + off); + } + } +*************** +*** 4539,4545 **** + if (save_in_use == -1) + { + if (REG_MULTI) +! sub->list.multi[subidx].start = save_lpos; + else + sub->list.line[subidx].start = save_ptr; + } +--- 4545,4554 ---- + if (save_in_use == -1) + { + if (REG_MULTI) +! { +! sub->list.multi[subidx].start_lnum = save_lpos.lnum; +! sub->list.multi[subidx].start_col = save_lpos.col; +! } + else + sub->list.line[subidx].start = save_ptr; + } +*************** +*** 4549,4555 **** + + case NFA_MCLOSE: + if (nfa_has_zend && (REG_MULTI +! ? subs->norm.list.multi[0].end.lnum >= 0 + : subs->norm.list.line[0].end != NULL)) + { + /* Do not overwrite the position set by \ze. */ +--- 4558,4564 ---- + + case NFA_MCLOSE: + if (nfa_has_zend && (REG_MULTI +! ? subs->norm.list.multi[0].end_lnum >= 0 + : subs->norm.list.line[0].end != NULL)) + { + /* Do not overwrite the position set by \ze. */ +*************** +*** 4603,4618 **** + sub->in_use = subidx + 1; + if (REG_MULTI) + { +! save_lpos = sub->list.multi[subidx].end; + if (off == -1) + { +! sub->list.multi[subidx].end.lnum = reglnum + 1; +! sub->list.multi[subidx].end.col = 0; + } + else + { +! sub->list.multi[subidx].end.lnum = reglnum; +! sub->list.multi[subidx].end.col = + (colnr_T)(reginput - regline + off); + } + /* avoid compiler warnings */ +--- 4612,4628 ---- + sub->in_use = subidx + 1; + if (REG_MULTI) + { +! save_lpos.lnum = sub->list.multi[subidx].end_lnum; +! save_lpos.col = sub->list.multi[subidx].end_col; + if (off == -1) + { +! sub->list.multi[subidx].end_lnum = reglnum + 1; +! sub->list.multi[subidx].end_col = 0; + } + else + { +! sub->list.multi[subidx].end_lnum = reglnum; +! sub->list.multi[subidx].end_col = + (colnr_T)(reginput - regline + off); + } + /* avoid compiler warnings */ +*************** +*** 4637,4643 **** + sub = &subs->norm; + + if (REG_MULTI) +! sub->list.multi[subidx].end = save_lpos; + else + sub->list.line[subidx].end = save_ptr; + sub->in_use = save_in_use; +--- 4647,4656 ---- + sub = &subs->norm; + + if (REG_MULTI) +! { +! sub->list.multi[subidx].end_lnum = save_lpos.lnum; +! sub->list.multi[subidx].end_col = save_lpos.col; +! } + else + sub->list.line[subidx].end = save_ptr; + sub->in_use = save_in_use; +*************** +*** 4825,4839 **** + + if (REG_MULTI) + { +! if (sub->list.multi[subidx].start.lnum < 0 +! || sub->list.multi[subidx].end.lnum < 0) + goto retempty; +! if (sub->list.multi[subidx].start.lnum == reglnum +! && sub->list.multi[subidx].end.lnum == reglnum) + { +! len = sub->list.multi[subidx].end.col +! - sub->list.multi[subidx].start.col; +! if (cstrncmp(regline + sub->list.multi[subidx].start.col, + reginput, &len) == 0) + { + *bytelen = len; +--- 4838,4852 ---- + + if (REG_MULTI) + { +! if (sub->list.multi[subidx].start_lnum < 0 +! || sub->list.multi[subidx].end_lnum < 0) + goto retempty; +! if (sub->list.multi[subidx].start_lnum == reglnum +! && sub->list.multi[subidx].end_lnum == reglnum) + { +! len = sub->list.multi[subidx].end_col +! - sub->list.multi[subidx].start_col; +! if (cstrncmp(regline + sub->list.multi[subidx].start_col, + reginput, &len) == 0) + { + *bytelen = len; +*************** +*** 4843,4852 **** + else + { + if (match_with_backref( +! sub->list.multi[subidx].start.lnum, +! sub->list.multi[subidx].start.col, +! sub->list.multi[subidx].end.lnum, +! sub->list.multi[subidx].end.col, + bytelen) == RA_MATCH) + return TRUE; + } +--- 4856,4865 ---- + else + { + if (match_with_backref( +! sub->list.multi[subidx].start_lnum, +! sub->list.multi[subidx].start_col, +! sub->list.multi[subidx].end_lnum, +! sub->list.multi[subidx].end_col, + bytelen) == RA_MATCH) + return TRUE; + } +*************** +*** 5441,5446 **** +--- 5454,5460 ---- + + /* Allocate memory for the lists of nodes. */ + size = (nstate + 1) * sizeof(nfa_thread_T); ++ + list[0].t = (nfa_thread_T *)lalloc(size, TRUE); + list[0].len = nstate + 1; + list[1].t = (nfa_thread_T *)lalloc(size, TRUE); +*************** +*** 5482,5489 **** + { + if (REG_MULTI) + { +! m->norm.list.multi[0].start.lnum = reglnum; +! m->norm.list.multi[0].start.col = (colnr_T)(reginput - regline); + } + else + m->norm.list.line[0].start = reginput; +--- 5496,5503 ---- + { + if (REG_MULTI) + { +! m->norm.list.multi[0].start_lnum = reglnum; +! m->norm.list.multi[0].start_col = (colnr_T)(reginput - regline); + } + else + m->norm.list.line[0].start = reginput; +*************** +*** 5580,5586 **** + if (t->subs.norm.in_use <= 0) + col = -1; + else if (REG_MULTI) +! col = t->subs.norm.list.multi[0].start.col; + else + col = (int)(t->subs.norm.list.line[0].start - regline); + nfa_set_code(t->state->c); +--- 5594,5600 ---- + if (t->subs.norm.in_use <= 0) + col = -1; + else if (REG_MULTI) +! col = t->subs.norm.list.multi[0].start_col; + else + col = (int)(t->subs.norm.list.line[0].start - regline); + nfa_set_code(t->state->c); +*************** +*** 5861,5867 **** + * continue with what follows. */ + if (REG_MULTI) + /* TODO: multi-line match */ +! bytelen = m->norm.list.multi[0].end.col + - (int)(reginput - regline); + else + bytelen = (int)(m->norm.list.line[0].end - reginput); +--- 5875,5881 ---- + * continue with what follows. */ + if (REG_MULTI) + /* TODO: multi-line match */ +! bytelen = m->norm.list.multi[0].end_col + - (int)(reginput - regline); + else + bytelen = (int)(m->norm.list.line[0].end - reginput); +*************** +*** 6741,6747 **** + if (add) + { + if (REG_MULTI) +! m->norm.list.multi[0].start.col = + (colnr_T)(reginput - regline) + clen; + else + m->norm.list.line[0].start = reginput + clen; +--- 6755,6761 ---- + if (add) + { + if (REG_MULTI) +! m->norm.list.multi[0].start_col = + (colnr_T)(reginput - regline) + clen; + else + m->norm.list.line[0].start = reginput + clen; +*************** +*** 6854,6861 **** + { + for (i = 0; i < subs.norm.in_use; i++) + { +! reg_startpos[i] = subs.norm.list.multi[i].start; +! reg_endpos[i] = subs.norm.list.multi[i].end; + } + + if (reg_startpos[0].lnum < 0) +--- 6868,6878 ---- + { + for (i = 0; i < subs.norm.in_use; i++) + { +! reg_startpos[i].lnum = subs.norm.list.multi[i].start_lnum; +! reg_startpos[i].col = subs.norm.list.multi[i].start_col; +! +! reg_endpos[i].lnum = subs.norm.list.multi[i].end_lnum; +! reg_endpos[i].col = subs.norm.list.multi[i].end_col; + } + + if (reg_startpos[0].lnum < 0) +*************** +*** 6903,6915 **** + struct multipos *mpos = &subs.synt.list.multi[i]; + + /* Only accept single line matches that are valid. */ +! if (mpos->start.lnum >= 0 +! && mpos->start.lnum == mpos->end.lnum +! && mpos->end.col >= mpos->start.col) + re_extmatch_out->matches[i] = +! vim_strnsave(reg_getline(mpos->start.lnum) +! + mpos->start.col, +! mpos->end.col - mpos->start.col); + } + else + { +--- 6920,6932 ---- + struct multipos *mpos = &subs.synt.list.multi[i]; + + /* Only accept single line matches that are valid. */ +! if (mpos->start_lnum >= 0 +! && mpos->start_lnum == mpos->end_lnum +! && mpos->end_col >= mpos->start_col) + re_extmatch_out->matches[i] = +! vim_strnsave(reg_getline(mpos->start_lnum) +! + mpos->start_col, +! mpos->end_col - mpos->start_col); + } + else + { +*** ../vim-7.4.599/src/version.c 2015-01-27 14:39:55.661913204 +0100 +--- src/version.c 2015-01-27 14:44:06.739164665 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 600, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +126. You brag to all of your friends about your date Saturday night...but + you don't tell them it was only in a chat room. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.601 b/SOURCES/7.4.601 new file mode 100644 index 0000000..950222e --- /dev/null +++ b/SOURCES/7.4.601 @@ -0,0 +1,108 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.601 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.601 +Problem: It is not possible to have feedkeys() insert characters. +Solution: Add the 'i' flag. +Files: src/eval.c, runtime/doc/eval.txt + + +*** ../vim-7.4.600/src/eval.c 2015-01-27 13:49:27.883049396 +0100 +--- src/eval.c 2015-01-27 15:13:01.928187370 +0100 +*************** +*** 10500,10505 **** +--- 10500,10506 ---- + typval_T *rettv UNUSED; + { + int remap = TRUE; ++ int insert = FALSE; + char_u *keys, *flags; + char_u nbuf[NUMBUFLEN]; + int typed = FALSE; +*************** +*** 10524,10529 **** +--- 10525,10531 ---- + case 'n': remap = FALSE; break; + case 'm': remap = TRUE; break; + case 't': typed = TRUE; break; ++ case 'i': insert = TRUE; break; + } + } + } +*************** +*** 10534,10540 **** + if (keys_esc != NULL) + { + ins_typebuf(keys_esc, (remap ? REMAP_YES : REMAP_NONE), +! typebuf.tb_len, !typed, FALSE); + vim_free(keys_esc); + if (vgetc_busy) + typebuf_was_filled = TRUE; +--- 10536,10542 ---- + if (keys_esc != NULL) + { + ins_typebuf(keys_esc, (remap ? REMAP_YES : REMAP_NONE), +! insert ? 0 : typebuf.tb_len, !typed, FALSE); + vim_free(keys_esc); + if (vgetc_busy) + typebuf_was_filled = TRUE; +*** ../vim-7.4.600/runtime/doc/eval.txt 2014-11-27 19:14:45.080940970 +0100 +--- runtime/doc/eval.txt 2015-01-27 15:12:52.908285780 +0100 +*************** +*** 2957,2965 **** + + feedkeys({string} [, {mode}]) *feedkeys()* + Characters in {string} are queued for processing as if they +! come from a mapping or were typed by the user. They are added +! to the end of the typeahead buffer, thus if a mapping is still +! being executed these characters come after them. + The function does not wait for processing of keys contained in + {string}. + To include special keys into {string}, use double-quotes +--- 2965,2976 ---- + + feedkeys({string} [, {mode}]) *feedkeys()* + Characters in {string} are queued for processing as if they +! come from a mapping or were typed by the user. +! By default the string is added to the end of the typeahead +! buffer, thus if a mapping is still being executed the +! characters come after them. Use the 'i' flag to insert before +! other characters, they will be executed next, before any +! characters from a mapping. + The function does not wait for processing of keys contained in + {string}. + To include special keys into {string}, use double-quotes +*************** +*** 2973,2978 **** +--- 2984,2990 ---- + 't' Handle keys as if typed; otherwise they are handled as + if coming from a mapping. This matters for undo, + opening folds, etc. ++ 'i' Insert the string instead of appending (see above). + Return value is always 0. + + filereadable({file}) *filereadable()* +*** ../vim-7.4.600/src/version.c 2015-01-27 14:54:07.944583588 +0100 +--- src/version.c 2015-01-27 15:15:35.290514092 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 601, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +127. You bring your laptop and cellular phone to church. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.602 b/SOURCES/7.4.602 new file mode 100644 index 0000000..79ec89a --- /dev/null +++ b/SOURCES/7.4.602 @@ -0,0 +1,91 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.602 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.602 +Problem: ":set" does not accept hex numbers as documented. +Solution: Use vim_str2nr(). (ZyX) +Files: src/option.c, runtime/doc/options.txt + + +*** ../vim-7.4.601/src/option.c 2014-11-30 13:34:16.885626772 +0100 +--- src/option.c 2015-01-27 15:51:01.455344467 +0100 +*************** +*** 4540,4560 **** + goto skip; + } + } +- /* allow negative numbers (for 'undolevels') */ + else if (*arg == '-' || VIM_ISDIGIT(*arg)) + { +! i = 0; +! if (*arg == '-') +! i = 1; +! #ifdef HAVE_STRTOL +! value = strtol((char *)arg, NULL, 0); +! if (arg[i] == '0' && TOLOWER_ASC(arg[i + 1]) == 'x') +! i += 2; +! #else +! value = atol((char *)arg); +! #endif +! while (VIM_ISDIGIT(arg[i])) +! ++i; + if (arg[i] != NUL && !vim_iswhite(arg[i])) + { + errmsg = e_invarg; +--- 4540,4550 ---- + goto skip; + } + } + else if (*arg == '-' || VIM_ISDIGIT(*arg)) + { +! /* Allow negative (for 'undolevels'), octal and +! * hex numbers. */ +! vim_str2nr(arg, NULL, &i, TRUE, TRUE, &value, NULL); + if (arg[i] != NUL && !vim_iswhite(arg[i])) + { + errmsg = e_invarg; +*** ../vim-7.4.601/runtime/doc/options.txt 2014-11-05 17:44:47.676471691 +0100 +--- runtime/doc/options.txt 2015-01-27 15:47:53.873380762 +0100 +*************** +*** 59,67 **** + :se[t] {option}:{value} + Set string or number option to {value}. + For numeric options the value can be given in decimal, +! hex (preceded with 0x) or octal (preceded with '0') +! (hex and octal are only available for machines which +! have the strtol() function). + The old value can be inserted by typing 'wildchar' (by + default this is a <Tab> or CTRL-E if 'compatible' is + set). See |cmdline-completion|. +--- 59,65 ---- + :se[t] {option}:{value} + Set string or number option to {value}. + For numeric options the value can be given in decimal, +! hex (preceded with 0x) or octal (preceded with '0'). + The old value can be inserted by typing 'wildchar' (by + default this is a <Tab> or CTRL-E if 'compatible' is + set). See |cmdline-completion|. +*** ../vim-7.4.601/src/version.c 2015-01-27 15:18:55.156333265 +0100 +--- src/version.c 2015-01-27 15:49:28.840349899 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 602, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +128. You can access the Net -- via your portable and cellular phone. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.603 b/SOURCES/7.4.603 new file mode 100644 index 0000000..b52c8f3 --- /dev/null +++ b/SOURCES/7.4.603 @@ -0,0 +1,262 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.603 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.603 +Problem: 'foldcolumn' may be set such that it fills the whole window, not + leaving space for text. +Solution: Reduce the foldcolumn width when there is not sufficient room. + (idea by Christian Brabandt) +Files: src/srcreen.c + + +*** ../vim-7.4.602/src/screen.c 2015-01-20 19:01:32.380444290 +0100 +--- src/screen.c 2015-01-27 16:25:47.264690419 +0100 +*************** +*** 109,114 **** +--- 109,115 ---- + + #ifdef FEAT_FOLDING + static foldinfo_T win_foldinfo; /* info for 'foldcolumn' */ ++ static int compute_foldcolumn __ARGS((win_T *wp, int col)); + #endif + + /* +*************** +*** 1202,1208 **** + lnumb = wp->w_lines[i].wl_lnum; + /* When there is a fold column it might need updating + * in the next line ("J" just above an open fold). */ +! if (wp->w_p_fdc > 0) + ++lnumb; + } + } +--- 1203,1209 ---- + lnumb = wp->w_lines[i].wl_lnum; + /* When there is a fold column it might need updating + * in the next line ("J" just above an open fold). */ +! if (compute_foldcolumn(wp, 0) > 0) + ++lnumb; + } + } +*************** +*** 2238,2250 **** + #else + # define FDC_OFF 0 + #endif + + #ifdef FEAT_RIGHTLEFT + if (wp->w_p_rl) + { + /* No check for cmdline window: should never be right-left. */ + # ifdef FEAT_FOLDING +! n = wp->w_p_fdc; + + if (n > 0) + { +--- 2239,2254 ---- + #else + # define FDC_OFF 0 + #endif ++ #ifdef FEAT_FOLDING ++ int fdc = compute_foldcolumn(wp, 0); ++ #endif + + #ifdef FEAT_RIGHTLEFT + if (wp->w_p_rl) + { + /* No check for cmdline window: should never be right-left. */ + # ifdef FEAT_FOLDING +! n = fdc; + + if (n > 0) + { +*************** +*** 2293,2301 **** + } + #endif + #ifdef FEAT_FOLDING +! if (wp->w_p_fdc > 0) + { +! int nn = n + wp->w_p_fdc; + + /* draw the fold column at the left */ + if (nn > W_WIDTH(wp)) +--- 2297,2305 ---- + } + #endif + #ifdef FEAT_FOLDING +! if (fdc > 0) + { +! int nn = n + fdc; + + /* draw the fold column at the left */ + if (nn > W_WIDTH(wp)) +*************** +*** 2346,2351 **** +--- 2350,2373 ---- + + #ifdef FEAT_FOLDING + /* ++ * Compute the width of the foldcolumn. Based on 'foldcolumn' and how much ++ * space is available for window "wp", minus "col". ++ */ ++ static int ++ compute_foldcolumn(wp, col) ++ 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); ++ ++ if (fdc > wwidth - (col + wmw)) ++ fdc = wwidth - (col + wmw); ++ return fdc; ++ } ++ ++ /* + * Display one folded line. + */ + static void +*************** +*** 2396,2405 **** + + /* + * 2. Add the 'foldcolumn' + */ +! fdc = wp->w_p_fdc; +! if (fdc > W_WIDTH(wp) - col) +! fdc = W_WIDTH(wp) - col; + if (fdc > 0) + { + fill_foldcolumn(buf, wp, TRUE, lnum); +--- 2418,2426 ---- + + /* + * 2. Add the 'foldcolumn' ++ * Reduce the width when there is not enough space. + */ +! fdc = compute_foldcolumn(wp, col); + if (fdc > 0) + { + fill_foldcolumn(buf, wp, TRUE, lnum); +*************** +*** 2787,2809 **** + int level; + int first_level; + int empty; + + /* Init to all spaces. */ +! copy_spaces(p, (size_t)wp->w_p_fdc); + + level = win_foldinfo.fi_level; + if (level > 0) + { + /* If there is only one column put more info in it. */ +! empty = (wp->w_p_fdc == 1) ? 0 : 1; + + /* If the column is too narrow, we start at the lowest level that + * fits and use numbers to indicated the depth. */ +! first_level = level - wp->w_p_fdc - closed + 1 + empty; + if (first_level < 1) + first_level = 1; + +! for (i = 0; i + empty < wp->w_p_fdc; ++i) + { + if (win_foldinfo.fi_lnum == lnum + && first_level + i >= win_foldinfo.fi_low_level) +--- 2808,2831 ---- + int level; + int first_level; + int empty; ++ int fdc = compute_foldcolumn(wp, 0); + + /* Init to all spaces. */ +! copy_spaces(p, (size_t)fdc); + + level = win_foldinfo.fi_level; + if (level > 0) + { + /* If there is only one column put more info in it. */ +! empty = (fdc == 1) ? 0 : 1; + + /* If the column is too narrow, we start at the lowest level that + * fits and use numbers to indicated the depth. */ +! first_level = level - fdc - closed + 1 + empty; + if (first_level < 1) + first_level = 1; + +! for (i = 0; i + empty < fdc; ++i) + { + if (win_foldinfo.fi_lnum == lnum + && first_level + i >= win_foldinfo.fi_low_level) +*************** +*** 2819,2825 **** + } + } + if (closed) +! p[i >= wp->w_p_fdc ? i - 1 : i] = '+'; + } + #endif /* FEAT_FOLDING */ + +--- 2841,2847 ---- + } + } + if (closed) +! p[i >= fdc ? i - 1 : i] = '+'; + } + #endif /* FEAT_FOLDING */ + +*************** +*** 3556,3567 **** + #ifdef FEAT_FOLDING + if (draw_state == WL_FOLD - 1 && n_extra == 0) + { + draw_state = WL_FOLD; +! if (wp->w_p_fdc > 0) + { + /* Draw the 'foldcolumn'. */ + fill_foldcolumn(extra, wp, FALSE, lnum); +! n_extra = wp->w_p_fdc; + p_extra = extra; + p_extra[n_extra] = NUL; + c_extra = NUL; +--- 3578,3591 ---- + #ifdef FEAT_FOLDING + if (draw_state == WL_FOLD - 1 && n_extra == 0) + { ++ int fdc = compute_foldcolumn(wp, 0); ++ + draw_state = WL_FOLD; +! if (fdc > 0) + { + /* Draw the 'foldcolumn'. */ + fill_foldcolumn(extra, wp, FALSE, lnum); +! n_extra = fdc; + p_extra = extra; + p_extra[n_extra] = NUL; + c_extra = NUL; +*** ../vim-7.4.602/src/version.c 2015-01-27 15:58:37.202395482 +0100 +--- src/version.c 2015-01-27 16:14:45.703878550 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 603, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +129. You cancel your newspaper subscription. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.604 b/SOURCES/7.4.604 new file mode 100644 index 0000000..ad8ba50 --- /dev/null +++ b/SOURCES/7.4.604 @@ -0,0 +1,53 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.604 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.604 +Problem: Running tests changes viminfo. +Solution: Disable viminfo. +Files: src/testdir/test_breakindent.in + + +*** ../vim-7.4.603/src/testdir/test_breakindent.in 2015-01-27 13:22:17.176885347 +0100 +--- src/testdir/test_breakindent.in 2015-01-27 17:07:20.549557451 +0100 +*************** +*** 100,106 **** + :$put =line2 + :" + :let g:test="Test 14: breakindent + visual blockwise delete #1" +! :set all& breakindent + :30vnew + :normal! 3a1234567890 + :normal! a abcde +--- 100,106 ---- + :$put =line2 + :" + :let g:test="Test 14: breakindent + visual blockwise delete #1" +! :set all& breakindent viminfo+=nviminfo + :30vnew + :normal! 3a1234567890 + :normal! a abcde +*** ../vim-7.4.603/src/version.c 2015-01-27 16:39:24.691804113 +0100 +--- src/version.c 2015-01-27 17:11:46.746656291 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 604, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +130. You can't get out of your desk even if it's time to eat or time + to go to the bathroom. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.605 b/SOURCES/7.4.605 new file mode 100644 index 0000000..89f472f --- /dev/null +++ b/SOURCES/7.4.605 @@ -0,0 +1,267 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.605 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.605 +Problem: The # register is not writable, it cannot be restored after + jumping around. +Solution: Make the # register writable. (Marcin Szamotulski) +Files: runtime/doc/change.txt, src/ops.c, src/buffer.c, src/globals.h + + +*** ../vim-7.4.604/runtime/doc/change.txt 2014-03-25 18:23:27.046087691 +0100 +--- runtime/doc/change.txt 2015-01-27 18:41:27.840005417 +0100 +*************** +*** 1100,1110 **** + 2. 10 numbered registers "0 to "9 + 3. The small delete register "- + 4. 26 named registers "a to "z or "A to "Z +! 5. four read-only registers ":, "., "% and "# +! 6. the expression register "= +! 7. The selection and drop registers "*, "+ and "~ +! 8. The black hole register "_ +! 9. Last search pattern register "/ + + 1. Unnamed register "" *quote_quote* *quotequote* + Vim fills this register with text deleted with the "d", "c", "s", "x" commands +--- 1103,1114 ---- + 2. 10 numbered registers "0 to "9 + 3. The small delete register "- + 4. 26 named registers "a to "z or "A to "Z +! 5. three read-only registers ":, "., "% +! 7. alternate buffer register "# +! 7. the expression register "= +! 8. The selection and drop registers "*, "+ and "~ +! 9. The black hole register "_ +! 10. Last search pattern register "/ + + 1. Unnamed register "" *quote_quote* *quotequote* + Vim fills this register with text deleted with the "d", "c", "s", "x" commands +*************** +*** 1131,1136 **** +--- 1135,1142 ---- + made for the delete operator with these movement commands: |%|, |(|, |)|, |`|, + |/|, |?|, |n|, |N|, |{| and |}|. Register "1 is always used then (this is Vi + compatible). The "- register is used as well if the delete is within a line. ++ Note that these characters may be mapped. E.g. |%| is mapped by the matchit ++ plugin. + With each successive deletion or change, Vim shifts the previous contents + of register 1 into register 2, 2 into 3, and so forth, losing the previous + contents of register 9. +*************** +*** 1148,1154 **** + to their previous contents. When the '>' flag is present in 'cpoptions' then + a line break is inserted before the appended text. + +! 5. Read-only registers ":, "., "% and "# + These are '%', '#', ':' and '.'. You can use them only with the "p", "P", + and ":put" commands and with CTRL-R. {not in Vi} + *quote_.* *quote.* *E29* +--- 1154,1160 ---- + to their previous contents. When the '>' flag is present in 'cpoptions' then + a line break is inserted before the appended text. + +! 5. Read-only registers ":, ". and "% + These are '%', '#', ':' and '.'. You can use them only with the "p", "P", + and ":put" commands and with CTRL-R. {not in Vi} + *quote_.* *quote.* *E29* +*************** +*** 1159,1166 **** + ('textwidth' and other options affect what is inserted). + *quote_%* *quote%* + "% Contains the name of the current file. +- *quote_#* *quote#* +- "# Contains the name of the alternate file. + *quote_:* *quote:* *E30* + ": Contains the most recent executed command-line. Example: Use + "@:" to repeat the previous command-line command. +--- 1165,1170 ---- +*************** +*** 1169,1176 **** + the command was completely from a mapping. + {not available when compiled without the |+cmdline_hist| + feature} + +! 6. Expression register "= *quote_=* *quote=* *@=* + This is not really a register that stores text, but is a way to use an + expression in commands which use a register. The expression register is + read-only; you cannot put text into it. After the '=', the cursor moves to +--- 1173,1195 ---- + the command was completely from a mapping. + {not available when compiled without the |+cmdline_hist| + feature} ++ *quote_#* *quote#* ++ 6. Alternate file register "# ++ Contains the name of the alternate file for the current window. It will ++ change how the |CTRL-^| command works. ++ This register is writable, mainly to allow for restoring it after a plugin has ++ changed it. It accepts buffer number: > ++ let altbuf = bufnr(@#) ++ ... ++ let @# = altbuf ++ It will give error |E86| if you pass buffer number and this buffer does not ++ exist. ++ It can also accept a match with an existing buffer name: > ++ let @# = 'buffer_name' ++ Error |E93| if there is more than one buffer matching the given name or |E94| ++ if none of buffers matches the given name. + +! 7. Expression register "= *quote_=* *quote=* *@=* + This is not really a register that stores text, but is a way to use an + expression in commands which use a register. The expression register is + read-only; you cannot put text into it. After the '=', the cursor moves to +*************** +*** 1191,1197 **** + characters. If the String ends in a <NL>, it is regarded as a linewise + register. {not in Vi} + +! 7. Selection and drop registers "*, "+ and "~ + Use these registers for storing and retrieving the selected text for the GUI. + See |quotestar| and |quoteplus|. When the clipboard is not available or not + working, the unnamed register is used instead. For Unix systems the clipboard +--- 1210,1216 ---- + characters. If the String ends in a <NL>, it is regarded as a linewise + register. {not in Vi} + +! 8. Selection and drop registers "*, "+ and "~ + Use these registers for storing and retrieving the selected text for the GUI. + See |quotestar| and |quoteplus|. When the clipboard is not available or not + working, the unnamed register is used instead. For Unix systems the clipboard +*************** +*** 1213,1224 **** + Note: The "~ register is only used when dropping plain text onto Vim. + Drag'n'drop of URI lists is handled internally. + +! 8. Black hole register "_ *quote_* + When writing to this register, nothing happens. This can be used to delete + text without affecting the normal registers. When reading from this register, + nothing is returned. {not in Vi} + +! 9. Last search pattern register "/ *quote_/* *quote/* + Contains the most recent search-pattern. This is used for "n" and 'hlsearch'. + It is writable with `:let`, you can change it to have 'hlsearch' highlight + other matches without actually searching. You can't yank or delete into this +--- 1232,1243 ---- + Note: The "~ register is only used when dropping plain text onto Vim. + Drag'n'drop of URI lists is handled internally. + +! 9. Black hole register "_ *quote_* + When writing to this register, nothing happens. This can be used to delete + text without affecting the normal registers. When reading from this register, + nothing is returned. {not in Vi} + +! 10. Last search pattern register "/ *quote_/* *quote/* + Contains the most recent search-pattern. This is used for "n" and 'hlsearch'. + It is writable with `:let`, you can change it to have 'hlsearch' highlight + other matches without actually searching. You can't yank or delete into this +*** ../vim-7.4.604/src/ops.c 2015-01-27 13:22:17.176885347 +0100 +--- src/ops.c 2015-01-27 18:33:06.813476985 +0100 +*************** +*** 856,866 **** + if ( (regname > 0 && ASCII_ISALNUM(regname)) + || (!writing && vim_strchr((char_u *) + #ifdef FEAT_EVAL +! "/.%#:=" + #else +! "/.%#:" + #endif + , regname) != NULL) + || regname == '"' + || regname == '-' + || regname == '_' +--- 856,867 ---- + if ( (regname > 0 && ASCII_ISALNUM(regname)) + || (!writing && vim_strchr((char_u *) + #ifdef FEAT_EVAL +! "/.%:=" + #else +! "/.%:" + #endif + , regname) != NULL) ++ || regname == '#' + || regname == '"' + || regname == '-' + || regname == '_' +*************** +*** 6514,6519 **** +--- 6515,6541 ---- + return; + } + ++ if (name == '#') ++ { ++ buf_T *buf; ++ ++ if (VIM_ISDIGIT(*str)) ++ { ++ int num = atoi((char *)str); ++ ++ buf = buflist_findnr(num); ++ if (buf == NULL) ++ EMSGN(_(e_nobufnr), (long)num); ++ } ++ else ++ buf = buflist_findnr(buflist_findpat(str, str + STRLEN(str), ++ TRUE, FALSE, FALSE)); ++ if (buf == NULL) ++ return; ++ curwin->w_alt_fnum = buf->b_fnum; ++ return; ++ } ++ + #ifdef FEAT_EVAL + if (name == '=') + { +*** ../vim-7.4.604/src/buffer.c 2015-01-07 13:31:48.886661739 +0100 +--- src/buffer.c 2015-01-27 18:19:29.334392632 +0100 +*************** +*** 1150,1156 **** + { + /* don't warn when deleting */ + if (!unload) +! EMSGN(_("E86: Buffer %ld does not exist"), count); + } + else if (dir == FORWARD) + EMSG(_("E87: Cannot go beyond last buffer")); +--- 1150,1156 ---- + { + /* don't warn when deleting */ + if (!unload) +! EMSGN(_(e_nobufnr), count); + } + else if (dir == FORWARD) + EMSG(_("E87: Cannot go beyond last buffer")); +*** ../vim-7.4.604/src/globals.h 2015-01-14 12:44:38.407422077 +0100 +--- src/globals.h 2015-01-27 18:19:24.294447531 +0100 +*************** +*** 1571,1576 **** +--- 1571,1577 ---- + EXTERN char_u e_intern2[] INIT(= N_("E685: Internal error: %s")); + EXTERN char_u e_maxmempat[] INIT(= N_("E363: pattern uses more memory than 'maxmempattern'")); + EXTERN char_u e_emptybuf[] INIT(= N_("E749: empty buffer")); ++ EXTERN char_u e_nobufnr[] INIT(= N_("E86: Buffer %ld does not exist")); + + #ifdef FEAT_EX_EXTRA + EXTERN char_u e_invalpat[] INIT(= N_("E682: Invalid search pattern or delimiter")); +*** ../vim-7.4.604/src/version.c 2015-01-27 17:11:55.690558815 +0100 +--- src/version.c 2015-01-27 17:15:24.132287083 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 605, + /**/ + +-- +All true wisdom is found on T-shirts. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.606 b/SOURCES/7.4.606 new file mode 100644 index 0000000..e5315c3 --- /dev/null +++ b/SOURCES/7.4.606 @@ -0,0 +1,46 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.606 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.606 +Problem: May crash when using a small window. +Solution: Avoid dividing by zero. (Christian Brabandt) +Files: src/normal.c + + +*** ../vim-7.4.605/src/normal.c 2015-01-14 17:52:26.603094340 +0100 +--- src/normal.c 2015-01-27 20:59:18.721057793 +0100 +*************** +*** 4457,4462 **** +--- 4457,4464 ---- + col_off2 = col_off1 - curwin_col_off2(); + width1 = W_WIDTH(curwin) - col_off1; + width2 = W_WIDTH(curwin) - col_off2; ++ if (width2 == 0) ++ width2 = 1; /* avoid divide by zero */ + + #ifdef FEAT_VERTSPLIT + if (curwin->w_width != 0) +*** ../vim-7.4.605/src/version.c 2015-01-27 18:43:42.138535469 +0100 +--- src/version.c 2015-01-27 20:41:07.697066323 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 606, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +132. You come back and check this list every half-hour. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.607 b/SOURCES/7.4.607 new file mode 100644 index 0000000..357124a --- /dev/null +++ b/SOURCES/7.4.607 @@ -0,0 +1,56 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.607 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.607 (after 7.4.598) +Problem: Compiler warnings for unused variables. +Solution: Move them inside #ifdef. (Kazunobu Kuriyama) +Files: src/ui.c + + +*** ../vim-7.4.606/src/ui.c 2015-01-27 14:09:29.625898193 +0100 +--- src/ui.c 2015-01-27 21:29:44.528861744 +0100 +*************** +*** 73,80 **** + static char_u *ta_str = NULL; + static int ta_off; /* offset for next char to use when ta_str != NULL */ + static int ta_len; /* length of ta_str when it's not NULL*/ +- static int clipboard_needs_update; /* clipboard needs to be updated */ +- static int global_change_count = 0; /* if set, inside a start_global_changes */ + + void + ui_inchar_undo(s, len) +--- 73,78 ---- +*************** +*** 564,569 **** +--- 562,569 ---- + * prevents accessing the clipboard very often which might slow down Vim + * considerably. + */ ++ static int global_change_count = 0; /* if set, inside a start_global_changes */ ++ static int clipboard_needs_update; /* clipboard needs to be updated */ + + /* + * Save clip_unnamed and reset it. +*** ../vim-7.4.606/src/version.c 2015-01-27 20:59:26.496971751 +0100 +--- src/version.c 2015-01-27 21:31:22.247780991 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 607, + /**/ + +-- +Never eat yellow snow. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.609 b/SOURCES/7.4.609 new file mode 100644 index 0000000..bd96014 --- /dev/null +++ b/SOURCES/7.4.609 @@ -0,0 +1,782 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.609 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.609 +Problem: For complicated list and dict use the garbage collector can run + out of stack space. +Solution: Use a stack of dicts and lists to be marked, thus making it + iterative instead of recursive. (Ben Fritz) +Files: src/eval.c, src/if_lua.c, src/if_py_both.h, src/if_python.c, + src/if_python3.c, src/proto/eval.pro, src/proto/if_lua.pro, + src/proto/if_python.pro, src/proto/if_python3.pro, src/structs.h + + +*** ../vim-7.4.608/src/eval.c 2015-01-27 15:18:55.152333309 +0100 +--- src/eval.c 2015-02-03 12:41:59.468525906 +0100 +*************** +*** 93,99 **** + char_u *ll_newkey; /* New key for Dict in alloc. mem or NULL. */ + } lval_T; + +- + static char *e_letunexp = N_("E18: Unexpected characters in :let"); + static char *e_listidx = N_("E684: list index out of range: %ld"); + static char *e_undefvar = N_("E121: Undefined variable: %s"); +--- 93,98 ---- +*************** +*** 6811,6816 **** +--- 6810,6816 ---- + garbage_collect() + { + int copyID; ++ int abort = FALSE; + buf_T *buf; + win_T *wp; + int i; +*************** +*** 6841,6922 **** + * the item is referenced elsewhere the funccal must not be freed. */ + for (fc = previous_funccal; fc != NULL; fc = fc->caller) + { +! set_ref_in_ht(&fc->l_vars.dv_hashtab, copyID + 1); +! set_ref_in_ht(&fc->l_avars.dv_hashtab, copyID + 1); + } + + /* script-local variables */ + for (i = 1; i <= ga_scripts.ga_len; ++i) +! set_ref_in_ht(&SCRIPT_VARS(i), copyID); + + /* buffer-local variables */ + for (buf = firstbuf; buf != NULL; buf = buf->b_next) +! set_ref_in_item(&buf->b_bufvar.di_tv, copyID); + + /* window-local variables */ + FOR_ALL_TAB_WINDOWS(tp, wp) +! set_ref_in_item(&wp->w_winvar.di_tv, copyID); + #ifdef FEAT_AUTOCMD + if (aucmd_win != NULL) +! set_ref_in_item(&aucmd_win->w_winvar.di_tv, copyID); + #endif + + #ifdef FEAT_WINDOWS + /* tabpage-local variables */ + for (tp = first_tabpage; tp != NULL; tp = tp->tp_next) +! set_ref_in_item(&tp->tp_winvar.di_tv, copyID); + #endif + + /* global variables */ +! set_ref_in_ht(&globvarht, copyID); + + /* function-local variables */ + for (fc = current_funccal; fc != NULL; fc = fc->caller) + { +! set_ref_in_ht(&fc->l_vars.dv_hashtab, copyID); +! set_ref_in_ht(&fc->l_avars.dv_hashtab, copyID); + } + + /* v: vars */ +! set_ref_in_ht(&vimvarht, copyID); + + #ifdef FEAT_LUA +! set_ref_in_lua(copyID); + #endif + + #ifdef FEAT_PYTHON +! set_ref_in_python(copyID); + #endif + + #ifdef FEAT_PYTHON3 +! set_ref_in_python3(copyID); + #endif + +! /* +! * 2. Free lists and dictionaries that are not referenced. +! */ +! did_free = free_unref_items(copyID); +! +! /* +! * 3. Check if any funccal can be freed now. +! */ +! for (pfc = &previous_funccal; *pfc != NULL; ) + { +! if (can_free_funccal(*pfc, copyID)) + { +! fc = *pfc; +! *pfc = fc->caller; +! free_funccal(fc, TRUE); +! did_free = TRUE; +! did_free_funccal = TRUE; + } +! else +! pfc = &(*pfc)->caller; + } +- if (did_free_funccal) +- /* When a funccal was freed some more items might be garbage +- * collected, so run again. */ +- (void)garbage_collect(); + + return did_free; + } +--- 6841,6935 ---- + * the item is referenced elsewhere the funccal must not be freed. */ + for (fc = previous_funccal; fc != NULL; fc = fc->caller) + { +! abort = abort || set_ref_in_ht(&fc->l_vars.dv_hashtab, copyID + 1, +! NULL); +! abort = abort || set_ref_in_ht(&fc->l_avars.dv_hashtab, copyID + 1, +! NULL); + } + + /* script-local variables */ + for (i = 1; i <= ga_scripts.ga_len; ++i) +! abort = abort || set_ref_in_ht(&SCRIPT_VARS(i), copyID, NULL); + + /* buffer-local variables */ + for (buf = firstbuf; buf != NULL; buf = buf->b_next) +! abort = abort || set_ref_in_item(&buf->b_bufvar.di_tv, copyID, +! NULL, NULL); + + /* window-local variables */ + FOR_ALL_TAB_WINDOWS(tp, wp) +! abort = abort || set_ref_in_item(&wp->w_winvar.di_tv, copyID, +! NULL, NULL); + #ifdef FEAT_AUTOCMD + if (aucmd_win != NULL) +! abort = abort || set_ref_in_item(&aucmd_win->w_winvar.di_tv, copyID, +! NULL, NULL); + #endif + + #ifdef FEAT_WINDOWS + /* tabpage-local variables */ + for (tp = first_tabpage; tp != NULL; tp = tp->tp_next) +! abort = abort || set_ref_in_item(&tp->tp_winvar.di_tv, copyID, +! NULL, NULL); + #endif + + /* global variables */ +! abort = abort || set_ref_in_ht(&globvarht, copyID, NULL); + + /* function-local variables */ + for (fc = current_funccal; fc != NULL; fc = fc->caller) + { +! abort = abort || set_ref_in_ht(&fc->l_vars.dv_hashtab, copyID, NULL); +! abort = abort || set_ref_in_ht(&fc->l_avars.dv_hashtab, copyID, NULL); + } + + /* v: vars */ +! abort = abort || set_ref_in_ht(&vimvarht, copyID, NULL); + + #ifdef FEAT_LUA +! abort = abort || set_ref_in_lua(copyID); + #endif + + #ifdef FEAT_PYTHON +! abort = abort || set_ref_in_python(copyID); + #endif + + #ifdef FEAT_PYTHON3 +! abort = abort || set_ref_in_python3(copyID); + #endif + +! if (!abort) + { +! /* +! * 2. Free lists and dictionaries that are not referenced. +! */ +! did_free = free_unref_items(copyID); +! +! /* +! * 3. Check if any funccal can be freed now. +! */ +! for (pfc = &previous_funccal; *pfc != NULL; ) + { +! if (can_free_funccal(*pfc, copyID)) +! { +! fc = *pfc; +! *pfc = fc->caller; +! free_funccal(fc, TRUE); +! did_free = TRUE; +! did_free_funccal = TRUE; +! } +! else +! pfc = &(*pfc)->caller; + } +! if (did_free_funccal) +! /* When a funccal was freed some more items might be garbage +! * collected, so run again. */ +! (void)garbage_collect(); +! } +! else if (p_verbose > 0) +! { +! verb_msg((char_u *)_("Not enough memory to set references, garbage collection aborted!")); + } + + return did_free; + } +*************** +*** 6976,7023 **** + + /* + * Mark all lists and dicts referenced through hashtab "ht" with "copyID". + */ +! void +! set_ref_in_ht(ht, copyID) +! hashtab_T *ht; +! int copyID; + { + int todo; + hashitem_T *hi; + +! todo = (int)ht->ht_used; +! for (hi = ht->ht_array; todo > 0; ++hi) +! if (!HASHITEM_EMPTY(hi)) + { +! --todo; +! set_ref_in_item(&HI2DI(hi)->di_tv, copyID); + } + } + + /* + * Mark all lists and dicts referenced through list "l" with "copyID". + */ +! void +! set_ref_in_list(l, copyID) + list_T *l; + int copyID; + { +! listitem_T *li; + +! for (li = l->lv_first; li != NULL; li = li->li_next) +! set_ref_in_item(&li->li_tv, copyID); + } + + /* + * Mark all lists and dicts referenced through typval "tv" with "copyID". + */ +! void +! set_ref_in_item(tv, copyID) +! typval_T *tv; +! int copyID; + { + dict_T *dd; + list_T *ll; + + switch (tv->v_type) + { +--- 6989,7100 ---- + + /* + * Mark all lists and dicts referenced through hashtab "ht" with "copyID". ++ * "list_stack" is used to add lists to be marked. Can be NULL. ++ * ++ * Returns TRUE if setting references failed somehow. + */ +! int +! set_ref_in_ht(ht, copyID, list_stack) +! hashtab_T *ht; +! int copyID; +! list_stack_T **list_stack; + { + int todo; ++ int abort = FALSE; + hashitem_T *hi; ++ hashtab_T *cur_ht; ++ ht_stack_T *ht_stack = NULL; ++ ht_stack_T *tempitem; + +! cur_ht = ht; +! for (;;) +! { +! if (!abort) + { +! /* Mark each item in the hashtab. If the item contains a hashtab +! * it is added to ht_stack, if it contains a list it is added to +! * list_stack. */ +! todo = (int)cur_ht->ht_used; +! for (hi = cur_ht->ht_array; todo > 0; ++hi) +! if (!HASHITEM_EMPTY(hi)) +! { +! --todo; +! abort = abort || set_ref_in_item(&HI2DI(hi)->di_tv, copyID, +! &ht_stack, list_stack); +! } + } ++ ++ if (ht_stack == NULL) ++ break; ++ ++ /* take an item from the stack */ ++ cur_ht = ht_stack->ht; ++ tempitem = ht_stack; ++ ht_stack = ht_stack->prev; ++ free(tempitem); ++ } ++ ++ return abort; + } + + /* + * Mark all lists and dicts referenced through list "l" with "copyID". ++ * "ht_stack" is used to add hashtabs to be marked. Can be NULL. ++ * ++ * Returns TRUE if setting references failed somehow. + */ +! int +! set_ref_in_list(l, copyID, ht_stack) + list_T *l; + int copyID; ++ ht_stack_T **ht_stack; + { +! listitem_T *li; +! int abort = FALSE; +! list_T *cur_l; +! list_stack_T *list_stack = NULL; +! list_stack_T *tempitem; +! +! cur_l = l; +! for (;;) +! { +! if (!abort) +! /* Mark each item in the list. If the item contains a hashtab +! * it is added to ht_stack, if it contains a list it is added to +! * list_stack. */ +! for (li = cur_l->lv_first; !abort && li != NULL; li = li->li_next) +! abort = abort || set_ref_in_item(&li->li_tv, copyID, +! ht_stack, &list_stack); +! if (list_stack == NULL) +! break; +! +! /* take an item from the stack */ +! cur_l = list_stack->list; +! tempitem = list_stack; +! list_stack = list_stack->prev; +! free(tempitem); +! } + +! return abort; + } + + /* + * Mark all lists and dicts referenced through typval "tv" with "copyID". ++ * "list_stack" is used to add lists to be marked. Can be NULL. ++ * "ht_stack" is used to add hashtabs to be marked. Can be NULL. ++ * ++ * Returns TRUE if setting references failed somehow. + */ +! int +! set_ref_in_item(tv, copyID, ht_stack, list_stack) +! typval_T *tv; +! int copyID; +! ht_stack_T **ht_stack; +! list_stack_T **list_stack; + { + dict_T *dd; + list_T *ll; ++ int abort = FALSE; + + switch (tv->v_type) + { +*************** +*** 7027,7033 **** + { + /* Didn't see this dict yet. */ + dd->dv_copyID = copyID; +! set_ref_in_ht(&dd->dv_hashtab, copyID); + } + break; + +--- 7104,7126 ---- + { + /* Didn't see this dict yet. */ + dd->dv_copyID = copyID; +! if (ht_stack == NULL) +! { +! abort = set_ref_in_ht(&dd->dv_hashtab, copyID, list_stack); +! } +! else +! { +! ht_stack_T *newitem = (ht_stack_T*)malloc( +! sizeof(ht_stack_T)); +! if (newitem == NULL) +! abort = TRUE; +! else +! { +! newitem->ht = &dd->dv_hashtab; +! newitem->prev = *ht_stack; +! *ht_stack = newitem; +! } +! } + } + break; + +*************** +*** 7037,7047 **** + { + /* Didn't see this list yet. */ + ll->lv_copyID = copyID; +! set_ref_in_list(ll, copyID); + } + break; + } +! return; + } + + /* +--- 7130,7156 ---- + { + /* Didn't see this list yet. */ + ll->lv_copyID = copyID; +! if (list_stack == NULL) +! { +! abort = set_ref_in_list(ll, copyID, ht_stack); +! } +! else +! { +! list_stack_T *newitem = (list_stack_T*)malloc( +! sizeof(list_stack_T)); +! if (newitem == NULL) +! abort = TRUE; +! else +! { +! newitem->list = ll; +! newitem->prev = *list_stack; +! *list_stack = newitem; +! } +! } + } + break; + } +! return abort; + } + + /* +*** ../vim-7.4.608/src/if_lua.c 2014-05-07 17:31:32.473182497 +0200 +--- src/if_lua.c 2015-02-03 12:45:41.978204997 +0100 +*************** +*** 1523,1534 **** + static int + luaV_setref (lua_State *L) + { +! int copyID = lua_tointeger(L, 1); +! typval_T tv; + luaV_getfield(L, LUAVIM_LIST); + luaV_getfield(L, LUAVIM_DICT); + lua_pushnil(L); +! while (lua_next(L, lua_upvalueindex(1)) != 0) /* traverse cache table */ + { + lua_getmetatable(L, -1); + if (lua_rawequal(L, -1, 2)) /* list? */ +--- 1523,1536 ---- + static int + luaV_setref (lua_State *L) + { +! int copyID = lua_tointeger(L, 1); +! int abort = FALSE; +! typval_T tv; +! + luaV_getfield(L, LUAVIM_LIST); + luaV_getfield(L, LUAVIM_DICT); + lua_pushnil(L); +! while (!abort && lua_next(L, lua_upvalueindex(1)) != 0) /* traverse cache table */ + { + lua_getmetatable(L, -1); + if (lua_rawequal(L, -1, 2)) /* list? */ +*************** +*** 1542,1550 **** + tv.vval.v_dict = (dict_T *) lua_touserdata(L, 4); /* key */ + } + lua_pop(L, 2); /* metatable and value */ +! set_ref_in_item(&tv, copyID); + } +! return 0; + } + + static int +--- 1544,1552 ---- + tv.vval.v_dict = (dict_T *) lua_touserdata(L, 4); /* key */ + } + lua_pop(L, 2); /* metatable and value */ +! abort = set_ref_in_item(&tv, copyID, NULL, NULL); + } +! lua_pushinteger(L, abort); + } + + static int +*************** +*** 1770,1782 **** + lua_call(L, 3, 0); + } + +! void + set_ref_in_lua (int copyID) + { +! if (!lua_isopen()) return; +! luaV_getfield(L, LUAVIM_SETREF); +! lua_pushinteger(L, copyID); +! lua_call(L, 1, 0); + } + + #endif +--- 1772,1794 ---- + lua_call(L, 3, 0); + } + +! int + set_ref_in_lua (int copyID) + { +! int aborted = 0; +! +! if (lua_isopen()) +! { +! luaV_getfield(L, LUAVIM_SETREF); +! /* call the function with 1 arg, getting 1 result back */ +! lua_pushinteger(L, copyID); +! lua_call(L, 1, 1); +! /* get the result */ +! aborted = lua_tointeger(L, -1); +! /* pop result off the stack */ +! lua_pop(L, 1); +! } +! return aborted; + } + + #endif +*** ../vim-7.4.608/src/if_py_both.h 2014-12-17 14:45:56.095854545 +0100 +--- src/if_py_both.h 2015-02-03 12:46:46.629530177 +0100 +*************** +*** 5502,5535 **** + PyErr_Clear(); + } + +! static void + set_ref_in_py(const int copyID) + { + pylinkedlist_T *cur; + dict_T *dd; + list_T *ll; + + if (lastdict != NULL) +! for(cur = lastdict ; cur != NULL ; cur = cur->pll_prev) + { + dd = ((DictionaryObject *) (cur->pll_obj))->dict; + if (dd->dv_copyID != copyID) + { + dd->dv_copyID = copyID; +! set_ref_in_ht(&dd->dv_hashtab, copyID); + } + } + + if (lastlist != NULL) +! for(cur = lastlist ; cur != NULL ; cur = cur->pll_prev) + { + ll = ((ListObject *) (cur->pll_obj))->list; + if (ll->lv_copyID != copyID) + { + ll->lv_copyID = copyID; +! set_ref_in_list(ll, copyID); + } + } + } + + static int +--- 5502,5542 ---- + PyErr_Clear(); + } + +! static int + set_ref_in_py(const int copyID) + { + pylinkedlist_T *cur; + dict_T *dd; + list_T *ll; ++ int abort = FALSE; + + if (lastdict != NULL) +! { +! for(cur = lastdict ; !abort && cur != NULL ; cur = cur->pll_prev) + { + dd = ((DictionaryObject *) (cur->pll_obj))->dict; + if (dd->dv_copyID != copyID) + { + dd->dv_copyID = copyID; +! abort = abort || set_ref_in_ht(&dd->dv_hashtab, copyID, NULL); + } + } ++ } + + if (lastlist != NULL) +! { +! for(cur = lastlist ; !abort && cur != NULL ; cur = cur->pll_prev) + { + ll = ((ListObject *) (cur->pll_obj))->list; + if (ll->lv_copyID != copyID) + { + ll->lv_copyID = copyID; +! abort = abort || set_ref_in_list(ll, copyID, NULL); + } + } ++ } ++ ++ return abort; + } + + static int +*** ../vim-7.4.608/src/if_python.c 2014-07-23 16:56:56.587876204 +0200 +--- src/if_python.c 2015-02-03 12:05:13.471422753 +0100 +*************** +*** 1567,1574 **** + } + #endif /* Python 1.4 */ + +! void + set_ref_in_python (int copyID) + { +! set_ref_in_py(copyID); + } +--- 1567,1574 ---- + } + #endif /* Python 1.4 */ + +! int + set_ref_in_python (int copyID) + { +! return set_ref_in_py(copyID); + } +*** ../vim-7.4.608/src/if_python3.c 2014-03-30 16:11:37.180530823 +0200 +--- src/if_python3.c 2015-02-03 12:05:13.471422753 +0100 +*************** +*** 1649,1656 **** + } + } + +! void + set_ref_in_python3 (int copyID) + { +! set_ref_in_py(copyID); + } +--- 1649,1656 ---- + } + } + +! int + set_ref_in_python3 (int copyID) + { +! int set_ref_in_py(copyID); + } +*** ../vim-7.4.608/src/proto/eval.pro 2014-12-17 14:36:10.363090985 +0100 +--- src/proto/eval.pro 2015-02-03 12:47:58.472780049 +0100 +*************** +*** 62,70 **** + void list_insert __ARGS((list_T *l, listitem_T *ni, listitem_T *item)); + void vimlist_remove __ARGS((list_T *l, listitem_T *item, listitem_T *item2)); + int garbage_collect __ARGS((void)); +! void set_ref_in_ht __ARGS((hashtab_T *ht, int copyID)); +! void set_ref_in_list __ARGS((list_T *l, int copyID)); +! void set_ref_in_item __ARGS((typval_T *tv, int copyID)); + dict_T *dict_alloc __ARGS((void)); + void dict_unref __ARGS((dict_T *d)); + void dict_free __ARGS((dict_T *d, int recurse)); +--- 62,70 ---- + void list_insert __ARGS((list_T *l, listitem_T *ni, listitem_T *item)); + void vimlist_remove __ARGS((list_T *l, listitem_T *item, listitem_T *item2)); + int garbage_collect __ARGS((void)); +! int set_ref_in_ht __ARGS((hashtab_T *ht, int copyID, list_stack_T **list_stack)); +! int set_ref_in_list __ARGS((list_T *l, int copyID, ht_stack_T **ht_stack)); +! int set_ref_in_item __ARGS((typval_T *tv, int copyID, ht_stack_T **ht_stack, list_stack_T **list_stack)); + dict_T *dict_alloc __ARGS((void)); + void dict_unref __ARGS((dict_T *d)); + void dict_free __ARGS((dict_T *d, int recurse)); +*** ../vim-7.4.608/src/proto/if_lua.pro 2012-04-05 16:41:35.000000000 +0200 +--- src/proto/if_lua.pro 2015-02-03 12:05:13.475422711 +0100 +*************** +*** 7,11 **** + void lua_buffer_free __ARGS((buf_T *buf)); + void lua_window_free __ARGS((win_T *win)); + void do_luaeval __ARGS((char_u *str, typval_T *arg, typval_T *rettv)); +! void set_ref_in_lua __ARGS((int copyID)); + /* vim: set ft=c : */ +--- 7,11 ---- + void lua_buffer_free __ARGS((buf_T *buf)); + void lua_window_free __ARGS((win_T *win)); + void do_luaeval __ARGS((char_u *str, typval_T *arg, typval_T *rettv)); +! int set_ref_in_lua __ARGS((int copyID)); + /* vim: set ft=c : */ +*** ../vim-7.4.608/src/proto/if_python.pro 2013-08-10 13:37:15.000000000 +0200 +--- src/proto/if_python.pro 2015-02-03 12:48:02.936733431 +0100 +*************** +*** 9,13 **** + void python_window_free __ARGS((win_T *win)); + void python_tabpage_free __ARGS((tabpage_T *tab)); + void do_pyeval __ARGS((char_u *str, typval_T *rettv)); +! void set_ref_in_python __ARGS((int copyID)); + /* vim: set ft=c : */ +--- 9,13 ---- + void python_window_free __ARGS((win_T *win)); + void python_tabpage_free __ARGS((tabpage_T *tab)); + void do_pyeval __ARGS((char_u *str, typval_T *rettv)); +! int set_ref_in_python __ARGS((int copyID)); + /* vim: set ft=c : */ +*** ../vim-7.4.608/src/proto/if_python3.pro 2013-08-10 13:37:16.000000000 +0200 +--- src/proto/if_python3.pro 2015-02-03 12:48:03.292729714 +0100 +*************** +*** 9,13 **** + void python3_window_free __ARGS((win_T *win)); + void python3_tabpage_free __ARGS((tabpage_T *tab)); + void do_py3eval __ARGS((char_u *str, typval_T *rettv)); +! void set_ref_in_python3 __ARGS((int copyID)); + /* vim: set ft=c : */ +--- 9,13 ---- + void python3_window_free __ARGS((win_T *win)); + void python3_tabpage_free __ARGS((tabpage_T *tab)); + void do_py3eval __ARGS((char_u *str, typval_T *rettv)); +! int set_ref_in_python3 __ARGS((int copyID)); + /* vim: set ft=c : */ +*** ../vim-7.4.608/src/structs.h 2015-01-14 12:44:38.407422077 +0100 +--- src/structs.h 2015-02-03 12:05:13.475422711 +0100 +*************** +*** 1223,1228 **** +--- 1223,1242 ---- + dict_T *dv_used_prev; /* previous dict in used dicts list */ + }; + ++ /* structure used for explicit stack while garbage collecting hash tables */ ++ typedef struct ht_stack_S ++ { ++ hashtab_T *ht; ++ struct ht_stack_S *prev; ++ } ht_stack_T; ++ ++ /* structure used for explicit stack while garbage collecting lists */ ++ typedef struct list_stack_S ++ { ++ list_T *list; ++ struct list_stack_S *prev; ++ } list_stack_T; ++ + /* values for b_syn_spell: what to do with toplevel text */ + #define SYNSPL_DEFAULT 0 /* spell check if @Spell not defined */ + #define SYNSPL_TOP 1 /* spell check toplevel text */ +*** ../vim-7.4.608/src/version.c 2015-01-27 22:52:10.713524965 +0100 +--- src/version.c 2015-02-03 12:09:19.324876918 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 609, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +167. You have more than 200 websites bookmarked. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.610 b/SOURCES/7.4.610 new file mode 100644 index 0000000..7609402 --- /dev/null +++ b/SOURCES/7.4.610 @@ -0,0 +1,89 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.610 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.610 +Problem: Some function headers may be missing from generated .pro files. +Solution: Add PROTO to the #ifdef. +Files: src/option.c, src/syntax.c + + +*** ../vim-7.4.609/src/option.c 2015-01-27 15:58:37.198395525 +0100 +--- src/option.c 2015-02-03 12:57:39.718500650 +0100 +*************** +*** 11212,11218 **** + return FALSE; + } + +! #ifdef FEAT_LANGMAP + /* + * Any character has an equivalent 'langmap' character. This is used for + * keyboards that have a special language mode that sends characters above +--- 11212,11218 ---- + return FALSE; + } + +! #if defined(FEAT_LANGMAP) || defined(PROTO) + /* + * Any character has an equivalent 'langmap' character. This is used for + * keyboards that have a special language mode that sends characters above +*************** +*** 11226,11232 **** + * langmap_entry_T. This does the same as langmap_mapchar[] for characters >= + * 256. + */ +! # ifdef FEAT_MBYTE + /* + * With multi-byte support use growarray for 'langmap' chars >= 256 + */ +--- 11226,11232 ---- + * langmap_entry_T. This does the same as langmap_mapchar[] for characters >= + * 256. + */ +! # if defined(FEAT_MBYTE) || defined(PROTO) + /* + * With multi-byte support use growarray for 'langmap' chars >= 256 + */ +*** ../vim-7.4.609/src/syntax.c 2014-11-19 19:33:13.369532180 +0100 +--- src/syntax.c 2015-02-03 12:59:13.377443499 +0100 +*************** +*** 6537,6543 **** + } + #endif + +! #ifdef FEAT_PROFILE + /* + * ":syntime". + */ +--- 6537,6543 ---- + } + #endif + +! #if defined(FEAT_PROFILE) || defined(PROTO) + /* + * ":syntime". + */ +*** ../vim-7.4.609/src/version.c 2015-02-03 12:55:11.140179551 +0100 +--- src/version.c 2015-02-03 12:58:24.829991354 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 610, + /**/ + +-- +Microsoft says that MS-Windows is much better for you than Linux. +That's like the Pope saying that catholicism is much better for +you than protestantism. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.611 b/SOURCES/7.4.611 new file mode 100644 index 0000000..667d322 --- /dev/null +++ b/SOURCES/7.4.611 @@ -0,0 +1,48 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.611 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.611 (after 7.4.609) +Problem: Syntax error. +Solution: Change statement to return. +Files: src/if_python3.c + + +*** ../vim-7.4.610/src/if_python3.c 2015-02-03 12:55:11.140179551 +0100 +--- src/if_python3.c 2015-02-03 13:13:34.407743645 +0100 +*************** +*** 1652,1656 **** + int + set_ref_in_python3 (int copyID) + { +! int set_ref_in_py(copyID); + } +--- 1652,1656 ---- + int + set_ref_in_python3 (int copyID) + { +! return set_ref_in_py(copyID); + } +*** ../vim-7.4.610/src/version.c 2015-02-03 13:00:34.404529640 +0100 +--- src/version.c 2015-02-03 13:14:20.463222408 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 611, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +168. You have your own domain name. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.613 b/SOURCES/7.4.613 new file mode 100644 index 0000000..f6b52e8 --- /dev/null +++ b/SOURCES/7.4.613 @@ -0,0 +1,236 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.613 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.613 +Problem: The NFA engine does not implement the 'redrawtime' time limit. +Solution: Implement the time limit. +Files: src/regexp_nfa.c + + +*** ../vim-7.4.612/src/regexp_nfa.c 2015-01-27 14:54:07.944583588 +0100 +--- src/regexp_nfa.c 2015-02-03 16:25:58.681726505 +0100 +*************** +*** 311,318 **** + static void nfa_save_listids __ARGS((nfa_regprog_T *prog, int *list)); + static void nfa_restore_listids __ARGS((nfa_regprog_T *prog, int *list)); + static int nfa_re_num_cmp __ARGS((long_u val, int op, long_u pos)); +! static long nfa_regtry __ARGS((nfa_regprog_T *prog, colnr_T col)); +! static long nfa_regexec_both __ARGS((char_u *line, colnr_T col)); + static regprog_T *nfa_regcomp __ARGS((char_u *expr, int re_flags)); + static void nfa_regfree __ARGS((regprog_T *prog)); + static int nfa_regexec_nl __ARGS((regmatch_T *rmp, char_u *line, colnr_T col, int line_lbr)); +--- 311,318 ---- + static void nfa_save_listids __ARGS((nfa_regprog_T *prog, int *list)); + static void nfa_restore_listids __ARGS((nfa_regprog_T *prog, int *list)); + static int nfa_re_num_cmp __ARGS((long_u val, int op, long_u pos)); +! static long nfa_regtry __ARGS((nfa_regprog_T *prog, colnr_T col, proftime_T *tm)); +! static long nfa_regexec_both __ARGS((char_u *line, colnr_T col, proftime_T *tm)); + static regprog_T *nfa_regcomp __ARGS((char_u *expr, int re_flags)); + static void nfa_regfree __ARGS((regprog_T *prog)); + static int nfa_regexec_nl __ARGS((regmatch_T *rmp, char_u *line, colnr_T col, int line_lbr)); +*************** +*** 3850,3855 **** +--- 3850,3859 ---- + + /* Used during execution: whether a match has been found. */ + static int nfa_match; ++ #ifdef FEAT_RELTIME ++ static proftime_T *nfa_time_limit; ++ static int nfa_time_count; ++ #endif + + static void copy_pim __ARGS((nfa_pim_T *to, nfa_pim_T *from)); + static void clear_sub __ARGS((regsub_T *sub)); +*************** +*** 5449,5454 **** +--- 5453,5462 ---- + fast_breakcheck(); + if (got_int) + return FALSE; ++ #ifdef FEAT_RELTIME ++ if (nfa_time_limit != NULL && profile_passed_limit(nfa_time_limit)) ++ return FALSE; ++ #endif + + nfa_match = FALSE; + +*************** +*** 6789,6797 **** + break; + + /* Allow interrupting with CTRL-C. */ +! fast_breakcheck(); + if (got_int) + break; + } + + #ifdef ENABLE_LOG +--- 6797,6814 ---- + break; + + /* Allow interrupting with CTRL-C. */ +! line_breakcheck(); + if (got_int) + break; ++ #ifdef FEAT_RELTIME ++ /* Check for timeout once in a twenty times to avoid overhead. */ ++ if (nfa_time_limit != NULL && ++nfa_time_count == 20) ++ { ++ nfa_time_count = 0; ++ if (profile_passed_limit(nfa_time_limit)) ++ break; ++ } ++ #endif + } + + #ifdef ENABLE_LOG +*************** +*** 6818,6826 **** + * Returns <= 0 for failure, number of lines contained in the match otherwise. + */ + static long +! nfa_regtry(prog, col) + nfa_regprog_T *prog; + colnr_T col; + { + int i; + regsubs_T subs, m; +--- 6835,6844 ---- + * Returns <= 0 for failure, number of lines contained in the match otherwise. + */ + static long +! nfa_regtry(prog, col, tm) + nfa_regprog_T *prog; + colnr_T col; ++ proftime_T *tm; /* timeout limit or NULL */ + { + int i; + regsubs_T subs, m; +*************** +*** 6831,6836 **** +--- 6849,6858 ---- + #endif + + reginput = regline + col; ++ #ifdef FEAT_RELTIME ++ nfa_time_limit = tm; ++ nfa_time_count = 0; ++ #endif + + #ifdef ENABLE_LOG + f = fopen(NFA_REGEXP_RUN_LOG, "a"); +*************** +*** 6951,6959 **** + * Returns <= 0 for failure, number of lines contained in the match otherwise. + */ + static long +! nfa_regexec_both(line, startcol) + char_u *line; + colnr_T startcol; /* column to start looking for match */ + { + nfa_regprog_T *prog; + long retval = 0L; +--- 6973,6982 ---- + * Returns <= 0 for failure, number of lines contained in the match otherwise. + */ + static long +! nfa_regexec_both(line, startcol, tm) + char_u *line; + colnr_T startcol; /* column to start looking for match */ ++ proftime_T *tm; /* timeout limit or NULL */ + { + nfa_regprog_T *prog; + long retval = 0L; +*************** +*** 7047,7053 **** + prog->state[i].lastlist[1] = 0; + } + +! retval = nfa_regtry(prog, col); + + nfa_regengine.expr = NULL; + +--- 7070,7076 ---- + prog->state[i].lastlist[1] = 0; + } + +! retval = nfa_regtry(prog, col, tm); + + nfa_regengine.expr = NULL; + +*************** +*** 7209,7215 **** + ireg_icombine = FALSE; + #endif + ireg_maxcol = 0; +! return nfa_regexec_both(line, col); + } + + +--- 7232,7238 ---- + ireg_icombine = FALSE; + #endif + ireg_maxcol = 0; +! return nfa_regexec_both(line, col, NULL); + } + + +*************** +*** 7245,7251 **** + buf_T *buf; /* buffer in which to search */ + linenr_T lnum; /* nr of line to start looking for match */ + colnr_T col; /* column to start looking for match */ +! proftime_T *tm UNUSED; /* timeout limit or NULL */ + { + reg_match = NULL; + reg_mmatch = rmp; +--- 7268,7274 ---- + buf_T *buf; /* buffer in which to search */ + linenr_T lnum; /* nr of line to start looking for match */ + colnr_T col; /* column to start looking for match */ +! proftime_T *tm; /* timeout limit or NULL */ + { + reg_match = NULL; + reg_mmatch = rmp; +*************** +*** 7260,7266 **** + #endif + ireg_maxcol = rmp->rmm_maxcol; + +! return nfa_regexec_both(NULL, col); + } + + #ifdef DEBUG +--- 7283,7289 ---- + #endif + ireg_maxcol = rmp->rmm_maxcol; + +! return nfa_regexec_both(NULL, col, tm); + } + + #ifdef DEBUG +*** ../vim-7.4.612/src/version.c 2015-02-03 16:07:44.193584399 +0100 +--- src/version.c 2015-02-03 16:48:54.770821421 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 613, + /**/ + +-- +In Joseph Heller's novel "Catch-22", the main character tries to get out of a +war by proving he is crazy. But the mere fact he wants to get out of the war +only shows he isn't crazy -- creating the original "Catch-22". + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.614 b/SOURCES/7.4.614 new file mode 100644 index 0000000..89b2a96 --- /dev/null +++ b/SOURCES/7.4.614 @@ -0,0 +1,70 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.614 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.614 +Problem: There is no test for what patch 7.4.601 fixes. +Solution: Add a test. (Christian Brabandt) +Files: src/testdir/test_mapping.in, src/testdir/test_mapping.ok + + +*** ../vim-7.4.613/src/testdir/test_mapping.in 2015-01-14 16:08:29.210474234 +0100 +--- src/testdir/test_mapping.in 2015-02-03 16:52:28.828510717 +0100 +*************** +*** 31,36 **** +--- 31,41 ---- + : " expr mapping with langmap + :inoremap <expr> { "FAIL_iexplangmap" + o+ ++ :" issue #212 (feedkeys insert mapping at current position) ++ :nnoremap . :call feedkeys(".", "in")<cr> ++ :/^a b ++ 0qqdw.ifooqj0@q:unmap . ++ + + :/^test/,$w! test.out + :qa! +*************** +*** 38,40 **** +--- 43,48 ---- + + test starts here: + ++ a b c d ++ a b c d ++ +*** ../vim-7.4.613/src/testdir/test_mapping.ok 2015-01-14 16:08:29.210474234 +0100 +--- src/testdir/test_mapping.ok 2015-02-03 16:52:28.828510717 +0100 +*************** +*** 1,4 **** +--- 1,7 ---- + test starts here: ++ ++ fooc d ++ fooc d + vim + TEST2: CTRL-C |<ctrl-c>A| + +*** ../vim-7.4.613/src/version.c 2015-02-03 16:49:20.242545503 +0100 +--- src/version.c 2015-02-03 16:52:21.200592637 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 614, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +169. You hire a housekeeper for your home page. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.615 b/SOURCES/7.4.615 new file mode 100644 index 0000000..fffeeb1 --- /dev/null +++ b/SOURCES/7.4.615 @@ -0,0 +1,164 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.615 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.615 +Problem: Vim hangs when freeing a lot of objects. +Solution: Do not go back to the start of the list every time. (Yasuhiro + Matsumoto and Ariya Mizutani) +Files: src/eval.c + + +*** ../vim-7.4.614/src/eval.c 2015-02-03 12:55:11.136179596 +0100 +--- src/eval.c 2015-02-03 17:02:59.497727303 +0100 +*************** +*** 5974,5980 **** + } + + /* +! * Free a list, including all items it points to. + * Ignores the reference count. + */ + void +--- 5974,5980 ---- + } + + /* +! * Free a list, including all non-container items it points to. + * Ignores the reference count. + */ + void +*************** +*** 6941,6954 **** + free_unref_items(copyID) + int copyID; + { +! dict_T *dd; +! list_T *ll; + int did_free = FALSE; + + /* + * Go through the list of dicts and free items without the copyID. + */ + for (dd = first_dict; dd != NULL; ) + if ((dd->dv_copyID & COPYID_MASK) != (copyID & COPYID_MASK)) + { + /* Free the Dictionary and ordinary items it contains, but don't +--- 6941,6956 ---- + free_unref_items(copyID) + int copyID; + { +! dict_T *dd, *dd_next; +! list_T *ll, *ll_next; + int did_free = FALSE; + + /* + * Go through the list of dicts and free items without the copyID. + */ + for (dd = first_dict; dd != NULL; ) ++ { ++ dd_next = dd->dv_used_next; + if ((dd->dv_copyID & COPYID_MASK) != (copyID & COPYID_MASK)) + { + /* Free the Dictionary and ordinary items it contains, but don't +*************** +*** 6956,6967 **** + * of dicts or list of lists. */ + dict_free(dd, FALSE); + did_free = TRUE; +- +- /* restart, next dict may also have been freed */ +- dd = first_dict; + } +! else +! dd = dd->dv_used_next; + + /* + * Go through the list of lists and free items without the copyID. +--- 6958,6966 ---- + * of dicts or list of lists. */ + dict_free(dd, FALSE); + did_free = TRUE; + } +! dd = dd_next; +! } + + /* + * Go through the list of lists and free items without the copyID. +*************** +*** 6969,6974 **** +--- 6968,6975 ---- + * are not referenced anywhere. + */ + for (ll = first_list; ll != NULL; ) ++ { ++ ll_next = ll->lv_used_next; + if ((ll->lv_copyID & COPYID_MASK) != (copyID & COPYID_MASK) + && ll->lv_watch == NULL) + { +*************** +*** 6977,6989 **** + * or list of lists. */ + list_free(ll, FALSE); + did_free = TRUE; +- +- /* restart, next list may also have been freed */ +- ll = first_list; + } +! else +! ll = ll->lv_used_next; +! + return did_free; + } + +--- 6978,6986 ---- + * or list of lists. */ + list_free(ll, FALSE); + did_free = TRUE; + } +! ll = ll_next; +! } + return did_free; + } + +*************** +*** 7213,7219 **** + } + + /* +! * Free a Dictionary, including all items it contains. + * Ignores the reference count. + */ + void +--- 7210,7216 ---- + } + + /* +! * Free a Dictionary, including all non-container items it contains. + * Ignores the reference count. + */ + void +*** ../vim-7.4.614/src/version.c 2015-02-03 16:53:47.155669292 +0100 +--- src/version.c 2015-02-03 16:56:07.790157478 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 615, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +170. You introduce your wife as "my_lady@home.wife" and refer to your + children as "forked processes." + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.617 b/SOURCES/7.4.617 new file mode 100644 index 0000000..ce5da27 --- /dev/null +++ b/SOURCES/7.4.617 @@ -0,0 +1,101 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.617 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.617 +Problem: Wrong ":argdo" range does not cause an error. +Solution: Reset "cmd" to NULL. (Marcin Szamotulski, Ingo Karkat) +Files: src/ex_docmd.c + + +*** ../vim-7.4.616/src/ex_docmd.c 2015-01-14 21:21:56.920743646 +0100 +--- src/ex_docmd.c 2015-02-03 18:50:19.036177579 +0100 +*************** +*** 4405,4410 **** +--- 4405,4411 ---- + if (addr_type != ADDR_LINES) + { + EMSG(_(e_invaddr)); ++ cmd = NULL; + goto error; + } + if (skip) +*************** +*** 4436,4441 **** +--- 4437,4443 ---- + if (addr_type != ADDR_LINES) + { + EMSG(_(e_invaddr)); ++ cmd = NULL; + goto error; + } + if (skip) /* skip "/pat/" */ +*************** +*** 4484,4489 **** +--- 4486,4492 ---- + if (addr_type != ADDR_LINES) + { + EMSG(_(e_invaddr)); ++ cmd = NULL; + goto error; + } + if (*cmd == '&') +*************** +*** 4575,4581 **** + n = getdigits(&cmd); + if (addr_type == ADDR_LOADED_BUFFERS + || addr_type == ADDR_BUFFERS) +! lnum = compute_buffer_local_count(addr_type, lnum, (i == '-') ? -1 * n : n); + else if (i == '-') + lnum -= n; + else +--- 4578,4585 ---- + n = getdigits(&cmd); + if (addr_type == ADDR_LOADED_BUFFERS + || addr_type == ADDR_BUFFERS) +! lnum = compute_buffer_local_count( +! addr_type, lnum, (i == '-') ? -1 * n : n); + else if (i == '-') + lnum -= n; + else +*************** +*** 4662,4668 **** + return (char_u *)_(e_invrange); + break; + case ADDR_ARGUMENTS: +! if (eap->line2 > ARGCOUNT + (!ARGCOUNT)) // add 1 if ARCOUNT is 0 + return (char_u *)_(e_invrange); + break; + case ADDR_BUFFERS: +--- 4666,4673 ---- + return (char_u *)_(e_invrange); + break; + case ADDR_ARGUMENTS: +! /* add 1 if ARGCOUNT is 0 */ +! if (eap->line2 > ARGCOUNT + (!ARGCOUNT)) + return (char_u *)_(e_invrange); + break; + case ADDR_BUFFERS: +*** ../vim-7.4.616/src/version.c 2015-02-03 18:36:40.401033677 +0100 +--- src/version.c 2015-02-03 18:51:44.571251706 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 617, + /**/ + +-- +Living in Hollywood is like living in a bowl of granola. What ain't +fruits and nuts is flakes. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.618 b/SOURCES/7.4.618 new file mode 100644 index 0000000..5731568 --- /dev/null +++ b/SOURCES/7.4.618 @@ -0,0 +1,45 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.619 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.618 (after 7.4.609) +Problem: luaV_setref() is missing a return statement. (Ozaki Kiichi) +Solution: Put the return statement back. +Files: src/if_lua.c + + +*** ../vim-7.4.617/src/if_lua.c 2015-02-03 12:55:11.136179596 +0100 +--- src/if_lua.c 2015-02-03 23:07:59.892636921 +0100 +*************** +*** 1547,1552 **** +--- 1547,1553 ---- + abort = set_ref_in_item(&tv, copyID, NULL, NULL); + } + lua_pushinteger(L, abort); ++ return 0; + } + + static int +*** ../vim-7.4.617/src/version.c 2015-02-03 19:10:45.978888772 +0100 +--- src/version.c 2015-02-03 23:09:15.267493945 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 618, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +174. You know what a listserv is. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.619 b/SOURCES/7.4.619 new file mode 100644 index 0000000..b315609 --- /dev/null +++ b/SOURCES/7.4.619 @@ -0,0 +1,69 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.619 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.619 (after 7.4.618) +Problem: luaV_setref() not returning the correct value. +Solution: Return one. +Files: src/if_lua.c + + +*** ../vim-7.4.618/src/if_lua.c 2015-02-03 23:10:41.574348921 +0100 +--- src/if_lua.c 2015-02-04 22:01:19.649852981 +0100 +*************** +*** 1517,1523 **** + return 0; + } + luaV_totypval(L, -1, rettv); +! return 0; + } + + static int +--- 1517,1523 ---- + return 0; + } + luaV_totypval(L, -1, rettv); +! return 1; + } + + static int +*************** +*** 1530,1536 **** + luaV_getfield(L, LUAVIM_LIST); + luaV_getfield(L, LUAVIM_DICT); + lua_pushnil(L); +! while (!abort && lua_next(L, lua_upvalueindex(1)) != 0) /* traverse cache table */ + { + lua_getmetatable(L, -1); + if (lua_rawequal(L, -1, 2)) /* list? */ +--- 1530,1537 ---- + luaV_getfield(L, LUAVIM_LIST); + luaV_getfield(L, LUAVIM_DICT); + lua_pushnil(L); +! /* traverse cache table */ +! while (!abort && lua_next(L, lua_upvalueindex(1)) != 0) + { + lua_getmetatable(L, -1); + if (lua_rawequal(L, -1, 2)) /* list? */ +*** ../vim-7.4.618/src/version.c 2015-02-03 23:10:41.574348921 +0100 +--- src/version.c 2015-02-04 22:02:02.317286761 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 619, + /**/ + +-- +I'm so disorganized my keyboard isn't even in alphabetical order! + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.620 b/SOURCES/7.4.620 new file mode 100644 index 0000000..23f1df7 --- /dev/null +++ b/SOURCES/7.4.620 @@ -0,0 +1,52 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.620 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.620 +Problem: Compiler warning for unitinialized variable. (Tony Mechelynck) +Solution: Initialize "did_free". (Ben Fritz) +Files: src/eval.c + + +*** ../vim-7.4.619/src/eval.c 2015-02-03 17:10:02.149172883 +0100 +--- src/eval.c 2015-02-04 22:28:33.244066584 +0100 +*************** +*** 6815,6821 **** + win_T *wp; + int i; + funccall_T *fc, **pfc; +! int did_free; + int did_free_funccal = FALSE; + #ifdef FEAT_WINDOWS + tabpage_T *tp; +--- 6815,6821 ---- + win_T *wp; + int i; + funccall_T *fc, **pfc; +! int did_free = FALSE; + int did_free_funccal = FALSE; + #ifdef FEAT_WINDOWS + tabpage_T *tp; +*** ../vim-7.4.619/src/version.c 2015-02-04 22:02:33.184877183 +0100 +--- src/version.c 2015-02-04 23:06:08.637946730 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 620, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +177. You log off of your system because it's time to go to work. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.621 b/SOURCES/7.4.621 new file mode 100644 index 0000000..4415521 --- /dev/null +++ b/SOURCES/7.4.621 @@ -0,0 +1,69 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.621 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.621 (after 7.4.619) +Problem: Returning 1 in the wrong function. (Raymond Ko) +Solution: Return 1 in the right function (hopefully). +Files: src/if_lua.c + + +*** ../vim-7.4.620/src/if_lua.c 2015-02-04 22:02:33.184877183 +0100 +--- src/if_lua.c 2015-02-04 23:01:52.189364426 +0100 +*************** +*** 1517,1523 **** + return 0; + } + luaV_totypval(L, -1, rettv); +! return 1; + } + + static int +--- 1517,1523 ---- + return 0; + } + luaV_totypval(L, -1, rettv); +! return 0; + } + + static int +*************** +*** 1548,1554 **** + abort = set_ref_in_item(&tv, copyID, NULL, NULL); + } + lua_pushinteger(L, abort); +! return 0; + } + + static int +--- 1548,1554 ---- + abort = set_ref_in_item(&tv, copyID, NULL, NULL); + } + lua_pushinteger(L, abort); +! return 1; + } + + static int +*** ../vim-7.4.620/src/version.c 2015-02-04 23:06:39.453536117 +0100 +--- src/version.c 2015-02-04 23:07:28.484882812 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 621, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +178. You look for an icon to double-click to open your bedroom window. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.622 b/SOURCES/7.4.622 new file mode 100644 index 0000000..db99935 --- /dev/null +++ b/SOURCES/7.4.622 @@ -0,0 +1,53 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.622 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.622 +Problem: Compiler warning for unused argument. +Solution: Add UNUSED. +Files: src/regexp_nfa.c + + +*** ../vim-7.4.621/src/regexp_nfa.c 2015-02-03 16:49:20.242545503 +0100 +--- src/regexp_nfa.c 2015-02-05 20:28:28.268349950 +0100 +*************** +*** 6838,6844 **** + nfa_regtry(prog, col, tm) + nfa_regprog_T *prog; + colnr_T col; +! proftime_T *tm; /* timeout limit or NULL */ + { + int i; + regsubs_T subs, m; +--- 6838,6844 ---- + nfa_regtry(prog, col, tm) + nfa_regprog_T *prog; + colnr_T col; +! proftime_T *tm UNUSED; /* timeout limit or NULL */ + { + int i; + regsubs_T subs, m; +*** ../vim-7.4.621/src/version.c 2015-02-04 23:07:55.932517109 +0100 +--- src/version.c 2015-02-05 20:29:00.379932874 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 622, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +181. You make up words that go with the "happy tune" your modem makes + while dialing your ISP. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.623 b/SOURCES/7.4.623 new file mode 100644 index 0000000..269202e --- /dev/null +++ b/SOURCES/7.4.623 @@ -0,0 +1,78 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.623 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.623 +Problem: Crash with pattern: \(\)\{80000} (Dominique Pelle) +Solution: When the max limit is large fall back to the old engine. +Files: src/regexp_nfa.c + + +*** ../vim-7.4.622/src/regexp_nfa.c 2015-02-05 20:29:55.071222529 +0100 +--- src/regexp_nfa.c 2015-02-10 18:09:53.878896813 +0100 +*************** +*** 2034,2042 **** + } + + /* The engine is very inefficient (uses too many states) when the +! * maximum is much larger than the minimum. Bail out if we can +! * use the other engine. */ +! if ((nfa_re_flags & RE_AUTO) && maxval > minval + 200) + return FAIL; + + /* Ignore previous call to nfa_regatom() */ +--- 2034,2043 ---- + } + + /* The engine is very inefficient (uses too many states) when the +! * maximum is much larger than the minimum and when the maximum is +! * large. Bail out if we can use the other engine. */ +! if ((nfa_re_flags & RE_AUTO) +! && (maxval > minval + 200 || maxval > 500)) + return FAIL; + + /* Ignore previous call to nfa_regatom() */ +*************** +*** 4254,4260 **** + * Add "state" and possibly what follows to state list ".". + * Returns "subs_arg", possibly copied into temp_subs. + */ +- + static regsubs_T * + addstate(l, state, subs_arg, pim, off) + nfa_list_T *l; /* runtime state list */ +--- 4255,4260 ---- +*************** +*** 4392,4397 **** +--- 4392,4398 ---- + subs = &temp_subs; + } + ++ /* TODO: check for vim_realloc() returning NULL. */ + l->t = vim_realloc(l->t, newlen * sizeof(nfa_thread_T)); + l->len = newlen; + } +*** ../vim-7.4.622/src/version.c 2015-02-05 20:29:55.071222529 +0100 +--- src/version.c 2015-02-10 18:14:05.287650419 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 623, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +210. When you get a divorce, you don't care about who gets the children, + but discuss endlessly who can use the email address. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.624 b/SOURCES/7.4.624 new file mode 100644 index 0000000..38efc8c --- /dev/null +++ b/SOURCES/7.4.624 @@ -0,0 +1,204 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.624 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.624 +Problem: May leak memory or crash when vim_realloc() returns NULL. +Solution: Handle a NULL value properly. (Mike Williams) +Files: src/if_cscope.c, src/memline.c, src/misc1.c, src/netbeans.c + + +*** ../vim-7.4.623/src/if_cscope.c 2014-12-13 03:20:10.539067382 +0100 +--- src/if_cscope.c 2015-02-10 18:33:14.764816257 +0100 +*************** +*** 1507,1515 **** +--- 1507,1522 ---- + } + else + { ++ csinfo_T *t_csinfo = csinfo; ++ + /* Reallocate space for more connections. */ + csinfo_size *= 2; + csinfo = vim_realloc(csinfo, sizeof(csinfo_T)*csinfo_size); ++ if (csinfo == NULL) ++ { ++ vim_free(t_csinfo); ++ csinfo_size = 0; ++ } + } + if (csinfo == NULL) + return -1; +*************** +*** 2059,2064 **** +--- 2066,2072 ---- + int num_matches; + { + char *buf = NULL; ++ char *t_buf; + int bufsize = 0; /* Track available bufsize */ + int newsize = 0; + char *ptag; +*************** +*** 2120,2128 **** +--- 2128,2140 ---- + newsize = (int)(strlen(csfmt_str) + 16 + strlen(lno)); + if (bufsize < newsize) + { ++ t_buf = buf; + buf = (char *)vim_realloc(buf, newsize); + if (buf == NULL) ++ { + bufsize = 0; ++ vim_free(t_buf); ++ } + else + bufsize = newsize; + } +*************** +*** 2143,2151 **** +--- 2155,2167 ---- + + if (bufsize < newsize) + { ++ t_buf = buf; + buf = (char *)vim_realloc(buf, newsize); + if (buf == NULL) ++ { + bufsize = 0; ++ vim_free(t_buf); ++ } + else + bufsize = newsize; + } +*** ../vim-7.4.623/src/memline.c 2014-08-13 21:58:24.824885492 +0200 +--- src/memline.c 2015-02-10 18:26:23.158126542 +0100 +*************** +*** 5057,5062 **** +--- 5057,5064 ---- + /* May resize here so we don't have to do it in both cases below */ + if (buf->b_ml.ml_usedchunks + 1 >= buf->b_ml.ml_numchunks) + { ++ chunksize_T *t_chunksize = buf->b_ml.ml_chunksize; ++ + buf->b_ml.ml_numchunks = buf->b_ml.ml_numchunks * 3 / 2; + buf->b_ml.ml_chunksize = (chunksize_T *) + vim_realloc(buf->b_ml.ml_chunksize, +*************** +*** 5064,5069 **** +--- 5066,5072 ---- + if (buf->b_ml.ml_chunksize == NULL) + { + /* Hmmmm, Give up on offset for this buffer */ ++ vim_free(t_chunksize); + buf->b_ml.ml_usedchunks = -1; + return; + } +*** ../vim-7.4.623/src/misc1.c 2014-08-29 12:58:38.246430208 +0200 +--- src/misc1.c 2015-02-10 18:26:35.405968505 +0100 +*************** +*** 3431,3440 **** +--- 3431,3444 ---- + buf = alloc(buflen); + else if (maxlen < 10) + { ++ char_u *t_buf = buf; ++ + /* Need some more space. This might happen when receiving a long + * escape sequence. */ + buflen += 100; + buf = vim_realloc(buf, buflen); ++ if (buf == NULL) ++ vim_free(t_buf); + maxlen = (buflen - 6 - len) / 3; + } + if (buf == NULL) +*** ../vim-7.4.623/src/netbeans.c 2014-03-23 15:12:29.927264336 +0100 +--- src/netbeans.c 2015-02-10 18:27:18.693409965 +0100 +*************** +*** 1080,1089 **** +--- 1080,1097 ---- + { + if (bufno >= buf_list_size) /* grow list */ + { ++ nbbuf_T *t_buf_list = buf_list; ++ + incr = bufno - buf_list_size + 90; + buf_list_size += incr; + buf_list = (nbbuf_T *)vim_realloc( + buf_list, buf_list_size * sizeof(nbbuf_T)); ++ if (buf_list == NULL) ++ { ++ vim_free(t_buf_list); ++ buf_list_size = 0; ++ return NULL; ++ } + vim_memset(buf_list + buf_list_size - incr, 0, + incr * sizeof(nbbuf_T)); + } +*************** +*** 3678,3688 **** +--- 3686,3703 ---- + { + int incr; + int oldlen = globalsignmaplen; ++ char **t_globalsignmap = globalsignmap; + + globalsignmaplen *= 2; + incr = globalsignmaplen - oldlen; + globalsignmap = (char **)vim_realloc(globalsignmap, + globalsignmaplen * sizeof(char *)); ++ if (globalsignmap == NULL) ++ { ++ vim_free(t_globalsignmap); ++ globalsignmaplen = 0; ++ return; ++ } + vim_memset(globalsignmap + oldlen, 0, incr * sizeof(char *)); + } + } +*************** +*** 3708,3718 **** +--- 3723,3740 ---- + { + int incr; + int oldlen = buf->signmaplen; ++ int *t_signmap = buf->signmap; + + buf->signmaplen *= 2; + incr = buf->signmaplen - oldlen; + buf->signmap = (int *)vim_realloc(buf->signmap, + buf->signmaplen * sizeof(int)); ++ if (buf->signmap == NULL) ++ { ++ vim_free(t_signmap); ++ buf->signmaplen = 0; ++ return; ++ } + vim_memset(buf->signmap + oldlen, 0, incr * sizeof(int)); + } + } +*** ../vim-7.4.623/src/version.c 2015-02-10 18:18:13.004452406 +0100 +--- src/version.c 2015-02-10 18:21:29.697913596 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 624, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +211. Your husband leaves you...taking the computer with him and you + call him crying, and beg him to bring the computer back. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.625 b/SOURCES/7.4.625 new file mode 100644 index 0000000..0267302 --- /dev/null +++ b/SOURCES/7.4.625 @@ -0,0 +1,74 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.625 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.625 +Problem: Possible NULL pointer dereference. +Solution: Check for NULL before using it. (Mike Williams) +Files: src/if_py_both.h + + +*** ../vim-7.4.624/src/if_py_both.h 2015-02-03 12:55:11.136179596 +0100 +--- src/if_py_both.h 2015-02-10 18:39:40.531839555 +0100 +*************** +*** 747,758 **** + else if (our_tv->v_type == VAR_DICT) + { + +! hashtab_T *ht = &our_tv->vval.v_dict->dv_hashtab; +! long_u todo = ht->ht_used; + hashitem_T *hi; + dictitem_T *di; + if (our_tv->vval.v_dict == NULL) + return NULL; + + if (!(ret = PyDict_New())) + return NULL; +--- 747,760 ---- + else if (our_tv->v_type == VAR_DICT) + { + +! hashtab_T *ht; +! long_u todo; + hashitem_T *hi; + dictitem_T *di; ++ + if (our_tv->vval.v_dict == NULL) + return NULL; ++ ht = &our_tv->vval.v_dict->dv_hashtab; + + if (!(ret = PyDict_New())) + return NULL; +*************** +*** 763,768 **** +--- 765,771 ---- + return NULL; + } + ++ todo = ht->ht_used; + for (hi = ht->ht_array; todo > 0; ++hi) + { + if (!HASHITEM_EMPTY(hi)) +*** ../vim-7.4.624/src/version.c 2015-02-10 18:33:53.240319951 +0100 +--- src/version.c 2015-02-10 18:38:37.364655345 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 625, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +212. Your Internet group window has more icons than your Accessories window. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.626 b/SOURCES/7.4.626 new file mode 100644 index 0000000..a0298fd --- /dev/null +++ b/SOURCES/7.4.626 @@ -0,0 +1,58 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.626 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.626 +Problem: MSVC with W4 gives useless warnings. +Solution: Disable more warnings. (Mike Williams) +Files: src/vim.h + + +*** ../vim-7.4.625/src/vim.h 2015-01-27 12:59:51.859602392 +0100 +--- src/vim.h 2015-02-10 18:46:02.294862211 +0100 +*************** +*** 2044,2049 **** +--- 2044,2063 ---- + #ifdef _MSC_VER + /* Avoid useless warning "conversion from X to Y of greater size". */ + #pragma warning(disable : 4312) ++ /* Avoid warning for old style function declarators */ ++ #pragma warning(disable : 4131) ++ /* Avoid warning for conversion to type with smaller range */ ++ #pragma warning(disable : 4244) ++ /* Avoid warning for conversion to larger size */ ++ #pragma warning(disable : 4306) ++ /* Avoid warning for unreferenced formal parameter */ ++ #pragma warning(disable : 4100) ++ /* Avoid warning for differs in indirection to slightly different base type */ ++ #pragma warning(disable : 4057) ++ /* Avoid warning for constant conditional expression */ ++ #pragma warning(disable : 4127) ++ /* Avoid warning for assignment within conditional */ ++ #pragma warning(disable : 4706) + #endif + + /* Note: a NULL argument for vim_realloc() is not portable, don't use it. */ +*** ../vim-7.4.625/src/version.c 2015-02-10 18:41:53.010111874 +0100 +--- src/version.c 2015-02-10 18:45:09.087555683 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 626, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +213. Your kids start referring to you as "that guy in front of the monitor." + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.627 b/SOURCES/7.4.627 new file mode 100644 index 0000000..5410c8e --- /dev/null +++ b/SOURCES/7.4.627 @@ -0,0 +1,186 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.627 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.627 +Problem: The last screen cell is not updated. +Solution: Respect the "tn" termcap feature. (Hayaki Saito) +Files: runtime/doc/term.txt, src/option.c, src/screen.c, src/term.c, + src/term.h + + +*** ../vim-7.4.626/runtime/doc/term.txt 2013-08-10 13:25:02.000000000 +0200 +--- runtime/doc/term.txt 2015-02-10 19:11:54.110597132 +0100 +*************** +*** 224,233 **** + the last two characters of the option name. Only one termcap code is + required: Cursor motion, 't_cm'. + +! The options 't_da', 't_db', 't_ms', 't_xs' represent flags in the termcap. +! When the termcap flag is present, the option will be set to "y". But any +! non-empty string means that the flag is set. An empty string means that the +! flag is not set. 't_CS' works like this too, but it isn't a termcap flag. + + OUTPUT CODES + option meaning ~ +--- 224,234 ---- + the last two characters of the option name. Only one termcap code is + required: Cursor motion, 't_cm'. + +! The options 't_da', 't_db', 't_ms', 't_xs', 't_xn' represent flags in the +! termcap. When the termcap flag is present, the option will be set to "y". +! But any non-empty string means that the flag is set. An empty string means +! that the flag is not set. 't_CS' works like this too, but it isn't a termcap +! flag. + + OUTPUT CODES + option meaning ~ +*************** +*** 281,286 **** +--- 282,290 ---- + t_vs cursor very visible *t_vs* *'t_vs'* + *t_xs* *'t_xs'* + t_xs if non-empty, standout not erased by overwriting (hpterm) ++ *t_xn* *'t_xn'* ++ t_xn if non-empty, character writing at the last cell of screen ++ didn't causes scrolling + t_ZH italics mode *t_ZH* *'t_ZH'* + t_ZR italics end *t_ZR* *'t_ZR'* + +*** ../vim-7.4.626/src/option.c 2015-02-03 13:00:34.400529686 +0100 +--- src/option.c 2015-02-10 19:13:36.997250501 +0100 +*************** +*** 2978,2983 **** +--- 2978,2984 ---- + p_term("t_WS", T_CWS) + p_term("t_SI", T_CSI) + p_term("t_EI", T_CEI) ++ p_term("t_xn", T_XN) + p_term("t_xs", T_XS) + p_term("t_ZH", T_CZH) + p_term("t_ZR", T_CZR) +*** ../vim-7.4.626/src/screen.c 2015-01-27 16:39:24.691804113 +0100 +--- src/screen.c 2015-02-10 19:18:43.913231114 +0100 +*************** +*** 7968,7976 **** + if (row >= screen_Rows || col >= screen_Columns) + return; + +! /* Outputting the last character on the screen may scrollup the screen. +! * Don't to it! Mark the character invalid (update it when scrolled up) */ +! if (row == screen_Rows - 1 && col == screen_Columns - 1 + #ifdef FEAT_RIGHTLEFT + /* account for first command-line character in rightleft mode */ + && !cmdmsg_rl +--- 7968,7978 ---- + if (row >= screen_Rows || col >= screen_Columns) + return; + +! /* Outputting a character in the last cell on the screen may scroll the +! * screen up. Only do it when the "xn" termcap property is set, otherwise +! * mark the character invalid (update it when scrolled up). */ +! if (*T_XN == NUL +! && row == screen_Rows - 1 && col == screen_Columns - 1 + #ifdef FEAT_RIGHTLEFT + /* account for first command-line character in rightleft mode */ + && !cmdmsg_rl +*** ../vim-7.4.626/src/term.c 2014-07-30 17:21:53.819518506 +0200 +--- src/term.c 2015-02-10 19:11:54.118597027 +0100 +*************** +*** 200,205 **** +--- 200,206 ---- + {(int)KS_VB, IF_EB("\033|f", ESC_STR "|f")}, + {(int)KS_MS, "y"}, + {(int)KS_UT, "y"}, ++ {(int)KS_XN, "y"}, + {(int)KS_LE, "\b"}, /* cursor-left = BS */ + {(int)KS_ND, "\014"}, /* cursor-right = CTRL-L */ + # ifdef TERMINFO +*************** +*** 658,663 **** +--- 659,665 ---- + + {(int)KS_MS, "y"}, /* save to move cur in reverse mode */ + {(int)KS_UT, "y"}, ++ {(int)KS_XN, "y"}, + {(int)KS_LE, "\b"}, + # ifdef TERMINFO + {(int)KS_CM, "\033|%i%p1%d;%p2%dH"},/* cursor motion */ +*************** +*** 772,777 **** +--- 774,780 ---- + {(int)KS_CSF, IF_EB("\033[101;%dm", ESC_STR "[101;%dm")}, /* set screen foreground color */ + {(int)KS_MS, "y"}, + {(int)KS_UT, "y"}, ++ {(int)KS_XN, "y"}, + {(int)KS_LE, "\b"}, + # ifdef TERMINFO + {(int)KS_CM, IF_EB("\033[%i%p1%d;%p2%dH", +*************** +*** 1207,1212 **** +--- 1210,1216 ---- + {(int)KS_UCS, "[UCS]"}, + {(int)KS_MS, "[MS]"}, + {(int)KS_UT, "[UT]"}, ++ {(int)KS_XN, "[XN]"}, + # ifdef TERMINFO + {(int)KS_CM, "[%p1%dCM%p2%d]"}, + # else +*************** +*** 1645,1650 **** +--- 1649,1657 ---- + if ((T_XS == NULL || T_XS == empty_option) + && tgetflag("xs") > 0) + T_XS = (char_u *)"y"; ++ if ((T_XN == NULL || T_XN == empty_option) ++ && tgetflag("xn") > 0) ++ T_XN = (char_u *)"y"; + if ((T_DB == NULL || T_DB == empty_option) + && tgetflag("db") > 0) + T_DB = (char_u *)"y"; +*** ../vim-7.4.626/src/term.h 2013-03-13 19:09:03.000000000 +0100 +--- src/term.h 2015-02-10 19:11:54.118597027 +0100 +*************** +*** 66,71 **** +--- 66,72 ---- + KS_CSF, /* set foreground color */ + KS_CSB, /* set background color */ + KS_XS, /* standout not erased by overwriting (hpterm) */ ++ KS_XN, /* newline glitch */ + KS_MB, /* blink mode */ + KS_CAF, /* set foreground color (ANSI) */ + KS_CAB, /* set background color (ANSI) */ +*************** +*** 144,149 **** +--- 145,151 ---- + #define T_CSF (term_str(KS_CSF)) /* set foreground color */ + #define T_CSB (term_str(KS_CSB)) /* set background color */ + #define T_XS (term_str(KS_XS)) /* standout not erased by overwriting */ ++ #define T_XN (term_str(KS_XN)) /* newline glitch */ + #define T_MB (term_str(KS_MB)) /* blink mode */ + #define T_CAF (term_str(KS_CAF)) /* set foreground color (ANSI) */ + #define T_CAB (term_str(KS_CAB)) /* set background color (ANSI) */ +*** ../vim-7.4.626/src/version.c 2015-02-10 18:47:55.225390610 +0100 +--- src/version.c 2015-02-10 19:12:50.525858691 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 627, + /**/ + +-- +msdn.microsoft.com: +ERROR_SUCCESS 0 (0x0) The operation completed successfully. +I have always suspected that for Microsoft success is an error. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.628 b/SOURCES/7.4.628 new file mode 100644 index 0000000..d11b724 --- /dev/null +++ b/SOURCES/7.4.628 @@ -0,0 +1,52 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.628 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.628 +Problem: Compiler warning for variable might be clobbered by longjmp. +Solution: Add volatile. (Michael Jarvis) +Files: src/main.c + + +*** ../vim-7.4.627/src/main.c 2015-01-27 14:09:29.621898236 +0100 +--- src/main.c 2015-02-10 19:24:34.032644963 +0100 +*************** +*** 1051,1057 **** + int noexmode; /* TRUE when return on entering Ex mode */ + { + oparg_T oa; /* operator arguments */ +! int previous_got_int = FALSE; /* "got_int" was TRUE */ + #ifdef FEAT_CONCEAL + linenr_T conceal_old_cursor_line = 0; + linenr_T conceal_new_cursor_line = 0; +--- 1051,1057 ---- + int noexmode; /* TRUE when return on entering Ex mode */ + { + oparg_T oa; /* operator arguments */ +! volatile int previous_got_int = FALSE; /* "got_int" was TRUE */ + #ifdef FEAT_CONCEAL + linenr_T conceal_old_cursor_line = 0; + linenr_T conceal_new_cursor_line = 0; +*** ../vim-7.4.627/src/version.c 2015-02-10 19:20:33.739791972 +0100 +--- src/version.c 2015-02-10 19:26:06.067440234 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 628, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +215. Your mouse-clicking forearm rivals Popeye's. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/7.4.629 b/SOURCES/7.4.629 new file mode 100644 index 0000000..dcbe5bc --- /dev/null +++ b/SOURCES/7.4.629 @@ -0,0 +1,58 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.629 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.629 +Problem: Coverity warning for Out-of-bounds read. +Solution: Increase MAXWLEN to 254. (Eliseo Martínez) +Files: src/spell.c + + +*** ../vim-7.4.628/src/spell.c 2014-11-19 16:38:01.512679964 +0100 +--- src/spell.c 2015-02-10 20:00:22.188514910 +0100 +*************** +*** 311,319 **** + # include <time.h> /* for time_t */ + #endif + +! #define MAXWLEN 250 /* Assume max. word len is this many bytes. + Some places assume a word length fits in a +! byte, thus it can't be above 255. */ + + /* Type used for indexes in the word tree need to be at least 4 bytes. If int + * is 8 bytes we could use something smaller, but what? */ +--- 311,320 ---- + # include <time.h> /* for time_t */ + #endif + +! #define MAXWLEN 254 /* Assume max. word len is this many bytes. + Some places assume a word length fits in a +! byte, thus it can't be above 255. +! Must be >= PFD_NOTSPECIAL. */ + + /* Type used for indexes in the word tree need to be at least 4 bytes. If int + * is 8 bytes we could use something smaller, but what? */ +*** ../vim-7.4.628/src/version.c 2015-02-10 19:26:58.918748560 +0100 +--- src/version.c 2015-02-10 20:01:27.475662030 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 629, + /**/ + +-- +I noticed my daughter's Disney-net password on a sticky note: +"MickeyMinnieGoofyPluto". I asked her why it was so long. +"Because they say it has to have at least four characters." + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/SOURCES/cpp.vim b/SOURCES/cpp.vim new file mode 100644 index 0000000..0b6d77e --- /dev/null +++ b/SOURCES/cpp.vim @@ -0,0 +1,72 @@ +" Vim syntax file +" Language: C++ +" Current Maintainer: vim-jp (https://github.com/vim-jp/vim-cpp) +" Previous Maintainer: Ken Shan <ccshan@post.harvard.edu> +" Last Change: 2015 Mar 1 +" For version 5.x: Clear all syntax items +" For version 6.x: Quit when a syntax file was already loaded +if version < 600 +syntax clear +elseif exists("b:current_syntax") +finish +endif +" Read the C syntax to start with +if version < 600 +so <sfile>:p:h/c.vim +else +runtime! syntax/c.vim +unlet b:current_syntax +endif +" C++ extensions +syn keyword cppStatement new delete this friend using +syn keyword cppAccess public protected private +syn keyword cppType inline virtual explicit export bool wchar_t +syn keyword cppExceptions throw try catch +syn keyword cppOperator operator typeid +syn keyword cppOperator and bitor or xor compl bitand and_eq or_eq xor_eq not not_eq +syn match cppCast "\<\(const\|static\|dynamic\|reinterpret\)_cast\s*<"me=e-1 +syn match cppCast "\<\(const\|static\|dynamic\|reinterpret\)_cast\s*$" +syn keyword cppStorageClass mutable +syn keyword cppStructure class typename template namespace +syn keyword cppBoolean true false +syn keyword cppConstant __cplusplus +" C++ 11 extensions +if !exists("cpp_no_cpp11") +syn keyword cppType override final +syn keyword cppExceptions noexcept +syn keyword cppStorageClass constexpr decltype thread_local +syn keyword cppConstant nullptr +syn keyword cppConstant ATOMIC_FLAG_INIT ATOMIC_VAR_INIT +syn keyword cppConstant ATOMIC_BOOL_LOCK_FREE ATOMIC_CHAR_LOCK_FREE +syn keyword cppConstant ATOMIC_CHAR16_T_LOCK_FREE ATOMIC_CHAR32_T_LOCK_FREE +syn keyword cppConstant ATOMIC_WCHAR_T_LOCK_FREE ATOMIC_SHORT_LOCK_FREE +syn keyword cppConstant ATOMIC_INT_LOCK_FREE ATOMIC_LONG_LOCK_FREE +syn keyword cppConstant ATOMIC_LLONG_LOCK_FREE ATOMIC_POINTER_LOCK_FREE +syn region cppRawString matchgroup=cppRawDelimiter start=+\%(u8\|[uLU]\)\=R"\z([[:alnum:]_{}[\]#<>%:;.?*\+\-/\^&|~!=,"']\{,16}\)(+ end=+)\z1"+ contains=@Spell +endif +" The minimum and maximum operators in GNU C++ +syn match cppMinMax "[<>]?" +" Default highlighting +if version >= 508 || !exists("did_cpp_syntax_inits") +if version < 508 +let did_cpp_syntax_inits = 1 +command -nargs=+ HiLink hi link <args> +else +command -nargs=+ HiLink hi def link <args> +endif +HiLink cppAccess cppStatement +HiLink cppCast cppStatement +HiLink cppExceptions Exception +HiLink cppOperator Operator +HiLink cppStatement Statement +HiLink cppType Type +HiLink cppStorageClass StorageClass +HiLink cppStructure Structure +HiLink cppBoolean Boolean +HiLink cppConstant Constant +HiLink cppRawDelimiter Delimiter +HiLink cppRawString String +delcommand HiLink +endif +let b:current_syntax = "cpp" +" vim: ts=8 diff --git a/SOURCES/gvim.desktop b/SOURCES/gvim.desktop index 97bf6ac..675357d 100644 --- a/SOURCES/gvim.desktop +++ b/SOURCES/gvim.desktop @@ -60,5 +60,4 @@ Icon=gvim Type=Application Terminal=false X-XClassHintResName=VIM -MapNotify=false Categories=Utility;TextEditor; diff --git a/SOURCES/vim-7.0-syncolor.patch b/SOURCES/vim-7.0-syncolor.patch deleted file mode 100644 index 5471075..0000000 --- a/SOURCES/vim-7.0-syncolor.patch +++ /dev/null @@ -1,24 +0,0 @@ ---- vim70/src/syntax.c.syn1 2006-04-26 14:49:45.000000000 +0200 -+++ vim70/src/syntax.c 2006-09-19 13:15:41.000000000 +0200 -@@ -6176,8 +6176,8 @@ - "Visual term=reverse guibg=LightGrey"), - #endif - #ifdef FEAT_DIFF -- CENT("DiffAdd term=bold ctermbg=LightBlue", -- "DiffAdd term=bold ctermbg=LightBlue guibg=LightBlue"), -+ CENT("DiffAdd term=bold ctermbg=LightRed", -+ "DiffAdd term=bold ctermbg=LightRed guibg=LightBlue"), - CENT("DiffChange term=bold ctermbg=LightMagenta", - "DiffChange term=bold ctermbg=LightMagenta guibg=LightMagenta"), - CENT("DiffDelete term=bold ctermfg=Blue ctermbg=LightCyan", -@@ -6256,8 +6256,8 @@ - "Visual term=reverse guibg=DarkGrey"), - #endif - #ifdef FEAT_DIFF -- CENT("DiffAdd term=bold ctermbg=DarkBlue", -- "DiffAdd term=bold ctermbg=DarkBlue guibg=DarkBlue"), -+ CENT("DiffAdd term=bold ctermbg=DarkRed", -+ "DiffAdd term=bold ctermbg=DarkRed guibg=DarkBlue"), - CENT("DiffChange term=bold ctermbg=DarkMagenta", - "DiffChange term=bold ctermbg=DarkMagenta guibg=DarkMagenta"), - CENT("DiffDelete term=bold ctermfg=Blue ctermbg=DarkCyan", diff --git a/SOURCES/vim-7.3-xsubpp-path.patch b/SOURCES/vim-7.3-xsubpp-path.patch deleted file mode 100644 index 971b10a..0000000 --- a/SOURCES/vim-7.3-xsubpp-path.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -up vim73/src/Makefile.xsubpp vim73/src/Makefile ---- vim73/src/Makefile.xsubpp 2013-05-13 15:02:15.894805644 +0200 -+++ vim73/src/Makefile 2013-05-13 15:07:03.922821257 +0200 -@@ -2416,7 +2416,7 @@ lintinstall: - - auto/if_perl.c: if_perl.xs - $(PERL) -e 'unless ( $$] >= 5.005 ) { for (qw(na defgv errgv)) { print "#define PL_$$_ $$_\n" }}' > $@ -- $(PERL) $(PERLLIB)/ExtUtils/xsubpp -prototypes -typemap \ -+ $(PERL) $(PERLLIB)/vendor_perl/ExtUtils/xsubpp -prototypes -typemap \ - $(PERLLIB)/ExtUtils/typemap if_perl.xs >> $@ - - auto/osdef.h: auto/config.h osdef.sh osdef1.h.in osdef2.h.in diff --git a/SOURCES/vim-7.4-blowfish2.patch b/SOURCES/vim-7.4-blowfish2.patch deleted file mode 100644 index 08dab82..0000000 --- a/SOURCES/vim-7.4-blowfish2.patch +++ /dev/null @@ -1,4045 +0,0 @@ -diff -up vim74/runtime/doc/editing.txt.blowfish2 vim74/runtime/doc/editing.txt ---- vim74/runtime/doc/editing.txt.blowfish2 2013-08-10 13:24:53.000000000 +0200 -+++ vim74/runtime/doc/editing.txt 2017-09-05 14:47:34.915912305 +0200 -@@ -1364,8 +1364,13 @@ The text in the swap file and the undo f - - Note: The text in memory is not encrypted. A system administrator may be able - to see your text while you are editing it. When filtering text with --":!filter" or using ":w !command" the text is not encrypted, this may reveal --it to others. The 'viminfo' file is not encrypted. -+":!filter" or using ":w !command" the text is also not encrypted, this may -+reveal it to others. The 'viminfo' file is not encrypted. -+ -+You could do this to edit very secret text: > -+ :set noundofile viminfo= -+ :noswapfile edit secrets.txt -+Keep in mind that without a swap file you risk loosing your work in a crash. - - WARNING: If you make a typo when entering the key and then write the file and - exit, the text will be lost! -@@ -1392,18 +1397,24 @@ To disable the encryption, reset the 'ke - :set key= - - You can use the 'cryptmethod' option to select the type of encryption, use one --of these two: > -- :setlocal cm=zip " weak method, backwards compatible -- :setlocal cm=blowfish " strong method -+of these: > -+ :setlocal cm=zip " weak method, backwards compatible -+ :setlocal cm=blowfish " method with flaws -+ :setlocal cm=blowfish2 " medium strong method -+ - Do this before writing the file. When reading an encrypted file it will be - set automatically to the method used when that file was written. You can - change 'cryptmethod' before writing that file to change the method. - To set the default method, used for new files, use one of these in your - |vimrc| file: > - set cm=zip -- set cm=blowfish -+ set cm=blowfish2 -+Use the first one if you need to be compatible with Vim 7.2 and older. Using -+"blowfish2" is highly recommended if you can use a Vim version that supports -+it. -+ - The message given for reading and writing a file will show "[crypted]" when --using zip, "[blowfish]" when using blowfish. -+using zip, "[blowfish]" when using blowfish, etc. - - When writing an undo file, the same key and method will be used for the text - in the undo file. |persistent-undo|. -@@ -1438,7 +1449,7 @@ lines to "/etc/magic", "/usr/share/misc/ - 0 string VimCrypt~ Vim encrypted file - >9 string 01 - "zip" cryptmethod - >9 string 02 - "blowfish" cryptmethod -- -+ >9 string 03 - "blowfish2" cryptmethod - - Notes: - - Encryption is not possible when doing conversion with 'charconvert'. -@@ -1462,6 +1473,10 @@ Notes: - - Pkzip uses the same encryption as 'cryptmethod' "zip", and US Govt has no - objection to its export. Pkzip's public file APPNOTE.TXT describes this - algorithm in detail. -+- The implementation of 'cryptmethod' "blowfish" has a flaw. It is possible to -+ crack the first 64 bytes of a file and in some circumstances more of the -+ file. Use of it is not recommended, but it's still the strongest method -+ supported by Vim 7.3 and 7.4. The "zip" method is even weaker. - - Vim originates from the Netherlands. That is where the sources come from. - Thus the encryption code is not exported from the USA. - -diff -up vim74/runtime/doc/options.txt.blowfish2 vim74/runtime/doc/options.txt ---- vim74/runtime/doc/options.txt.blowfish2 2017-09-05 14:47:33.976919884 +0200 -+++ vim74/runtime/doc/options.txt 2017-09-05 14:47:34.925912224 +0200 -@@ -2197,10 +2197,18 @@ A jump table for the options with a shor - zip PkZip compatible method. A weak kind of encryption. - Backwards compatible with Vim 7.2 and older. - *blowfish* -- blowfish Blowfish method. Strong encryption. Requires Vim 7.3 -- or later, files can NOT be read by Vim 7.2 and older. -- This adds a "seed" to the file, every time you write -- the file the encrypted bytes will be different. -+ blowfish Blowfish method. Medium strong encryption but it has -+ an implementation flaw. Requires Vim 7.3 or later, -+ files can NOT be read by Vim 7.2 and older. This adds -+ a "seed" to the file, every time you write the file -+ the encrypted bytes will be different. -+ *blowfish2* -+ blowfish2 Blowfish method. Medium strong encryption. Requires -+ Vim 7.4.399 or later, files can NOT be read by Vim 7.3 -+ and older. This adds a "seed" to the file, every time -+ you write the file the encrypted bytes will be -+ different. The whole undo file is encrypted, not just -+ the pieces of text. - - When reading an encrypted file 'cryptmethod' will be set automatically - to the detected method of the file being read. Thus if you write it -diff -up vim74/src/blowfish.c.blowfish2 vim74/src/blowfish.c ---- vim74/src/blowfish.c.blowfish2 2010-12-17 19:58:18.000000000 +0100 -+++ vim74/src/blowfish.c 2017-09-05 14:47:34.926912216 +0200 -@@ -9,17 +9,25 @@ - * Blowfish encryption for Vim; in Blowfish output feedback mode. - * Contributed by Mohsin Ahmed, http://www.cs.albany.edu/~mosh - * Based on http://www.schneier.com/blowfish.html by Bruce Schneier. -+ * -+ * There are two variants: -+ * - The old one "blowfish" has a flaw which makes it much easier to crack the -+ * key. To see this, make a text file with one line of 1000 "x" characters -+ * and write it encrypted. Use "xxd" to inspect the bytes in the file. You -+ * will see that a block of 8 bytes repeats 8 times. -+ * - The new one "blowfish2" is better. It uses an 8 byte CFB to avoid the -+ * repeats. - */ - - #include "vim.h" - --#if defined(FEAT_CRYPT) -+#if defined(FEAT_CRYPT) || defined(PROTO) - - #define ARRAY_LENGTH(A) (sizeof(A)/sizeof(A[0])) - - #define BF_BLOCK 8 - #define BF_BLOCK_MASK 7 --#define BF_OFB_LEN (8*(BF_BLOCK)) -+#define BF_MAX_CFB_LEN (8 * BF_BLOCK) - - typedef union { - UINT32_T ul[2]; -@@ -37,14 +45,26 @@ typedef union { - # endif - #endif - --static void bf_e_block __ARGS((UINT32_T *p_xl, UINT32_T *p_xr)); --static void bf_e_cblock __ARGS((char_u *block)); --static int bf_check_tables __ARGS((UINT32_T a_ipa[18], UINT32_T a_sbi[4][256], UINT32_T val)); -+/* The state of encryption, referenced by cryptstate_T. */ -+typedef struct { -+ UINT32_T pax[18]; /* P-array */ -+ UINT32_T sbx[4][256]; /* S-boxes */ -+ int randbyte_offset; -+ int update_offset; -+ char_u cfb_buffer[BF_MAX_CFB_LEN]; /* up to 64 bytes used */ -+ int cfb_len; /* size of cfb_buffer actually used */ -+} bf_state_T; -+ -+ -+static void bf_e_block __ARGS((bf_state_T *state, UINT32_T *p_xl, UINT32_T *p_xr)); -+static void bf_e_cblock __ARGS((bf_state_T *state, char_u *block)); -+static int bf_check_tables __ARGS((UINT32_T pax[18], UINT32_T sbx[4][256], UINT32_T val)); - static int bf_self_test __ARGS((void)); -+static void bf_key_init __ARGS((bf_state_T *state, char_u *password, char_u *salt, int salt_len)); -+static void bf_cfb_init __ARGS((bf_state_T *state, char_u *seed, int seed_len)); - - /* Blowfish code */ --static UINT32_T pax[18]; --static UINT32_T ipa[18] = { -+static UINT32_T pax_init[18] = { - 0x243f6a88u, 0x85a308d3u, 0x13198a2eu, - 0x03707344u, 0xa4093822u, 0x299f31d0u, - 0x082efa98u, 0xec4e6c89u, 0x452821e6u, -@@ -53,8 +73,7 @@ static UINT32_T ipa[18] = { - 0xb5470917u, 0x9216d5d9u, 0x8979fb1bu - }; - --static UINT32_T sbx[4][256]; --static UINT32_T sbi[4][256] = { -+static UINT32_T sbx_init[4][256] = { - {0xd1310ba6u, 0x98dfb5acu, 0x2ffd72dbu, 0xd01adfb7u, - 0xb8e1afedu, 0x6a267e96u, 0xba7c9045u, 0xf12c7f99u, - 0x24a19947u, 0xb3916cf7u, 0x0801f2e2u, 0x858efc16u, -@@ -314,33 +333,40 @@ static UINT32_T sbi[4][256] = { - } - }; - -- - #define F1(i) \ -- xl ^= pax[i]; \ -- xr ^= ((sbx[0][xl >> 24] + \ -- sbx[1][(xl & 0xFF0000) >> 16]) ^ \ -- sbx[2][(xl & 0xFF00) >> 8]) + \ -- sbx[3][xl & 0xFF]; -+ xl ^= bfs->pax[i]; \ -+ xr ^= ((bfs->sbx[0][xl >> 24] + \ -+ bfs->sbx[1][(xl & 0xFF0000) >> 16]) ^ \ -+ bfs->sbx[2][(xl & 0xFF00) >> 8]) + \ -+ bfs->sbx[3][xl & 0xFF]; - - #define F2(i) \ -- xr ^= pax[i]; \ -- xl ^= ((sbx[0][xr >> 24] + \ -- sbx[1][(xr & 0xFF0000) >> 16]) ^ \ -- sbx[2][(xr & 0xFF00) >> 8]) + \ -- sbx[3][xr & 0xFF]; -- -+ xr ^= bfs->pax[i]; \ -+ xl ^= ((bfs->sbx[0][xr >> 24] + \ -+ bfs->sbx[1][(xr & 0xFF0000) >> 16]) ^ \ -+ bfs->sbx[2][(xr & 0xFF00) >> 8]) + \ -+ bfs->sbx[3][xr & 0xFF]; - - static void --bf_e_block(p_xl, p_xr) -+bf_e_block(bfs, p_xl, p_xr) -+ bf_state_T *bfs; - UINT32_T *p_xl; - UINT32_T *p_xr; - { -- UINT32_T temp, xl = *p_xl, xr = *p_xr; -- -- F1(0) F2(1) F1(2) F2(3) F1(4) F2(5) F1(6) F2(7) -- F1(8) F2(9) F1(10) F2(11) F1(12) F2(13) F1(14) F2(15) -- xl ^= pax[16]; -- xr ^= pax[17]; -+ UINT32_T temp; -+ UINT32_T xl = *p_xl; -+ UINT32_T xr = *p_xr; -+ -+ F1(0) F2(1) -+ F1(2) F2(3) -+ F1(4) F2(5) -+ F1(6) F2(7) -+ F1(8) F2(9) -+ F1(10) F2(11) -+ F1(12) F2(13) -+ F1(14) F2(15) -+ xl ^= bfs->pax[16]; -+ xr ^= bfs->pax[17]; - temp = xl; - xl = xr; - xr = temp; -@@ -348,23 +374,6 @@ bf_e_block(p_xl, p_xr) - *p_xr = xr; - } - --#if 0 /* not used */ -- static void --bf_d_block(p_xl, p_xr) -- UINT32_T *p_xl; -- UINT32_T *p_xr; --{ -- UINT32_T temp, xl = *p_xl, xr = *p_xr; -- F1(17) F2(16) F1(15) F2(14) F1(13) F2(12) F1(11) F2(10) -- F1(9) F2(8) F1(7) F2(6) F1(5) F2(4) F1(3) F2(2) -- xl ^= pax[1]; -- xr ^= pax[0]; -- temp = xl; xl = xr; xr = temp; -- *p_xl = xl; *p_xr = xr; --} --#endif -- -- - #ifdef WORDS_BIGENDIAN - # define htonl2(x) \ - x = ((((x) & 0xffL) << 24) | (((x) & 0xff00L) << 8) | \ -@@ -374,7 +383,8 @@ bf_d_block(p_xl, p_xr) - #endif - - static void --bf_e_cblock(block) -+bf_e_cblock(bfs, block) -+ bf_state_T *bfs; - char_u *block; - { - block8 bk; -@@ -382,35 +392,22 @@ bf_e_cblock(block) - memcpy(bk.uc, block, 8); - htonl2(bk.ul[0]); - htonl2(bk.ul[1]); -- bf_e_block(&bk.ul[0], &bk.ul[1]); -+ bf_e_block(bfs, &bk.ul[0], &bk.ul[1]); - htonl2(bk.ul[0]); - htonl2(bk.ul[1]); - memcpy(block, bk.uc, 8); - } - --#if 0 /* not used */ -- void --bf_d_cblock(block) -- char_u *block; --{ -- block8 bk; -- memcpy(bk.uc, block, 8); -- htonl2(bk.ul[0]); htonl2(bk.ul[1]); -- bf_d_block(&bk.ul[0], &bk.ul[1]); -- htonl2(bk.ul[0]); htonl2(bk.ul[1]); -- memcpy(block, bk.uc, 8); --} --#endif -- - /* - * Initialize the crypt method using "password" as the encryption key and - * "salt[salt_len]" as the salt. - */ -- void --bf_key_init(password, salt, salt_len) -- char_u *password; -- char_u *salt; -- int salt_len; -+ static void -+bf_key_init(bfs, password, salt, salt_len) -+ bf_state_T *bfs; -+ char_u *password; -+ char_u *salt; -+ int salt_len; - { - int i, j, keypos = 0; - unsigned u; -@@ -418,7 +415,7 @@ bf_key_init(password, salt, salt_len) - char_u *key; - int keylen; - -- /* Process the key 1000 times. -+ /* Process the key 1001 times. - * See http://en.wikipedia.org/wiki/Key_strengthening. */ - key = sha256_key(password, salt, salt_len); - for (i = 0; i < 1000; i++) -@@ -437,52 +434,54 @@ bf_key_init(password, salt, salt_len) - key[i] = u; - } - -- mch_memmove(sbx, sbi, 4 * 4 * 256); -+ /* Use "key" to initialize the P-array ("pax") and S-boxes ("sbx") of -+ * Blowfish. */ -+ mch_memmove(bfs->sbx, sbx_init, 4 * 4 * 256); - - for (i = 0; i < 18; ++i) - { - val = 0; - for (j = 0; j < 4; ++j) - val = (val << 8) | key[keypos++ % keylen]; -- pax[i] = ipa[i] ^ val; -+ bfs->pax[i] = pax_init[i] ^ val; - } - - data_l = data_r = 0; - for (i = 0; i < 18; i += 2) - { -- bf_e_block(&data_l, &data_r); -- pax[i + 0] = data_l; -- pax[i + 1] = data_r; -+ bf_e_block(bfs, &data_l, &data_r); -+ bfs->pax[i + 0] = data_l; -+ bfs->pax[i + 1] = data_r; - } - - for (i = 0; i < 4; ++i) - { - for (j = 0; j < 256; j += 2) - { -- bf_e_block(&data_l, &data_r); -- sbx[i][j + 0] = data_l; -- sbx[i][j + 1] = data_r; -+ bf_e_block(bfs, &data_l, &data_r); -+ bfs->sbx[i][j + 0] = data_l; -+ bfs->sbx[i][j + 1] = data_r; - } - } - } - - /* -- * BF Self test for corrupted tables or instructions -+ * Blowfish self-test for corrupted tables or instructions. - */ - static int --bf_check_tables(a_ipa, a_sbi, val) -- UINT32_T a_ipa[18]; -- UINT32_T a_sbi[4][256]; -+bf_check_tables(pax, sbx, val) -+ UINT32_T pax[18]; -+ UINT32_T sbx[4][256]; - UINT32_T val; - { - int i, j; - UINT32_T c = 0; - - for (i = 0; i < 18; i++) -- c ^= a_ipa[i]; -+ c ^= pax[i]; - for (i = 0; i < 4; i++) - for (j = 0; j < 256; j++) -- c ^= a_sbi[i][j]; -+ c ^= sbx[i][j]; - return c == val; - } - -@@ -520,6 +519,10 @@ bf_self_test() - int err = 0; - block8 bk; - UINT32_T ui = 0xffffffffUL; -+ bf_state_T state; -+ -+ vim_memset(&state, 0, sizeof(bf_state_T)); -+ state.cfb_len = BF_MAX_CFB_LEN; - - /* We can't simply use sizeof(UINT32_T), it would generate a compiler - * warning. */ -@@ -528,21 +531,21 @@ bf_self_test() - EMSG(_("E820: sizeof(uint32_t) != 4")); - } - -- if (!bf_check_tables(ipa, sbi, 0x6ffa520a)) -+ if (!bf_check_tables(pax_init, sbx_init, 0x6ffa520a)) - err++; - - bn = ARRAY_LENGTH(bf_test_data); - for (i = 0; i < bn; i++) - { -- bf_key_init((char_u *)(bf_test_data[i].password), -+ bf_key_init(&state, (char_u *)(bf_test_data[i].password), - bf_test_data[i].salt, - (int)STRLEN(bf_test_data[i].salt)); -- if (!bf_check_tables(pax, sbx, bf_test_data[i].keysum)) -+ if (!bf_check_tables(state.pax, state.sbx, bf_test_data[i].keysum)) - err++; - - /* Don't modify bf_test_data[i].plaintxt, self test is idempotent. */ - memcpy(bk.uc, bf_test_data[i].plaintxt, 8); -- bf_e_cblock(bk.uc); -+ bf_e_cblock(&state, bk.uc); - if (memcmp(bk.uc, bf_test_data[i].cryptxt, 8) != 0) - { - if (err == 0 && memcmp(bk.uc, bf_test_data[i].badcryptxt, 8) == 0) -@@ -554,43 +557,43 @@ bf_self_test() - return err > 0 ? FAIL : OK; - } - --/* Output feedback mode. */ --static int randbyte_offset = 0; --static int update_offset = 0; --static char_u ofb_buffer[BF_OFB_LEN]; /* 64 bytes */ -+/* -+ * CFB: Cipher Feedback Mode. -+ */ - - /* -- * Initialize with seed "iv[iv_len]". -+ * Initialize with seed "seed[seed_len]". - */ -- void --bf_ofb_init(iv, iv_len) -- char_u *iv; -- int iv_len; -+ static void -+bf_cfb_init(bfs, seed, seed_len) -+ bf_state_T *bfs; -+ char_u *seed; -+ int seed_len; - { - int i, mi; - -- randbyte_offset = update_offset = 0; -- vim_memset(ofb_buffer, 0, BF_OFB_LEN); -- if (iv_len > 0) -+ bfs->randbyte_offset = bfs->update_offset = 0; -+ vim_memset(bfs->cfb_buffer, 0, bfs->cfb_len); -+ if (seed_len > 0) - { -- mi = iv_len > BF_OFB_LEN ? iv_len : BF_OFB_LEN; -+ mi = seed_len > bfs->cfb_len ? seed_len : bfs->cfb_len; - for (i = 0; i < mi; i++) -- ofb_buffer[i % BF_OFB_LEN] ^= iv[i % iv_len]; -+ bfs->cfb_buffer[i % bfs->cfb_len] ^= seed[i % seed_len]; - } - } - --#define BF_OFB_UPDATE(c) { \ -- ofb_buffer[update_offset] ^= (char_u)c; \ -- if (++update_offset == BF_OFB_LEN) \ -- update_offset = 0; \ -+#define BF_CFB_UPDATE(bfs, c) { \ -+ bfs->cfb_buffer[bfs->update_offset] ^= (char_u)c; \ -+ if (++bfs->update_offset == bfs->cfb_len) \ -+ bfs->update_offset = 0; \ - } - --#define BF_RANBYTE(t) { \ -- if ((randbyte_offset & BF_BLOCK_MASK) == 0) \ -- bf_e_cblock(&ofb_buffer[randbyte_offset]); \ -- t = ofb_buffer[randbyte_offset]; \ -- if (++randbyte_offset == BF_OFB_LEN) \ -- randbyte_offset = 0; \ -+#define BF_RANBYTE(bfs, t) { \ -+ if ((bfs->randbyte_offset & BF_BLOCK_MASK) == 0) \ -+ bf_e_cblock(bfs, &(bfs->cfb_buffer[bfs->randbyte_offset])); \ -+ t = bfs->cfb_buffer[bfs->randbyte_offset]; \ -+ if (++bfs->randbyte_offset == bfs->cfb_len) \ -+ bfs->randbyte_offset = 0; \ - } - - /* -@@ -598,90 +601,69 @@ bf_ofb_init(iv, iv_len) - * "from" and "to" can be equal to encrypt in place. - */ - void --bf_crypt_encode(from, len, to) -+crypt_blowfish_encode(state, from, len, to) -+ cryptstate_T *state; - char_u *from; - size_t len; - char_u *to; - { -+ bf_state_T *bfs = state->method_state; - size_t i; - int ztemp, t; - - for (i = 0; i < len; ++i) - { - ztemp = from[i]; -- BF_RANBYTE(t); -- BF_OFB_UPDATE(ztemp); -+ BF_RANBYTE(bfs, t); -+ BF_CFB_UPDATE(bfs, ztemp); - to[i] = t ^ ztemp; - } - } - - /* -- * Decrypt "ptr[len]" in place. -+ * Decrypt "from[len]" into "to[len]". - */ - void --bf_crypt_decode(ptr, len) -- char_u *ptr; -- long len; -+crypt_blowfish_decode(state, from, len, to) -+ cryptstate_T *state; -+ char_u *from; -+ size_t len; -+ char_u *to; - { -- char_u *p; -+ bf_state_T *bfs = state->method_state; -+ size_t i; - int t; - -- for (p = ptr; p < ptr + len; ++p) -+ for (i = 0; i < len; ++i) - { -- BF_RANBYTE(t); -- *p ^= t; -- BF_OFB_UPDATE(*p); -+ BF_RANBYTE(bfs, t); -+ to[i] = from[i] ^ t; -+ BF_CFB_UPDATE(bfs, to[i]); - } - } - --/* -- * Initialize the encryption keys and the random header according to -- * the given password. -- */ - void --bf_crypt_init_keys(passwd) -- char_u *passwd; /* password string with which to modify keys */ --{ -- char_u *p; -- -- for (p = passwd; *p != NUL; ++p) -- { -- BF_OFB_UPDATE(*p); -- } --} -+crypt_blowfish_init(state, key, salt, salt_len, seed, seed_len) -+ cryptstate_T *state; -+ char_u* key; -+ char_u* salt; -+ int salt_len; -+ char_u* seed; -+ int seed_len; -+{ -+ bf_state_T *bfs = (bf_state_T *)alloc_clear(sizeof(bf_state_T)); -+ -+ state->method_state = bfs; -+ -+ /* "blowfish" uses a 64 byte buffer, causing it to repeat 8 byte groups 8 -+ * times. "blowfish2" uses a 8 byte buffer to avoid repeating. */ -+ bfs->cfb_len = state->method_nr == CRYPT_M_BF ? BF_MAX_CFB_LEN : BF_BLOCK; - --static int save_randbyte_offset; --static int save_update_offset; --static char_u save_ofb_buffer[BF_OFB_LEN]; --static UINT32_T save_pax[18]; --static UINT32_T save_sbx[4][256]; -- --/* -- * Save the current crypt state. Can only be used once before -- * bf_crypt_restore(). -- */ -- void --bf_crypt_save() --{ -- save_randbyte_offset = randbyte_offset; -- save_update_offset = update_offset; -- mch_memmove(save_ofb_buffer, ofb_buffer, BF_OFB_LEN); -- mch_memmove(save_pax, pax, 4 * 18); -- mch_memmove(save_sbx, sbx, 4 * 4 * 256); --} -+ if (blowfish_self_test() == FAIL) -+ return; - --/* -- * Restore the current crypt state. Can only be used after -- * bf_crypt_save(). -- */ -- void --bf_crypt_restore() --{ -- randbyte_offset = save_randbyte_offset; -- update_offset = save_update_offset; -- mch_memmove(ofb_buffer, save_ofb_buffer, BF_OFB_LEN); -- mch_memmove(pax, save_pax, 4 * 18); -- mch_memmove(sbx, save_sbx, 4 * 4 * 256); -+ bf_key_init(bfs, key, salt, salt_len); -+ bf_cfb_init(bfs, seed, seed_len); - } - - /* -diff -up vim74/src/crypt.c.blowfish2 vim74/src/crypt.c ---- vim74/src/crypt.c.blowfish2 2017-09-05 14:47:34.933912159 +0200 -+++ vim74/src/crypt.c 2017-09-05 14:47:34.933912159 +0200 -@@ -0,0 +1,585 @@ -+/* vi:set ts=8 sts=4 sw=4: -+ * -+ * VIM - Vi IMproved by Bram Moolenaar -+ * -+ * Do ":help uganda" in Vim to read copying and usage conditions. -+ * Do ":help credits" in Vim to see a list of people who contributed. -+ * See README.txt for an overview of the Vim source code. -+ */ -+ -+/* -+ * crypt.c: Generic encryption support. -+ */ -+#include "vim.h" -+ -+#if defined(FEAT_CRYPT) || defined(PROTO) -+/* -+ * Optional encryption support. -+ * Mohsin Ahmed, mosh@sasi.com, 1998-09-24 -+ * Based on zip/crypt sources. -+ * Refactored by David Leadbeater, 2014. -+ * -+ * NOTE FOR USA: Since 2000 exporting this code from the USA is allowed to -+ * most countries. There are a few exceptions, but that still should not be a -+ * problem since this code was originally created in Europe and India. -+ * -+ * Blowfish addition originally made by Mohsin Ahmed, -+ * http://www.cs.albany.edu/~mosh 2010-03-14 -+ * Based on blowfish by Bruce Schneier (http://www.schneier.com/blowfish.html) -+ * and sha256 by Christophe Devine. -+ */ -+ -+typedef struct { -+ char *name; /* encryption name as used in 'cryptmethod' */ -+ char *magic; /* magic bytes stored in file header */ -+ int salt_len; /* length of salt, or 0 when not using salt */ -+ int seed_len; /* length of seed, or 0 when not using salt */ -+ int works_inplace; /* encryption/decryption can be done in-place */ -+ int whole_undofile; /* whole undo file is encrypted */ -+ -+ /* Optional function pointer for a self-test. */ -+ int (* self_test_fn)(); -+ -+ /* Function pointer for initializing encryption/decription. */ -+ void (* init_fn)(cryptstate_T *state, char_u *key, -+ char_u *salt, int salt_len, char_u *seed, int seed_len); -+ -+ /* Function pointers for encoding/decoding from one buffer into another. -+ * Optional, however, these or the _buffer ones should be configured. */ -+ void (*encode_fn)(cryptstate_T *state, char_u *from, size_t len, -+ char_u *to); -+ void (*decode_fn)(cryptstate_T *state, char_u *from, size_t len, -+ char_u *to); -+ -+ /* Function pointers for encoding and decoding, can buffer data if needed. -+ * Optional (however, these or the above should be configured). */ -+ long (*encode_buffer_fn)(cryptstate_T *state, char_u *from, size_t len, -+ char_u **newptr); -+ long (*decode_buffer_fn)(cryptstate_T *state, char_u *from, size_t len, -+ char_u **newptr); -+ -+ /* Function pointers for in-place encoding and decoding, used for -+ * crypt_*_inplace(). "from" and "to" arguments will be equal. -+ * These may be the same as decode_fn and encode_fn above, however an -+ * algorithm may implement them in a way that is not interchangeable with -+ * the crypt_(en|de)code() interface (for example because it wishes to add -+ * padding to files). -+ * This method is used for swap and undo files which have a rigid format. -+ */ -+ void (*encode_inplace_fn)(cryptstate_T *state, char_u *p1, size_t len, -+ char_u *p2); -+ void (*decode_inplace_fn)(cryptstate_T *state, char_u *p1, size_t len, -+ char_u *p2); -+} cryptmethod_T; -+ -+/* index is method_nr of cryptstate_T, CRYPT_M_* */ -+static cryptmethod_T cryptmethods[CRYPT_M_COUNT] = { -+ /* PK_Zip; very weak */ -+ { -+ "zip", -+ "VimCrypt~01!", -+ 0, -+ 0, -+ TRUE, -+ FALSE, -+ NULL, -+ crypt_zip_init, -+ crypt_zip_encode, crypt_zip_decode, -+ NULL, NULL, -+ crypt_zip_encode, crypt_zip_decode, -+ }, -+ -+ /* Blowfish/CFB + SHA-256 custom key derivation; implementation issues. */ -+ { -+ "blowfish", -+ "VimCrypt~02!", -+ 8, -+ 8, -+ TRUE, -+ FALSE, -+ blowfish_self_test, -+ crypt_blowfish_init, -+ crypt_blowfish_encode, crypt_blowfish_decode, -+ NULL, NULL, -+ crypt_blowfish_encode, crypt_blowfish_decode, -+ }, -+ -+ /* Blowfish/CFB + SHA-256 custom key derivation; fixed. */ -+ { -+ "blowfish2", -+ "VimCrypt~03!", -+ 8, -+ 8, -+ TRUE, -+ TRUE, -+ blowfish_self_test, -+ crypt_blowfish_init, -+ crypt_blowfish_encode, crypt_blowfish_decode, -+ NULL, NULL, -+ crypt_blowfish_encode, crypt_blowfish_decode, -+ }, -+}; -+ -+#define CRYPT_MAGIC_LEN 12 /* cannot change */ -+static char crypt_magic_head[] = "VimCrypt~"; -+ -+/* -+ * Return int value for crypt method name. -+ * 0 for "zip", the old method. Also for any non-valid value. -+ * 1 for "blowfish". -+ * 2 for "blowfish2". -+ */ -+ int -+crypt_method_nr_from_name(name) -+ char_u *name; -+{ -+ int i; -+ -+ for (i = 0; i < CRYPT_M_COUNT; ++i) -+ if (STRCMP(name, cryptmethods[i].name) == 0) -+ return i; -+ return 0; -+} -+ -+/* -+ * Get the crypt method used for a file from "ptr[len]", the magic text at the -+ * start of the file. -+ * Returns -1 when no encryption used. -+ */ -+ int -+crypt_method_nr_from_magic(ptr, len) -+ char *ptr; -+ int len; -+{ -+ int i; -+ -+ if (len < CRYPT_MAGIC_LEN) -+ return -1; -+ -+ for (i = 0; i < CRYPT_M_COUNT; i++) -+ if (memcmp(ptr, cryptmethods[i].magic, CRYPT_MAGIC_LEN) == 0) -+ return i; -+ -+ i = (int)STRLEN(crypt_magic_head); -+ if (len >= i && memcmp(ptr, crypt_magic_head, i) == 0) -+ EMSG(_("E821: File is encrypted with unknown method")); -+ -+ return -1; -+} -+ -+/* -+ * Return TRUE if the crypt method for "method_nr" can be done in-place. -+ */ -+ int -+crypt_works_inplace(state) -+ cryptstate_T *state; -+{ -+ return cryptmethods[state->method_nr].works_inplace; -+} -+ -+/* -+ * Get the crypt method for buffer "buf" as a number. -+ */ -+ int -+crypt_get_method_nr(buf) -+ buf_T *buf; -+{ -+ return crypt_method_nr_from_name(*buf->b_p_cm == NUL ? p_cm : buf->b_p_cm); -+} -+ -+/* -+ * Return TRUE when the buffer uses an encryption method that encrypts the -+ * whole undo file, not only the text. -+ */ -+ int -+crypt_whole_undofile(method_nr) -+ int method_nr; -+{ -+ return cryptmethods[method_nr].whole_undofile; -+} -+ -+/* -+ * Get crypt method specifc length of the file header in bytes. -+ */ -+ int -+crypt_get_header_len(method_nr) -+ int method_nr; -+{ -+ return CRYPT_MAGIC_LEN -+ + cryptmethods[method_nr].salt_len -+ + cryptmethods[method_nr].seed_len; -+} -+ -+/* -+ * Set the crypt method for buffer "buf" to "method_nr" using the int value as -+ * returned by crypt_method_nr_from_name(). -+ */ -+ void -+crypt_set_cm_option(buf, method_nr) -+ buf_T *buf; -+ int method_nr; -+{ -+ free_string_option(buf->b_p_cm); -+ buf->b_p_cm = vim_strsave((char_u *)cryptmethods[method_nr].name); -+} -+ -+/* -+ * If the crypt method for the current buffer has a self-test, run it and -+ * return OK/FAIL. -+ */ -+ int -+crypt_self_test() -+{ -+ int method_nr = crypt_get_method_nr(curbuf); -+ -+ if (cryptmethods[method_nr].self_test_fn == NULL) -+ return OK; -+ return cryptmethods[method_nr].self_test_fn(); -+} -+ -+/* -+ * Allocate a crypt state and initialize it. -+ */ -+ cryptstate_T * -+crypt_create(method_nr, key, salt, salt_len, seed, seed_len) -+ int method_nr; -+ char_u *key; -+ char_u *salt; -+ int salt_len; -+ char_u *seed; -+ int seed_len; -+{ -+ cryptstate_T *state = (cryptstate_T *)alloc((int)sizeof(cryptstate_T)); -+ -+ state->method_nr = method_nr; -+ cryptmethods[method_nr].init_fn(state, key, salt, salt_len, seed, seed_len); -+ return state; -+} -+ -+/* -+ * Allocate a crypt state from a file header and initialize it. -+ * Assumes that header contains at least the number of bytes that -+ * crypt_get_header_len() returns for "method_nr". -+ */ -+ cryptstate_T * -+crypt_create_from_header(method_nr, key, header) -+ int method_nr; -+ char_u *key; -+ char_u *header; -+{ -+ char_u *salt = NULL; -+ char_u *seed = NULL; -+ int salt_len = cryptmethods[method_nr].salt_len; -+ int seed_len = cryptmethods[method_nr].seed_len; -+ -+ if (salt_len > 0) -+ salt = header + CRYPT_MAGIC_LEN; -+ if (seed_len > 0) -+ seed = header + CRYPT_MAGIC_LEN + salt_len; -+ -+ return crypt_create(method_nr, key, salt, salt_len, seed, seed_len); -+} -+ -+/* -+ * Read the crypt method specific header data from "fp". -+ * Return an allocated cryptstate_T or NULL on error. -+ */ -+ cryptstate_T * -+crypt_create_from_file(fp, key) -+ FILE *fp; -+ char_u *key; -+{ -+ int method_nr; -+ int header_len; -+ char magic_buffer[CRYPT_MAGIC_LEN]; -+ char_u *buffer; -+ cryptstate_T *state; -+ -+ if (fread(magic_buffer, CRYPT_MAGIC_LEN, 1, fp) != 1) -+ return NULL; -+ method_nr = crypt_method_nr_from_magic(magic_buffer, CRYPT_MAGIC_LEN); -+ if (method_nr < 0) -+ return NULL; -+ -+ header_len = crypt_get_header_len(method_nr); -+ if ((buffer = alloc(header_len)) == NULL) -+ return NULL; -+ mch_memmove(buffer, magic_buffer, CRYPT_MAGIC_LEN); -+ if (header_len > CRYPT_MAGIC_LEN -+ && fread(buffer + CRYPT_MAGIC_LEN, -+ header_len - CRYPT_MAGIC_LEN, 1, fp) != 1) -+ { -+ vim_free(buffer); -+ return NULL; -+ } -+ -+ state = crypt_create_from_header(method_nr, key, buffer); -+ vim_free(buffer); -+ return state; -+} -+ -+/* -+ * Allocate a cryptstate_T for writing and initialize it with "key". -+ * Allocates and fills in the header and stores it in "header", setting -+ * "header_len". The header may include salt and seed, depending on -+ * cryptmethod. Caller must free header. -+ * Returns the state or NULL on failure. -+ */ -+ cryptstate_T * -+crypt_create_for_writing(method_nr, key, header, header_len) -+ int method_nr; -+ char_u *key; -+ char_u **header; -+ int *header_len; -+{ -+ int len = crypt_get_header_len(method_nr); -+ char_u *salt = NULL; -+ char_u *seed = NULL; -+ int salt_len = cryptmethods[method_nr].salt_len; -+ int seed_len = cryptmethods[method_nr].seed_len; -+ cryptstate_T *state; -+ -+ *header_len = len; -+ *header = alloc(len); -+ if (*header == NULL) -+ return NULL; -+ -+ mch_memmove(*header, cryptmethods[method_nr].magic, CRYPT_MAGIC_LEN); -+ if (salt_len > 0 || seed_len > 0) -+ { -+ if (salt_len > 0) -+ salt = *header + CRYPT_MAGIC_LEN; -+ if (seed_len > 0) -+ seed = *header + CRYPT_MAGIC_LEN + salt_len; -+ -+ /* TODO: Should this be crypt method specific? (Probably not worth -+ * it). sha2_seed is pretty bad for large amounts of entropy, so make -+ * that into something which is suitable for anything. */ -+ sha2_seed(salt, salt_len, seed, seed_len); -+ } -+ -+ state = crypt_create(method_nr, key, salt, salt_len, seed, seed_len); -+ if (state == NULL) -+ { -+ vim_free(*header); -+ *header = NULL; -+ } -+ return state; -+} -+ -+/* -+ * Free the crypt state. -+ */ -+ void -+crypt_free_state(state) -+ cryptstate_T *state; -+{ -+ vim_free(state->method_state); -+ vim_free(state); -+} -+ -+/* -+ * Encode "from[len]" and store the result in a newly allocated buffer, which -+ * is stored in "newptr". -+ * Return number of bytes in "newptr", 0 for need more or -1 on error. -+ */ -+ long -+crypt_encode_alloc(state, from, len, newptr) -+ cryptstate_T *state; -+ char_u *from; -+ size_t len; -+ char_u **newptr; -+{ -+ cryptmethod_T *method = &cryptmethods[state->method_nr]; -+ -+ if (method->encode_buffer_fn != NULL) -+ /* Has buffer function, pass through. */ -+ return method->encode_buffer_fn(state, from, len, newptr); -+ if (len == 0) -+ /* Not buffering, just return EOF. */ -+ return len; -+ -+ *newptr = alloc(len); -+ if (*newptr == NULL) -+ return -1; -+ method->encode_fn(state, from, len, *newptr); -+ return len; -+} -+ -+/* -+ * Decrypt "ptr[len]" and store the result in a newly allocated buffer, which -+ * is stored in "newptr". -+ * Return number of bytes in "newptr", 0 for need more or -1 on error. -+ */ -+ long -+crypt_decode_alloc(state, ptr, len, newptr) -+ cryptstate_T *state; -+ char_u *ptr; -+ long len; -+ char_u **newptr; -+{ -+ cryptmethod_T *method = &cryptmethods[state->method_nr]; -+ -+ if (method->decode_buffer_fn != NULL) -+ /* Has buffer function, pass through. */ -+ return method->decode_buffer_fn(state, ptr, len, newptr); -+ -+ if (len == 0) -+ /* Not buffering, just return EOF. */ -+ return len; -+ -+ *newptr = alloc(len); -+ if (*newptr == NULL) -+ return -1; -+ method->decode_fn(state, ptr, len, *newptr); -+ return len; -+} -+ -+/* -+ * Encrypting "from[len]" into "to[len]". -+ */ -+ void -+crypt_encode(state, from, len, to) -+ cryptstate_T *state; -+ char_u *from; -+ size_t len; -+ char_u *to; -+{ -+ cryptmethods[state->method_nr].encode_fn(state, from, len, to); -+} -+ -+/* -+ * decrypting "from[len]" into "to[len]". -+ */ -+ void -+crypt_decode(state, from, len, to) -+ cryptstate_T *state; -+ char_u *from; -+ size_t len; -+ char_u *to; -+{ -+ cryptmethods[state->method_nr].decode_fn(state, from, len, to); -+} -+ -+/* -+ * Simple inplace encryption, modifies "buf[len]" in place. -+ */ -+ void -+crypt_encode_inplace(state, buf, len) -+ cryptstate_T *state; -+ char_u *buf; -+ size_t len; -+{ -+ cryptmethods[state->method_nr].encode_inplace_fn(state, buf, len, buf); -+} -+ -+/* -+ * Simple inplace decryption, modifies "buf[len]" in place. -+ */ -+ void -+crypt_decode_inplace(state, buf, len) -+ cryptstate_T *state; -+ char_u *buf; -+ size_t len; -+{ -+ cryptmethods[state->method_nr].decode_inplace_fn(state, buf, len, buf); -+} -+ -+/* -+ * Free an allocated crypt key. Clear the text to make sure it doesn't stay -+ * in memory anywhere. -+ */ -+ void -+crypt_free_key(key) -+ char_u *key; -+{ -+ char_u *p; -+ -+ if (key != NULL) -+ { -+ for (p = key; *p != NUL; ++p) -+ *p = 0; -+ vim_free(key); -+ } -+} -+ -+/* -+ * Ask the user for a crypt key. -+ * When "store" is TRUE, the new key is stored in the 'key' option, and the -+ * 'key' option value is returned: Don't free it. -+ * When "store" is FALSE, the typed key is returned in allocated memory. -+ * Returns NULL on failure. -+ */ -+ char_u * -+crypt_get_key(store, twice) -+ int store; -+ int twice; /* Ask for the key twice. */ -+{ -+ char_u *p1, *p2 = NULL; -+ int round; -+ -+ for (round = 0; ; ++round) -+ { -+ cmdline_star = TRUE; -+ cmdline_row = msg_row; -+ p1 = getcmdline_prompt(NUL, round == 0 -+ ? (char_u *)_("Enter encryption key: ") -+ : (char_u *)_("Enter same key again: "), 0, EXPAND_NOTHING, -+ NULL); -+ cmdline_star = FALSE; -+ -+ if (p1 == NULL) -+ break; -+ -+ if (round == twice) -+ { -+ if (p2 != NULL && STRCMP(p1, p2) != 0) -+ { -+ MSG(_("Keys don't match!")); -+ crypt_free_key(p1); -+ crypt_free_key(p2); -+ p2 = NULL; -+ round = -1; /* do it again */ -+ continue; -+ } -+ -+ if (store) -+ { -+ set_option_value((char_u *)"key", 0L, p1, OPT_LOCAL); -+ crypt_free_key(p1); -+ p1 = curbuf->b_p_key; -+ } -+ break; -+ } -+ p2 = p1; -+ } -+ -+ /* since the user typed this, no need to wait for return */ -+ if (msg_didout) -+ msg_putchar('\n'); -+ need_wait_return = FALSE; -+ msg_didout = FALSE; -+ -+ crypt_free_key(p2); -+ return p1; -+} -+ -+ -+/* -+ * Append a message to IObuff for the encryption/decryption method being used. -+ */ -+ void -+crypt_append_msg(buf) -+ buf_T *buf; -+{ -+ if (crypt_get_method_nr(buf) == 0) -+ STRCAT(IObuff, _("[crypted]")); -+ else -+ { -+ STRCAT(IObuff, "["); -+ STRCAT(IObuff, *buf->b_p_cm == NUL ? p_cm : buf->b_p_cm); -+ STRCAT(IObuff, "]"); -+ } -+} -+ -+#endif /* FEAT_CRYPT */ -diff -up vim74/src/crypt_zip.c.blowfish2 vim74/src/crypt_zip.c ---- vim74/src/crypt_zip.c.blowfish2 2017-09-05 14:47:34.934912151 +0200 -+++ vim74/src/crypt_zip.c 2017-09-05 14:47:34.934912151 +0200 -@@ -0,0 +1,158 @@ -+/* vi:set ts=8 sts=4 sw=4: -+ * -+ * VIM - Vi IMproved by Bram Moolenaar -+ * -+ * Do ":help uganda" in Vim to read copying and usage conditions. -+ * Do ":help credits" in Vim to see a list of people who contributed. -+ * See README.txt for an overview of the Vim source code. -+ */ -+ -+/* -+ * crypt_zip.c: Zip encryption support. -+ */ -+#include "vim.h" -+ -+#if defined(FEAT_CRYPT) || defined(PROTO) -+/* -+ * Optional encryption support. -+ * Mohsin Ahmed, mosh@sasi.com, 98-09-24 -+ * Based on zip/crypt sources. -+ * -+ * NOTE FOR USA: Since 2000 exporting this code from the USA is allowed to -+ * most countries. There are a few exceptions, but that still should not be a -+ * problem since this code was originally created in Europe and India. -+ */ -+ -+/* Need a type that should be 32 bits. 64 also works but wastes space. */ -+# if VIM_SIZEOF_INT >= 4 -+typedef unsigned int u32_T; /* int is at least 32 bits */ -+# else -+typedef unsigned long u32_T; /* long should be 32 bits or more */ -+# endif -+ -+/* The state of encryption, referenced by cryptstate_T. */ -+typedef struct { -+ u32_T keys[3]; -+} zip_state_T; -+ -+ -+static void make_crc_tab __ARGS((void)); -+ -+static u32_T crc_32_table[256]; -+ -+/* -+ * Fill the CRC table, if not done already. -+ */ -+ static void -+make_crc_tab() -+{ -+ u32_T s, t, v; -+ static int done = FALSE; -+ -+ if (done) -+ return; -+ for (t = 0; t < 256; t++) -+ { -+ v = t; -+ for (s = 0; s < 8; s++) -+ v = (v >> 1) ^ ((v & 1) * (u32_T)0xedb88320L); -+ crc_32_table[t] = v; -+ } -+ done = TRUE; -+} -+ -+#define CRC32(c, b) (crc_32_table[((int)(c) ^ (b)) & 0xff] ^ ((c) >> 8)) -+ -+/* -+ * Return the next byte in the pseudo-random sequence. -+ */ -+#define DECRYPT_BYTE_ZIP(keys, t) { \ -+ short_u temp = (short_u)keys[2] | 2; \ -+ t = (int)(((unsigned)(temp * (temp ^ 1U)) >> 8) & 0xff); \ -+} -+ -+/* -+ * Update the encryption keys with the next byte of plain text. -+ */ -+#define UPDATE_KEYS_ZIP(keys, c) { \ -+ keys[0] = CRC32(keys[0], (c)); \ -+ keys[1] += keys[0] & 0xff; \ -+ keys[1] = keys[1] * 134775813L + 1; \ -+ keys[2] = CRC32(keys[2], (int)(keys[1] >> 24)); \ -+} -+ -+/* -+ * Initialize for encryption/decryption. -+ */ -+ void -+crypt_zip_init(state, key, salt, salt_len, seed, seed_len) -+ cryptstate_T *state; -+ char_u *key; -+ char_u *salt UNUSED; -+ int salt_len UNUSED; -+ char_u *seed UNUSED; -+ int seed_len UNUSED; -+{ -+ char_u *p; -+ zip_state_T *zs; -+ -+ zs = (zip_state_T *)alloc(sizeof(zip_state_T)); -+ state->method_state = zs; -+ -+ make_crc_tab(); -+ zs->keys[0] = 305419896L; -+ zs->keys[1] = 591751049L; -+ zs->keys[2] = 878082192L; -+ for (p = key; *p != NUL; ++p) -+ { -+ UPDATE_KEYS_ZIP(zs->keys, (int)*p); -+ } -+} -+ -+/* -+ * Encrypt "from[len]" into "to[len]". -+ * "from" and "to" can be equal to encrypt in place. -+ */ -+ void -+crypt_zip_encode(state, from, len, to) -+ cryptstate_T *state; -+ char_u *from; -+ size_t len; -+ char_u *to; -+{ -+ zip_state_T *zs = state->method_state; -+ size_t i; -+ int ztemp, t; -+ -+ for (i = 0; i < len; ++i) -+ { -+ ztemp = from[i]; -+ DECRYPT_BYTE_ZIP(zs->keys, t); -+ UPDATE_KEYS_ZIP(zs->keys, ztemp); -+ to[i] = t ^ ztemp; -+ } -+} -+ -+/* -+ * Decrypt "from[len]" into "to[len]". -+ */ -+ void -+crypt_zip_decode(state, from, len, to) -+ cryptstate_T *state; -+ char_u *from; -+ size_t len; -+ char_u *to; -+{ -+ zip_state_T *zs = state->method_state; -+ size_t i; -+ short_u temp; -+ -+ for (i = 0; i < len; ++i) -+ { -+ temp = (short_u)zs->keys[2] | 2; -+ temp = (int)(((unsigned)(temp * (temp ^ 1U)) >> 8) & 0xff); -+ UPDATE_KEYS_ZIP(zs->keys, to[i] = from[i] ^ temp); -+ } -+} -+ -+#endif /* FEAT_CRYPT */ -diff -up vim74/src/eval.c.blowfish2 vim74/src/eval.c ---- vim74/src/eval.c.blowfish2 2017-09-05 14:47:34.837912934 +0200 -+++ vim74/src/eval.c 2017-09-05 14:47:34.939912111 +0200 -@@ -12228,6 +12228,8 @@ f_has(argvars, rettv) - #endif - #ifdef FEAT_CRYPT - "cryptv", -+ "crypt-blowfish", -+ "crypt-blowfish2", - #endif - #ifdef FEAT_CSCOPE - "cscope", -diff -up vim74/src/ex_docmd.c.blowfish2 vim74/src/ex_docmd.c ---- vim74/src/ex_docmd.c.blowfish2 2017-09-05 14:47:34.782913378 +0200 -+++ vim74/src/ex_docmd.c 2017-09-05 14:47:34.945912063 +0200 -@@ -11497,8 +11497,7 @@ ex_match(eap) - ex_X(eap) - exarg_T *eap UNUSED; - { -- if (get_crypt_method(curbuf) == 0 || blowfish_self_test() == OK) -- (void)get_crypt_key(TRUE, TRUE); -+ (void)crypt_get_key(TRUE, TRUE); - } - #endif - -diff -up vim74/src/fileio.c.blowfish2 vim74/src/fileio.c ---- vim74/src/fileio.c.blowfish2 2017-09-05 14:47:34.245917713 +0200 -+++ vim74/src/fileio.c 2017-09-05 14:47:34.947912046 +0200 -@@ -24,20 +24,6 @@ - #define BUFSIZE 8192 /* size of normal write buffer */ - #define SMBUFSIZE 256 /* size of emergency write buffer */ - --#ifdef FEAT_CRYPT --/* crypt_magic[0] is pkzip crypt, crypt_magic[1] is sha2+blowfish */ --static char *crypt_magic[] = {"VimCrypt~01!", "VimCrypt~02!"}; --static char crypt_magic_head[] = "VimCrypt~"; --# define CRYPT_MAGIC_LEN 12 /* must be multiple of 4! */ -- --/* For blowfish, after the magic header, we store 8 bytes of salt and then 8 -- * bytes of seed (initialisation vector). */ --static int crypt_salt_len[] = {0, 8}; --static int crypt_seed_len[] = {0, 8}; --#define CRYPT_SALT_LEN_MAX 8 --#define CRYPT_SEED_LEN_MAX 8 --#endif -- - /* Is there any system that doesn't have access()? */ - #define USE_MCH_ACCESS - -@@ -55,7 +41,6 @@ static char_u *readfile_charconvert __AR - static void check_marks_read __ARGS((void)); - #endif - #ifdef FEAT_CRYPT --static int crypt_method_from_magic __ARGS((char *ptr, int len)); - static char_u *check_for_cryptkey __ARGS((char_u *cryptkey, char_u *ptr, long *sizep, off_t *filesizep, int newfile, char_u *fname, int *did_ask)); - #endif - #ifdef UNIX -@@ -116,6 +101,9 @@ struct bw_info - #ifdef HAS_BW_FLAGS - int bw_flags; /* FIO_ flags */ - #endif -+#ifdef FEAT_CRYPT -+ buf_T *bw_buffer; /* buffer being written */ -+#endif - #ifdef FEAT_MBYTE - char_u bw_rest[CONV_RESTLEN]; /* not converted bytes */ - int bw_restlen; /* nr of bytes in bw_rest[] */ -@@ -250,7 +238,6 @@ readfile(fname, sfname, from, lines_to_s - #ifdef FEAT_CRYPT - char_u *cryptkey = NULL; - int did_ask_for_key = FALSE; -- int crypt_method_used; - #endif - #ifdef FEAT_PERSISTENT_UNDO - context_sha256_T sha_ctx; -@@ -966,13 +953,6 @@ retry: - #endif - } - --#ifdef FEAT_CRYPT -- if (cryptkey != NULL) -- /* Need to reset the state, but keep the key, don't want to ask for it -- * again. */ -- crypt_pop_state(); --#endif -- - /* - * When retrying with another "fenc" and the first time "fileformat" - * will be reset. -@@ -1175,6 +1155,15 @@ retry: - if (read_undo_file) - sha256_start(&sha_ctx); - #endif -+#ifdef FEAT_CRYPT -+ if (curbuf->b_cryptstate != NULL) -+ { -+ /* Need to free the state, but keep the key, don't want to ask for -+ * it again. */ -+ crypt_free_state(curbuf->b_cryptstate); -+ curbuf->b_cryptstate = NULL; -+ } -+#endif - } - - while (!error && !got_int) -@@ -1339,6 +1328,76 @@ retry: - size = read_eintr(fd, ptr, size); - } - -+#ifdef FEAT_CRYPT -+ /* -+ * At start of file: Check for magic number of encryption. -+ */ -+ if (filesize == 0 && size > 0) -+ cryptkey = check_for_cryptkey(cryptkey, ptr, &size, -+ &filesize, newfile, sfname, -+ &did_ask_for_key); -+ /* -+ * Decrypt the read bytes. This is done before checking for -+ * EOF because the crypt layer may be buffering. -+ */ -+ if (cryptkey != NULL && curbuf->b_cryptstate != NULL && size > 0) -+ { -+ if (crypt_works_inplace(curbuf->b_cryptstate)) -+ { -+ crypt_decode_inplace(curbuf->b_cryptstate, ptr, size); -+ } -+ else -+ { -+ char_u *newptr = NULL; -+ int decrypted_size; -+ -+ decrypted_size = crypt_decode_alloc( -+ curbuf->b_cryptstate, ptr, size, &newptr); -+ -+ /* If the crypt layer is buffering, not producing -+ * anything yet, need to read more. */ -+ if (size > 0 && decrypted_size == 0) -+ continue; -+ -+ if (linerest == 0) -+ { -+ /* Simple case: reuse returned buffer (may be -+ * NULL, checked later). */ -+ new_buffer = newptr; -+ } -+ else -+ { -+ long_u new_size; -+ -+ /* Need new buffer to add bytes carried over. */ -+ new_size = (long_u)(decrypted_size + linerest + 1); -+ new_buffer = lalloc(new_size, FALSE); -+ if (new_buffer == NULL) -+ { -+ do_outofmem_msg(new_size); -+ error = TRUE; -+ break; -+ } -+ -+ mch_memmove(new_buffer, buffer, linerest); -+ if (newptr != NULL) -+ mch_memmove(new_buffer + linerest, newptr, -+ decrypted_size); -+ } -+ -+ if (new_buffer != NULL) -+ { -+ vim_free(buffer); -+ buffer = new_buffer; -+ new_buffer = NULL; -+ line_start = buffer; -+ ptr = buffer + linerest; -+ } -+ size = decrypted_size; -+ } -+ } -+#endif -+ - if (size <= 0) - { - if (size < 0) /* read error */ -@@ -1403,21 +1462,6 @@ retry: - } - #endif - } -- --#ifdef FEAT_CRYPT -- /* -- * At start of file: Check for magic number of encryption. -- */ -- if (filesize == 0) -- cryptkey = check_for_cryptkey(cryptkey, ptr, &size, -- &filesize, newfile, sfname, -- &did_ask_for_key); -- /* -- * Decrypt the read bytes. -- */ -- if (cryptkey != NULL && size > 0) -- crypt_decode(ptr, size); --#endif - } - skip_read = FALSE; - -@@ -1430,10 +1474,9 @@ retry: - */ - if ((filesize == 0 - # ifdef FEAT_CRYPT -- || (filesize == (CRYPT_MAGIC_LEN -- + crypt_salt_len[use_crypt_method] -- + crypt_seed_len[use_crypt_method]) -- && cryptkey != NULL) -+ || (cryptkey != NULL -+ && filesize == crypt_get_header_len( -+ crypt_get_method_nr(curbuf))) - # endif - ) - && (fio_flags == FIO_UCSBOM -@@ -2262,15 +2305,15 @@ failed: - save_file_ff(curbuf); /* remember the current file format */ - - #ifdef FEAT_CRYPT -- crypt_method_used = use_crypt_method; -- if (cryptkey != NULL) -+ if (curbuf->b_cryptstate != NULL) - { -- crypt_pop_state(); -- if (cryptkey != curbuf->b_p_key) -- free_crypt_key(cryptkey); -- /* don't set cryptkey to NULL, it's used below as a flag that -- * encryption was used */ -+ crypt_free_state(curbuf->b_cryptstate); -+ curbuf->b_cryptstate = NULL; - } -+ if (cryptkey != NULL && cryptkey != curbuf->b_p_key) -+ crypt_free_key(cryptkey); -+ /* Don't set cryptkey to NULL, it's used below as a flag that -+ * encryption was used. */ - #endif - - #ifdef FEAT_MBYTE -@@ -2457,10 +2500,7 @@ failed: - #ifdef FEAT_CRYPT - if (cryptkey != NULL) - { -- if (crypt_method_used == 1) -- STRCAT(IObuff, _("[blowfish]")); -- else -- STRCAT(IObuff, _("[crypted]")); -+ crypt_append_msg(curbuf); - c = TRUE; - } - #endif -@@ -2489,9 +2529,7 @@ failed: - #ifdef FEAT_CRYPT - if (cryptkey != NULL) - msg_add_lines(c, (long)linecnt, filesize -- - CRYPT_MAGIC_LEN -- - crypt_salt_len[use_crypt_method] -- - crypt_seed_len[use_crypt_method]); -+ - crypt_get_header_len(crypt_get_method_nr(curbuf))); - else - #endif - msg_add_lines(c, (long)linecnt, filesize); -@@ -2882,33 +2920,6 @@ check_marks_read() - - #if defined(FEAT_CRYPT) || defined(PROTO) - /* -- * Get the crypt method used for a file from "ptr[len]", the magic text at the -- * start of the file. -- * Returns -1 when no encryption used. -- */ -- static int --crypt_method_from_magic(ptr, len) -- char *ptr; -- int len; --{ -- int i; -- -- for (i = 0; i < (int)(sizeof(crypt_magic) / sizeof(crypt_magic[0])); i++) -- { -- if (len < (CRYPT_MAGIC_LEN + crypt_salt_len[i] + crypt_seed_len[i])) -- continue; -- if (memcmp(ptr, crypt_magic[i], CRYPT_MAGIC_LEN) == 0) -- return i; -- } -- -- i = (int)STRLEN(crypt_magic_head); -- if (len >= i && memcmp(ptr, crypt_magic_head, i) == 0) -- EMSG(_("E821: File is encrypted with unknown method")); -- -- return -1; --} -- --/* - * Check for magic number used for encryption. Applies to the current buffer. - * If found, the magic number is removed from ptr[*sizep] and *sizep and - * *filesizep are updated. -@@ -2924,7 +2935,7 @@ check_for_cryptkey(cryptkey, ptr, sizep, - char_u *fname; /* file name to display */ - int *did_ask; /* flag: whether already asked for key */ - { -- int method = crypt_method_from_magic((char *)ptr, *sizep); -+ int method = crypt_method_nr_from_magic((char *)ptr, *sizep); - int b_p_ro = curbuf->b_p_ro; - - if (method >= 0) -@@ -2933,9 +2944,8 @@ check_for_cryptkey(cryptkey, ptr, sizep, - * Avoids accidentally overwriting the file with garbage. */ - curbuf->b_p_ro = TRUE; - -- set_crypt_method(curbuf, method); -- if (method > 0) -- (void)blowfish_self_test(); -+ /* Set the cryptmethod local to the buffer. */ -+ crypt_set_cm_option(curbuf, method); - if (cryptkey == NULL && !*did_ask) - { - if (*curbuf->b_p_key) -@@ -2948,7 +2958,7 @@ check_for_cryptkey(cryptkey, ptr, sizep, - * Happens when retrying to detect encoding. */ - smsg((char_u *)_(need_key_msg), fname); - msg_scroll = TRUE; -- cryptkey = get_crypt_key(newfile, FALSE); -+ cryptkey = crypt_get_key(newfile, FALSE); - *did_ask = TRUE; - - /* check if empty key entered */ -@@ -2963,24 +2973,18 @@ check_for_cryptkey(cryptkey, ptr, sizep, - - if (cryptkey != NULL) - { -- int seed_len = crypt_seed_len[method]; -- int salt_len = crypt_salt_len[method]; -+ int header_len; - -- crypt_push_state(); -- use_crypt_method = method; -- if (method == 0) -- crypt_init_keys(cryptkey); -- else -- { -- bf_key_init(cryptkey, ptr + CRYPT_MAGIC_LEN, salt_len); -- bf_ofb_init(ptr + CRYPT_MAGIC_LEN + salt_len, seed_len); -- } -+ curbuf->b_cryptstate = crypt_create_from_header( -+ method, cryptkey, ptr); -+ crypt_set_cm_option(curbuf, method); -+ -+ /* Remove cryptmethod specific header from the text. */ -+ header_len = crypt_get_header_len(method); -+ *filesizep += header_len; -+ *sizep -= header_len; -+ mch_memmove(ptr, ptr + header_len, (size_t)*sizep); - -- /* Remove magic number from the text */ -- *filesizep += CRYPT_MAGIC_LEN + salt_len + seed_len; -- *sizep -= CRYPT_MAGIC_LEN + salt_len + seed_len; -- mch_memmove(ptr, ptr + CRYPT_MAGIC_LEN + salt_len + seed_len, -- (size_t)*sizep); - /* Restore the read-only flag. */ - curbuf->b_p_ro = b_p_ro; - } -@@ -2992,85 +2996,6 @@ check_for_cryptkey(cryptkey, ptr, sizep, - - return cryptkey; - } -- --/* -- * Check for magic number used for encryption. Applies to the current buffer. -- * If found and decryption is possible returns OK; -- */ -- int --prepare_crypt_read(fp) -- FILE *fp; --{ -- int method; -- char_u buffer[CRYPT_MAGIC_LEN + CRYPT_SALT_LEN_MAX -- + CRYPT_SEED_LEN_MAX + 2]; -- -- if (fread(buffer, CRYPT_MAGIC_LEN, 1, fp) != 1) -- return FAIL; -- method = crypt_method_from_magic((char *)buffer, -- CRYPT_MAGIC_LEN + -- CRYPT_SEED_LEN_MAX + -- CRYPT_SALT_LEN_MAX); -- if (method < 0 || method != get_crypt_method(curbuf)) -- return FAIL; -- -- crypt_push_state(); -- if (method == 0) -- crypt_init_keys(curbuf->b_p_key); -- else -- { -- int salt_len = crypt_salt_len[method]; -- int seed_len = crypt_seed_len[method]; -- -- if (fread(buffer, salt_len + seed_len, 1, fp) != 1) -- return FAIL; -- bf_key_init(curbuf->b_p_key, buffer, salt_len); -- bf_ofb_init(buffer + salt_len, seed_len); -- } -- return OK; --} -- --/* -- * Prepare for writing encrypted bytes for buffer "buf". -- * Returns a pointer to an allocated header of length "*lenp". -- * When out of memory returns NULL. -- * Otherwise calls crypt_push_state(), call crypt_pop_state() later. -- */ -- char_u * --prepare_crypt_write(buf, lenp) -- buf_T *buf; -- int *lenp; --{ -- char_u *header; -- int seed_len = crypt_seed_len[get_crypt_method(buf)]; -- int salt_len = crypt_salt_len[get_crypt_method(buf)]; -- char_u *salt; -- char_u *seed; -- -- header = alloc_clear(CRYPT_MAGIC_LEN + CRYPT_SALT_LEN_MAX -- + CRYPT_SEED_LEN_MAX + 2); -- if (header != NULL) -- { -- crypt_push_state(); -- use_crypt_method = get_crypt_method(buf); /* select zip or blowfish */ -- vim_strncpy(header, (char_u *)crypt_magic[use_crypt_method], -- CRYPT_MAGIC_LEN); -- if (use_crypt_method == 0) -- crypt_init_keys(buf->b_p_key); -- else -- { -- /* Using blowfish, add salt and seed. */ -- salt = header + CRYPT_MAGIC_LEN; -- seed = salt + salt_len; -- sha2_seed(salt, salt_len, seed, seed_len); -- bf_key_init(buf->b_p_key, salt, salt_len); -- bf_ofb_init(seed, seed_len); -- } -- } -- *lenp = CRYPT_MAGIC_LEN + salt_len + seed_len; -- return header; --} -- - #endif /* FEAT_CRYPT */ - - #ifdef UNIX -@@ -3224,9 +3149,6 @@ buf_write(buf, fname, sfname, start, end - int write_undo_file = FALSE; - context_sha256_T sha_ctx; - #endif --#ifdef FEAT_CRYPT -- int crypt_method_used; --#endif - - if (fname == NULL || *fname == NUL) /* safety check */ - return FAIL; -@@ -3262,6 +3184,9 @@ buf_write(buf, fname, sfname, start, end - write_info.bw_iconv_fd = (iconv_t)-1; - # endif - #endif -+#ifdef FEAT_CRYPT -+ write_info.bw_buffer = buf; -+#endif - - /* After writing a file changedtick changes but we don't want to display - * the line. */ -@@ -4505,17 +4430,17 @@ restore_backup: - #ifdef FEAT_CRYPT - if (*buf->b_p_key != NUL && !filtering) - { -- char_u *header; -- int header_len; -+ char_u *header; -+ int header_len; - -- header = prepare_crypt_write(buf, &header_len); -- if (header == NULL) -+ buf->b_cryptstate = crypt_create_for_writing(crypt_get_method_nr(buf), -+ buf->b_p_key, &header, &header_len); -+ if (buf->b_cryptstate == NULL || header == NULL) - end = 0; - else - { -- /* Write magic number, so that Vim knows that this file is -- * encrypted when reading it again. This also undergoes utf-8 to -- * ucs-2/4 conversion when needed. */ -+ /* Write magic number, so that Vim knows how this file is -+ * encrypted when reading it back. */ - write_info.bw_buf = header; - write_info.bw_len = header_len; - write_info.bw_flags = FIO_NOCONVERT; -@@ -4769,9 +4694,11 @@ restore_backup: - mch_set_acl(wfname, acl); - #endif - #ifdef FEAT_CRYPT -- crypt_method_used = use_crypt_method; -- if (wb_flags & FIO_ENCRYPTED) -- crypt_pop_state(); -+ if (buf->b_cryptstate != NULL) -+ { -+ crypt_free_state(buf->b_cryptstate); -+ buf->b_cryptstate = NULL; -+ } - #endif - - -@@ -4924,10 +4851,7 @@ restore_backup: - #ifdef FEAT_CRYPT - if (wb_flags & FIO_ENCRYPTED) - { -- if (crypt_method_used == 1) -- STRCAT(IObuff, _("[blowfish]")); -- else -- STRCAT(IObuff, _("[crypted]")); -+ crypt_append_msg(buf); - c = TRUE; - } - #endif -@@ -5740,8 +5664,26 @@ buf_write_bytes(ip) - #endif /* FEAT_MBYTE */ - - #ifdef FEAT_CRYPT -- if (flags & FIO_ENCRYPTED) /* encrypt the data */ -- crypt_encode(buf, len, buf); -+ if (flags & FIO_ENCRYPTED) -+ { -+ /* Encrypt the data. Do it in-place if possible, otherwise use an -+ * allocated buffer. */ -+ if (crypt_works_inplace(ip->bw_buffer->b_cryptstate)) -+ { -+ crypt_encode_inplace(ip->bw_buffer->b_cryptstate, buf, len); -+ } -+ else -+ { -+ char_u *outbuf; -+ -+ len = crypt_encode_alloc(curbuf->b_cryptstate, buf, len, &outbuf); -+ if (len == 0) -+ return OK; /* Crypt layer is buffering, will flush later. */ -+ wlen = write_eintr(ip->bw_fd, outbuf, len); -+ vim_free(outbuf); -+ return (wlen < len) ? FAIL : OK; -+ } -+ } - #endif - - wlen = write_eintr(ip->bw_fd, buf, len); -diff -up vim74/src/globals.h.blowfish2 vim74/src/globals.h ---- vim74/src/globals.h.blowfish2 2017-09-05 14:47:33.909920425 +0200 -+++ vim74/src/globals.h 2017-09-05 14:47:34.950912022 +0200 -@@ -105,10 +105,6 @@ EXTERN int exec_from_reg INIT(= FALSE); - - EXTERN int screen_cleared INIT(= FALSE); /* screen has been cleared */ - --#ifdef FEAT_CRYPT --EXTERN int use_crypt_method INIT(= 0); --#endif -- - /* - * When '$' is included in 'cpoptions' option set: - * When a change command is given that deletes only part of a line, a dollar -diff -up vim74/src/main.c.blowfish2 vim74/src/main.c ---- vim74/src/main.c.blowfish2 2017-09-05 14:47:34.571915081 +0200 -+++ vim74/src/main.c 2017-09-05 14:47:34.955911982 +0200 -@@ -845,8 +845,7 @@ vim_main2(int argc UNUSED, char **argv U - #ifdef FEAT_CRYPT - if (params.ask_for_key) - { -- (void)blowfish_self_test(); -- (void)get_crypt_key(TRUE, TRUE); -+ (void)crypt_get_key(TRUE, TRUE); - TIME_MSG("getting crypt key"); - } - #endif -diff -up vim74/src/Makefile.blowfish2 vim74/src/Makefile ---- vim74/src/Makefile.blowfish2 2017-09-05 14:47:34.847912854 +0200 -+++ vim74/src/Makefile 2017-09-05 14:47:34.956911974 +0200 -@@ -1427,6 +1427,8 @@ BASIC_SRC = \ - blowfish.c \ - buffer.c \ - charset.c \ -+ crypt.c \ -+ crypt_zip.c \ - diff.c \ - digraph.c \ - edit.c \ -@@ -1516,6 +1518,8 @@ OBJ_COMMON = \ - objects/buffer.o \ - objects/blowfish.o \ - objects/charset.o \ -+ objects/crypt.o \ -+ objects/crypt_zip.o \ - objects/diff.o \ - objects/digraph.o \ - objects/edit.o \ -@@ -1585,6 +1589,8 @@ PRO_AUTO = \ - blowfish.pro \ - buffer.pro \ - charset.pro \ -+ crypt.pro \ -+ crypt_zip.pro \ - diff.pro \ - digraph.pro \ - edit.pro \ -@@ -1745,10 +1751,11 @@ xxd/xxd$(EXEEXT): xxd/xxd.c - languages: - @if test -n "$(MAKEMO)" -a -f $(PODIR)/Makefile; then \ - cd $(PODIR); \ -- CC="$(CC)" $(MAKE) prefix=$(DESTDIR)$(prefix); \ -+ CC="$(CC)" $(MAKE) prefix=$(DESTDIR)$(prefix); \ - fi - -@if test -n "$(MAKEMO)" -a -f $(PODIR)/Makefile; then \ -- cd $(PODIR); CC="$(CC)" $(MAKE) prefix=$(DESTDIR)$(prefix) converted; \ -+ cd $(PODIR); \ -+ CC="$(CC)" $(MAKE) prefix=$(DESTDIR)$(prefix) converted; \ - fi - - # Update the *.po files for changes in the sources. Only run manually. -@@ -1874,6 +1881,12 @@ unittest unittests: $(UNITTEST_TARGETS) - - # Run individual test, assuming that Vim was already compiled. - test1 test2 test3 test4 test5 test6 test7 test8 test9 \ -+ test_breakindent \ -+ test_changelist \ -+ test_insertcount \ -+ test_listlbr \ -+ test_listlbr_utf8 \ -+ test_qf_title \ - test10 test11 test12 test13 test14 test15 test16 test17 test18 test19 \ - test20 test21 test22 test23 test24 test25 test26 test27 test28 test29 \ - test30 test31 test32 test33 test34 test35 test36 test37 test38 test39 \ -@@ -2494,6 +2507,12 @@ objects/buffer.o: buffer.c - objects/charset.o: charset.c - $(CCC) -o $@ charset.c - -+objects/crypt.o: crypt.c -+ $(CCC) -o $@ crypt.c -+ -+objects/crypt_zip.o: crypt_zip.c -+ $(CCC) -o $@ crypt_zip.c -+ - objects/diff.o: diff.c - $(CCC) -o $@ diff.c - -@@ -2843,6 +2862,14 @@ objects/charset.o: charset.c vim.h auto/ - ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \ - gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h globals.h farsi.h \ - arabic.h -+objects/crypt.o: crypt.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 ex_cmds.h proto.h globals.h farsi.h \ -+ arabic.h -+objects/crypt_zip.o: crypt_zip.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 ex_cmds.h proto.h \ -+ globals.h farsi.h arabic.h - objects/diff.o: diff.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 ex_cmds.h proto.h globals.h farsi.h \ -diff -up vim74/src/memline.c.blowfish2 vim74/src/memline.c ---- vim74/src/memline.c.blowfish2 2017-09-05 14:47:34.217917939 +0200 -+++ vim74/src/memline.c 2017-09-05 14:47:34.957911966 +0200 -@@ -63,6 +63,15 @@ typedef struct pointer_entry PTR_EN; - #define BLOCK0_ID1 '0' /* block 0 id 1 */ - #define BLOCK0_ID1_C0 'c' /* block 0 id 1 'cm' 0 */ - #define BLOCK0_ID1_C1 'C' /* block 0 id 1 'cm' 1 */ -+#define BLOCK0_ID1_C2 'd' /* block 0 id 1 'cm' 2 */ -+ -+#if defined(FEAT_CRYPT) -+static int id1_codes[] = { -+ BLOCK0_ID1_C0, /* CRYPT_M_ZIP */ -+ BLOCK0_ID1_C1, /* CRYPT_M_BF */ -+ BLOCK0_ID1_C2, /* CRYPT_M_BF2 */ -+}; -+#endif - - /* - * pointer to a block, used in a pointer block -@@ -151,7 +160,7 @@ struct data_block - struct block0 - { - char_u b0_id[2]; /* id for block 0: BLOCK0_ID0 and BLOCK0_ID1, -- * BLOCK0_ID1_C0, BLOCK0_ID1_C1 */ -+ * BLOCK0_ID1_C0, BLOCK0_ID1_C1, etc. */ - char_u b0_version[10]; /* Vim version string */ - char_u b0_page_size[4];/* number of bytes per page */ - char_u b0_mtime[4]; /* last modification time of file */ -@@ -226,6 +235,7 @@ typedef enum { - } upd_block0_T; - - #ifdef FEAT_CRYPT -+static void ml_set_mfp_crypt __ARGS((buf_T *buf)); - static void ml_set_b0_crypt __ARGS((buf_T *buf, ZERO_BL *b0p)); - #endif - static int ml_check_b0_id __ARGS((ZERO_BL *b0p)); -@@ -256,7 +266,7 @@ static long char_to_long __ARGS((char_u - static char_u *make_percent_swname __ARGS((char_u *dir, char_u *name)); - #endif - #ifdef FEAT_CRYPT --static void ml_crypt_prepare __ARGS((memfile_T *mfp, off_t offset, int reading)); -+static cryptstate_T *ml_crypt_prepare __ARGS((memfile_T *mfp, off_t offset, int reading)); - #endif - #ifdef FEAT_BYTEOFF - static void ml_updatechunk __ARGS((buf_T *buf, long line, long len, int updtype)); -@@ -356,8 +366,7 @@ ml_open(buf) - b0p->b0_hname[B0_HNAME_SIZE - 1] = NUL; - long_to_char(mch_get_pid(), b0p->b0_pid); - #ifdef FEAT_CRYPT -- if (*buf->b_p_key != NUL) -- ml_set_b0_crypt(buf, b0p); -+ ml_set_b0_crypt(buf, b0p); - #endif - } - -@@ -422,6 +431,25 @@ error: - - #if defined(FEAT_CRYPT) || defined(PROTO) - /* -+ * Prepare encryption for "buf" for the current key and method. -+ */ -+ static void -+ml_set_mfp_crypt(buf) -+ buf_T *buf; -+{ -+ if (*buf->b_p_key != NUL) -+ { -+ int method_nr = crypt_get_method_nr(buf); -+ -+ if (method_nr > CRYPT_M_ZIP) -+ { -+ /* Generate a seed and store it in the memfile. */ -+ sha2_seed(buf->b_ml.ml_mfp->mf_seed, MF_SEED_LEN, NULL, 0); -+ } -+ } -+} -+ -+/* - * Prepare encryption for "buf" with block 0 "b0p". - */ - static void -@@ -433,11 +461,11 @@ ml_set_b0_crypt(buf, b0p) - b0p->b0_id[1] = BLOCK0_ID1; - else - { -- if (get_crypt_method(buf) == 0) -- b0p->b0_id[1] = BLOCK0_ID1_C0; -- else -+ int method_nr = crypt_get_method_nr(buf); -+ -+ b0p->b0_id[1] = id1_codes[method_nr]; -+ if (method_nr > CRYPT_M_ZIP) - { -- b0p->b0_id[1] = BLOCK0_ID1_C1; - /* Generate a seed and store it in block 0 and in the memfile. */ - sha2_seed(&b0p->b0_seed, MF_SEED_LEN, NULL, 0); - mch_memmove(buf->b_ml.ml_mfp->mf_seed, &b0p->b0_seed, MF_SEED_LEN); -@@ -884,7 +912,8 @@ ml_check_b0_id(b0p) - if (b0p->b0_id[0] != BLOCK0_ID0 - || (b0p->b0_id[1] != BLOCK0_ID1 - && b0p->b0_id[1] != BLOCK0_ID1_C0 -- && b0p->b0_id[1] != BLOCK0_ID1_C1) -+ && b0p->b0_id[1] != BLOCK0_ID1_C1 -+ && b0p->b0_id[1] != BLOCK0_ID1_C2) - ) - return FAIL; - return OK; -@@ -903,8 +932,19 @@ ml_upd_block0(buf, what) - ZERO_BL *b0p; - - mfp = buf->b_ml.ml_mfp; -- if (mfp == NULL || (hp = mf_get(mfp, (blocknr_T)0, 1)) == NULL) -+ if (mfp == NULL) -+ return; -+ hp = mf_get(mfp, (blocknr_T)0, 1); -+ if (hp == NULL) -+ { -+#ifdef FEAT_CRYPT -+ /* Possibly update the seed in the memfile before there is a block0. */ -+ if (what == UB_CRYPT) -+ ml_set_mfp_crypt(buf); -+#endif - return; -+ } -+ - b0p = (ZERO_BL *)(hp->bh_data); - if (ml_check_b0_id(b0p) == FAIL) - EMSG(_("E304: ml_upd_block0(): Didn't get block 0??")); -@@ -1252,14 +1292,12 @@ ml_recover() - } - - #ifdef FEAT_CRYPT -- if (b0p->b0_id[1] == BLOCK0_ID1_C0) -- b0_cm = 0; -- else if (b0p->b0_id[1] == BLOCK0_ID1_C1) -- { -- b0_cm = 1; -+ for (i = 0; i < (int)(sizeof(id1_codes) / sizeof(int)); ++i) -+ if (id1_codes[i] == b0p->b0_id[1]) -+ b0_cm = i; -+ if (b0_cm > 0) - mch_memmove(mfp->mf_seed, &b0p->b0_seed, MF_SEED_LEN); -- } -- set_crypt_method(buf, b0_cm); -+ crypt_set_cm_option(buf, b0_cm < 0 ? 0 : b0_cm); - #else - if (b0p->b0_id[1] != BLOCK0_ID1) - { -@@ -1386,7 +1424,7 @@ ml_recover() - } - else - smsg((char_u *)_(need_key_msg), fname_used); -- buf->b_p_key = get_crypt_key(FALSE, FALSE); -+ buf->b_p_key = crypt_get_key(FALSE, FALSE); - if (buf->b_p_key == NULL) - buf->b_p_key = curbuf->b_p_key; - else if (*buf->b_p_key == NUL) -@@ -4813,6 +4851,7 @@ ml_encrypt_data(mfp, data, offset, size) - char_u *text_start; - char_u *new_data; - int text_len; -+ cryptstate_T *state; - - if (dp->db_id != DATA_ID) - return data; -@@ -4828,10 +4867,9 @@ ml_encrypt_data(mfp, data, offset, size) - mch_memmove(new_data, dp, head_end - (char_u *)dp); - - /* Encrypt the text. */ -- crypt_push_state(); -- ml_crypt_prepare(mfp, offset, FALSE); -- crypt_encode(text_start, text_len, new_data + dp->db_txt_start); -- crypt_pop_state(); -+ state = ml_crypt_prepare(mfp, offset, FALSE); -+ crypt_encode(state, text_start, text_len, new_data + dp->db_txt_start); -+ crypt_free_state(state); - - /* Clear the gap. */ - if (head_end < text_start) -@@ -4854,6 +4892,7 @@ ml_decrypt_data(mfp, data, offset, size) - char_u *head_end; - char_u *text_start; - int text_len; -+ cryptstate_T *state; - - if (dp->db_id == DATA_ID) - { -@@ -4866,17 +4905,17 @@ ml_decrypt_data(mfp, data, offset, size) - return; /* data was messed up */ - - /* Decrypt the text in place. */ -- crypt_push_state(); -- ml_crypt_prepare(mfp, offset, TRUE); -- crypt_decode(text_start, text_len); -- crypt_pop_state(); -+ state = ml_crypt_prepare(mfp, offset, TRUE); -+ crypt_decode_inplace(state, text_start, text_len); -+ crypt_free_state(state); - } - } - - /* - * Prepare for encryption/decryption, using the key, seed and offset. -+ * Return an allocated cryptstate_T *. - */ -- static void -+ static cryptstate_T * - ml_crypt_prepare(mfp, offset, reading) - memfile_T *mfp; - off_t offset; -@@ -4884,38 +4923,37 @@ ml_crypt_prepare(mfp, offset, reading) - { - buf_T *buf = mfp->mf_buffer; - char_u salt[50]; -- int method; -+ int method_nr; - char_u *key; - char_u *seed; - - if (reading && mfp->mf_old_key != NULL) - { - /* Reading back blocks with the previous key/method/seed. */ -- method = mfp->mf_old_cm; -+ method_nr = mfp->mf_old_cm; - key = mfp->mf_old_key; - seed = mfp->mf_old_seed; - } - else - { -- method = get_crypt_method(buf); -+ method_nr = crypt_get_method_nr(buf); - key = buf->b_p_key; - seed = mfp->mf_seed; - } - -- use_crypt_method = method; /* select pkzip or blowfish */ -- if (method == 0) -+ if (method_nr == CRYPT_M_ZIP) - { -+ /* For PKzip: Append the offset to the key, so that we use a different -+ * key for every block. */ - vim_snprintf((char *)salt, sizeof(salt), "%s%ld", key, (long)offset); -- crypt_init_keys(salt); -- } -- else -- { -- /* Using blowfish, add salt and seed. We use the byte offset of the -- * block for the salt. */ -- vim_snprintf((char *)salt, sizeof(salt), "%ld", (long)offset); -- bf_key_init(key, salt, (int)STRLEN(salt)); -- bf_ofb_init(seed, MF_SEED_LEN); -+ return crypt_create(method_nr, salt, NULL, 0, NULL, 0); - } -+ -+ /* Using blowfish or better: add salt and seed. We use the byte offset -+ * of the block for the salt. */ -+ vim_snprintf((char *)salt, sizeof(salt), "%ld", (long)offset); -+ return crypt_create(method_nr, key, salt, (int)STRLEN(salt), -+ seed, MF_SEED_LEN); - } - - #endif -diff -up vim74/src/misc2.c.blowfish2 vim74/src/misc2.c ---- vim74/src/misc2.c.blowfish2 2017-09-05 14:47:34.461915969 +0200 -+++ vim74/src/misc2.c 2017-09-05 14:47:34.959911949 +0200 -@@ -3803,322 +3803,6 @@ update_mouseshape(shape_idx) - #endif /* CURSOR_SHAPE */ - - --#ifdef FEAT_CRYPT --/* -- * Optional encryption support. -- * Mohsin Ahmed, mosh@sasi.com, 98-09-24 -- * Based on zip/crypt sources. -- * -- * NOTE FOR USA: Since 2000 exporting this code from the USA is allowed to -- * most countries. There are a few exceptions, but that still should not be a -- * problem since this code was originally created in Europe and India. -- * -- * Blowfish addition originally made by Mohsin Ahmed, -- * http://www.cs.albany.edu/~mosh 2010-03-14 -- * Based on blowfish by Bruce Schneier (http://www.schneier.com/blowfish.html) -- * and sha256 by Christophe Devine. -- */ -- --/* from zip.h */ -- --typedef unsigned short ush; /* unsigned 16-bit value */ --typedef unsigned long ulg; /* unsigned 32-bit value */ -- --static void make_crc_tab __ARGS((void)); -- --static ulg crc_32_tab[256]; -- --/* -- * Fill the CRC table. -- */ -- static void --make_crc_tab() --{ -- ulg s,t,v; -- static int done = FALSE; -- -- if (done) -- return; -- for (t = 0; t < 256; t++) -- { -- v = t; -- for (s = 0; s < 8; s++) -- v = (v >> 1) ^ ((v & 1) * (ulg)0xedb88320L); -- crc_32_tab[t] = v; -- } -- done = TRUE; --} -- --#define CRC32(c, b) (crc_32_tab[((int)(c) ^ (b)) & 0xff] ^ ((c) >> 8)) -- --static ulg keys[3]; /* keys defining the pseudo-random sequence */ -- --/* -- * Return the next byte in the pseudo-random sequence. -- */ --#define DECRYPT_BYTE_ZIP(t) { \ -- ush temp; \ -- \ -- temp = (ush)keys[2] | 2; \ -- t = (int)(((unsigned)(temp * (temp ^ 1U)) >> 8) & 0xff); \ --} -- --/* -- * Update the encryption keys with the next byte of plain text. -- */ --#define UPDATE_KEYS_ZIP(c) { \ -- keys[0] = CRC32(keys[0], (c)); \ -- keys[1] += keys[0] & 0xff; \ -- keys[1] = keys[1] * 134775813L + 1; \ -- keys[2] = CRC32(keys[2], (int)(keys[1] >> 24)); \ --} -- --static int crypt_busy = 0; --static ulg saved_keys[3]; --static int saved_crypt_method; -- --/* -- * Return int value for crypt method string: -- * 0 for "zip", the old method. Also for any non-valid value. -- * 1 for "blowfish". -- */ -- int --crypt_method_from_string(s) -- char_u *s; --{ -- return *s == 'b' ? 1 : 0; --} -- --/* -- * Get the crypt method for buffer "buf" as a number. -- */ -- int --get_crypt_method(buf) -- buf_T *buf; --{ -- return crypt_method_from_string(*buf->b_p_cm == NUL ? p_cm : buf->b_p_cm); --} -- --/* -- * Set the crypt method for buffer "buf" to "method" using the int value as -- * returned by crypt_method_from_string(). -- */ -- void --set_crypt_method(buf, method) -- buf_T *buf; -- int method; --{ -- free_string_option(buf->b_p_cm); -- buf->b_p_cm = vim_strsave((char_u *)(method == 0 ? "zip" : "blowfish")); --} -- --/* -- * Prepare for initializing encryption. If already doing encryption then save -- * the state. -- * Must always be called symmetrically with crypt_pop_state(). -- */ -- void --crypt_push_state() --{ -- if (crypt_busy == 1) -- { -- /* save the state */ -- if (use_crypt_method == 0) -- { -- saved_keys[0] = keys[0]; -- saved_keys[1] = keys[1]; -- saved_keys[2] = keys[2]; -- } -- else -- bf_crypt_save(); -- saved_crypt_method = use_crypt_method; -- } -- else if (crypt_busy > 1) -- EMSG2(_(e_intern2), "crypt_push_state()"); -- ++crypt_busy; --} -- --/* -- * End encryption. If doing encryption before crypt_push_state() then restore -- * the saved state. -- * Must always be called symmetrically with crypt_push_state(). -- */ -- void --crypt_pop_state() --{ -- --crypt_busy; -- if (crypt_busy == 1) -- { -- use_crypt_method = saved_crypt_method; -- if (use_crypt_method == 0) -- { -- keys[0] = saved_keys[0]; -- keys[1] = saved_keys[1]; -- keys[2] = saved_keys[2]; -- } -- else -- bf_crypt_restore(); -- } --} -- --/* -- * Encrypt "from[len]" into "to[len]". -- * "from" and "to" can be equal to encrypt in place. -- */ -- void --crypt_encode(from, len, to) -- char_u *from; -- size_t len; -- char_u *to; --{ -- size_t i; -- int ztemp, t; -- -- if (use_crypt_method == 0) -- for (i = 0; i < len; ++i) -- { -- ztemp = from[i]; -- DECRYPT_BYTE_ZIP(t); -- UPDATE_KEYS_ZIP(ztemp); -- to[i] = t ^ ztemp; -- } -- else -- bf_crypt_encode(from, len, to); --} -- --/* -- * Decrypt "ptr[len]" in place. -- */ -- void --crypt_decode(ptr, len) -- char_u *ptr; -- long len; --{ -- char_u *p; -- -- if (use_crypt_method == 0) -- for (p = ptr; p < ptr + len; ++p) -- { -- ush temp; -- -- temp = (ush)keys[2] | 2; -- temp = (int)(((unsigned)(temp * (temp ^ 1U)) >> 8) & 0xff); -- UPDATE_KEYS_ZIP(*p ^= temp); -- } -- else -- bf_crypt_decode(ptr, len); --} -- --/* -- * Initialize the encryption keys and the random header according to -- * the given password. -- * If "passwd" is NULL or empty, don't do anything. -- */ -- void --crypt_init_keys(passwd) -- char_u *passwd; /* password string with which to modify keys */ --{ -- if (passwd != NULL && *passwd != NUL) -- { -- if (use_crypt_method == 0) -- { -- char_u *p; -- -- make_crc_tab(); -- keys[0] = 305419896L; -- keys[1] = 591751049L; -- keys[2] = 878082192L; -- for (p = passwd; *p!= NUL; ++p) -- { -- UPDATE_KEYS_ZIP((int)*p); -- } -- } -- else -- bf_crypt_init_keys(passwd); -- } --} -- --/* -- * Free an allocated crypt key. Clear the text to make sure it doesn't stay -- * in memory anywhere. -- */ -- void --free_crypt_key(key) -- char_u *key; --{ -- char_u *p; -- -- if (key != NULL) -- { -- for (p = key; *p != NUL; ++p) -- *p = 0; -- vim_free(key); -- } --} -- --/* -- * Ask the user for a crypt key. -- * When "store" is TRUE, the new key is stored in the 'key' option, and the -- * 'key' option value is returned: Don't free it. -- * When "store" is FALSE, the typed key is returned in allocated memory. -- * Returns NULL on failure. -- */ -- char_u * --get_crypt_key(store, twice) -- int store; -- int twice; /* Ask for the key twice. */ --{ -- char_u *p1, *p2 = NULL; -- int round; -- -- for (round = 0; ; ++round) -- { -- cmdline_star = TRUE; -- cmdline_row = msg_row; -- p1 = getcmdline_prompt(NUL, round == 0 -- ? (char_u *)_("Enter encryption key: ") -- : (char_u *)_("Enter same key again: "), 0, EXPAND_NOTHING, -- NULL); -- cmdline_star = FALSE; -- -- if (p1 == NULL) -- break; -- -- if (round == twice) -- { -- if (p2 != NULL && STRCMP(p1, p2) != 0) -- { -- MSG(_("Keys don't match!")); -- free_crypt_key(p1); -- free_crypt_key(p2); -- p2 = NULL; -- round = -1; /* do it again */ -- continue; -- } -- -- if (store) -- { -- set_option_value((char_u *)"key", 0L, p1, OPT_LOCAL); -- free_crypt_key(p1); -- p1 = curbuf->b_p_key; -- } -- break; -- } -- p2 = p1; -- } -- -- /* since the user typed this, no need to wait for return */ -- if (msg_didout) -- msg_putchar('\n'); -- need_wait_return = FALSE; -- msg_didout = FALSE; -- -- free_crypt_key(p2); -- return p1; --} -- --#endif /* FEAT_CRYPT */ -- - /* TODO: make some #ifdef for this */ - /*--------[ file searching ]-------------------------------------------------*/ - /* -@@ -6588,8 +6272,23 @@ put_time(fd, the_time) - FILE *fd; - time_t the_time; - { -+ char_u buf[8]; -+ -+ time_to_bytes(the_time, buf); -+ fwrite(buf, (size_t)8, (size_t)1, fd); -+} -+ -+/* -+ * Write time_t to "buf[8]". -+ */ -+ void -+time_to_bytes(the_time, buf) -+ time_t the_time; -+ char_u *buf; -+{ - int c; - int i; -+ int bi = 0; - time_t wtime = the_time; - - /* time_t can be up to 8 bytes in size, more than long_u, thus we -@@ -6603,7 +6302,7 @@ put_time(fd, the_time) - { - if (i + 1 > (int)sizeof(time_t)) - /* ">>" doesn't work well when shifting more bits than avail */ -- putc(0, fd); -+ buf[bi++] = 0; - else - { - #if defined(SIZEOF_TIME_T) && SIZEOF_TIME_T > 4 -@@ -6611,7 +6310,7 @@ put_time(fd, the_time) - #else - c = (int)((long_u)wtime >> (i * 8)); - #endif -- putc(c, fd); -+ buf[bi++] = c; - } - } - } -diff -up vim74/src/option.c.blowfish2 vim74/src/option.c ---- vim74/src/option.c.blowfish2 2017-09-05 14:47:34.899912434 +0200 -+++ vim74/src/option.c 2017-09-05 14:47:34.961911933 +0200 -@@ -2969,7 +2969,7 @@ static char *(p_bg_values[]) = {"light", - static char *(p_nf_values[]) = {"octal", "hex", "alpha", NULL}; - static char *(p_ff_values[]) = {FF_UNIX, FF_DOS, FF_MAC, NULL}; - #ifdef FEAT_CRYPT --static char *(p_cm_values[]) = {"zip", "blowfish", NULL}; -+static char *(p_cm_values[]) = {"zip", "blowfish", "blowfish2", NULL}; - #endif - #ifdef FEAT_CMDL_COMPL - static char *(p_wop_values[]) = {"tagfile", NULL}; -@@ -6156,7 +6156,7 @@ did_set_string_option(opt_idx, varp, new - # endif - if (STRCMP(curbuf->b_p_key, oldval) != 0) - /* Need to update the swapfile. */ -- ml_set_crypt_key(curbuf, oldval, get_crypt_method(curbuf)); -+ ml_set_crypt_key(curbuf, oldval, crypt_get_method_nr(curbuf)); - } - - else if (gvarp == &p_cm) -@@ -6167,7 +6167,7 @@ did_set_string_option(opt_idx, varp, new - p = p_cm; - if (check_opt_strings(p, p_cm_values, TRUE) != OK) - errmsg = e_invarg; -- else if (get_crypt_method(curbuf) > 0 && blowfish_self_test() == FAIL) -+ else if (crypt_self_test() == FAIL) - errmsg = e_invarg; - else - { -@@ -6179,6 +6179,14 @@ did_set_string_option(opt_idx, varp, new - p_cm = vim_strsave((char_u *)"zip"); - new_value_alloced = TRUE; - } -+ /* When using ":set cm=name" the local value is going to be empty. -+ * Do that here, otherwise the crypt functions will still use the -+ * local value. */ -+ if ((opt_flags & (OPT_LOCAL | OPT_GLOBAL)) == 0) -+ { -+ free_string_option(curbuf->b_p_cm); -+ curbuf->b_p_cm = empty_option; -+ } - - /* Need to update the swapfile when the effective method changed. - * Set "s" to the effective old value, "p" to the effective new -@@ -6193,7 +6201,7 @@ did_set_string_option(opt_idx, varp, new - p = curbuf->b_p_cm; - if (STRCMP(s, p) != 0) - ml_set_crypt_key(curbuf, curbuf->b_p_key, -- crypt_method_from_string(s)); -+ crypt_method_nr_from_name(s)); - - /* If the global value changes need to update the swapfile for all - * buffers using that value. */ -@@ -6204,7 +6212,7 @@ did_set_string_option(opt_idx, varp, new - for (buf = firstbuf; buf != NULL; buf = buf->b_next) - if (buf != curbuf && *buf->b_p_cm == NUL) - ml_set_crypt_key(buf, buf->b_p_key, -- crypt_method_from_string(oldval)); -+ crypt_method_nr_from_name(oldval)); - } - } - } -diff -up vim74/src/proto/blowfish.pro.blowfish2 vim74/src/proto/blowfish.pro ---- vim74/src/proto/blowfish.pro.blowfish2 2013-08-10 13:37:06.000000000 +0200 -+++ vim74/src/proto/blowfish.pro 2017-09-05 14:47:34.964911909 +0200 -@@ -1,10 +1,6 @@ - /* blowfish.c */ --void bf_key_init __ARGS((char_u *password, char_u *salt, int salt_len)); --void bf_ofb_init __ARGS((char_u *iv, int iv_len)); --void bf_crypt_encode __ARGS((char_u *from, size_t len, char_u *to)); --void bf_crypt_decode __ARGS((char_u *ptr, long len)); --void bf_crypt_init_keys __ARGS((char_u *passwd)); --void bf_crypt_save __ARGS((void)); --void bf_crypt_restore __ARGS((void)); -+void crypt_blowfish_encode __ARGS((cryptstate_T *state, char_u *from, size_t len, char_u *to)); -+void crypt_blowfish_decode __ARGS((cryptstate_T *state, char_u *from, size_t len, char_u *to)); -+void crypt_blowfish_init __ARGS((cryptstate_T *state, char_u *key, char_u *salt, int salt_len, char_u *seed, int seed_len)); - int blowfish_self_test __ARGS((void)); - /* vim: set ft=c : */ -diff -up vim74/src/proto/crypt.pro.blowfish2 vim74/src/proto/crypt.pro ---- vim74/src/proto/crypt.pro.blowfish2 2017-09-05 14:47:34.965911901 +0200 -+++ vim74/src/proto/crypt.pro 2017-09-05 14:47:34.965911901 +0200 -@@ -0,0 +1,24 @@ -+/* crypt.c */ -+int crypt_method_nr_from_name __ARGS((char_u *name)); -+int crypt_method_nr_from_magic __ARGS((char *ptr, int len)); -+int crypt_works_inplace __ARGS((cryptstate_T *state)); -+int crypt_get_method_nr __ARGS((buf_T *buf)); -+int crypt_whole_undofile __ARGS((int method_nr)); -+int crypt_get_header_len __ARGS((int method_nr)); -+void crypt_set_cm_option __ARGS((buf_T *buf, int method_nr)); -+int crypt_self_test __ARGS((void)); -+cryptstate_T *crypt_create __ARGS((int method_nr, char_u *key, char_u *salt, int salt_len, char_u *seed, int seed_len)); -+cryptstate_T *crypt_create_from_header __ARGS((int method_nr, char_u *key, char_u *header)); -+cryptstate_T *crypt_create_from_file __ARGS((FILE *fp, char_u *key)); -+cryptstate_T *crypt_create_for_writing __ARGS((int method_nr, char_u *key, char_u **header, int *header_len)); -+void crypt_free_state __ARGS((cryptstate_T *state)); -+long crypt_encode_alloc __ARGS((cryptstate_T *state, char_u *from, size_t len, char_u **newptr)); -+long crypt_decode_alloc __ARGS((cryptstate_T *state, char_u *ptr, long len, char_u **newptr)); -+void crypt_encode __ARGS((cryptstate_T *state, char_u *from, size_t len, char_u *to)); -+void crypt_decode __ARGS((cryptstate_T *state, char_u *from, size_t len, char_u *to)); -+void crypt_encode_inplace __ARGS((cryptstate_T *state, char_u *buf, size_t len)); -+void crypt_decode_inplace __ARGS((cryptstate_T *state, char_u *buf, size_t len)); -+void crypt_free_key __ARGS((char_u *key)); -+char_u *crypt_get_key __ARGS((int store, int twice)); -+void crypt_append_msg __ARGS((buf_T *buf)); -+/* vim: set ft=c : */ -diff -up vim74/src/proto/crypt_zip.pro.blowfish2 vim74/src/proto/crypt_zip.pro ---- vim74/src/proto/crypt_zip.pro.blowfish2 2017-09-05 14:47:34.965911901 +0200 -+++ vim74/src/proto/crypt_zip.pro 2017-09-05 14:47:34.965911901 +0200 -@@ -0,0 +1,5 @@ -+/* crypt_zip.c */ -+void crypt_zip_init __ARGS((cryptstate_T *state, char_u *key, char_u *salt, int salt_len, char_u *seed, int seed_len)); -+void crypt_zip_encode __ARGS((cryptstate_T *state, char_u *from, size_t len, char_u *to)); -+void crypt_zip_decode __ARGS((cryptstate_T *state, char_u *from, size_t len, char_u *to)); -+/* vim: set ft=c : */ -diff -up vim74/src/proto/fileio.pro.blowfish2 vim74/src/proto/fileio.pro ---- vim74/src/proto/fileio.pro.blowfish2 2013-08-10 13:37:11.000000000 +0200 -+++ vim74/src/proto/fileio.pro 2017-09-05 14:47:34.965911901 +0200 -@@ -4,8 +4,6 @@ int readfile __ARGS((char_u *fname, char - int prep_exarg __ARGS((exarg_T *eap, buf_T *buf)); - void set_file_options __ARGS((int set_options, exarg_T *eap)); - void set_forced_fenc __ARGS((exarg_T *eap)); --int prepare_crypt_read __ARGS((FILE *fp)); --char_u *prepare_crypt_write __ARGS((buf_T *buf, int *lenp)); - int check_file_readonly __ARGS((char_u *fname, int perm)); - int buf_write __ARGS((buf_T *buf, char_u *fname, char_u *sfname, linenr_T start, linenr_T end, exarg_T *eap, int append, int forceit, int reset_changed, int filtering)); - void msg_add_fname __ARGS((buf_T *buf, char_u *fname)); -diff -up vim74/src/proto.h.blowfish2 vim74/src/proto.h ---- vim74/src/proto.h.blowfish2 2013-02-26 14:18:19.000000000 +0100 -+++ vim74/src/proto.h 2017-09-05 14:47:34.966911893 +0200 -@@ -70,6 +70,8 @@ extern int _stricoll __ARGS((char *a, ch - - # ifdef FEAT_CRYPT - # include "blowfish.pro" -+# include "crypt.pro" -+# include "crypt_zip.pro" - # endif - # include "buffer.pro" - # include "charset.pro" -diff -up vim74/src/proto/misc2.pro.blowfish2 vim74/src/proto/misc2.pro ---- vim74/src/proto/misc2.pro.blowfish2 2013-08-10 13:37:20.000000000 +0200 -+++ vim74/src/proto/misc2.pro 2017-09-05 14:47:34.966911893 +0200 -@@ -84,16 +84,6 @@ int illegal_slash __ARGS((char *name)); - char_u *parse_shape_opt __ARGS((int what)); - int get_shape_idx __ARGS((int mouse)); - void update_mouseshape __ARGS((int shape_idx)); --int crypt_method_from_string __ARGS((char_u *s)); --int get_crypt_method __ARGS((buf_T *buf)); --void set_crypt_method __ARGS((buf_T *buf, int method)); --void crypt_push_state __ARGS((void)); --void crypt_pop_state __ARGS((void)); --void crypt_encode __ARGS((char_u *from, size_t len, char_u *to)); --void crypt_decode __ARGS((char_u *ptr, long len)); --void crypt_init_keys __ARGS((char_u *passwd)); --void free_crypt_key __ARGS((char_u *key)); --char_u *get_crypt_key __ARGS((int store, int twice)); - void *vim_findfile_init __ARGS((char_u *path, char_u *filename, char_u *stopdirs, int level, int free_visited, int find_what, void *search_ctx_arg, int tagfile, char_u *rel_fname)); - char_u *vim_findfile_stopdir __ARGS((char_u *buf)); - void vim_findfile_cleanup __ARGS((void *ctx)); -@@ -116,5 +106,6 @@ time_t get8ctime __ARGS((FILE *fd)); - char_u *read_string __ARGS((FILE *fd, int cnt)); - int put_bytes __ARGS((FILE *fd, long_u nr, int len)); - void put_time __ARGS((FILE *fd, time_t the_time)); -+void time_to_bytes __ARGS((time_t the_time, char_u *buf)); - int has_non_ascii __ARGS((char_u *s)); - /* vim: set ft=c : */ -diff -up vim74/src/structs.h.blowfish2 vim74/src/structs.h ---- vim74/src/structs.h.blowfish2 2017-09-05 14:47:34.839912918 +0200 -+++ vim74/src/structs.h 2017-09-05 14:47:34.967911885 +0200 -@@ -1240,6 +1240,24 @@ typedef struct { - } syn_time_T; - #endif - -+#ifdef FEAT_CRYPT -+/* -+ * Structure to hold the type of encryption and the state of encryption or -+ * decryption. -+ */ -+typedef struct { -+ int method_nr; -+ void *method_state; /* method-specific state information */ -+} cryptstate_T; -+ -+/* values for method_nr */ -+# define CRYPT_M_ZIP 0 -+# define CRYPT_M_BF 1 -+# define CRYPT_M_BF2 2 -+# define CRYPT_M_COUNT 3 /* number of crypt methods */ -+#endif -+ -+ - /* - * These are items normally related to a buffer. But when using ":ownsyntax" - * a window may have its own instance. -@@ -1765,7 +1783,12 @@ struct file_buffer - int b_was_netbeans_file;/* TRUE if b_netbeans_file was once set */ - #endif - --}; -+#ifdef FEAT_CRYPT -+ cryptstate_T *b_cryptstate; /* Encryption state while reading or writing -+ * the file. NULL when not using encryption. */ -+#endif -+ -+}; /* file_buffer */ - - - #ifdef FEAT_DIFF -diff -up vim74/src/testdir/test72.in.blowfish2 vim74/src/testdir/test72.in ---- vim74/src/testdir/test72.in.blowfish2 2012-01-04 19:04:17.000000000 +0100 -+++ vim74/src/testdir/test72.in 2017-09-05 15:23:47.590060199 +0200 -@@ -4,6 +4,7 @@ undo-able pieces. Do that by setting 'u - - STARTTEST - :so small.vim -+:set belloff=all - :" - :" Test 'undofile': first a simple one-line change. - :set nocompatible viminfo+=nviminfo visualbell -@@ -25,7 +26,6 @@ u:.w! test.out - :set undofile - :bwipe! - :e Xtestfile --:" TODO: this beeps - u:.w >>test.out - :" - :" Test 'undofile', add 10 lines, delete 6 lines, undo 3 -@@ -81,7 +81,8 @@ uu:w >>test.out - :" - :" With encryption, cryptmethod=blowfish - :e! Xtestfile --:set undofile cm=blowfish -+rubbish -+:set undofile cm=blowfish ff& - ggdGijan - feb - mar -@@ -104,8 +105,38 @@ u:.w >>test.out - u:.w >>test.out - u:.w >>test.out - :" -+:" With encryption, cryptmethod=blowfish2 -+:e! Xtestfile -+rubbish -+:set undofile cm=blowfish2 ff& -+ggdGijan -+feb -+mar -+apr -+jun:set ul=100 -+kk0ifoo :set ul=100 -+dd:set ul=100 -+ibar :set ul=100 -+:X -+foo2bar -+foo2bar -+:w! -+:bwipe! -+:e Xtestfile -+foo2bar -+:set key= -+/bar -+:.w >>test.out -+u:.w >>test.out -+u:.w >>test.out -+u:.w >>test.out -+:" - :" Rename the undo file so that it gets cleaned up. --:call rename(".Xtestfile.un~", "Xtestundo") -+:if has("vms") -+: call rename("_un_Xtestfile", "Xtestundo") -+:else -+: call rename(".Xtestfile.un~", "Xtestundo") -+:endif - :qa! - ENDTEST - -diff -up vim74/src/testdir/test72.ok.blowfish2 vim74/src/testdir/test72.ok ---- vim74/src/testdir/test72.ok.blowfish2 2012-01-04 19:04:17.000000000 +0100 -+++ vim74/src/testdir/test72.ok 2017-09-05 15:23:47.596060147 +0200 -@@ -25,3 +25,7 @@ bar apr - apr - foo mar - mar -+bar apr -+apr -+foo mar -+mar -diff -up vim74/src/undo.c.blowfish2 vim74/src/undo.c ---- vim74/src/undo.c.blowfish2 2017-09-05 14:47:34.740913717 +0200 -+++ vim74/src/undo.c 2017-09-05 14:47:34.973911836 +0200 -@@ -81,8 +81,25 @@ - #define UH_MAGIC 0x18dade /* value for uh_magic when in use */ - #define UE_MAGIC 0xabc123 /* value for ue_magic when in use */ - -+/* Size of buffer used for encryption. */ -+#define CRYPT_BUF_SIZE 8192 -+ - #include "vim.h" - -+/* Structure passed around between functions. -+ * Avoids passing cryptstate_T when encryption not available. */ -+typedef struct { -+ buf_T *bi_buf; -+ FILE *bi_fp; -+#ifdef FEAT_CRYPT -+ cryptstate_T *bi_state; -+ char_u *bi_buffer; /* CRYPT_BUF_SIZE, NULL when not buffering */ -+ size_t bi_used; /* bytes written to/read from bi_buffer */ -+ size_t bi_avail; /* bytes available in bi_buffer */ -+#endif -+} bufinfo_T; -+ -+ - static long get_undolevel __ARGS((void)); - static void u_unch_branch __ARGS((u_header_T *uhp)); - static u_entry_T *u_get_headentry __ARGS((void)); -@@ -98,18 +115,26 @@ static void u_freeentry __ARGS((u_entry_ - #ifdef FEAT_PERSISTENT_UNDO - static void corruption_error __ARGS((char *mesg, char_u *file_name)); - static void u_free_uhp __ARGS((u_header_T *uhp)); --static size_t fwrite_crypt __ARGS((buf_T *buf UNUSED, char_u *ptr, size_t len, FILE *fp)); --static char_u *read_string_decrypt __ARGS((buf_T *buf UNUSED, FILE *fd, int len)); --static int serialize_header __ARGS((FILE *fp, buf_T *buf, char_u *hash)); --static int serialize_uhp __ARGS((FILE *fp, buf_T *buf, u_header_T *uhp)); --static u_header_T *unserialize_uhp __ARGS((FILE *fp, char_u *file_name)); --static int serialize_uep __ARGS((FILE *fp, buf_T *buf, u_entry_T *uep)); --static u_entry_T *unserialize_uep __ARGS((FILE *fp, int *error, char_u *file_name)); --static void serialize_pos __ARGS((pos_T pos, FILE *fp)); --static void unserialize_pos __ARGS((pos_T *pos, FILE *fp)); --static void serialize_visualinfo __ARGS((visualinfo_T *info, FILE *fp)); --static void unserialize_visualinfo __ARGS((visualinfo_T *info, FILE *fp)); --static void put_header_ptr __ARGS((FILE *fp, u_header_T *uhp)); -+static int undo_write __ARGS((bufinfo_T *bi, char_u *ptr, size_t len)); -+static int undo_flush __ARGS((bufinfo_T *bi)); -+static int fwrite_crypt __ARGS((bufinfo_T *bi, char_u *ptr, size_t len)); -+static int undo_write_bytes __ARGS((bufinfo_T *bi, long_u nr, int len)); -+static void put_header_ptr __ARGS((bufinfo_T *bi, u_header_T *uhp)); -+static int undo_read_4c __ARGS((bufinfo_T *bi)); -+static int undo_read_2c __ARGS((bufinfo_T *bi)); -+static int undo_read_byte __ARGS((bufinfo_T *bi)); -+static time_t undo_read_time __ARGS((bufinfo_T *bi)); -+static int undo_read __ARGS((bufinfo_T *bi, char_u *buffer, size_t size)); -+static char_u *read_string_decrypt __ARGS((bufinfo_T *bi, int len)); -+static int serialize_header __ARGS((bufinfo_T *bi, char_u *hash)); -+static int serialize_uhp __ARGS((bufinfo_T *bi, u_header_T *uhp)); -+static u_header_T *unserialize_uhp __ARGS((bufinfo_T *bi, char_u *file_name)); -+static int serialize_uep __ARGS((bufinfo_T *bi, u_entry_T *uep)); -+static u_entry_T *unserialize_uep __ARGS((bufinfo_T *bi, int *error, char_u *file_name)); -+static void serialize_pos __ARGS((bufinfo_T *bi, pos_T pos)); -+static void unserialize_pos __ARGS((bufinfo_T *bi, pos_T *pos)); -+static void serialize_visualinfo __ARGS((bufinfo_T *bi, visualinfo_T *info)); -+static void unserialize_visualinfo __ARGS((bufinfo_T *bi, visualinfo_T *info)); - #endif - - #define U_ALLOC_LINE(size) lalloc((long_u)(size), FALSE) -@@ -850,68 +875,294 @@ u_free_uhp(uhp) - } - - /* -- * Like fwrite() but crypt the bytes when 'key' is set. -- * Returns 1 if successful. -+ * Write a sequence of bytes to the undo file. -+ * Buffers and encrypts as needed. -+ * Returns OK or FAIL. - */ -- static size_t --fwrite_crypt(buf, ptr, len, fp) -- buf_T *buf UNUSED; -+ static int -+undo_write(bi, ptr, len) -+ bufinfo_T *bi; -+ char_u *ptr; -+ size_t len; -+{ -+#ifdef FEAT_CRYPT -+ if (bi->bi_buffer != NULL) -+ { -+ size_t len_todo = len; -+ char_u *p = ptr; -+ -+ while (bi->bi_used + len_todo >= CRYPT_BUF_SIZE) -+ { -+ size_t n = CRYPT_BUF_SIZE - bi->bi_used; -+ -+ mch_memmove(bi->bi_buffer + bi->bi_used, p, n); -+ len_todo -= n; -+ p += n; -+ bi->bi_used = CRYPT_BUF_SIZE; -+ if (undo_flush(bi) == FAIL) -+ return FAIL; -+ } -+ if (len_todo > 0) -+ { -+ mch_memmove(bi->bi_buffer + bi->bi_used, p, len_todo); -+ bi->bi_used += len_todo; -+ } -+ return OK; -+ } -+#endif -+ if (fwrite(ptr, len, (size_t)1, bi->bi_fp) != 1) -+ return FAIL; -+ return OK; -+} -+ -+#ifdef FEAT_CRYPT -+ static int -+undo_flush(bi) -+ bufinfo_T *bi; -+{ -+ if (bi->bi_buffer != NULL && bi->bi_state != NULL && bi->bi_used > 0) -+ { -+ crypt_encode_inplace(bi->bi_state, bi->bi_buffer, bi->bi_used); -+ if (fwrite(bi->bi_buffer, bi->bi_used, (size_t)1, bi->bi_fp) != 1) -+ return FAIL; -+ bi->bi_used = 0; -+ } -+ return OK; -+} -+#endif -+ -+/* -+ * Write "ptr[len]" and crypt the bytes when needed. -+ * Returns OK or FAIL. -+ */ -+ static int -+fwrite_crypt(bi, ptr, len) -+ bufinfo_T *bi; - char_u *ptr; - size_t len; -- FILE *fp; - { - #ifdef FEAT_CRYPT - char_u *copy; - char_u small_buf[100]; - size_t i; - -- if (*buf->b_p_key == NUL) -- return fwrite(ptr, len, (size_t)1, fp); -- if (len < 100) -- copy = small_buf; /* no malloc()/free() for short strings */ -- else -+ if (bi->bi_state != NULL && bi->bi_buffer == NULL) - { -- copy = lalloc(len, FALSE); -- if (copy == NULL) -- return 0; -- } -- crypt_encode(ptr, len, copy); -- i = fwrite(copy, len, (size_t)1, fp); -- if (copy != small_buf) -- vim_free(copy); -- return i; --#else -- return fwrite(ptr, len, (size_t)1, fp); -+ /* crypting every piece of text separately */ -+ if (len < 100) -+ copy = small_buf; /* no malloc()/free() for short strings */ -+ else -+ { -+ copy = lalloc(len, FALSE); -+ if (copy == NULL) -+ return 0; -+ } -+ crypt_encode(bi->bi_state, ptr, len, copy); -+ i = fwrite(copy, len, (size_t)1, bi->bi_fp); -+ if (copy != small_buf) -+ vim_free(copy); -+ return i == 1 ? OK : FAIL; -+ } - #endif -+ return undo_write(bi, ptr, len); - } - - /* -- * Read a string of length "len" from "fd". -- * When 'key' is set decrypt the bytes. -+ * Write a number, MSB first, in "len" bytes. -+ * Must match with undo_read_?c() functions. -+ * Returns OK or FAIL. - */ -- static char_u * --read_string_decrypt(buf, fd, len) -- buf_T *buf UNUSED; -- FILE *fd; -+ static int -+undo_write_bytes(bi, nr, len) -+ bufinfo_T *bi; -+ long_u nr; - int len; - { -- char_u *ptr; -+ char_u buf[8]; -+ int i; -+ int bufi = 0; -+ -+ for (i = len - 1; i >= 0; --i) -+ buf[bufi++] = nr >> (i * 8); -+ return undo_write(bi, buf, (size_t)len); -+} - -- ptr = read_string(fd, len); -+/* -+ * Write the pointer to an undo header. Instead of writing the pointer itself -+ * we use the sequence number of the header. This is converted back to -+ * pointers when reading. */ -+ static void -+put_header_ptr(bi, uhp) -+ bufinfo_T *bi; -+ u_header_T *uhp; -+{ -+ undo_write_bytes(bi, (long_u)(uhp != NULL ? uhp->uh_seq : 0), 4); -+} -+ -+ static int -+undo_read_4c(bi) -+ bufinfo_T *bi; -+{ - #ifdef FEAT_CRYPT -- if (ptr != NULL && *buf->b_p_key != NUL) -- crypt_decode(ptr, len); -+ if (bi->bi_buffer != NULL) -+ { -+ char_u buf[4]; -+ int n; -+ -+ undo_read(bi, buf, (size_t)4); -+ n = (buf[0] << 24) + (buf[1] << 16) + (buf[2] << 8) + buf[3]; -+ return n; -+ } - #endif -+ return get4c(bi->bi_fp); -+} -+ -+ static int -+undo_read_2c(bi) -+ bufinfo_T *bi; -+{ -+#ifdef FEAT_CRYPT -+ if (bi->bi_buffer != NULL) -+ { -+ char_u buf[2]; -+ int n; -+ -+ undo_read(bi, buf, (size_t)2); -+ n = (buf[0] << 8) + buf[1]; -+ return n; -+ } -+#endif -+ return get2c(bi->bi_fp); -+} -+ -+ static int -+undo_read_byte(bi) -+ bufinfo_T *bi; -+{ -+#ifdef FEAT_CRYPT -+ if (bi->bi_buffer != NULL) -+ { -+ char_u buf[1]; -+ -+ undo_read(bi, buf, (size_t)1); -+ return buf[0]; -+ } -+#endif -+ return getc(bi->bi_fp); -+} -+ -+ static time_t -+undo_read_time(bi) -+ bufinfo_T *bi; -+{ -+#ifdef FEAT_CRYPT -+ if (bi->bi_buffer != NULL) -+ { -+ char_u buf[8]; -+ time_t n = 0; -+ int i; -+ -+ undo_read(bi, buf, (size_t)8); -+ for (i = 0; i < 8; ++i) -+ n = (n << 8) + buf[i]; -+ return n; -+ } -+#endif -+ return get8ctime(bi->bi_fp); -+} -+ -+/* -+ * Read "buffer[size]" from the undo file. -+ * Return OK or FAIL. -+ */ -+ static int -+undo_read(bi, buffer, size) -+ bufinfo_T *bi; -+ char_u *buffer; -+ size_t size; -+{ -+#ifdef FEAT_CRYPT -+ if (bi->bi_buffer != NULL) -+ { -+ int size_todo = size; -+ char_u *p = buffer; -+ -+ while (size_todo > 0) -+ { -+ size_t n; -+ -+ if (bi->bi_used >= bi->bi_avail) -+ { -+ n = fread(bi->bi_buffer, 1, (size_t)CRYPT_BUF_SIZE, bi->bi_fp); -+ if (n <= 0) -+ { -+ /* Error may be checked for only later. Fill with zeros, -+ * so that the reader won't use garbage. */ -+ vim_memset(p, 0, size_todo); -+ return FAIL; -+ } -+ bi->bi_avail = n; -+ bi->bi_used = 0; -+ crypt_decode_inplace(bi->bi_state, bi->bi_buffer, bi->bi_avail); -+ } -+ n = size_todo; -+ if (n > bi->bi_avail - bi->bi_used) -+ n = bi->bi_avail - bi->bi_used; -+ mch_memmove(p, bi->bi_buffer + bi->bi_used, n); -+ bi->bi_used += n; -+ size_todo -= n; -+ p += n; -+ } -+ return OK; -+ } -+#endif -+ if (fread(buffer, (size_t)size, 1, bi->bi_fp) != 1) -+ return FAIL; -+ return OK; -+} -+ -+/* -+ * Read a string of length "len" from "bi->bi_fd". -+ * "len" can be zero to allocate an empty line. -+ * Decrypt the bytes if needed. -+ * Append a NUL. -+ * Returns a pointer to allocated memory or NULL for failure. -+ */ -+ static char_u * -+read_string_decrypt(bi, len) -+ bufinfo_T *bi; -+ int len; -+{ -+ char_u *ptr = alloc((unsigned)len + 1); -+ -+ if (ptr != NULL) -+ { -+ if (len > 0 && undo_read(bi, ptr, len) == FAIL) -+ { -+ vim_free(ptr); -+ return NULL; -+ } -+ ptr[len] = NUL; -+#ifdef FEAT_CRYPT -+ if (bi->bi_state != NULL && bi->bi_buffer == NULL) -+ crypt_decode_inplace(bi->bi_state, ptr, len); -+#endif -+ } - return ptr; - } - -+/* -+ * Writes the (not encrypted) header and initializes encryption if needed. -+ */ - static int --serialize_header(fp, buf, hash) -- FILE *fp; -- buf_T *buf; -+serialize_header(bi, hash) -+ bufinfo_T *bi; - char_u *hash; - { -- int len; -+ int len; -+ buf_T *buf = bi->bi_buf; -+ FILE *fp = bi->bi_fp; -+ char_u time_buf[8]; - - /* Start writing, first the magic marker and undo info version. */ - if (fwrite(UF_START_MAGIC, (size_t)UF_START_MAGIC_LEN, (size_t)1, fp) != 1) -@@ -925,117 +1176,124 @@ serialize_header(fp, buf, hash) - char_u *header; - int header_len; - -- put_bytes(fp, (long_u)UF_VERSION_CRYPT, 2); -- header = prepare_crypt_write(buf, &header_len); -- if (header == NULL) -+ undo_write_bytes(bi, (long_u)UF_VERSION_CRYPT, 2); -+ bi->bi_state = crypt_create_for_writing(crypt_get_method_nr(buf), -+ buf->b_p_key, &header, &header_len); -+ if (bi->bi_state == NULL) - return FAIL; - len = (int)fwrite(header, (size_t)header_len, (size_t)1, fp); - vim_free(header); - if (len != 1) - { -- crypt_pop_state(); -+ crypt_free_state(bi->bi_state); -+ bi->bi_state = NULL; - return FAIL; - } -+ -+ if (crypt_whole_undofile(crypt_get_method_nr(buf))) -+ { -+ bi->bi_buffer = alloc(CRYPT_BUF_SIZE); -+ if (bi->bi_buffer == NULL) -+ { -+ crypt_free_state(bi->bi_state); -+ bi->bi_state = NULL; -+ return FAIL; -+ } -+ bi->bi_used = 0; -+ } - } - else - #endif -- put_bytes(fp, (long_u)UF_VERSION, 2); -+ undo_write_bytes(bi, (long_u)UF_VERSION, 2); - - - /* Write a hash of the buffer text, so that we can verify it is still the - * same when reading the buffer text. */ -- if (fwrite(hash, (size_t)UNDO_HASH_SIZE, (size_t)1, fp) != 1) -+ if (undo_write(bi, hash, (size_t)UNDO_HASH_SIZE) == FAIL) - return FAIL; - - /* buffer-specific data */ -- put_bytes(fp, (long_u)buf->b_ml.ml_line_count, 4); -+ undo_write_bytes(bi, (long_u)buf->b_ml.ml_line_count, 4); - len = buf->b_u_line_ptr != NULL ? (int)STRLEN(buf->b_u_line_ptr) : 0; -- put_bytes(fp, (long_u)len, 4); -- if (len > 0 && fwrite_crypt(buf, buf->b_u_line_ptr, (size_t)len, fp) != 1) -+ undo_write_bytes(bi, (long_u)len, 4); -+ if (len > 0 && fwrite_crypt(bi, buf->b_u_line_ptr, (size_t)len) == FAIL) - return FAIL; -- put_bytes(fp, (long_u)buf->b_u_line_lnum, 4); -- put_bytes(fp, (long_u)buf->b_u_line_colnr, 4); -+ undo_write_bytes(bi, (long_u)buf->b_u_line_lnum, 4); -+ undo_write_bytes(bi, (long_u)buf->b_u_line_colnr, 4); - - /* Undo structures header data */ -- put_header_ptr(fp, buf->b_u_oldhead); -- put_header_ptr(fp, buf->b_u_newhead); -- put_header_ptr(fp, buf->b_u_curhead); -- -- put_bytes(fp, (long_u)buf->b_u_numhead, 4); -- put_bytes(fp, (long_u)buf->b_u_seq_last, 4); -- put_bytes(fp, (long_u)buf->b_u_seq_cur, 4); -- put_time(fp, buf->b_u_time_cur); -+ put_header_ptr(bi, buf->b_u_oldhead); -+ put_header_ptr(bi, buf->b_u_newhead); -+ put_header_ptr(bi, buf->b_u_curhead); -+ -+ undo_write_bytes(bi, (long_u)buf->b_u_numhead, 4); -+ undo_write_bytes(bi, (long_u)buf->b_u_seq_last, 4); -+ undo_write_bytes(bi, (long_u)buf->b_u_seq_cur, 4); -+ time_to_bytes(buf->b_u_time_cur, time_buf); -+ undo_write(bi, time_buf, 8); - - /* Optional fields. */ -- putc(4, fp); -- putc(UF_LAST_SAVE_NR, fp); -- put_bytes(fp, (long_u)buf->b_u_save_nr_last, 4); -+ undo_write_bytes(bi, 4, 1); -+ undo_write_bytes(bi, UF_LAST_SAVE_NR, 1); -+ undo_write_bytes(bi, (long_u)buf->b_u_save_nr_last, 4); - -- putc(0, fp); /* end marker */ -+ undo_write_bytes(bi, 0, 1); /* end marker */ - - return OK; - } - - static int --serialize_uhp(fp, buf, uhp) -- FILE *fp; -- buf_T *buf; -+serialize_uhp(bi, uhp) -+ bufinfo_T *bi; - u_header_T *uhp; - { - int i; - u_entry_T *uep; -+ char_u time_buf[8]; - -- if (put_bytes(fp, (long_u)UF_HEADER_MAGIC, 2) == FAIL) -+ if (undo_write_bytes(bi, (long_u)UF_HEADER_MAGIC, 2) == FAIL) - return FAIL; - -- put_header_ptr(fp, uhp->uh_next.ptr); -- put_header_ptr(fp, uhp->uh_prev.ptr); -- put_header_ptr(fp, uhp->uh_alt_next.ptr); -- put_header_ptr(fp, uhp->uh_alt_prev.ptr); -- put_bytes(fp, uhp->uh_seq, 4); -- serialize_pos(uhp->uh_cursor, fp); -+ put_header_ptr(bi, uhp->uh_next.ptr); -+ put_header_ptr(bi, uhp->uh_prev.ptr); -+ put_header_ptr(bi, uhp->uh_alt_next.ptr); -+ put_header_ptr(bi, uhp->uh_alt_prev.ptr); -+ undo_write_bytes(bi, uhp->uh_seq, 4); -+ serialize_pos(bi, uhp->uh_cursor); - #ifdef FEAT_VIRTUALEDIT -- put_bytes(fp, (long_u)uhp->uh_cursor_vcol, 4); -+ undo_write_bytes(bi, (long_u)uhp->uh_cursor_vcol, 4); - #else -- put_bytes(fp, (long_u)0, 4); -+ undo_write_bytes(bi, (long_u)0, 4); - #endif -- put_bytes(fp, (long_u)uhp->uh_flags, 2); -+ undo_write_bytes(bi, (long_u)uhp->uh_flags, 2); - /* Assume NMARKS will stay the same. */ - for (i = 0; i < NMARKS; ++i) -- serialize_pos(uhp->uh_namedm[i], fp); --#ifdef FEAT_VISUAL -- serialize_visualinfo(&uhp->uh_visual, fp); --#else -- { -- visualinfo_T info; -- -- memset(&info, 0, sizeof(visualinfo_T)); -- serialize_visualinfo(&info, fp); -- } --#endif -- put_time(fp, uhp->uh_time); -+ serialize_pos(bi, uhp->uh_namedm[i]); -+ serialize_visualinfo(bi, &uhp->uh_visual); -+ time_to_bytes(uhp->uh_time, time_buf); -+ undo_write(bi, time_buf, 8); - - /* Optional fields. */ -- putc(4, fp); -- putc(UHP_SAVE_NR, fp); -- put_bytes(fp, (long_u)uhp->uh_save_nr, 4); -+ undo_write_bytes(bi, 4, 1); -+ undo_write_bytes(bi, UHP_SAVE_NR, 1); -+ undo_write_bytes(bi, (long_u)uhp->uh_save_nr, 4); - -- putc(0, fp); /* end marker */ -+ undo_write_bytes(bi, 0, 1); /* end marker */ - - /* Write all the entries. */ - for (uep = uhp->uh_entry; uep != NULL; uep = uep->ue_next) - { -- put_bytes(fp, (long_u)UF_ENTRY_MAGIC, 2); -- if (serialize_uep(fp, buf, uep) == FAIL) -+ undo_write_bytes(bi, (long_u)UF_ENTRY_MAGIC, 2); -+ if (serialize_uep(bi, uep) == FAIL) - return FAIL; - } -- put_bytes(fp, (long_u)UF_ENTRY_END_MAGIC, 2); -+ undo_write_bytes(bi, (long_u)UF_ENTRY_END_MAGIC, 2); - return OK; - } - - static u_header_T * --unserialize_uhp(fp, file_name) -- FILE *fp; -+unserialize_uhp(bi, file_name) -+ bufinfo_T *bi; - char_u *file_name; - { - u_header_T *uhp; -@@ -1051,63 +1309,56 @@ unserialize_uhp(fp, file_name) - #ifdef U_DEBUG - uhp->uh_magic = UH_MAGIC; - #endif -- uhp->uh_next.seq = get4c(fp); -- uhp->uh_prev.seq = get4c(fp); -- uhp->uh_alt_next.seq = get4c(fp); -- uhp->uh_alt_prev.seq = get4c(fp); -- uhp->uh_seq = get4c(fp); -+ uhp->uh_next.seq = undo_read_4c(bi); -+ uhp->uh_prev.seq = undo_read_4c(bi); -+ uhp->uh_alt_next.seq = undo_read_4c(bi); -+ uhp->uh_alt_prev.seq = undo_read_4c(bi); -+ uhp->uh_seq = undo_read_4c(bi); - if (uhp->uh_seq <= 0) - { - corruption_error("uh_seq", file_name); - vim_free(uhp); - return NULL; - } -- unserialize_pos(&uhp->uh_cursor, fp); -+ unserialize_pos(bi, &uhp->uh_cursor); - #ifdef FEAT_VIRTUALEDIT -- uhp->uh_cursor_vcol = get4c(fp); -+ uhp->uh_cursor_vcol = undo_read_4c(bi); - #else -- (void)get4c(fp); -+ (void)undo_read_4c(bi); - #endif -- uhp->uh_flags = get2c(fp); -+ uhp->uh_flags = undo_read_2c(bi); - for (i = 0; i < NMARKS; ++i) -- unserialize_pos(&uhp->uh_namedm[i], fp); --#ifdef FEAT_VISUAL -- unserialize_visualinfo(&uhp->uh_visual, fp); --#else -- { -- visualinfo_T info; -- unserialize_visualinfo(&info, fp); -- } --#endif -- uhp->uh_time = get8ctime(fp); -+ unserialize_pos(bi, &uhp->uh_namedm[i]); -+ unserialize_visualinfo(bi, &uhp->uh_visual); -+ uhp->uh_time = undo_read_time(bi); - - /* Optional fields. */ - for (;;) - { -- int len = getc(fp); -+ int len = undo_read_byte(bi); - int what; - - if (len == 0) - break; -- what = getc(fp); -+ what = undo_read_byte(bi); - switch (what) - { - case UHP_SAVE_NR: -- uhp->uh_save_nr = get4c(fp); -+ uhp->uh_save_nr = undo_read_4c(bi); - break; - default: - /* field not supported, skip */ - while (--len >= 0) -- (void)getc(fp); -+ (void)undo_read_byte(bi); - } - } - - /* Unserialize the uep list. */ - last_uep = NULL; -- while ((c = get2c(fp)) == UF_ENTRY_MAGIC) -+ while ((c = undo_read_2c(bi)) == UF_ENTRY_MAGIC) - { - error = FALSE; -- uep = unserialize_uep(fp, &error, file_name); -+ uep = unserialize_uep(bi, &error, file_name); - if (last_uep == NULL) - uhp->uh_entry = uep; - else -@@ -1130,35 +1381,34 @@ unserialize_uhp(fp, file_name) - } - - /* -- * Serialize "uep" to "fp". -+ * Serialize "uep". - */ - static int --serialize_uep(fp, buf, uep) -- FILE *fp; -- buf_T *buf; -+serialize_uep(bi, uep) -+ bufinfo_T *bi; - u_entry_T *uep; - { - int i; - size_t len; - -- put_bytes(fp, (long_u)uep->ue_top, 4); -- put_bytes(fp, (long_u)uep->ue_bot, 4); -- put_bytes(fp, (long_u)uep->ue_lcount, 4); -- put_bytes(fp, (long_u)uep->ue_size, 4); -+ undo_write_bytes(bi, (long_u)uep->ue_top, 4); -+ undo_write_bytes(bi, (long_u)uep->ue_bot, 4); -+ undo_write_bytes(bi, (long_u)uep->ue_lcount, 4); -+ undo_write_bytes(bi, (long_u)uep->ue_size, 4); - for (i = 0; i < uep->ue_size; ++i) - { - len = STRLEN(uep->ue_array[i]); -- if (put_bytes(fp, (long_u)len, 4) == FAIL) -+ if (undo_write_bytes(bi, (long_u)len, 4) == FAIL) - return FAIL; -- if (len > 0 && fwrite_crypt(buf, uep->ue_array[i], len, fp) != 1) -+ if (len > 0 && fwrite_crypt(bi, uep->ue_array[i], len) == FAIL) - return FAIL; - } - return OK; - } - - static u_entry_T * --unserialize_uep(fp, error, file_name) -- FILE *fp; -+unserialize_uep(bi, error, file_name) -+ bufinfo_T *bi; - int *error; - char_u *file_name; - { -@@ -1175,10 +1425,10 @@ unserialize_uep(fp, error, file_name) - #ifdef U_DEBUG - uep->ue_magic = UE_MAGIC; - #endif -- uep->ue_top = get4c(fp); -- uep->ue_bot = get4c(fp); -- uep->ue_lcount = get4c(fp); -- uep->ue_size = get4c(fp); -+ uep->ue_top = undo_read_4c(bi); -+ uep->ue_bot = undo_read_4c(bi); -+ uep->ue_lcount = undo_read_4c(bi); -+ uep->ue_size = undo_read_4c(bi); - if (uep->ue_size > 0) - { - array = (char_u **)U_ALLOC_LINE(sizeof(char_u *) * uep->ue_size); -@@ -1195,9 +1445,9 @@ unserialize_uep(fp, error, file_name) - - for (i = 0; i < uep->ue_size; ++i) - { -- line_len = get4c(fp); -+ line_len = undo_read_4c(bi); - if (line_len >= 0) -- line = read_string_decrypt(curbuf, fp, line_len); -+ line = read_string_decrypt(bi, line_len); - else - { - line = NULL; -@@ -1214,83 +1464,71 @@ unserialize_uep(fp, error, file_name) - } - - /* -- * Serialize "pos" to "fp". -+ * Serialize "pos". - */ - static void --serialize_pos(pos, fp) -+serialize_pos(bi, pos) -+ bufinfo_T *bi; - pos_T pos; -- FILE *fp; - { -- put_bytes(fp, (long_u)pos.lnum, 4); -- put_bytes(fp, (long_u)pos.col, 4); -+ undo_write_bytes(bi, (long_u)pos.lnum, 4); -+ undo_write_bytes(bi, (long_u)pos.col, 4); - #ifdef FEAT_VIRTUALEDIT -- put_bytes(fp, (long_u)pos.coladd, 4); -+ undo_write_bytes(bi, (long_u)pos.coladd, 4); - #else -- put_bytes(fp, (long_u)0, 4); -+ undo_write_bytes(bi, (long_u)0, 4); - #endif - } - - /* -- * Unserialize the pos_T at the current position in fp. -+ * Unserialize the pos_T at the current position. - */ - static void --unserialize_pos(pos, fp) -+unserialize_pos(bi, pos) -+ bufinfo_T *bi; - pos_T *pos; -- FILE *fp; - { -- pos->lnum = get4c(fp); -+ pos->lnum = undo_read_4c(bi); - if (pos->lnum < 0) - pos->lnum = 0; -- pos->col = get4c(fp); -+ pos->col = undo_read_4c(bi); - if (pos->col < 0) - pos->col = 0; - #ifdef FEAT_VIRTUALEDIT -- pos->coladd = get4c(fp); -+ pos->coladd = undo_read_4c(bi); - if (pos->coladd < 0) - pos->coladd = 0; - #else -- (void)get4c(fp); -+ (void)undo_read_4c(bi); - #endif - } - - /* -- * Serialize "info" to "fp". -+ * Serialize "info". - */ - static void --serialize_visualinfo(info, fp) -+serialize_visualinfo(bi, info) -+ bufinfo_T *bi; - visualinfo_T *info; -- FILE *fp; - { -- serialize_pos(info->vi_start, fp); -- serialize_pos(info->vi_end, fp); -- put_bytes(fp, (long_u)info->vi_mode, 4); -- put_bytes(fp, (long_u)info->vi_curswant, 4); -+ serialize_pos(bi, info->vi_start); -+ serialize_pos(bi, info->vi_end); -+ undo_write_bytes(bi, (long_u)info->vi_mode, 4); -+ undo_write_bytes(bi, (long_u)info->vi_curswant, 4); - } - - /* -- * Unserialize the visualinfo_T at the current position in fp. -+ * Unserialize the visualinfo_T at the current position. - */ - static void --unserialize_visualinfo(info, fp) -+unserialize_visualinfo(bi, info) -+ bufinfo_T *bi; - visualinfo_T *info; -- FILE *fp; --{ -- unserialize_pos(&info->vi_start, fp); -- unserialize_pos(&info->vi_end, fp); -- info->vi_mode = get4c(fp); -- info->vi_curswant = get4c(fp); --} -- --/* -- * Write the pointer to an undo header. Instead of writing the pointer itself -- * we use the sequence number of the header. This is converted back to -- * pointers when reading. */ -- static void --put_header_ptr(fp, uhp) -- FILE *fp; -- u_header_T *uhp; - { -- put_bytes(fp, (long_u)(uhp != NULL ? uhp->uh_seq : 0), 4); -+ unserialize_pos(bi, &info->vi_start); -+ unserialize_pos(bi, &info->vi_end); -+ info->vi_mode = undo_read_4c(bi); -+ info->vi_curswant = undo_read_4c(bi); - } - - /* -@@ -1324,9 +1562,9 @@ u_write_undo(name, forceit, buf, hash) - struct stat st_old; - struct stat st_new; - #endif --#ifdef FEAT_CRYPT -- int do_crypt = FALSE; --#endif -+ bufinfo_T bi; -+ -+ vim_memset(&bi, 0, sizeof(bi)); - - if (name == NULL) - { -@@ -1481,14 +1719,12 @@ u_write_undo(name, forceit, buf, hash) - u_sync(TRUE); - - /* -- * Write the header. -+ * Write the header. Initializes encryption, if enabled. - */ -- if (serialize_header(fp, buf, hash) == FAIL) -+ bi.bi_buf = buf; -+ bi.bi_fp = fp; -+ if (serialize_header(&bi, hash) == FAIL) - goto write_error; --#ifdef FEAT_CRYPT -- if (*buf->b_p_key != NUL) -- do_crypt = TRUE; --#endif - - /* - * Iteratively serialize UHPs and their UEPs from the top down. -@@ -1504,7 +1740,7 @@ u_write_undo(name, forceit, buf, hash) - #ifdef U_DEBUG - ++headers_written; - #endif -- if (serialize_uhp(fp, buf, uhp) == FAIL) -+ if (serialize_uhp(&bi, uhp) == FAIL) - goto write_error; - } - -@@ -1523,7 +1759,7 @@ u_write_undo(name, forceit, buf, hash) - uhp = uhp->uh_next.ptr; - } - -- if (put_bytes(fp, (long_u)UF_HEADER_END_MAGIC, 2) == OK) -+ if (undo_write_bytes(&bi, (long_u)UF_HEADER_END_MAGIC, 2) == OK) - write_ok = TRUE; - #ifdef U_DEBUG - if (headers_written != buf->b_u_numhead) -@@ -1533,6 +1769,11 @@ u_write_undo(name, forceit, buf, hash) - } - #endif - -+#ifdef FEAT_CRYPT -+ if (bi.bi_state != NULL && undo_flush(&bi) == FAIL) -+ write_ok = FALSE; -+#endif -+ - write_error: - fclose(fp); - if (!write_ok) -@@ -1558,8 +1799,9 @@ write_error: - - theend: - #ifdef FEAT_CRYPT -- if (do_crypt) -- crypt_pop_state(); -+ if (bi.bi_state != NULL) -+ crypt_free_state(bi.bi_state); -+ vim_free(bi.bi_buffer); - #endif - if (file_name != name) - vim_free(file_name); -@@ -1605,10 +1847,9 @@ u_read_undo(name, hash, orig_name) - struct stat st_orig; - struct stat st_undo; - #endif --#ifdef FEAT_CRYPT -- int do_decrypt = FALSE; --#endif -+ bufinfo_T bi; - -+ vim_memset(&bi, 0, sizeof(bi)); - if (name == NULL) - { - file_name = u_get_undo_file_name(curbuf->b_ffname, TRUE); -@@ -1651,6 +1892,8 @@ u_read_undo(name, hash, orig_name) - EMSG2(_("E822: Cannot open undo file for reading: %s"), file_name); - goto error; - } -+ bi.bi_buf = curbuf; -+ bi.bi_fp = fp; - - /* - * Read the undo file header. -@@ -1671,12 +1914,24 @@ u_read_undo(name, hash, orig_name) - file_name); - goto error; - } -- if (prepare_crypt_read(fp) == FAIL) -+ bi.bi_state = crypt_create_from_file(fp, curbuf->b_p_key); -+ if (bi.bi_state == NULL) - { - EMSG2(_("E826: Undo file decryption failed: %s"), file_name); - goto error; - } -- do_decrypt = TRUE; -+ if (crypt_whole_undofile(bi.bi_state->method_nr)) -+ { -+ bi.bi_buffer = alloc(CRYPT_BUF_SIZE); -+ if (bi.bi_buffer == NULL) -+ { -+ crypt_free_state(bi.bi_state); -+ bi.bi_state = NULL; -+ goto error; -+ } -+ bi.bi_avail = 0; -+ bi.bi_used = 0; -+ } - #else - EMSG2(_("E827: Undo file is encrypted: %s"), file_name); - goto error; -@@ -1688,12 +1943,12 @@ u_read_undo(name, hash, orig_name) - goto error; - } - -- if (fread(read_hash, UNDO_HASH_SIZE, 1, fp) != 1) -+ if (undo_read(&bi, read_hash, (size_t)UNDO_HASH_SIZE) == FAIL) - { - corruption_error("hash", file_name); - goto error; - } -- line_count = (linenr_T)get4c(fp); -+ line_count = (linenr_T)undo_read_4c(&bi); - if (memcmp(hash, read_hash, UNDO_HASH_SIZE) != 0 - || line_count != curbuf->b_ml.ml_line_count) - { -@@ -1710,13 +1965,13 @@ u_read_undo(name, hash, orig_name) - } - - /* Read undo data for "U" command. */ -- str_len = get4c(fp); -+ str_len = undo_read_4c(&bi); - if (str_len < 0) - goto error; - if (str_len > 0) -- line_ptr = read_string_decrypt(curbuf, fp, str_len); -- line_lnum = (linenr_T)get4c(fp); -- line_colnr = (colnr_T)get4c(fp); -+ line_ptr = read_string_decrypt(&bi, str_len); -+ line_lnum = (linenr_T)undo_read_4c(&bi); -+ line_colnr = (colnr_T)undo_read_4c(&bi); - if (line_lnum < 0 || line_colnr < 0) - { - corruption_error("line lnum/col", file_name); -@@ -1724,32 +1979,32 @@ u_read_undo(name, hash, orig_name) - } - - /* Begin general undo data */ -- old_header_seq = get4c(fp); -- new_header_seq = get4c(fp); -- cur_header_seq = get4c(fp); -- num_head = get4c(fp); -- seq_last = get4c(fp); -- seq_cur = get4c(fp); -- seq_time = get8ctime(fp); -+ old_header_seq = undo_read_4c(&bi); -+ new_header_seq = undo_read_4c(&bi); -+ cur_header_seq = undo_read_4c(&bi); -+ num_head = undo_read_4c(&bi); -+ seq_last = undo_read_4c(&bi); -+ seq_cur = undo_read_4c(&bi); -+ seq_time = undo_read_time(&bi); - - /* Optional header fields. */ - for (;;) - { -- int len = getc(fp); -+ int len = undo_read_byte(&bi); - int what; - - if (len == 0 || len == EOF) - break; -- what = getc(fp); -+ what = undo_read_byte(&bi); - switch (what) - { - case UF_LAST_SAVE_NR: -- last_save_nr = get4c(fp); -+ last_save_nr = undo_read_4c(&bi); - break; - default: - /* field not supported, skip */ - while (--len >= 0) -- (void)getc(fp); -+ (void)undo_read_byte(&bi); - } - } - -@@ -1765,7 +2020,7 @@ u_read_undo(name, hash, orig_name) - goto error; - } - -- while ((c = get2c(fp)) == UF_HEADER_MAGIC) -+ while ((c = undo_read_2c(&bi)) == UF_HEADER_MAGIC) - { - if (num_read_uhps >= num_head) - { -@@ -1773,7 +2028,7 @@ u_read_undo(name, hash, orig_name) - goto error; - } - -- uhp = unserialize_uhp(fp, file_name); -+ uhp = unserialize_uhp(&bi, file_name); - if (uhp == NULL) - goto error; - uhp_table[num_read_uhps++] = uhp; -@@ -1905,8 +2160,9 @@ error: - - theend: - #ifdef FEAT_CRYPT -- if (do_decrypt) -- crypt_pop_state(); -+ if (bi.bi_state != NULL) -+ crypt_free_state(bi.bi_state); -+ vim_free(bi.bi_buffer); - #endif - if (fp != NULL) - fclose(fp); -diff -up vim74/src/version.c.blowfish2 vim74/src/version.c ---- vim74/src/version.c.blowfish2 2017-09-05 14:47:34.768913491 +0200 -+++ vim74/src/version.c 2017-09-05 14:47:34.973911836 +0200 -@@ -739,6 +739,14 @@ static char *(features[]) = - static int included_patches[] = - { /* Add new patch number below this line */ - /**/ -+ 1099, -+/**/ -+ 403, -+/**/ -+ 402, -+/**/ -+ 399, -+/**/ - 160, - /**/ - 159, diff --git a/SOURCES/vim-7.4-licensemacro-1151450.patch b/SOURCES/vim-7.4-licensemacro-1151450.patch new file mode 100644 index 0000000..3a6e0a7 --- /dev/null +++ b/SOURCES/vim-7.4-licensemacro-1151450.patch @@ -0,0 +1,15 @@ +diff -up vim74_new/runtime/syntax/spec.vim.1151450 vim74_new/runtime/syntax/spec.vim +--- vim74_new/runtime/syntax/spec.vim.1151450 2014-10-13 10:45:07.570944538 +0200 ++++ vim74_new/runtime/syntax/spec.vim 2014-10-13 10:44:09.046945965 +0200 +@@ -88,9 +88,9 @@ syn region specSectionMacroBracketArea o + "%% Files Section %% + "TODO %config valid parameters: missingok\|noreplace + "TODO %verify valid parameters: \(not\)\= \(md5\|atime\|...\) +-syn region specFilesArea matchgroup=specSection start='^%[Ff][Ii][Ll][Ee][Ss]\>' skip='%\(attrib\|defattr\|attr\|dir\|config\|docdir\|doc\|lang\|verify\|ghost\)\>' end='^%[a-zA-Z]'me=e-2 contains=specFilesOpts,specFilesDirective,@specListedFiles,specComment,specCommandSpecial,specMacroIdentifier ++syn region specFilesArea matchgroup=specSection start='^%[Ff][Ii][Ll][Ee][Ss]\>' skip='%\(attrib\|defattr\|attr\|dir\|config\|docdir\|doc\|lang\|verify\|ghost\|license\)\>' end='^%[a-zA-Z]'me=e-2 contains=specFilesOpts,specFilesDirective,@specListedFiles,specComment,specCommandSpecial,specMacroIdentifier + "tip: remember to include new itens in specFilesArea above +-syn match specFilesDirective contained '%\(attrib\|defattr\|attr\|dir\|config\|docdir\|doc\|lang\|verify\|ghost\)\>' ++syn match specFilesDirective contained '%\(attrib\|defattr\|attr\|dir\|config\|docdir\|doc\|lang\|verify\|ghost\|license\)\>' + + "valid options for certain section headers + syn match specDescriptionOpts contained '\s-[ln]\s*\a'ms=s+1,me=e-1 diff --git a/SOURCES/vim-7.4-ssh-keywords.patch b/SOURCES/vim-7.4-ssh-keywords.patch new file mode 100644 index 0000000..7d8f597 --- /dev/null +++ b/SOURCES/vim-7.4-ssh-keywords.patch @@ -0,0 +1,145 @@ +diff -up vim74/runtime/syntax/sshconfig.vim.sshkeywords vim74/runtime/syntax/sshconfig.vim +--- vim74/runtime/syntax/sshconfig.vim.sshkeywords 2012-02-24 21:28:30.000000000 +0100 ++++ vim74/runtime/syntax/sshconfig.vim 2015-03-31 14:56:09.749410615 +0200 +@@ -68,8 +68,8 @@ syn keyword sshconfigSysLogFacility DAEM + syn keyword sshconfigSysLogFacility LOCAL2 LOCAL3 LOCAL4 LOCAL5 LOCAL6 LOCAL7 + syn keyword sshconfigAddressFamily inet inet6 + +-syn match sshconfigIPQoS "af1[1234]" +-syn match sshconfigIPQoS "af2[23]" ++syn match sshconfigIPQoS "af1[123]" ++syn match sshconfigIPQoS "af2[123]" + syn match sshconfigIPQoS "af3[123]" + syn match sshconfigIPQoS "af4[123]" + syn match sshconfigIPQoS "cs[0-7]" +@@ -99,10 +99,15 @@ syn case ignore + + " Keywords + syn keyword sshconfigHostSect Host ++syn keyword sshconfigMatchSect Match + + syn keyword sshconfigKeyword AddressFamily + syn keyword sshconfigKeyword BatchMode + syn keyword sshconfigKeyword BindAddress ++syn keyword sshconfigKeyword CanonicalDomains ++syn keyword sshconfigKeyword CanonicalizeFallbackLocal ++syn keyword sshconfigKeyword CanonicalizeHostname ++syn keyword sshconfigKeyword CanonicalizeMaxDots + syn keyword sshconfigKeyword ChallengeResponseAuthentication + syn keyword sshconfigKeyword CheckHostIP + syn keyword sshconfigKeyword Cipher +@@ -141,6 +146,8 @@ syn keyword sshconfigKeyword HostbasedAu + syn keyword sshconfigKeyword IPQoS + syn keyword sshconfigKeyword IdentitiesOnly + syn keyword sshconfigKeyword IdentityFile ++syn keyword sshconfigKeyword IgnoreUnknown ++syn keyword sshconfigKeyword IPQoS + syn keyword sshconfigKeyword KbdInteractiveAuthentication + syn keyword sshconfigKeyword KbdInteractiveDevices + syn keyword sshconfigKeyword KexAlgorithms +@@ -157,6 +164,7 @@ syn keyword sshconfigKeyword Port + syn keyword sshconfigKeyword PreferredAuthentications + syn keyword sshconfigKeyword Protocol + syn keyword sshconfigKeyword ProxyCommand ++syn keyword sshconfigKeyword ProxyUseFdpass + syn keyword sshconfigKeyword PubkeyAuthentication + syn keyword sshconfigKeyword RSAAuthentication + syn keyword sshconfigKeyword RekeyLimit +@@ -211,6 +219,7 @@ if version >= 508 || !exists("did_sshcon + HiLink sshconfigSpecial Special + HiLink sshconfigKeyword Keyword + HiLink sshconfigHostSect Type ++ HiLink sshconfigMatchSect Type + delcommand HiLink + endif + +diff -up vim74/runtime/syntax/sshdconfig.vim.sshkeywords vim74/runtime/syntax/sshdconfig.vim +--- vim74/runtime/syntax/sshdconfig.vim.sshkeywords 2011-11-30 12:14:42.000000000 +0100 ++++ vim74/runtime/syntax/sshdconfig.vim 2015-03-31 15:04:17.283570538 +0200 +@@ -36,6 +36,7 @@ syn keyword sshdconfigTodo TODO FIXME NO + + " Constants + syn keyword sshdconfigYesNo yes no none ++syn keyword sshdconfigOther delayed + + syn keyword sshdconfigAddressFamily any inet inet6 + +@@ -58,8 +59,8 @@ syn keyword sshdconfigSysLogFacility LOC + + syn keyword sshdconfigCompression delayed + +-syn match sshdconfigIPQoS "af1[1234]" +-syn match sshdconfigIPQoS "af2[23]" ++syn match sshdconfigIPQoS "af1[123]" ++syn match sshdconfigIPQoS "af2[123]" + syn match sshdconfigIPQoS "af3[123]" + syn match sshdconfigIPQoS "af4[123]" + syn match sshdconfigIPQoS "cs[0-7]" +@@ -101,6 +102,10 @@ syn keyword sshdconfigKeyword AllowAgent + syn keyword sshdconfigKeyword AllowGroups + syn keyword sshdconfigKeyword AllowTcpForwarding + syn keyword sshdconfigKeyword AllowUsers ++syn keyword sshdconfigKeyword AuthenticationMethods ++syn keyword sshdconfigKeyword AuthorizedKeysCommand ++syn keyword sshdconfigKeyword AuthorizedKeysCommandRunAs ++syn keyword sshdconfigKeyword AuthorizedKeysCommandUser + syn keyword sshdconfigKeyword AuthorizedKeysFile + syn keyword sshdconfigKeyword AuthorizedPrincipalsFile + syn keyword sshdconfigKeyword Banner +@@ -116,12 +121,14 @@ syn keyword sshdconfigKeyword DenyUsers + syn keyword sshdconfigKeyword ForceCommand + syn keyword sshdconfigKeyword GSSAPIAuthentication + syn keyword sshdconfigKeyword GSSAPICleanupCredentials ++syn keyword sshdconfigKeyword GSSAPIEnablek5users + syn keyword sshdconfigKeyword GSSAPIKeyExchange + syn keyword sshdconfigKeyword GSSAPIStoreCredentialsOnRekey + syn keyword sshdconfigKeyword GSSAPIStrictAcceptorCheck + syn keyword sshdconfigKeyword GatewayPorts + syn keyword sshdconfigKeyword HostCertificate + syn keyword sshdconfigKeyword HostKey ++syn keyword sshdconfigKeyword HostKeyAgent + syn keyword sshdconfigKeyword HostbasedAuthentication + syn keyword sshdconfigKeyword HostbasedUsesNameFromPacketOnly + syn keyword sshdconfigKeyword IPQoS +@@ -132,6 +139,7 @@ syn keyword sshdconfigKeyword KerberosAu + syn keyword sshdconfigKeyword KerberosGetAFSToken + syn keyword sshdconfigKeyword KerberosOrLocalPasswd + syn keyword sshdconfigKeyword KerberosTicketCleanup ++syn keyword sshdconfigKeyword KerberosUseKuserok + syn keyword sshdconfigKeyword KexAlgorithms + syn keyword sshdconfigKeyword KeyRegenerationInterval + syn keyword sshdconfigKeyword ListenAddress +@@ -148,6 +156,7 @@ syn keyword sshdconfigKeyword PermitEmpt + syn keyword sshdconfigKeyword PermitOpen + syn keyword sshdconfigKeyword PermitRootLogin + syn keyword sshdconfigKeyword PermitTunnel ++syn keyword sshdconfigKeyword PermitTTY + syn keyword sshdconfigKeyword PermitUserEnvironment + syn keyword sshdconfigKeyword PidFile + syn keyword sshdconfigKeyword Port +@@ -156,6 +165,9 @@ syn keyword sshdconfigKeyword PrintMotd + syn keyword sshdconfigKeyword Protocol + syn keyword sshdconfigKeyword PubkeyAuthentication + syn keyword sshdconfigKeyword RSAAuthentication ++syn keyword sshdconfigKeyword RekeyLimit ++syn keyword sshdconfigKeyword RequiredAuthentications1 ++syn keyword sshdconfigKeyword RequiredAuthentications2 + syn keyword sshdconfigKeyword RevokedKeys + syn keyword sshdconfigKeyword RhostsRSAAuthentication + syn keyword sshdconfigKeyword ServerKeyBits +@@ -169,6 +181,7 @@ syn keyword sshdconfigKeyword UseDNS + syn keyword sshdconfigKeyword UseLogin + syn keyword sshdconfigKeyword UsePAM + syn keyword sshdconfigKeyword UsePrivilegeSeparation ++syn keyword sshdconfigKeyword VersionAddendum + syn keyword sshdconfigKeyword X11DisplayOffset + syn keyword sshdconfigKeyword X11Forwarding + syn keyword sshdconfigKeyword X11UseLocalhost +@@ -191,6 +204,7 @@ if version >= 508 || !exists("did_sshdco + HiLink sshdconfigNumber sshdconfigConstant + HiLink sshdconfigConstant Constant + HiLink sshdconfigYesNo sshdconfigEnum ++ HiLink sshdconfigOther sshdconfigEnum + HiLink sshdconfigAddressFamily sshdconfigEnum + HiLink sshdconfigCipher sshdconfigEnum + HiLink sshdconfigMAC sshdconfigEnum diff --git a/SOURCES/vim-7.4-syncolor.patch b/SOURCES/vim-7.4-syncolor.patch new file mode 100644 index 0000000..8e581fe --- /dev/null +++ b/SOURCES/vim-7.4-syncolor.patch @@ -0,0 +1,25 @@ +diff -up vim74/src/syntax.c.syncolor vim74/src/syntax.c +--- vim74/src/syntax.c.syncolor 2014-04-16 15:10:30.362287904 +0200 ++++ vim74/src/syntax.c 2014-04-16 15:12:50.278229744 +0200 +@@ -6840,8 +6840,8 @@ static char *(highlight_init_light[]) = + CENT("Visual term=reverse", + "Visual term=reverse guibg=LightGrey"), + #ifdef FEAT_DIFF +- CENT("DiffAdd term=bold ctermbg=LightBlue", +- "DiffAdd term=bold ctermbg=LightBlue guibg=LightBlue"), ++ CENT("DiffAdd term=bold ctermbg=LightRed", ++ "DiffAdd term=bold ctermbg=LightRed guibg=LightBlue"), + CENT("DiffChange term=bold ctermbg=LightMagenta", + "DiffChange term=bold ctermbg=LightMagenta guibg=LightMagenta"), + CENT("DiffDelete term=bold ctermfg=Blue ctermbg=LightCyan", +@@ -6928,8 +6928,8 @@ static char *(highlight_init_dark[]) = + CENT("Visual term=reverse", + "Visual term=reverse guibg=DarkGrey"), + #ifdef FEAT_DIFF +- CENT("DiffAdd term=bold ctermbg=DarkBlue", +- "DiffAdd term=bold ctermbg=DarkBlue guibg=DarkBlue"), ++ CENT("DiffAdd term=bold ctermbg=DarkRed", ++ "DiffAdd term=bold ctermbg=DarkRed guibg=DarkBlue"), + CENT("DiffChange term=bold ctermbg=DarkMagenta", + "DiffChange term=bold ctermbg=DarkMagenta guibg=DarkMagenta"), + CENT("DiffDelete term=bold ctermfg=Blue ctermbg=DarkCyan", diff --git a/SOURCES/vim-set-bg.patch b/SOURCES/vim-set-bg.patch new file mode 100644 index 0000000..14cde3d --- /dev/null +++ b/SOURCES/vim-set-bg.patch @@ -0,0 +1,401 @@ +diff --git a/runtime/doc/tags b/runtime/doc/tags +index b7e16df..f5201aa 100644 +--- a/runtime/doc/tags ++++ b/runtime/doc/tags +@@ -920,6 +920,7 @@ $VIMRUNTIME starting.txt /*$VIMRUNTIME* + 't_KJ' term.txt /*'t_KJ'* + 't_KK' term.txt /*'t_KK'* + 't_KL' term.txt /*'t_KL'* ++'t_RB' term.txt /*'t_RB'* + 't_RI' term.txt /*'t_RI'* + 't_RV' term.txt /*'t_RV'* + 't_SI' term.txt /*'t_SI'* +@@ -7987,6 +7988,7 @@ t_KI term.txt /*t_KI* + t_KJ term.txt /*t_KJ* + t_KK term.txt /*t_KK* + t_KL term.txt /*t_KL* ++t_RB term.txt /*t_RB* + t_RI term.txt /*t_RI* + t_RV term.txt /*t_RV* + t_SI term.txt /*t_SI* +diff --git a/runtime/doc/term.txt b/runtime/doc/term.txt +index c11ddea..bdd6aba 100644 +--- a/runtime/doc/term.txt ++++ b/runtime/doc/term.txt +@@ -300,6 +300,8 @@ Added by Vim (there are no standard codes for these): + |xterm-8bit| |v:termresponse| |'ttymouse'| |xterm-codes| + t_u7 request cursor position (for xterm) *t_u7* *'t_u7'* + see |'ambiwidth'| ++ t_RB request terminal background color *t_RB* *'t_RB'* ++ see |'ambiwidth'| + + KEY CODES + Note: Use the <> form if possible +diff --git a/src/ascii.h b/src/ascii.h +index a3cfecf..7ed736a 100644 +--- a/src/ascii.h ++++ b/src/ascii.h +@@ -34,10 +34,6 @@ + #define ESC_STR_nc "\033" + #define DEL 0x7f + #define DEL_STR (char_u *)"\177" +-#define CSI 0x9b /* Control Sequence Introducer */ +-#define CSI_STR "\233" +-#define DCS 0x90 /* Device Control String */ +-#define STERM 0x9c /* String Terminator */ + + #define POUND 0xA3 + +@@ -117,11 +113,6 @@ + #define ESC_STR_nc "\x27" + #define DEL 0x07 + #define DEL_STR (char_u *)"\007" +-/* TODO: EBCDIC Code page dependent (here 1047) */ +-#define CSI 0x9b /* Control Sequence Introducer */ +-#define CSI_STR "\233" +-#define DCS 0x90 /* Device Control String */ +-#define STERM 0x9c /* String Terminator */ + + #define POUND 0xB1 + +@@ -173,6 +164,13 @@ extern char MetaCharTable[]; + + #endif /* defined EBCDIC */ + ++/* TODO: EBCDIC Code page dependent (here 1047) */ ++#define CSI 0x9b /* Control Sequence Introducer */ ++#define CSI_STR "\233" ++#define DCS 0x90 /* Device Control String */ ++#define OSC 0x9d /* Operating System Command */ ++#define STERM 0x9c /* String Terminator */ ++ + /* + * Character that separates dir names in a path. + * For MS-DOS, WIN32 and OS/2 we use a backslash. A slash mostly works +diff --git a/src/main.c b/src/main.c +index 885192b..41c2c41 100644 +--- a/src/main.c ++++ b/src/main.c +@@ -825,8 +825,11 @@ vim_main2(int argc UNUSED, char **argv UNUSED) + + starttermcap(); /* start termcap if not done by wait_return() */ + TIME_MSG("start termcap"); +-#if defined(FEAT_TERMRESPONSE) && defined(FEAT_MBYTE) ++#if defined(FEAT_TERMRESPONSE) ++# if defined(FEAT_MBYTE) + may_req_ambiguous_char_width(); ++# endif ++ may_req_bg_color(); + #endif + + #ifdef FEAT_MOUSE +diff --git a/src/proto/term.pro b/src/proto/term.pro +index b3d0df3..f0c2a01 100644 +--- a/src/proto/term.pro ++++ b/src/proto/term.pro +@@ -36,6 +36,7 @@ void starttermcap __ARGS((void)); + void stoptermcap __ARGS((void)); + void may_req_termresponse __ARGS((void)); + void may_req_ambiguous_char_width __ARGS((void)); ++void may_req_bg_color __ARGS((void)); + int swapping_screen __ARGS((void)); + void setmouse __ARGS((void)); + int mouse_has __ARGS((int c)); +diff --git a/src/term.c b/src/term.c +index 46274d8..660df07 100644 +--- a/src/term.c ++++ b/src/term.c +@@ -124,6 +124,11 @@ static int crv_status = CRV_GET; + # define U7_SENT 2 /* did send T_U7, waiting for answer */ + # define U7_GOT 3 /* received T_U7 response */ + static int u7_status = U7_GET; ++/* Request background color report: */ ++# define RBG_GET 1 /* send T_RBG when switched to RAW mode */ ++# define RBG_SENT 2 /* did send T_RBG, waiting for answer */ ++# define RBG_GOT 3 /* received T_RBG response */ ++static int rbg_status = RBG_GET; + # endif + + /* +@@ -949,6 +954,7 @@ static struct builtin_term builtin_termcaps[] = + {(int)KS_CWP, IF_EB("\033[3;%d;%dt", ESC_STR "[3;%d;%dt")}, + # endif + {(int)KS_CRV, IF_EB("\033[>c", ESC_STR "[>c")}, ++ {(int)KS_RBG, IF_EB("\033]11;?\007", ESC_STR "]11;?\007")}, + {(int)KS_U7, IF_EB("\033[6n", ESC_STR "[6n")}, + + {K_UP, IF_EB("\033O*A", ESC_STR "O*A")}, +@@ -1240,6 +1246,7 @@ static struct builtin_term builtin_termcaps[] = + # endif + {(int)KS_CRV, "[CRV]"}, + {(int)KS_U7, "[U7]"}, ++ {(int)KS_RBG, "[RBG]"}, + {K_UP, "[KU]"}, + {K_DOWN, "[KD]"}, + {K_LEFT, "[KL]"}, +@@ -2357,7 +2364,7 @@ term_7to8bit(p) + if (p[1] == '[') + return CSI; + if (p[1] == ']') +- return 0x9d; ++ return OSC; + if (p[1] == 'O') + return 0x8f; + } +@@ -3224,7 +3231,8 @@ settmode(tmode) + * doesn't work in Cooked mode, an external program may get + * them. */ + if (tmode != TMODE_RAW && (crv_status == CRV_SENT +- || u7_status == U7_SENT)) ++ || u7_status == U7_SENT ++ || rbg_status == RBG_SENT)) + (void)vpeekc_nomap(); + check_for_codes_from_term(); + } +@@ -3285,8 +3293,9 @@ stoptermcap() + if (!gui.in_use && !gui.starting) + # endif + { +- /* May need to discard T_CRV or T_U7 response. */ +- if (crv_status == CRV_SENT || u7_status == U7_SENT) ++ /* May need to discard T_CRV, T_U7 or T_RBG response. */ ++ if (crv_status == CRV_SENT || u7_status == U7_SENT ++ || rbg_status == RBG_SENT) + { + # ifdef UNIX + /* Give the terminal a chance to respond. */ +@@ -3398,6 +3407,36 @@ may_req_ambiguous_char_width() + } + # endif + ++#if defined(FEAT_TERMRESPONSE) || defined(PROTO) ++/* ++ * Similar to requesting the version string: Request the terminal background ++ * color when it is the right moment. ++ */ ++ void ++may_req_bg_color() ++{ ++ if (rbg_status == RBG_GET ++ && cur_tmode == TMODE_RAW ++ && termcap_active ++ && p_ek ++# ifdef UNIX ++ && isatty(1) ++ && isatty(read_cmd_fd) ++# endif ++ && *T_RBG != NUL ++ && !option_was_set((char_u *)"bg")) ++ { ++ LOG_TR("Sending BG request"); ++ out_str(T_RBG); ++ rbg_status = RBG_SENT; ++ /* check for the characters now, otherwise they might be eaten by ++ * get_keystroke() */ ++ out_flush(); ++ (void)vpeekc_nomap(); ++ } ++} ++# endif ++ + # ifdef DEBUG_TERMRESPONSE + static void + log_tr(char *msg) +@@ -4204,11 +4243,12 @@ check_termcode(max_offset, buf, bufsize, buflen) + * The final byte must be 'R'. It is used for checking the + * ambiguous-width character state. + */ +- p = tp[0] == CSI ? tp + 1 : tp + 2; ++ char_u *argp = tp[0] == ESC ? tp + 2 : tp + 1; ++ + if ((*T_CRV != NUL || *T_U7 != NUL) +- && ((tp[0] == ESC && tp[1] == '[' && len >= 3) ++ && ((tp[0] == ESC && len >= 3 && tp[1] == '[') + || (tp[0] == CSI && len >= 2)) +- && (VIM_ISDIGIT(*p) || *p == '>' || *p == '?')) ++ && (VIM_ISDIGIT(*argp) || *argp == '>' || *argp == '?')) + { + #ifdef FEAT_MBYTE + int col; +@@ -4346,18 +4386,78 @@ check_termcode(max_offset, buf, bufsize, buflen) + } + } + +- /* Check for '<Esc>P1+r<hex bytes><Esc>\'. A "0" instead of the +- * "1" means an invalid request. */ ++ /* Check for background color response from the terminal: ++ * ++ * {lead}11;rgb:{rrrr}/{gggg}/{bbbb}{tail} ++ * ++ * {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 ++ && ((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] != ';')) ++ 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] == '\\'))) ++ { ++ if (i - j >= 21 && STRNCMP(tp + j + 3, "rgb:", 4) == 0 ++ && tp[j + 11] == '/' && tp[j + 16] == '/' ++ && !option_was_set((char_u *)"bg")) ++ {/* TODO: don't set option when already the right value */ ++ LOG_TR("Received RBG"); ++ rbg_status = RBG_GOT; ++ set_option_value((char_u *)"bg", 0L, (char_u *)( ++ (3 * '6' < tp[j+7] + tp[j+12] + tp[j+17]) ++ ? "light" : "dark"), 0); ++ reset_option_was_set((char_u *)"bg"); ++ redraw_asap(CLEAR); ++ } ++ ++ /* got finished code: consume it */ ++ key_name[0] = (int)KS_EXTRA; ++ key_name[1] = (int)KE_IGNORE; ++ slen = i + 1 + (tp[i] == ESC); ++ break; ++ } ++ if (i == len) ++ { ++ LOG_TR("not enough characters for RB"); ++ return -1; ++ } ++ } ++ ++ /* Check for key code response from xterm: ++ * ++ * {lead}{flag}+r<hex bytes><{tail} ++ * ++ * {lead} can be <Esc>P or DCS ++ * {flag} can be '0' or '1' ++ * {tail} can be Esc>\ or STERM ++ * ++ * Consume any code that starts with "{lead}.+r". ++ */ + else if (check_for_codes +- && ((tp[0] == ESC && tp[1] == 'P' && len >= 2) ++ && ((tp[0] == ESC && len >= 2 && tp[1] == 'P') + || tp[0] == DCS)) + { +- j = 1 + (tp[0] != DCS); +- for (i = j; i < len; ++i) +- if ((tp[i] == ESC && tp[i + 1] == '\\' && i + 1 < len) ++ j = 1 + (tp[0] == ESC); ++ if (len >= j + 3 && (argp[1] != '+' || argp[2] != 'r')) ++ i = 0; /* no match */ ++ else ++ for (i = j; i < len; ++i) ++ if ((tp[i] == ESC && i + 1 < len && tp[i + 1] == '\\') + || tp[i] == STERM) + { +- if (i - j >= 3 && tp[j + 1] == '+' && tp[j + 2] == 'r') ++ if (i - j >= 3) + got_code_from_term(tp + j, i); + key_name[0] = (int)KS_EXTRA; + key_name[1] = (int)KE_IGNORE; +@@ -4367,8 +4467,10 @@ check_termcode(max_offset, buf, bufsize, buflen) + + if (i == len) + { ++ /* These codes arrive many together, each code can be ++ * truncated at any point. */ + LOG_TR("not enough characters for XT"); +- return -1; /* not enough characters */ ++ return -1; + } + } + } +diff --git a/src/term.h b/src/term.h +index 28390a2..4925599 100644 +--- a/src/term.h ++++ b/src/term.h +@@ -79,6 +79,7 @@ enum SpecialKey + KS_CWP, /* set window position in pixels */ + KS_CWS, /* set window size in characters */ + KS_CRV, /* request version string */ ++ KS_RBG, /* request background color */ + KS_CSI, /* start insert mode (bar cursor) */ + KS_CEI, /* end insert mode (block cursor) */ + #ifdef FEAT_VERTSPLIT +@@ -160,6 +161,7 @@ extern char_u *(term_strings[]); /* current terminal strings */ + #define T_CSI (term_str(KS_CSI)) /* start insert mode */ + #define T_CEI (term_str(KS_CEI)) /* end insert mode */ + #define T_CRV (term_str(KS_CRV)) /* request version string */ ++#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 */ + +diff --git a/src/option.c b/src/option.c +index e20efc1..7da18a5 100644 +--- a/src/option.c ++++ b/src/option.c +@@ -2939,11 +2939,11 @@ static struct vimoption + #ifdef FEAT_VERTSPLIT + p_term("t_CV", T_CSV) + #endif +- p_term("t_ut", T_UT) + p_term("t_da", T_DA) + p_term("t_db", T_DB) + p_term("t_DL", T_CDL) + p_term("t_dl", T_DL) ++ p_term("t_EI", T_CEI) + p_term("t_fs", T_FS) + p_term("t_IE", T_CIE) + p_term("t_IS", T_CIS) +@@ -2957,27 +2957,28 @@ static struct vimoption + p_term("t_ms", T_MS) + p_term("t_nd", T_ND) + p_term("t_op", T_OP) ++ p_term("t_RB", T_RBG) + p_term("t_RI", T_CRI) + p_term("t_RV", T_CRV) +- p_term("t_u7", T_U7) + p_term("t_Sb", T_CSB) +- p_term("t_Sf", T_CSF) + p_term("t_se", T_SE) ++ p_term("t_Sf", T_CSF) ++ p_term("t_SI", T_CSI) + p_term("t_so", T_SO) + p_term("t_sr", T_SR) +- p_term("t_ts", T_TS) + p_term("t_te", T_TE) + p_term("t_ti", T_TI) ++ p_term("t_ts", T_TS) ++ p_term("t_u7", T_U7) + p_term("t_ue", T_UE) + p_term("t_us", T_US) ++ p_term("t_ut", T_UT) + p_term("t_vb", T_VB) + p_term("t_ve", T_VE) + p_term("t_vi", T_VI) + p_term("t_vs", T_VS) + p_term("t_WP", T_CWP) + p_term("t_WS", T_CWS) +- p_term("t_SI", T_CSI) +- p_term("t_EI", T_CEI) + p_term("t_xn", T_XN) + p_term("t_xs", T_XS) + p_term("t_ZH", T_CZH) +diff --git a/src/term.c b/src/term.c +index 660df07..b4b0c4b 100644 +--- a/src/term.c ++++ b/src/term.c +@@ -1622,7 +1622,7 @@ set_termname(term) + {KS_TS, "ts"}, {KS_FS, "fs"}, + {KS_CWP, "WP"}, {KS_CWS, "WS"}, + {KS_CSI, "SI"}, {KS_CEI, "EI"}, +- {KS_U7, "u7"}, ++ {KS_U7, "u7"}, {KS_RBG, "RB"}, + {(enum SpecialKey)0, NULL} + }; + diff --git a/SOURCES/vimrc b/SOURCES/vimrc index cf66061..dbe8cae 100644 --- a/SOURCES/vimrc +++ b/SOURCES/vimrc @@ -13,7 +13,7 @@ set ruler " show the cursor position all the time " Only do this part when compiled with support for autocommands if has("autocmd") - augroup fedora + augroup redhat autocmd! " In text files, always limit the width of text to 78 characters " autocmd BufRead *.txt set tw=78 diff --git a/SPECS/vim.spec b/SPECS/vim.spec index 263ec80..2a4486f 100644 --- a/SPECS/vim.spec +++ b/SPECS/vim.spec @@ -1,4 +1,4 @@ -%define patchlevel 160 +%define patchlevel 629 %if %{?WITH_SELINUX:0}%{!?WITH_SELINUX:1} %define WITH_SELINUX 1 %endif @@ -12,6 +12,7 @@ %define withvimspell 0 %define withhunspell 0 %define withruby 1 +%define withlua 0 %define baseversion 7.4 %define vimdir vim74 @@ -38,6 +39,8 @@ Source13: vim-spell-files.tar.bz2 %endif Source14: spec-template Source15: spec-template.new +# rhbz#1083924 https://github.com/vim-jp/vim-cpp/blob/master/syntax/cpp.vim +Source16: cpp.vim Patch2002: vim-7.0-fixkeys.patch Patch2003: vim-6.2-specsyntax.patch @@ -207,6 +210,474 @@ Patch157: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.157 Patch158: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.158 Patch159: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.159 Patch160: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.160 +Patch161: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.161 +Patch162: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.162 +Patch163: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.163 +Patch164: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.164 +Patch165: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.165 +Patch166: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.166 +Patch167: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.167 +Patch168: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.168 +Patch169: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.169 +Patch170: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.170 +Patch171: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.171 +Patch172: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.172 +Patch173: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.173 +Patch174: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.174 +Patch175: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.175 +Patch176: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.176 +Patch177: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.177 +Patch178: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.178 +Patch179: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.179 +Patch180: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.180 +Patch181: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.181 +Patch182: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.182 +Patch183: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.183 +Patch184: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.184 +Patch185: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.185 +Patch186: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.186 +Patch187: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.187 +Patch188: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.188 +Patch189: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.189 +Patch190: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.190 +Patch191: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.191 +Patch192: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.192 +Patch193: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.193 +Patch194: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.194 +Patch195: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.195 +Patch196: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.196 +Patch197: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.197 +Patch198: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.198 +Patch199: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.199 +Patch200: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.200 +Patch201: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.201 +Patch202: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.202 +Patch203: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.203 +Patch204: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.204 +Patch205: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.205 +Patch206: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.206 +Patch207: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.207 +Patch209: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.209 +Patch210: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.210 +Patch211: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.211 +Patch212: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.212 +Patch213: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.213 +Patch214: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.214 +Patch215: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.215 +Patch216: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.216 +Patch217: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.217 +Patch218: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.218 +Patch219: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.219 +Patch220: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.220 +Patch221: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.221 +Patch222: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.222 +Patch223: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.223 +Patch224: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.224 +Patch225: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.225 +Patch226: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.226 +Patch227: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.227 +Patch228: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.228 +Patch229: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.229 +Patch230: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.230 +Patch231: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.231 +Patch232: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.232 +Patch233: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.233 +Patch234: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.234 +Patch235: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.235 +Patch236: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.236 +Patch237: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.237 +Patch238: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.238 +Patch239: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.239 +Patch240: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.240 +Patch241: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.241 +Patch242: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.242 +Patch243: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.243 +Patch244: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.244 +Patch245: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.245 +Patch246: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.246 +Patch247: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.247 +Patch248: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.248 +Patch249: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.249 +Patch250: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.250 +Patch251: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.251 +Patch252: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.252 +Patch253: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.253 +Patch254: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.254 +Patch255: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.255 +Patch256: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.256 +Patch257: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.257 +Patch258: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.258 +Patch259: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.259 +Patch260: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.260 +Patch261: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.261 +Patch262: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.262 +Patch263: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.263 +Patch264: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.264 +Patch265: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.265 +Patch266: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.266 +Patch267: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.267 +Patch268: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.268 +Patch269: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.269 +Patch270: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.270 +Patch271: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.271 +Patch272: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.272 +Patch273: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.273 +Patch274: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.274 +Patch275: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.275 +Patch276: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.276 +Patch277: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.277 +Patch278: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.278 +Patch279: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.279 +Patch280: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.280 +Patch281: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.281 +Patch282: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.282 +Patch283: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.283 +Patch284: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.284 +Patch285: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.285 +Patch286: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.286 +Patch287: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.287 +Patch288: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.288 +Patch289: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.289 +Patch290: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.290 +Patch291: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.291 +Patch292: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.292 +Patch293: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.293 +Patch294: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.294 +Patch295: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.295 +Patch296: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.296 +Patch297: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.297 +Patch298: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.298 +Patch299: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.299 +Patch300: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.300 +Patch301: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.301 +Patch302: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.302 +Patch303: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.303 +Patch304: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.304 +Patch305: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.305 +Patch306: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.306 +Patch307: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.307 +Patch308: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.308 +Patch309: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.309 +Patch310: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.310 +Patch311: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.311 +Patch312: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.312 +Patch313: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.313 +Patch314: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.314 +Patch315: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.315 +Patch316: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.316 +Patch317: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.317 +Patch318: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.318 +Patch319: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.319 +Patch320: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.320 +Patch321: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.321 +Patch322: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.322 +Patch323: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.323 +Patch324: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.324 +Patch325: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.325 +Patch326: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.326 +Patch327: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.327 +Patch328: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.328 +Patch329: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.329 +Patch330: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.330 +Patch331: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.331 +Patch332: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.332 +Patch333: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.333 +Patch334: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.334 +Patch335: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.335 +Patch336: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.336 +Patch337: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.337 +Patch338: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.338 +Patch339: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.339 +Patch340: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.340 +Patch341: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.341 +Patch342: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.342 +Patch343: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.343 +Patch344: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.344 +Patch345: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.345 +Patch346: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.346 +Patch347: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.347 +Patch348: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.348 +Patch349: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.349 +Patch350: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.350 +Patch351: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.351 +Patch352: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.352 +Patch353: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.353 +Patch354: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.354 +Patch355: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.355 +Patch356: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.356 +Patch357: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.357 +Patch358: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.358 +Patch359: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.359 +Patch360: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.360 +Patch361: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.361 +Patch362: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.362 +Patch363: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.363 +Patch364: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.364 +Patch365: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.365 +Patch366: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.366 +Patch367: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.367 +Patch368: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.368 +Patch369: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.369 +Patch370: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.370 +Patch371: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.371 +Patch372: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.372 +Patch373: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.373 +Patch374: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.374 +Patch375: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.375 +Patch376: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.376 +Patch377: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.377 +Patch378: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.378 +Patch379: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.379 +Patch380: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.380 +Patch381: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.381 +Patch382: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.382 +Patch383: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.383 +Patch384: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.384 +Patch385: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.385 +Patch386: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.386 +Patch387: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.387 +Patch388: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.388 +Patch389: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.389 +Patch390: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.390 +Patch391: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.391 +Patch392: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.392 +Patch393: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.393 +Patch394: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.394 +Patch395: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.395 +Patch396: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.396 +Patch397: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.397 +Patch398: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.398 +Patch399: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.399 +Patch400: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.400 +Patch401: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.401 +Patch402: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.402 +Patch403: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.403 +Patch404: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.404 +Patch405: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.405 +Patch406: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.406 +Patch407: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.407 +Patch408: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.408 +Patch409: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.409 +Patch410: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.410 +Patch411: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.411 +Patch412: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.412 +Patch413: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.413 +Patch414: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.414 +Patch415: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.415 +Patch416: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.416 +Patch417: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.417 +Patch418: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.418 +Patch419: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.419 +Patch420: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.420 +Patch421: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.421 +Patch422: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.422 +Patch423: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.423 +Patch424: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.424 +Patch425: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.425 +Patch426: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.426 +Patch427: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.427 +Patch428: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.428 +Patch429: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.429 +Patch430: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.430 +Patch431: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.431 +Patch432: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.432 +Patch433: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.433 +Patch434: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.434 +Patch435: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.435 +Patch436: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.436 +Patch437: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.437 +Patch438: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.438 +Patch439: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.439 +Patch440: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.440 +Patch441: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.441 +Patch442: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.442 +Patch443: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.443 +Patch444: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.444 +Patch445: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.445 +Patch446: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.446 +Patch447: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.447 +Patch448: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.448 +Patch449: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.449 +Patch450: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.450 +Patch451: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.451 +Patch452: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.452 +Patch453: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.453 +Patch454: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.454 +Patch455: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.455 +Patch456: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.456 +Patch457: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.457 +Patch458: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.458 +Patch459: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.459 +Patch460: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.460 +Patch461: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.461 +Patch462: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.462 +Patch463: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.463 +Patch464: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.464 +Patch465: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.465 +Patch466: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.466 +Patch467: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.467 +Patch468: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.468 +Patch469: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.469 +Patch470: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.470 +Patch471: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.471 +Patch472: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.472 +Patch473: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.473 +Patch474: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.474 +Patch475: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.475 +Patch476: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.476 +Patch477: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.477 +Patch478: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.478 +Patch479: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.479 +Patch480: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.480 +Patch481: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.481 +Patch482: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.482 +Patch483: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.483 +Patch484: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.484 +Patch485: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.485 +Patch486: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.486 +Patch487: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.487 +Patch488: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.488 +Patch489: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.489 +Patch490: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.490 +Patch491: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.491 +Patch492: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.492 +Patch493: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.493 +Patch494: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.494 +Patch495: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.495 +Patch496: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.496 +Patch497: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.497 +Patch498: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.498 +Patch499: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.499 +Patch500: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.500 +Patch501: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.501 +Patch502: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.502 +Patch503: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.503 +Patch504: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.504 +Patch505: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.505 +Patch506: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.506 +Patch507: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.507 +Patch508: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.508 +Patch509: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.509 +Patch510: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.510 +Patch511: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.511 +Patch512: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.512 +Patch513: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.513 +Patch514: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.514 +Patch515: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.515 +Patch516: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.516 +Patch517: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.517 +Patch518: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.518 +Patch519: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.519 +Patch520: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.520 +Patch521: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.521 +Patch522: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.522 +Patch523: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.523 +Patch524: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.524 +Patch525: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.525 +Patch526: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.526 +Patch527: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.527 +Patch528: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.528 +Patch529: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.529 +Patch530: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.530 +Patch531: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.531 +Patch532: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.532 +Patch533: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.533 +Patch534: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.534 +Patch535: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.535 +Patch536: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.536 +Patch537: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.537 +Patch538: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.538 +Patch539: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.539 +Patch540: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.540 +Patch541: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.541 +Patch542: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.542 +Patch543: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.543 +Patch544: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.544 +Patch545: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.545 +Patch546: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.546 +Patch547: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.547 +Patch548: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.548 +Patch549: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.549 +Patch550: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.550 +Patch551: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.551 +Patch552: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.552 +Patch553: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.553 +Patch554: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.554 +Patch555: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.555 +Patch556: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.556 +Patch557: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.557 +Patch558: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.558 +Patch559: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.559 +Patch560: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.560 +Patch561: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.561 +Patch562: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.562 +Patch563: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.563 +Patch564: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.564 +Patch565: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.565 +Patch566: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.566 +Patch567: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.567 +Patch568: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.568 +Patch569: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.569 +Patch570: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.570 +Patch571: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.571 +Patch572: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.572 +Patch573: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.573 +Patch574: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.574 +Patch575: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.575 +Patch576: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.576 +Patch577: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.577 +Patch578: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.578 +Patch579: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.579 +Patch580: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.580 +Patch581: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.581 +Patch582: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.582 +Patch583: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.583 +Patch584: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.584 +Patch585: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.585 +Patch586: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.586 +Patch587: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.587 +Patch588: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.588 +Patch589: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.589 +Patch590: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.590 +Patch591: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.591 +Patch592: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.592 +Patch593: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.593 +Patch594: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.594 +Patch595: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.595 +Patch596: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.596 +Patch597: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.597 +Patch598: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.598 +Patch599: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.599 +Patch600: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.600 +Patch601: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.601 +Patch602: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.602 +Patch603: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.603 +Patch604: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.604 +Patch605: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.605 +Patch606: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.606 +Patch607: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.607 +Patch608: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.608 +Patch609: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.609 +Patch610: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.610 +Patch611: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.611 +Patch612: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.612 +Patch613: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.613 +Patch614: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.614 +Patch615: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.615 +Patch616: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.616 +Patch617: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.617 +Patch618: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.618 +Patch619: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.619 +Patch620: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.620 +Patch621: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.621 +Patch622: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.622 +Patch623: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.623 +Patch624: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.624 +Patch625: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.625 +Patch626: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.626 +Patch627: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.627 +Patch628: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.628 +Patch629: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.629 Patch3000: vim-7.4-syntax.patch Patch3002: vim-7.1-nowarnings.patch @@ -214,20 +685,22 @@ Patch3004: vim-7.0-rclocation.patch Patch3006: vim-6.4-checkhl.patch Patch3007: vim-7.4-fstabsyntax.patch Patch3008: vim-7.0-warning.patch -Patch3009: vim-7.0-syncolor.patch +Patch3009: vim-7.4-syncolor.patch Patch3010: vim-7.0-specedit.patch Patch3011: vim72-rh514717.patch Patch3012: vim-7.3-manpage-typo-668894-675480.patch -Patch3013: vim-7.3-xsubpp-path.patch Patch3014: vim-manpagefixes-948566.patch Patch3015: vim-7.4-CVE-2016-1248.patch Patch3016: vim-7.4-yamlsyntax.patch # 1267826 - Include c++11 syntax highlighting in vim Patch3017: vim-7.4-c++11.patch -# 1319760 - [RFE] Vim should support blowfish2, plus ensure that RHEL6 encrypted files can be opened in RHEL7 -Patch3018: vim-7.4-blowfish2.patch -# 1719963 - CVE-2019-12735 source command allows arbitrary command execution via the modeline -Patch3019: 0001-patch-8.1.1365-source-command-doesn-t-check-for-the-.patch +Patch3018: vim-7.4-licensemacro-1151450.patch +Patch3019: vim-7.4-ssh-keywords.patch +# 1377316 - [RFE] make _remote_ vim doing the right decisions about 'set background' +# merged patch of 7.4.{757,761,762,766,770, update-help-files} commits from upstream +Patch3020: vim-set-bg.patch +# 1719964 - CVE-2019-12735 arbitrary command execution in getchar.c [rhel-7.7] +Patch3021: 0001-patch-8.1.1365-source-command-doesn-t-check-for-the-.patch Buildroot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRequires: python-devel ncurses-devel gettext perl-devel @@ -239,6 +712,9 @@ BuildRequires: libselinux-devel %if "%{withruby}" == "1" Buildrequires: ruby-devel ruby %endif +%if "%{withlua}" == "1" +Buildrequires: lua-devel +%endif %if %{desktop_file} # for /usr/bin/desktop-file-install Requires: desktop-file-utils @@ -520,6 +996,474 @@ perl -pi -e "s,bin/nawk,bin/awk,g" runtime/tools/mve.awk %patch158 -p0 %patch159 -p0 %patch160 -p0 +%patch161 -p0 +%patch162 -p0 +%patch163 -p0 +%patch164 -p0 +%patch165 -p0 +%patch166 -p0 +%patch167 -p0 +%patch168 -p0 +%patch169 -p0 +%patch170 -p0 +%patch171 -p0 +%patch172 -p0 +%patch173 -p0 +%patch174 -p0 +%patch175 -p0 +%patch176 -p0 +%patch177 -p0 +%patch178 -p0 +%patch179 -p0 +%patch180 -p0 +%patch181 -p0 +%patch182 -p0 +%patch183 -p0 +%patch184 -p0 +%patch185 -p0 +%patch186 -p0 +%patch187 -p0 +%patch188 -p0 +%patch189 -p0 +%patch190 -p0 +%patch191 -p0 +%patch192 -p0 +%patch193 -p0 +%patch194 -p0 +%patch195 -p0 +%patch196 -p0 +%patch197 -p0 +%patch198 -p0 +%patch199 -p0 +%patch200 -p0 +%patch201 -p0 +%patch202 -p0 +%patch203 -p0 +%patch204 -p0 +%patch205 -p0 +%patch206 -p0 +%patch207 -p0 +%patch209 -p0 +%patch210 -p0 +%patch211 -p0 +%patch212 -p0 +%patch213 -p0 +%patch214 -p0 +%patch215 -p0 +%patch216 -p0 +%patch217 -p0 +%patch218 -p0 +%patch219 -p0 +%patch220 -p0 +%patch221 -p0 +%patch222 -p0 +%patch223 -p0 +%patch224 -p0 +%patch225 -p0 +%patch226 -p0 +%patch227 -p0 +%patch228 -p0 +%patch229 -p0 +%patch230 -p0 +%patch231 -p0 +%patch232 -p0 +%patch233 -p0 +%patch234 -p0 +%patch235 -p0 +%patch236 -p0 +%patch237 -p0 +%patch238 -p0 +%patch239 -p0 +%patch240 -p0 +%patch241 -p0 +%patch242 -p0 +%patch243 -p0 +%patch244 -p0 +%patch245 -p0 +%patch246 -p0 +%patch247 -p0 +%patch248 -p0 +%patch249 -p0 +%patch250 -p0 +%patch251 -p0 +%patch252 -p0 +%patch253 -p0 +%patch254 -p0 +%patch255 -p0 +%patch256 -p0 +%patch257 -p0 +%patch258 -p0 +%patch259 -p0 +%patch260 -p0 +%patch261 -p0 +%patch262 -p0 +%patch263 -p0 +%patch264 -p0 +%patch265 -p0 +%patch266 -p0 +%patch267 -p0 +%patch268 -p0 +%patch269 -p0 +%patch270 -p0 +%patch271 -p0 +%patch272 -p0 +%patch273 -p0 +%patch274 -p0 +%patch275 -p0 +%patch276 -p0 +%patch277 -p0 +%patch278 -p0 +%patch279 -p0 +%patch280 -p0 +%patch281 -p0 +%patch282 -p0 +%patch283 -p0 +%patch284 -p0 +%patch285 -p0 +%patch286 -p0 +%patch287 -p0 +%patch288 -p0 +%patch289 -p0 +%patch290 -p0 +%patch291 -p0 +%patch292 -p0 +%patch293 -p0 +%patch294 -p0 +%patch295 -p0 +%patch296 -p0 +%patch297 -p0 +%patch298 -p0 +%patch299 -p0 +%patch300 -p0 +%patch301 -p0 +%patch302 -p0 +%patch303 -p0 +%patch304 -p0 +%patch305 -p0 +%patch306 -p0 +%patch307 -p0 +%patch308 -p0 +%patch309 -p0 +%patch310 -p0 +%patch311 -p0 +%patch312 -p0 +%patch313 -p0 +%patch314 -p0 +%patch315 -p0 +%patch316 -p0 +%patch317 -p0 +%patch318 -p0 +%patch319 -p0 +%patch320 -p0 +%patch321 -p0 +%patch322 -p0 +%patch323 -p0 +%patch324 -p0 +%patch325 -p0 +%patch326 -p0 +%patch327 -p0 +%patch328 -p0 +%patch329 -p0 +%patch330 -p0 +%patch331 -p0 +%patch332 -p0 +%patch333 -p0 +%patch334 -p0 +%patch335 -p0 +%patch336 -p0 +%patch337 -p0 +%patch338 -p0 +%patch339 -p0 +%patch340 -p0 +%patch341 -p0 +%patch342 -p0 +%patch343 -p0 +%patch344 -p0 +%patch345 -p0 +%patch346 -p0 +%patch347 -p0 +%patch348 -p0 +%patch349 -p0 +%patch350 -p0 +%patch351 -p0 +%patch352 -p0 +%patch353 -p0 +%patch354 -p0 +%patch355 -p0 +%patch356 -p0 +%patch357 -p0 +%patch358 -p0 +%patch359 -p0 +%patch360 -p0 +%patch361 -p0 +%patch362 -p0 +%patch363 -p0 +%patch364 -p0 +%patch365 -p0 +%patch366 -p0 +%patch367 -p0 +%patch368 -p0 +%patch369 -p0 +%patch370 -p0 +%patch371 -p0 +%patch372 -p0 +%patch373 -p0 +%patch374 -p0 +%patch375 -p0 +%patch376 -p0 +%patch377 -p0 +%patch378 -p0 +%patch379 -p0 +%patch380 -p0 +%patch381 -p0 +%patch382 -p0 +%patch383 -p0 +%patch384 -p0 +%patch385 -p0 +%patch386 -p0 +%patch387 -p0 +%patch388 -p0 +%patch389 -p0 +%patch390 -p0 +%patch391 -p0 +%patch392 -p0 +%patch393 -p0 +%patch394 -p0 +%patch395 -p0 +%patch396 -p0 +%patch397 -p0 +%patch398 -p0 +%patch399 -p0 +%patch400 -p0 +%patch401 -p0 +%patch402 -p0 +%patch403 -p0 +%patch404 -p0 +%patch405 -p0 +%patch406 -p0 +%patch407 -p0 +%patch408 -p0 +%patch409 -p0 +%patch410 -p0 +%patch411 -p0 +%patch412 -p0 +%patch413 -p0 +%patch414 -p0 +%patch415 -p0 +%patch416 -p0 +%patch417 -p0 +%patch418 -p0 +%patch419 -p0 +%patch420 -p0 +%patch421 -p0 +%patch422 -p0 +%patch423 -p0 +%patch424 -p0 +%patch425 -p0 +%patch426 -p0 +%patch427 -p0 +%patch428 -p0 +%patch429 -p0 +%patch430 -p0 +%patch431 -p0 +%patch432 -p0 +%patch433 -p0 +%patch434 -p0 +%patch435 -p0 +%patch436 -p0 +%patch437 -p0 +%patch438 -p0 +%patch439 -p0 +%patch440 -p0 +%patch441 -p0 +%patch442 -p0 +%patch443 -p0 +%patch444 -p0 +%patch445 -p0 +%patch446 -p0 +%patch447 -p0 +%patch448 -p0 +%patch449 -p0 +%patch450 -p0 +%patch451 -p0 +%patch452 -p0 +%patch453 -p0 +%patch454 -p0 +%patch455 -p0 +%patch456 -p0 +%patch457 -p0 +%patch458 -p0 +%patch459 -p0 +%patch460 -p0 +%patch461 -p0 +%patch462 -p0 +%patch463 -p0 +%patch464 -p0 +%patch465 -p0 +%patch466 -p0 +%patch467 -p0 +%patch468 -p0 +%patch469 -p0 +%patch470 -p0 +%patch471 -p0 +%patch472 -p0 +%patch473 -p0 +%patch474 -p0 +%patch475 -p0 +%patch476 -p0 +%patch477 -p0 +%patch478 -p0 +%patch479 -p0 +%patch480 -p0 +%patch481 -p0 +%patch482 -p0 +%patch483 -p0 +%patch484 -p0 +%patch485 -p0 +%patch486 -p0 +%patch487 -p0 +%patch488 -p0 +%patch489 -p0 +%patch490 -p0 +%patch491 -p0 +%patch492 -p0 +%patch493 -p0 +%patch494 -p0 +%patch495 -p0 +%patch496 -p0 +%patch497 -p0 +%patch498 -p0 +%patch499 -p0 +%patch500 -p0 +%patch501 -p0 +%patch502 -p0 +%patch503 -p0 +%patch504 -p0 +%patch505 -p0 +%patch506 -p0 +%patch507 -p0 +%patch508 -p0 +%patch509 -p0 +%patch510 -p0 +%patch511 -p0 +%patch512 -p0 +%patch513 -p0 +%patch514 -p0 +%patch515 -p0 +%patch516 -p0 +%patch517 -p0 +%patch518 -p0 +%patch519 -p0 +%patch520 -p0 +%patch521 -p0 +%patch522 -p0 +%patch523 -p0 +%patch524 -p0 +%patch525 -p0 +%patch526 -p0 +%patch527 -p0 +%patch528 -p0 +%patch529 -p0 +%patch530 -p0 +%patch531 -p0 +%patch532 -p0 +%patch533 -p0 +%patch534 -p0 +%patch535 -p0 +%patch536 -p0 +%patch537 -p0 +%patch538 -p0 +%patch539 -p0 +%patch540 -p0 +%patch541 -p0 +%patch542 -p0 +%patch543 -p0 +%patch544 -p0 +%patch545 -p0 +%patch546 -p0 +%patch547 -p0 +%patch548 -p0 +%patch549 -p0 +%patch550 -p0 +%patch551 -p0 +%patch552 -p0 +%patch553 -p0 +%patch554 -p0 +%patch555 -p0 +%patch556 -p0 +%patch557 -p0 +%patch558 -p0 +%patch559 -p0 +%patch560 -p0 +%patch561 -p0 +%patch562 -p0 +%patch563 -p0 +%patch564 -p0 +%patch565 -p0 +%patch566 -p0 +%patch567 -p0 +%patch568 -p0 +%patch569 -p0 +%patch570 -p0 +%patch571 -p0 +%patch572 -p0 +%patch573 -p0 +%patch574 -p0 +%patch575 -p0 +%patch576 -p0 +%patch577 -p0 +%patch578 -p0 +%patch579 -p0 +%patch580 -p0 +%patch581 -p0 +%patch582 -p0 +%patch583 -p0 +%patch584 -p0 +%patch585 -p0 +%patch586 -p0 +%patch587 -p0 +%patch588 -p0 +%patch589 -p0 +%patch590 -p0 +%patch591 -p0 +%patch592 -p0 +%patch593 -p0 +%patch594 -p0 +%patch595 -p0 +%patch596 -p0 +%patch597 -p0 +%patch598 -p0 +%patch599 -p0 +%patch600 -p0 +%patch601 -p0 +%patch602 -p0 +%patch603 -p0 +%patch604 -p0 +%patch605 -p0 +%patch606 -p0 +%patch607 -p0 +%patch608 -p0 +%patch609 -p0 +%patch610 -p0 +%patch611 -p0 +%patch612 -p0 +%patch613 -p0 +%patch614 -p0 +%patch615 -p0 +%patch616 -p0 +%patch617 -p0 +%patch618 -p0 +%patch619 -p0 +%patch620 -p0 +%patch621 -p0 +%patch622 -p0 +%patch623 -p0 +%patch624 -p0 +%patch625 -p0 +%patch626 -p0 +%patch627 -p0 +%patch628 -p0 +%patch629 -p0 # install spell files %if %{withvimspell} @@ -537,15 +1481,16 @@ perl -pi -e "s,bin/nawk,bin/awk,g" runtime/tools/mve.awk %patch3011 -p1 %patch3012 -p1 -%if %{?fedora}%{!?fedora:0} >= 20 || %{?rhel}%{!?rhel:0} >= 7 -%patch3013 -p1 -%endif %patch3014 -p1 %patch3015 -p1 %patch3016 -p1 %patch3017 -p1 %patch3018 -p1 %patch3019 -p1 +%patch3020 -p1 +%patch3021 -p1 + +perl -pi -e "s/test71.out//" src/testdir/Makefile %build cp -f %{SOURCE5} . @@ -559,6 +1504,31 @@ mv -f Makefile.tmp Makefile export CFLAGS="%{optflags} -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=2 -D__linux__ -D_REENTRANT" export CXXFLAGS="%{optflags} -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=2 -D__linux__ -D_REENTRANT" +cp -f os_unix.h os_unix.h.save +cp -f ex_cmds.c ex_cmds.c.save + +perl -pi -e "s/help.txt/vi_help.txt/" os_unix.h ex_cmds.c +perl -pi -e "s/\/etc\/vimrc/\/etc\/virc/" os_unix.h +%configure --prefix=%{_prefix} --with-features=small --with-x=no \ + --enable-multibyte \ + --disable-netbeans \ +%if %{WITH_SELINUX} + --enable-selinux \ +%else + --disable-selinux \ +%endif + --disable-pythoninterp --disable-perlinterp --disable-tclinterp \ + --with-tlib=tinfo --enable-gui=no --disable-gpm --exec-prefix=/ \ + --with-compiledby="<bugzilla@redhat.com>" \ + --with-modified-by="<bugzilla@redhat.com>" + +make VIMRCLOC=/etc VIMRUNTIMEDIR=/usr/share/vim/%{vimdir} %{?_smp_mflags} +cp vim minimal-vim +make clean + +mv -f os_unix.h.save os_unix.h +mv -f ex_cmds.c.save ex_cmds.c + %configure --with-features=huge \ --enable-pythoninterp=dynamic \ --enable-perlinterp \ @@ -583,6 +1553,11 @@ export CXXFLAGS="%{optflags} -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOU %else --disable-rubyinterp \ %endif +%if "%{withlua}" == "1" + --enable-luainterp=dynamic \ +%else + --disable-luainterp \ +%endif make VIMRCLOC=/etc VIMRUNTIMEDIR=/usr/share/vim/%{vimdir} %{?_smp_mflags} cp vim gvim @@ -612,27 +1587,14 @@ make clean %else --disable-rubyinterp \ %endif - -make VIMRCLOC=/etc VIMRUNTIMEDIR=/usr/share/vim/%{vimdir} %{?_smp_mflags} -cp vim enhanced-vim -make clean - -perl -pi -e "s/help.txt/vi_help.txt/" os_unix.h ex_cmds.c -perl -pi -e "s/\/etc\/vimrc/\/etc\/virc/" os_unix.h -%configure --prefix=%{_prefix} --with-features=small --with-x=no \ - --enable-multibyte \ - --disable-netbeans \ -%if %{WITH_SELINUX} - --enable-selinux \ +%if "%{withlua}" == "1" + --enable-luainterp=dynamic \ %else - --disable-selinux \ + --disable-luainterp \ %endif - --disable-pythoninterp --disable-perlinterp --disable-tclinterp \ - --with-tlib=ncurses --enable-gui=no --disable-gpm --exec-prefix=/ \ - --with-compiledby="<bugzilla@redhat.com>" \ - --with-modified-by="<bugzilla@redhat.com>" make VIMRCLOC=/etc VIMRUNTIMEDIR=/usr/share/vim/%{vimdir} %{?_smp_mflags} +cp vim enhanced-vim %install rm -rf %{buildroot} @@ -645,6 +1607,7 @@ cp -f %{SOURCE15} %{buildroot}/%{_datadir}/%{name}/vimfiles/template.spec %else cp -f %{SOURCE14} %{buildroot}/%{_datadir}/%{name}/vimfiles/template.spec %endif +cp -f %{SOURCE16} runtime/syntax/ cp runtime/doc/uganda.txt LICENSE # Those aren't Linux info files but some binary files for Amiga: rm -f README*.info @@ -654,7 +1617,7 @@ cd src make install DESTDIR=%{buildroot} BINDIR=%{_bindir} VIMRCLOC=/etc VIMRUNTIMEDIR=/usr/share/vim/%{vimdir} make installgtutorbin DESTDIR=%{buildroot} BINDIR=%{_bindir} VIMRCLOC=/etc VIMRUNTIMEDIR=/usr/share/vim/%{vimdir} mkdir -p %{buildroot}%{_datadir}/icons/hicolor/{16x16,32x32,48x48,64x64}/apps -install -m755 vim %{buildroot}%{_bindir}/vi +install -m755 minimal-vim %{buildroot}%{_bindir}/vi install -m755 enhanced-vim %{buildroot}%{_bindir}/vim install -m755 gvim %{buildroot}%{_bindir}/gvim install -p -m644 %{SOURCE7} \ @@ -1030,8 +1993,18 @@ rm -rf %{buildroot} %{_datadir}/icons/hicolor/*/apps/* %changelog -* Fri Jun 14 2019 Zdenek Dohnal <zdohnal@redhat.com> - 2:7.4.160-6 -- 1719963 - CVE-2019-12735 source command allows arbitrary command execution via the modeline +* Fri Jun 14 2019 Zdenek Dohnal <zdohnal@redhat.com> - 2:7.4.629-6 +- increment release enough to get CVE fix 1719964 for clients migrated from RHEL6 + +* Fri Jun 14 2019 Zdenek Dohnal <zdohnal@redhat.com> - 2:7.4.629-3 +- 1719964 - CVE-2019-12735 arbitrary command execution in getchar.c [rhel-7.7] + +* Mon Jan 21 2019 Zdenek Dohnal <zdohnal@redhat.com> - 2:7.4.629-2 +- adding several additional changes for #1377316 from upstream + +* Wed Jan 16 2019 Zdenek Dohnal <zdohnal@redhat.com> - 2:7.4.629-1 +- 1563419 - Vim in RHEL 7 is older than VIM in RHEL 6 (Rebase) +- 1377316 - [RFE] make _remote_ vim doing the right decisions about 'set background' * Mon Jun 18 2018 Zdenek Dohnal <zdohnal@redhat.com> - 2:7.4.160-5 - 1490927 - vim dumps core when system reboots