Changeset 4641a79
- Timestamp:
- Jul 22, 2012, 4:15:17 AM (12 years ago)
- Branches:
- clfs-2.1, clfs-3.0.0-systemd, clfs-3.0.0-sysvinit, master, systemd, sysvinit
- Children:
- 1752595
- Parents:
- c1c44b9
- File:
-
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
patches/vim-7.3-branch-update-5.patch
rc1c44b9 r4641a79 1 Submitted By: Jonathan Norman (jonathan at bluesquarelinux dot co dot uk)2 Date: 2012-06-033 Initial Package Version: 7.34 Origin: Upstream5 Upstream Status: Applied6 Description: Contains all upstream patches up to 7.3.5387 8 1 diff -Naur vim73.orig/Filelist vim73/Filelist 9 --- vim73.orig/Filelist 201 2-06-03 23:09:52.956007482+000010 +++ vim73/Filelist 2012-0 6-03 23:09:54.868058365+00002 --- vim73.orig/Filelist 2010-08-07 11:04:57.000000000 +0000 3 +++ vim73/Filelist 2012-07-20 20:31:18.230978438 +0000 11 4 @@ -39,6 +39,7 @@ 12 5 src/mark.c \ … … 62 55 src/toolbar.phi \ 63 56 64 @@ -686,6 +683,8 @@ 57 @@ -466,6 +463,7 @@ 58 runtime/macros/hanoi/hanoi.vim \ 59 runtime/macros/hanoi/poster \ 60 runtime/macros/justify.vim \ 61 + runtime/macros/less.bat \ 62 runtime/macros/less.sh \ 63 runtime/macros/less.vim \ 64 runtime/macros/life/click.me \ 65 @@ -669,6 +667,8 @@ 66 67 # generic language files 68 LANG_GEN = \ 69 + runtime/doc/*-de.1 \ 70 + runtime/doc/*-de.UTF-8.1 \ 71 runtime/doc/*-fr.1 \ 72 runtime/doc/*-fr.UTF-8.1 \ 73 runtime/doc/*-it.1 \ 74 @@ -686,6 +686,8 @@ 65 75 runtime/tutor/tutor.utf-8 \ 66 76 runtime/tutor/tutor.?? \ … … 72 82 runtime/spell/??/main.aap \ 73 83 diff -Naur vim73.orig/Makefile vim73/Makefile 74 --- vim73.orig/Makefile 201 2-06-03 23:09:53.028009398+000075 +++ vim73/Makefile 2012-0 6-03 23:09:53.712027602+000084 --- vim73.orig/Makefile 2010-08-15 12:23:34.000000000 +0000 85 +++ vim73/Makefile 2012-07-20 20:31:09.600972239 +0000 76 86 @@ -23,6 +23,9 @@ 77 87 # has run can result in compiling with $(CC) empty. … … 95 105 cd src && $(MAKE) $@ 96 106 diff -Naur vim73.orig/README_extra.txt vim73/README_extra.txt 97 --- vim73.orig/README_extra.txt 201 2-06-03 23:09:52.920006524+000098 +++ vim73/README_extra.txt 2012-0 6-03 23:09:54.124038565+0000107 --- vim73.orig/README_extra.txt 2010-08-15 12:23:19.000000000 +0000 108 +++ vim73/README_extra.txt 2012-07-20 20:31:10.880973163 +0000 99 109 @@ -13,9 +13,6 @@ 100 110 … … 108 118 109 119 diff -Naur vim73.orig/runtime/doc/autocmd.txt vim73/runtime/doc/autocmd.txt 110 --- vim73.orig/runtime/doc/autocmd.txt 201 2-06-03 23:09:53.024009292+0000111 +++ vim73/runtime/doc/autocmd.txt 2012-0 6-03 23:09:55.576077206+0000120 --- vim73.orig/runtime/doc/autocmd.txt 2010-08-15 12:23:19.000000000 +0000 121 +++ vim73/runtime/doc/autocmd.txt 2012-07-20 20:31:15.250976305 +0000 112 122 @@ -299,6 +299,8 @@ 113 123 |InsertEnter| starting Insert mode … … 183 193 the autocommands, not the buffers to which they are 184 194 diff -Naur vim73.orig/runtime/doc/change.txt vim73/runtime/doc/change.txt 185 --- vim73.orig/runtime/doc/change.txt 201 2-06-03 23:09:53.016009080 +0000186 +++ vim73/runtime/doc/change.txt 2012-0 6-03 23:09:53.976034626+0000195 --- vim73.orig/runtime/doc/change.txt 2010-08-15 12:23:19.000000000 +0000 196 +++ vim73/runtime/doc/change.txt 2012-07-20 20:31:16.577643922 +0000 187 197 @@ -916,8 +916,10 @@ 188 198 {Visual}["x]Y Yank the highlighted lines [into register x] (for … … 198 208 :[range]y[ank] [x] {count} 199 209 Yank {count} lines, starting with last line number 210 @@ -1493,6 +1495,12 @@ 211 characters. Overruled by the 'M' flag. 212 1 Don't break a line after a one-letter word. It's broken before it 213 instead (if possible). 214 +j Where it makes sense, remove a comment leader when joining lines. For 215 + example, joining: 216 + int i; // the index ~ 217 + // in the list ~ 218 + Becomes: 219 + int i; // the index in the list ~ 220 221 222 With 't' and 'c' you can specify when Vim performs auto-wrapping: 200 223 diff -Naur vim73.orig/runtime/doc/cmdline.txt vim73/runtime/doc/cmdline.txt 201 --- vim73.orig/runtime/doc/cmdline.txt 201 2-06-03 23:09:53.016009080 +0000202 +++ vim73/runtime/doc/cmdline.txt 2012-0 6-03 23:09:55.820083699+0000224 --- vim73.orig/runtime/doc/cmdline.txt 2010-08-15 12:23:19.000000000 +0000 225 +++ vim73/runtime/doc/cmdline.txt 2012-07-20 20:31:16.060976885 +0000 203 226 @@ -330,12 +330,12 @@ 204 227 … … 221 244 If the numbers {first} and/or {last} are given, the respective 222 245 diff -Naur vim73.orig/runtime/doc/diff.txt vim73/runtime/doc/diff.txt 223 --- vim73.orig/runtime/doc/diff.txt 201 2-06-03 23:09:53.024009292+0000224 +++ vim73/runtime/doc/diff.txt 2012-0 6-03 23:09:55.876085191+0000246 --- vim73.orig/runtime/doc/diff.txt 2010-08-15 12:23:20.000000000 +0000 247 +++ vim73/runtime/doc/diff.txt 2012-07-20 20:31:16.204310320 +0000 225 248 @@ -178,7 +178,7 @@ 226 249 nodiff" before hiding it. … … 243 266 present in another. These lines were inserted in another file or deleted in 244 267 diff -Naur vim73.orig/runtime/doc/eval.txt vim73/runtime/doc/eval.txt 245 --- vim73.orig/runtime/doc/eval.txt 201 2-06-03 23:09:53.016009080 +0000246 +++ vim73/runtime/doc/eval.txt 2012-0 6-03 23:09:55.556076674+0000268 --- vim73.orig/runtime/doc/eval.txt 2010-08-15 12:23:20.000000000 +0000 269 +++ vim73/runtime/doc/eval.txt 2012-07-20 20:31:17.304311108 +0000 247 270 @@ -798,11 +798,12 @@ 248 271 For |Lists| only "+" is possible and then both expr6 must be a list. The … … 321 344 islocked( {expr}) Number TRUE if {expr} is locked 322 345 items( {dict}) List key-value pairs in {dict} 323 @@ -1822,7 +1837,7 @@ 346 @@ -1821,9 +1836,11 @@ 347 localtime() Number current time 324 348 log( {expr}) Float natural logarithm (base e) of {expr} 325 349 log10( {expr}) Float logarithm of Float {expr} to base 10 350 +luaeval( {expr}[, {expr}]) any evaluate |Lua| expression 326 351 map( {expr}, {string}) List/Dict change each item in {expr} to {expr} 327 352 -maparg( {name}[, {mode} [, {abbr}]]) 353 - String rhs of mapping {name} in mode {mode} 328 354 +maparg( {name}[, {mode} [, {abbr} [, {dict}]]]) 329 String rhs of mapping {name} in mode {mode} 355 + String or Dict 356 + rhs of mapping {name} in mode {mode} 330 357 mapcheck( {name}[, {mode} [, {abbr}]]) 331 358 String check for mappings matching {name} 332 @@ -1846,6 +1861,7 @@ 359 match( {expr}, {pat}[, {start}[, {count}]]) 360 @@ -1846,11 +1863,14 @@ 333 361 mzeval( {expr}) any evaluate |MzScheme| expression 334 362 nextnonblank( {lnum}) Number line nr of non-blank line >= {lnum} … … 338 366 pow( {x}, {y}) Float {x} to the power of {y} 339 367 prevnonblank( {lnum}) Number line nr of non-blank line <= {lnum} 340 @@ -1904,7 +1920,8 @@ 368 printf( {fmt}, {expr1}...) String format text 369 pumvisible() Number whether popup menu is visible 370 +pyeval( {expr}) any evaluate |Python| expression 371 +py3eval( {expr}) any evaluate |python3| expression 372 range( {expr} [, {max} [, {stride}]]) 373 List items from {expr} to {max} 374 readfile( {fname} [, {binary} [, {max}]]) 375 @@ -1904,7 +1924,8 @@ 341 376 simplify( {filename}) String simplify filename as much as possible 342 377 sin( {expr}) Float sine of {expr} … … 348 383 spellbadword() String badly spelled word at cursor 349 384 spellsuggest( {word} [, {max} [, {capital}]]) 350 @@ -1967,6 +198 4,7 @@385 @@ -1967,6 +1988,7 @@ 351 386 winwidth( {nr}) Number width of window {nr} 352 387 writefile( {list}, {fname} [, {binary}]) … … 356 391 abs({expr}) *abs()* 357 392 Return the absolute value of {expr}. When {expr} evaluates to 358 @@ -2006,6 +202 4,13 @@393 @@ -2006,6 +2028,13 @@ 359 394 Use |insert()| to add an item at another position. 360 395 … … 370 405 When {expr} is a |List|: Append each item of the |List| as a 371 406 text line below line {lnum} in the current buffer. 372 @@ -2708,13 +273 3,15 @@407 @@ -2708,13 +2737,15 @@ 373 408 {only available when compiled with the |+float| feature} 374 409 … … 391 426 If the expansion fails, the result is an empty string. A name 392 427 for a non-existing file is not included. 393 @@ -2731,6 +27 58,7 @@428 @@ -2731,6 +2762,7 @@ 394 429 <abuf> autocmd buffer number (as a String!) 395 430 <amatch> autocmd matched name … … 399 434 <cWORD> WORD under the cursor 400 435 <client> the {clientid} of the last received 401 @@ -2767,10 +279 5,10 @@436 @@ -2767,10 +2799,10 @@ 402 437 When {expr} does not start with '%', '#' or '<', it is 403 438 expanded like a file name is expanded on the command line. … … 414 449 < 415 450 Expand() can also be used to expand variables and environment 416 @@ -3414,17 +344 2,23 @@451 @@ -3414,17 +3446,23 @@ 417 452 :let list_is_on = getwinvar(2, '&list') 418 453 :echo "myvar = " . getwinvar(1, 'myvar') … … 444 479 445 480 For most systems backticks can be used to get files names from 446 @@ -3759,6 +379 3,11 @@481 @@ -3759,6 +3797,11 @@ 447 482 Note that when {item} is a |List| it is inserted as a single 448 483 item. Use |extend()| to concatenate |Lists|. … … 456 491 The result is a Number, which is non-zero when a directory 457 492 with the name {directory} exists. If {directory} doesn't 458 @@ -3966,23 +4005,51 @@ 493 @@ -3941,6 +3984,20 @@ 494 < -2.0 495 {only available when compiled with the |+float| feature} 496 497 +luaeval({expr}[, {expr}]) *luaeval()* 498 + Evaluate Lua expression {expr} and return its result converted 499 + to Vim data structures. Second {expr} may hold additional 500 + argument accessible as _A inside first {expr}. 501 + Strings are returned as they are. 502 + Boolean objects are converted to numbers. 503 + Numbers are converted to |Float| values if vim was compiled 504 + with |+float| and to numbers otherwise. 505 + Dictionaries and lists obtained by vim.eval() are returned 506 + as-is. 507 + Other objects are returned as zero without any errors. 508 + See |lua-luaeval| for more details. 509 + {only available when compiled with the |+lua| feature} 510 + 511 map({expr}, {string}) *map()* 512 {expr} must be a |List| or a |Dictionary|. 513 Replace each item in {expr} with the result of evaluating 514 @@ -3966,23 +4023,51 @@ 459 515 further items in {expr} are processed. 460 516 … … 515 571 then the global mappings. 516 572 This function can be used to map a key even when it's already 517 @@ -4295,6 +43 62,13 @@573 @@ -4295,6 +4380,13 @@ 518 574 call setpos('.', save_cursor) 519 575 < Also see |setpos()|. … … 529 585 Shorten directory names in the path {expr} and return the 530 586 result. The tail, the file name, is kept as-is. The other 531 @@ -5228,7 +5302,7 @@ 587 @@ -4500,6 +4592,29 @@ 588 This can be used to avoid some things that would remove the 589 popup menu. 590 591 + *E860* *E861* 592 +py3eval({expr}) *py3eval()* 593 + Evaluate Python expression {expr} and return its result 594 + converted to Vim data structures. 595 + Numbers and strings are returned as they are (strings are 596 + copied though, unicode strings are additionally converted to 597 + 'encoding'). 598 + Lists are represented as Vim |List| type. 599 + Dictionaries are represented as Vim |Dictionary| type with 600 + keys converted to strings. 601 + {only available when compiled with the |+python3| feature} 602 + 603 + *E858* *E859* 604 +pyeval({expr}) *pyeval()* 605 + Evaluate Python expression {expr} and return its result 606 + converted to Vim data structures. 607 + Numbers and strings are returned as they are (strings are 608 + copied though). 609 + Lists are represented as Vim |List| type. 610 + Dictionaries are represented as Vim |Dictionary| type with 611 + keys converted to strings. 612 + {only available when compiled with the |+python| feature} 613 + 614 *E726* *E727* 615 range({expr} [, {max} [, {stride}]]) *range()* 616 Returns a |List| with Numbers: 617 @@ -4733,6 +4848,10 @@ 618 Search for regexp pattern {pattern}. The search starts at the 619 cursor position (you can use |cursor()| to set it). 620 621 + If there is no match a 0 is returned and the cursor doesn't 622 + move. No error message is given. 623 + When a match has been found its line number is returned. 624 + 625 {flags} is a String, which can contain these character flags: 626 'b' search backward instead of forward 627 'c' accept a match at the cursor position 628 @@ -5228,7 +5347,7 @@ 532 629 {only available when compiled with the |+float| feature} 533 630 … … 538 635 want a list to remain unmodified make a copy first: > 539 636 :let sortedlist = sort(copy(mylist)) 540 @@ -5236,6 +53 10,8 @@637 @@ -5236,6 +5355,8 @@ 541 638 Numbers sort after Strings, |Lists| after Numbers. 542 639 For sorting text in the current buffer use |:sort|. … … 547 644 is called to compare items. The function is invoked with two 548 645 items as argument and must return zero if they are equal, 1 or 549 @@ -6056,7 +61 32,15 @@646 @@ -6056,7 +6177,15 @@ 550 647 To copy a file byte for byte: > 551 648 :let fl = readfile("foo", "b") … … 566 663 diff -Naur vim73.orig/runtime/doc/eval.txt.orig vim73/runtime/doc/eval.txt.orig 567 664 --- vim73.orig/runtime/doc/eval.txt.orig 1970-01-01 00:00:00.000000000 +0000 568 +++ vim73/runtime/doc/eval.txt.orig 2012-0 6-03 23:09:54.176039949+0000665 +++ vim73/runtime/doc/eval.txt.orig 2012-07-20 20:31:11.084306643 +0000 569 666 @@ -0,0 +1,8362 @@ 570 667 +*eval.txt* For Vim version 7.3. Last change: 2010 Aug 15 … … 8931 9028 + vim:tw=78:ts=8:ft=help:norl: 8932 9029 diff -Naur vim73.orig/runtime/doc/if_cscop.txt vim73/runtime/doc/if_cscop.txt 8933 --- vim73.orig/runtime/doc/if_cscop.txt 201 2-06-03 23:09:53.020009186+00008934 +++ vim73/runtime/doc/if_cscop.txt 2012-0 6-03 23:09:54.252041972+00009030 --- vim73.orig/runtime/doc/if_cscop.txt 2010-08-15 12:23:20.000000000 +0000 9031 +++ vim73/runtime/doc/if_cscop.txt 2012-07-20 20:31:11.324306815 +0000 8935 9032 @@ -272,6 +272,15 @@ 8936 9033 :set cst … … 9444 9541 + vim:tw=78:ts=8:ft=help:norl: 9445 9542 diff -Naur vim73.orig/runtime/doc/if_lua.txt vim73/runtime/doc/if_lua.txt 9446 --- vim73.orig/runtime/doc/if_lua.txt 201 2-06-03 23:09:53.020009186+00009447 +++ vim73/runtime/doc/if_lua.txt 2012-0 6-03 23:09:55.696080401+00009543 --- vim73.orig/runtime/doc/if_lua.txt 2010-08-15 12:23:20.000000000 +0000 9544 +++ vim73/runtime/doc/if_lua.txt 2012-07-20 20:31:15.670976605 +0000 9448 9545 @@ -1,4 +1,4 @@ 9449 9546 -*if_lua.txt* For Vim version 7.3. Last change: 2010 Jul 22 … … 9643 9740 +============================================================================== 9644 9741 + vim:tw=78:ts=8:noet:ft=help:norl: 9742 diff -Naur vim73.orig/runtime/doc/if_pyth.txt vim73/runtime/doc/if_pyth.txt 9743 --- vim73.orig/runtime/doc/if_pyth.txt 2010-08-15 12:23:20.000000000 +0000 9744 +++ vim73/runtime/doc/if_pyth.txt 2012-07-20 20:31:17.307644444 +0000 9745 @@ -1,4 +1,4 @@ 9746 -*if_pyth.txt* For Vim version 7.3. Last change: 2010 Aug 13 9747 +*if_pyth.txt* For Vim version 7.3. Last change: 2012 Feb 04 9748 9749 9750 VIM REFERENCE MANUAL by Paul Moore 9751 @@ -6,13 +6,14 @@ 9752 9753 The Python Interface to Vim *python* *Python* 9754 9755 -1. Commands |python-commands| 9756 -2. The vim module |python-vim| 9757 -3. Buffer objects |python-buffer| 9758 -4. Range objects |python-range| 9759 -5. Window objects |python-window| 9760 -6. Dynamic loading |python-dynamic| 9761 -7. Python 3 |python3| 9762 +1. Commands |python-commands| 9763 +2. The vim module |python-vim| 9764 +3. Buffer objects |python-buffer| 9765 +4. Range objects |python-range| 9766 +5. Window objects |python-window| 9767 +6. pyeval(), py3eval() Vim functions |python-pyeval| 9768 +7. Dynamic loading |python-dynamic| 9769 +8. Python 3 |python3| 9770 9771 {Vi does not have any of these commands} 9772 9773 @@ -150,6 +151,22 @@ 9774 [{'cmd': '/^eval_expr(arg, nextcmd)$/', 'static': 0, 'name': 9775 'eval_expr', 'kind': 'f', 'filename': './src/eval.c'}] 9776 9777 +vim.bindeval(str) *python-bindeval* 9778 + Like |python-eval|, but 9779 + 1. if expression evaluates to |List| or |Dictionary| it is returned as 9780 + vimlist or vimdictionary python type that are connected to original 9781 + list or dictionary. Thus modifications to these objects imply 9782 + modifications of the original. 9783 + 2. if expression evaluates to a function reference, then it returns 9784 + callable vimfunction object. Use self keyword argument to assign 9785 + |self| object for dictionary functions. 9786 + 9787 + Note: this function has the same behavior as |lua-eval| (except that 9788 + lua does not support running vim functions), |python-eval| is 9789 + kept for backwards compatibility in order not to make scripts 9790 + relying on outputs of vim.eval() being a copy of original or 9791 + vim.eval("1") returning a string. 9792 + 9793 9794 9795 Error object of the "vim" module 9796 @@ -222,8 +239,9 @@ 9797 - from indexing vim.buffers (|python-buffers|) 9798 - from the "buffer" attribute of a window (|python-window|) 9799 9800 -Buffer objects have one read-only attribute - name - the full file name for 9801 -the buffer. They also have three methods (append, mark, and range; see below). 9802 +Buffer objects have two read-only attributes - name - the full file name for 9803 +the buffer, and number - the buffer number. They also have three methods 9804 +(append, mark, and range; see below). 9805 9806 You can also treat buffer objects as sequence objects. In this context, they 9807 act as if they were lists (yes, they are mutable) of strings, with each 9808 @@ -318,7 +336,13 @@ 9809 The width attribute is writable only if the screen is split vertically. 9810 9811 ============================================================================== 9812 -6. Dynamic loading *python-dynamic* 9813 +6. pyeval() and py3eval() Vim functions *python-pyeval* 9814 + 9815 +To facilitate bi-directional interface, you can use |pyeval()| and |py3eval()| 9816 +functions to evaluate Python expressions and pass their values to VimL. 9817 + 9818 +============================================================================== 9819 +7. Dynamic loading *python-dynamic* 9820 9821 On MS-Windows the Python library can be loaded dynamically. The |:version| 9822 output then includes |+python/dyn|. 9823 @@ -335,13 +359,14 @@ 9824 sure edit "gvim.exe" and search for "python\d*.dll\c". 9825 9826 ============================================================================== 9827 -7. Python 3 *python3* 9828 +8. Python 3 *python3* 9829 9830 *:py3* *:python3* 9831 The |:py3| and |:python3| commands work similar to |:python|. 9832 *:py3file* 9833 The |:py3file| command works similar to |:pyfile|. 9834 9835 + 9836 Vim can be built in four ways (:version output): 9837 1. No Python support (-python, -python3) 9838 2. Python 2 support only (+python or +python/dyn, -python3) 9839 @@ -355,7 +380,7 @@ 9840 When doing this on Linux/Unix systems and importing global symbols, this leads 9841 to a crash when the second Python version is used. So either global symbols 9842 are loaded but only one Python version is activated, or no global symbols are 9843 -loaded. The latter makes Python's "import" fail on libaries that expect the 9844 +loaded. The latter makes Python's "import" fail on libraries that expect the 9845 symbols to be provided by Vim. 9846 *E836* *E837* 9847 Vim's configuration script makes a guess for all libraries based on one 9848 @@ -377,6 +402,18 @@ 9849 3. You undefine PY_NO_RTLD_GLOBAL in auto/config.h after configuration. This 9850 may crash Vim though. 9851 9852 + *has-python* 9853 +You can test what Python version is available with: > 9854 + if has('python') 9855 + echo 'there is Python 2.x' 9856 + elseif has('python3') 9857 + echo 'there is Python 3.x' 9858 + endif 9859 + 9860 +Note however, that when Python 2 and 3 are both available and loaded 9861 +dynamically, these has() calls will try to load them. If only one can be 9862 +loaded at a time, just checking if Python 2 or 3 are available will prevent 9863 +the other one from being available. 9864 9865 ============================================================================== 9866 vim:tw=78:ts=8:ft=help:norl: 9645 9867 diff -Naur vim73.orig/runtime/doc/indent.txt vim73/runtime/doc/indent.txt 9646 --- vim73.orig/runtime/doc/indent.txt 201 2-06-03 23:09:53.024009292+00009647 +++ vim73/runtime/doc/indent.txt 2012-0 6-03 23:09:55.712080826+00009868 --- vim73.orig/runtime/doc/indent.txt 2010-08-15 12:23:20.000000000 +0000 9869 +++ vim73/runtime/doc/indent.txt 2012-07-20 20:31:15.707643298 +0000 9648 9870 @@ -128,13 +128,20 @@ 9649 9871 used CTRL-T or CTRL-D. … … 10787 11009 + vim:tw=78:ts=8:ft=help:norl: 10788 11010 diff -Naur vim73.orig/runtime/doc/map.txt vim73/runtime/doc/map.txt 10789 --- vim73.orig/runtime/doc/map.txt 201 2-06-03 23:09:53.020009186+000010790 +++ vim73/runtime/doc/map.txt 2012-0 6-03 23:09:55.820083699+000011011 --- vim73.orig/runtime/doc/map.txt 2010-08-15 12:23:21.000000000 +0000 11012 +++ vim73/runtime/doc/map.txt 2012-07-20 20:31:16.060976885 +0000 10791 11013 @@ -226,7 +226,7 @@ 10792 11014 … … 10828 11050 -complete=tag_listfiles tags, file names are shown when CTRL-D is hit 10829 11051 diff -Naur vim73.orig/runtime/doc/motion.txt vim73/runtime/doc/motion.txt 10830 --- vim73.orig/runtime/doc/motion.txt 201 2-06-03 23:09:53.020009186+000010831 +++ vim73/runtime/doc/motion.txt 2012-0 6-03 23:09:54.380045379+000011052 --- vim73.orig/runtime/doc/motion.txt 2010-08-15 12:23:21.000000000 +0000 11053 +++ vim73/runtime/doc/motion.txt 2012-07-20 20:31:11.687640410 +0000 10832 11054 @@ -269,11 +269,11 @@ 10833 11055 {char} can be entered like with the |f| command. … … 10845 11067 3. Up-down motions *up-down-motions* 10846 11068 diff -Naur vim73.orig/runtime/doc/netbeans.txt vim73/runtime/doc/netbeans.txt 10847 --- vim73.orig/runtime/doc/netbeans.txt 201 2-06-03 23:09:53.016009080 +000010848 +++ vim73/runtime/doc/netbeans.txt 2012-0 6-03 23:09:54.892059004 +000011069 --- vim73.orig/runtime/doc/netbeans.txt 2010-08-15 12:23:21.000000000 +0000 11070 +++ vim73/runtime/doc/netbeans.txt 2012-07-20 20:31:13.184308154 +0000 10849 11071 @@ -1,4 +1,4 @@ 10850 11072 -*netbeans.txt* For Vim version 7.3. Last change: 2010 Jul 20 … … 10908 11130 ============================================================================== 10909 11131 diff -Naur vim73.orig/runtime/doc/options.txt vim73/runtime/doc/options.txt 10910 --- vim73.orig/runtime/doc/options.txt 201 2-06-03 23:09:53.020009186+000010911 +++ vim73/runtime/doc/options.txt 2012-0 6-03 23:09:55.460074120+000011132 --- vim73.orig/runtime/doc/options.txt 2010-08-15 12:23:21.000000000 +0000 11133 +++ vim73/runtime/doc/options.txt 2012-07-20 20:31:18.044311638 +0000 10912 11134 @@ -150,6 +150,18 @@ 10913 11135 (the ^[ is a real <Esc> here, use CTRL-V <Esc> to enter it) … … 10929 11151 security reasons. 10930 11152 10931 @@ -1434,6 +1446,15 @@ 11153 @@ -1425,6 +1437,7 @@ 11154 This option is a list of comma separated names. 11155 These names are recognized: 11156 11157 + *clipboard-unnamed* 11158 unnamed When included, Vim will use the clipboard register '*' 11159 for all yank, delete, change and put operations which 11160 would normally go to the unnamed register. When a 11161 @@ -1434,6 +1447,17 @@ 10932 11162 explicitly accessed using the "* notation. Also see 10933 11163 |gui-clipboard|. 10934 11164 11165 + *clipboard-unnamedplus* 10935 11166 + unnamedplus A variant of "unnamed" flag which uses the clipboard 10936 11167 + register '+' (|quoteplus|) instead of register '*' for … … 10938 11169 + into register '+' and also into '*' when "unnamed" is 10939 11170 + included. 10940 + Only available with the |+ x11| feature.11171 + Only available with the |+X11| feature. 10941 11172 + Availability can be checked with: > 10942 11173 + if has('unnamedplus') 10943 11174 +< 11175 + *clipboard-autoselect* 10944 11176 autoselect Works like the 'a' flag in 'guioptions': If present, 10945 11177 then whenever Visual mode is started, or the Visual 10946 11178 area extended, Vim tries to become the owner of the 10947 @@ -2069,6 +2090,12 @@ 11179 @@ -1445,9 +1469,16 @@ 11180 "autoselect" flag is used. 11181 Also applies to the modeless selection. 11182 11183 + *clipboard-autoselectplus* 11184 + autoselectplus Like "autoselect" but using the + register instead of 11185 + the * register. Compare to the 'P' flag in 11186 + 'guioptions'. 11187 + 11188 + *clipboard-autoselectml* 11189 autoselectml Like "autoselect", but for the modeless selection 11190 only. Compare to the 'A' flag in 'guioptions'. 11191 11192 + *clipboard-html* 11193 html When the clipboard contains HTML, use this when 11194 pasting. When putting text on the clipboard, mark it 11195 as HTML. This works to copy rendered HTML from 11196 @@ -1458,6 +1489,7 @@ 11197 Only supported for GTK version 2 and later. 11198 Only available with the |+multi_byte| feature. 11199 11200 + *clipboard-exclude* 11201 exclude:{pattern} 11202 Defines a pattern that is matched against the name of 11203 the terminal 'term'. If there is a match, no 11204 @@ -2069,6 +2101,12 @@ 10948 11205 *cpo->* 10949 11206 > When appending to a register, put a line break before … … 10958 11215 POSIX flags. These are not included in the Vi default value, except 10959 11216 when $VIM_POSIX was set on startup. |posix| 10960 @@ -2161,6 +21 88,16 @@11217 @@ -2161,6 +2199,16 @@ 10961 11218 Specifies whether to use quickfix window to show cscope results. 10962 11219 See |cscopequickfix|. … … 10975 11232 'cscopetag' 'cst' boolean (default off) 10976 11233 global 10977 @@ -5843,16 +5880,21 @@ 11234 @@ -3510,6 +3558,9 @@ 11235 windowing system's global selection unless explicitly told to 11236 by a yank or delete operation for the "* register. 11237 The same applies to the modeless selection. 11238 + *'go-P'* 11239 + 'P' Like autoselect but using the "+ register instead of the "* 11240 + register. 11241 *'go-A'* 11242 'A' Autoselect for the modeless selection. Like 'a', but only 11243 applies to the modeless selection. 11244 @@ -5843,16 +5894,21 @@ 10978 11245 security reasons. 10979 11246 … … 11001 11268 security reasons. 11002 11269 11003 @@ -5873,9 +59 15,10 @@11270 @@ -5873,9 +5929,10 @@ 11004 11271 For Unix the default it "| tee". The stdout of the compiler is saved 11005 11272 in a file and echoed to the screen. If the 'shell' option is "csh" or … … 11015 11282 and the other initializations, so that when the 'shell' option is set 11016 11283 there, the 'shellpipe' option changes automatically, unless it was 11017 @@ -5980,6 +60 23,7 @@11284 @@ -5980,6 +6037,7 @@ 11018 11285 11019 11286 *'shellxquote'* *'sxq'* … … 11023 11290 somewhere: "\"" 11024 11291 for Unix, when using system(): "\"") 11025 @@ -5989,14 +60 33,28 @@11292 @@ -5989,14 +6047,28 @@ 11026 11293 the "!" and ":!" commands. Includes the redirection. See 11027 11294 'shellquote' to exclude the redirection. It's probably not useful … … 11057 11324 'shiftround' 'sr' boolean (default off) 11058 11325 global 11059 @@ -7530,8 +7 588,9 @@11326 @@ -7530,8 +7602,9 @@ 11060 11327 ! When included, save and restore global variables that start 11061 11328 with an uppercase letter, and don't contain a lowercase … … 11069 11336 the '<' item, with the disadvantage that you need to put a 11070 11337 backslash before the ", otherwise it will be recognized as the 11071 @@ -7747,6 +78 06,17 @@11338 @@ -7747,6 +7820,17 @@ 11072 11339 a pattern from the list. This avoids problems when a future version 11073 11340 uses another default. … … 11089 11356 diff -Naur vim73.orig/runtime/doc/options.txt.orig vim73/runtime/doc/options.txt.orig 11090 11357 --- vim73.orig/runtime/doc/options.txt.orig 1970-01-01 00:00:00.000000000 +0000 11091 +++ vim73/runtime/doc/options.txt.orig 2012-0 6-03 23:09:53.792029731+000011358 +++ vim73/runtime/doc/options.txt.orig 2012-07-20 20:31:09.814305726 +0000 11092 11359 @@ -0,0 +1,8079 @@ 11093 11360 +*options.txt* For Vim version 7.3. Last change: 2010 Aug 15 … … 19172 19439 + vim:tw=78:ts=8:ft=help:norl: 19173 19440 diff -Naur vim73.orig/runtime/doc/os_risc.txt vim73/runtime/doc/os_risc.txt 19174 --- vim73.orig/runtime/doc/os_risc.txt 201 2-06-03 23:09:53.024009292+000019175 +++ vim73/runtime/doc/os_risc.txt 2012-0 6-03 23:09:54.112038245+000019441 --- vim73.orig/runtime/doc/os_risc.txt 2010-08-15 12:23:21.000000000 +0000 19442 +++ vim73/runtime/doc/os_risc.txt 2012-07-20 20:31:10.844306469 +0000 19176 19443 @@ -1,322 +1,12 @@ 19177 19444 -*os_risc.txt* For Vim version 7.3. Last change: 2010 Aug 07 … … 19501 19768 vim:tw=78:ts=8:ft=help:norl: 19502 19769 diff -Naur vim73.orig/runtime/doc/os_win32.txt vim73/runtime/doc/os_win32.txt 19503 --- vim73.orig/runtime/doc/os_win32.txt 201 2-06-03 23:09:53.016009080 +000019504 +++ vim73/runtime/doc/os_win32.txt 2012-0 6-03 23:09:54.368045058 +000019770 --- vim73.orig/runtime/doc/os_win32.txt 2010-08-15 12:23:21.000000000 +0000 19771 +++ vim73/runtime/doc/os_win32.txt 2012-07-20 20:31:11.650973718 +0000 19505 19772 @@ -313,6 +313,37 @@ 19506 19773 with :!start do not get passed Vim's open file handles, which means they do … … 19542 19809 Vim doesn't wait for it to finish! Help! 19543 19810 diff -Naur vim73.orig/runtime/doc/pattern.txt vim73/runtime/doc/pattern.txt 19544 --- vim73.orig/runtime/doc/pattern.txt 201 2-06-03 23:09:53.020009186+000019545 +++ vim73/runtime/doc/pattern.txt 2012-0 6-03 23:09:54.508048784+000019811 --- vim73.orig/runtime/doc/pattern.txt 2010-08-15 12:23:21.000000000 +0000 19812 +++ vim73/runtime/doc/pattern.txt 2012-07-20 20:31:12.107640712 +0000 19546 19813 @@ -1027,11 +1027,9 @@ 19547 19814 These items only work for 8-bit characters. … … 19558 19825 - A collation element. This currently simply accepts a single 19559 19826 character in the form: 19827 diff -Naur vim73.orig/runtime/doc/sign.txt vim73/runtime/doc/sign.txt 19828 --- vim73.orig/runtime/doc/sign.txt 2010-08-15 12:23:22.000000000 +0000 19829 +++ vim73/runtime/doc/sign.txt 2012-07-20 20:31:18.004311609 +0000 19830 @@ -150,8 +150,14 @@ 19831 Remove the previously placed sign {id} from file {fname}. 19832 See remark above about {fname} |:sign-fname|. 19833 19834 +:sign unplace * file={fname} 19835 + Remove all placed signs in file {fname}. 19836 + 19837 :sign unplace {id} buffer={nr} 19838 - Same, but use buffer {nr}. 19839 + Remove the previously placed sign {id} from buffer {nr}. 19840 + 19841 +:sign unplace * buffer={nr} 19842 + Remove all placed signs in buffer {nr}. 19843 19844 :sign unplace {id} 19845 Remove the previously placed sign {id} from all files it 19846 diff -Naur vim73.orig/runtime/doc/tabpage.txt vim73/runtime/doc/tabpage.txt 19847 --- vim73.orig/runtime/doc/tabpage.txt 2010-08-15 12:23:22.000000000 +0000 19848 +++ vim73/runtime/doc/tabpage.txt 2012-07-20 20:31:17.920978216 +0000 19849 @@ -173,10 +173,20 @@ 19850 REORDERING TAB PAGES: 19851 19852 :tabm[ove] [N] *:tabm* *:tabmove* 19853 +:[N]tabm[ove] 19854 Move the current tab page to after tab page N. Use zero to 19855 make the current tab page the first one. Without N the tab 19856 page is made the last one. 19857 19858 +:tabm[ove] +[N] 19859 +:tabm[ove] -[N] 19860 + Move the current tab page N places to the right (with +) or to 19861 + the left (with -). 19862 + 19863 +Note that although it is possible to move a tab behind the N-th one by using 19864 +:Ntabmove, it is impossible to move it by N places by using :+Ntabmove. For 19865 +clarification what +N means in this context see |[range]|. 19866 + 19867 19868 LOOPING OVER TAB PAGES: 19869 19560 19870 diff -Naur vim73.orig/runtime/filetype.vim vim73/runtime/filetype.vim 19561 --- vim73.orig/runtime/filetype.vim 201 2-06-03 23:09:52.976008014+000019562 +++ vim73/runtime/filetype.vim 2012-0 6-03 23:09:55.356071352+000019871 --- vim73.orig/runtime/filetype.vim 2010-08-03 20:44:00.000000000 +0000 19872 +++ vim73/runtime/filetype.vim 2012-07-20 20:31:14.564309144 +0000 19563 19873 @@ -2475,17 +2475,19 @@ 19564 19874 " detected filetypes. … … 22103 22413 +unlet s:cpo_save 22104 22414 diff -Naur vim73.orig/runtime/ftplugof.vim vim73/runtime/ftplugof.vim 22105 --- vim73.orig/runtime/ftplugof.vim 201 2-06-03 23:09:53.028009398+000022106 +++ vim73/runtime/ftplugof.vim 2012-0 6-03 23:09:54.868058365+000022415 --- vim73.orig/runtime/ftplugof.vim 2010-05-15 11:03:57.000000000 +0000 22416 +++ vim73/runtime/ftplugof.vim 2012-07-20 20:31:13.030974711 +0000 22107 22417 @@ -1,11 +1,13 @@ 22108 22418 " Vim support file to switch off loading plugins for file types … … 22124 22434 diff -Naur vim73.orig/src/GvimExt/Make_cyg.mak vim73/src/GvimExt/Make_cyg.mak 22125 22435 --- vim73.orig/src/GvimExt/Make_cyg.mak 1970-01-01 00:00:00.000000000 +0000 22126 +++ vim73/src/GvimExt/Make_cyg.mak 2012-0 6-03 23:09:54.804056662+000022436 +++ vim73/src/GvimExt/Make_cyg.mak 2012-07-20 20:31:12.867641259 +0000 22127 22437 @@ -0,0 +1,77 @@ 22128 22438 +# Project: gvimext … … 22204 22514 + -$(DEL) $(OBJ) $(RES) $(DLL) 22205 22515 diff -Naur vim73.orig/src/GvimExt/Make_ming.mak vim73/src/GvimExt/Make_ming.mak 22206 --- vim73.orig/src/GvimExt/Make_ming.mak 201 2-06-03 23:09:52.944007163+000022207 +++ vim73/src/GvimExt/Make_ming.mak 2012-0 6-03 23:09:54.804056662+000022516 --- vim73.orig/src/GvimExt/Make_ming.mak 2010-05-15 11:04:10.000000000 +0000 22517 +++ vim73/src/GvimExt/Make_ming.mak 2012-07-20 20:31:12.867641259 +0000 22208 22518 @@ -1,6 +1,6 @@ 22209 22519 # Project: gvimext … … 22273 22583 - 22274 22584 diff -Naur vim73.orig/src/GvimExt/gvimext.cpp vim73/src/GvimExt/gvimext.cpp 22275 --- vim73.orig/src/GvimExt/gvimext.cpp 201 2-06-03 23:09:52.944007163+000022276 +++ vim73/src/GvimExt/gvimext.cpp 2012-0 6-03 23:09:54.580050701+000022585 --- vim73.orig/src/GvimExt/gvimext.cpp 2010-07-10 17:21:34.000000000 +0000 22586 +++ vim73/src/GvimExt/gvimext.cpp 2012-07-20 20:31:12.297640849 +0000 22277 22587 @@ -142,6 +142,7 @@ 22278 22588 static int dyn_libintl_init(char *dir); … … 22359 22669 &pi) // Pointer to PROCESS_INFORMATION structure. 22360 22670 diff -Naur vim73.orig/src/GvimExt/gvimext.def vim73/src/GvimExt/gvimext.def 22361 --- vim73.orig/src/GvimExt/gvimext.def 201 2-06-03 23:09:52.944007163+000022362 +++ vim73/src/GvimExt/gvimext.def 2012-0 6-03 23:09:54.328043994+000022671 --- vim73.orig/src/GvimExt/gvimext.def 2010-05-15 11:04:10.000000000 +0000 22672 +++ vim73/src/GvimExt/gvimext.def 2012-07-20 20:31:11.500973609 +0000 22363 22673 @@ -1,7 +1,7 @@ 22364 22674 ;gvimdef.def : Declares the module parameters for the DLL. … … 22371 22681 DllCanUnloadNow private 22372 22682 diff -Naur vim73.orig/src/GvimExt/gvimext_ming.def vim73/src/GvimExt/gvimext_ming.def 22373 --- vim73.orig/src/GvimExt/gvimext_ming.def 201 2-06-03 23:09:52.944007163+000022374 +++ vim73/src/GvimExt/gvimext_ming.def 2012-0 6-03 23:09:54.328043994+000022683 --- vim73.orig/src/GvimExt/gvimext_ming.def 2010-05-15 11:04:10.000000000 +0000 22684 +++ vim73/src/GvimExt/gvimext_ming.def 2012-07-20 20:31:11.500973609 +0000 22375 22685 @@ -3,7 +3,7 @@ 22376 22686 ;Hence this is the same file as gvimext.def with private removed … … 22383 22693 DllCanUnloadNow = DllCanUnloadNow@0 22384 22694 diff -Naur vim73.orig/src/INSTALL vim73/src/INSTALL 22385 --- vim73.orig/src/INSTALL 201 2-06-03 23:09:52.940007057+000022386 +++ vim73/src/INSTALL 2012-0 6-03 23:09:54.124038565+000022695 --- vim73.orig/src/INSTALL 2010-06-26 04:04:51.000000000 +0000 22696 +++ vim73/src/INSTALL 2012-07-20 20:31:10.884306499 +0000 22387 22697 @@ -6,9 +6,8 @@ 22388 22698 Contents: … … 22434 22744 [NOTE: this is quite old, it might not work anymore] 22435 22745 diff -Naur vim73.orig/src/INSTALLpc.txt vim73/src/INSTALLpc.txt 22436 --- vim73.orig/src/INSTALLpc.txt 201 2-06-03 23:09:52.948007269+000022437 +++ vim73/src/INSTALLpc.txt 2012-0 6-03 23:09:55.528075930+000022746 --- vim73.orig/src/INSTALLpc.txt 2010-05-24 12:58:06.000000000 +0000 22747 +++ vim73/src/INSTALLpc.txt 2012-07-20 20:31:15.140976226 +0000 22438 22748 @@ -11,9 +11,9 @@ 22439 22749 this, then you will get the default behavior as is documented, which should … … 22548 22858 +Happy Vimming! 22549 22859 diff -Naur vim73.orig/src/Make_cyg.mak vim73/src/Make_cyg.mak 22550 --- vim73.orig/src/Make_cyg.mak 201 2-06-03 23:09:52.920006524+000022551 +++ vim73/src/Make_cyg.mak 2012-0 6-03 23:09:54.804056662+000022860 --- vim73.orig/src/Make_cyg.mak 2010-08-02 19:09:22.000000000 +0000 22861 +++ vim73/src/Make_cyg.mak 2012-07-20 20:31:17.854311501 +0000 22552 22862 @@ -1,6 +1,6 @@ 22553 22863 # 22554 22864 # Makefile for VIM on Win32, using Cygnus gcc 22555 22865 -# Last updated by Dan Sharp. Last Change: 2010 Feb 24 22556 +# Last updated by Dan Sharp. Last Change: 201 0 Nov 0322866 +# Last updated by Dan Sharp. Last Change: 2012 Jun 30 22557 22867 # 22558 22868 # Also read INSTALLpc.txt! … … 22566 22876 # LUA_VER define to version of Lua being used (51) 22567 22877 # DYNAMIC_LUA no or yes: use yes to load the Lua DLL dynamically (yes) 22878 @@ -47,7 +48,7 @@ 22879 # -L/lib/w32api to EXTRA_LIBS. 22880 # POSTSCRIPT no or yes: set to yes for PostScript printing (no) 22881 # FEATURES TINY, SMALL, NORMAL, BIG or HUGE (BIG) 22882 -# WINVER Lowest Win32 version to support. (0x0400) 22883 +# WINVER Lowest Win32 version to support. (0x0500) 22884 # CSCOPE no or yes: to include cscope interface support (yes) 22885 # OPTIMIZE SPACE, SPEED, or MAXSPEED: set optimization level (MAXSPEED) 22886 # NETBEANS no or yes: to include netbeans interface support (yes when GUI 22887 @@ -84,7 +85,7 @@ 22888 endif 22889 22890 ifndef WINVER 22891 -WINVER = 0x0400 22892 +WINVER = 0x0500 22893 endif 22894 22895 ifndef CSCOPE 22568 22896 @@ -254,16 +255,22 @@ 22569 22897 MZSCHEME_GENERATE_BASE=no … … 22611 22939 -$(DEL) obj$(DIRSLASH)*.o 22612 22940 diff -Naur vim73.orig/src/Make_ming.mak vim73/src/Make_ming.mak 22613 --- vim73.orig/src/Make_ming.mak 201 2-06-03 23:09:52.944007163+000022614 +++ vim73/src/Make_ming.mak 2012-0 6-03 23:09:55.744081677+000022941 --- vim73.orig/src/Make_ming.mak 2010-08-02 19:09:43.000000000 +0000 22942 +++ vim73/src/Make_ming.mak 2012-07-20 20:31:17.854311501 +0000 22615 22943 @@ -14,9 +14,11 @@ 22616 22944 # it's just run out of memory or something. Run again, and it will continue … … 22631 22959 OLE=no 22632 22960 # Set the default $(WINVER) to make it work with pre-Win2k 22961 -WINVER = 0x0400 22633 22962 +ifndef WINVER 22634 WINVER = 0x040022963 +WINVER = 0x0500 22635 22964 +endif 22636 22965 # Set to yes to enable Cscope support … … 22778 23107 $(OUTDIR)/netbeans.o: netbeans.c $(INCL) $(NBDEBUG_INCL) $(NBDEBUG_SRC) 22779 23108 diff -Naur vim73.orig/src/Make_mvc.mak vim73/src/Make_mvc.mak 22780 --- vim73.orig/src/Make_mvc.mak 201 2-06-03 23:09:52.924006631+000022781 +++ vim73/src/Make_mvc.mak 2012-0 6-03 23:09:55.492074972 +000023109 --- vim73.orig/src/Make_mvc.mak 2010-07-18 19:24:20.000000000 +0000 23110 +++ vim73/src/Make_mvc.mak 2012-07-20 20:31:14.987642782 +0000 22782 23111 @@ -380,9 +380,6 @@ 22783 23112 !if "$(_NMAKE_VER)" == "10.00.30319.01" … … 22901 23230 22902 23231 diff -Naur vim73.orig/src/Make_ro.mak vim73/src/Make_ro.mak 22903 --- vim73.orig/src/Make_ro.mak 201 2-06-03 23:09:52.940007057+000023232 --- vim73.orig/src/Make_ro.mak 2010-05-15 11:04:08.000000000 +0000 22904 23233 +++ vim73/src/Make_ro.mak 1970-01-01 00:00:00.000000000 +0000 22905 23234 @@ -1,135 +0,0 @@ … … 23040 23369 -o.window: c.window 23041 23370 diff -Naur vim73.orig/src/Makefile vim73/src/Makefile 23042 --- vim73.orig/src/Makefile 201 2-06-03 23:09:52.956007482+000023043 +++ vim73/src/Makefile 2012-0 6-03 23:09:55.668079655+000023371 --- vim73.orig/src/Makefile 2010-08-15 12:56:15.000000000 +0000 23372 +++ vim73/src/Makefile 2012-07-20 20:31:17.217644379 +0000 23044 23373 @@ -29,7 +29,7 @@ 23045 23374 # - Uncomment the line "CONF_OPT_X = --without-x" if you have X11 but … … 23147 23476 #CC= gcc -D_POSIX_SOURCE 23148 23477 #CFLAGS= -O2 23149 @@ -1047,8 +1052,9 @@ 23478 @@ -870,6 +875,10 @@ 23479 #CFLAGS = -O -Qtarget=m88110compat 23480 #EXTRA_LIBS = -lgen 23481 23482 +# The value of QUOTESED comes from auto/config.mk. 23483 +# Uncomment the next line to use the default value. 23484 +# QUOTESED = sed -e 's/[\\"]/\\&/g' -e 's/\\"/"/' -e 's/\\";$$/";/' 23485 + 23486 ##################### end of system specific lines ################### }}} 23487 23488 ### Names of the programs and targets {{{1 23489 @@ -1047,8 +1056,9 @@ 23150 23490 INSTALL_DATA = cp 23151 23491 INSTALL_DATA_R = cp -r … … 23158 23498 ### Permissions for binaries {{{1 23159 23499 BINMOD = 755 23160 @@ -1321,15 +13 27,15 @@23500 @@ -1321,15 +1331,15 @@ 23161 23501 .SUFFIXES: .c .o .pro 23162 23502 … … 23173 23513 23174 23514 -LINT_CFLAGS = -DLINT -I. $(PRE_DEFS) $(POST_DEFS) $(LUA_CFLAGS) $(PERL_CFLAGS) $(PYTHON_CFLAGS) -Dinline= -D__extension__= -Dalloca=alloca 23175 +LINT_CFLAGS = -DLINT -I. $(PRE_DEFS) $(POST_DEFS) $(RUBY_CFLAGS) $(LUA_CFLAGS) $(PERL_CFLAGS) $(PYTHON_CFLAGS) -Dinline= -D__extension__= -Dalloca=alloca23515 +LINT_CFLAGS = -DLINT -I. $(PRE_DEFS) $(POST_DEFS) $(RUBY_CFLAGS) $(LUA_CFLAGS) $(PERL_CFLAGS) $(PYTHON_CFLAGS) $(PYTHON3_CFLAGS) -Dinline= -D__extension__= -Dalloca=alloca 23176 23516 23177 23517 LINT_EXTRA = -DUSE_SNIFF -DHANGUL_INPUT -D"__attribute__(x)=" 23178 23518 23179 @@ -1352,7 +13 58,8 @@23519 @@ -1352,7 +1362,8 @@ 23180 23520 $(PYTHON3_LIBS) \ 23181 23521 $(TCL_LIBS) \ … … 23187 23527 # abbreviations 23188 23528 DEST_BIN = $(DESTDIR)$(BINDIR) 23189 @@ -1474,8 +148 1,15 @@23529 @@ -1474,8 +1485,15 @@ 23190 23530 if_python.c if_python3.c if_tcl.c if_ruby.c if_sniff.c \ 23191 23531 gui_beval.c workshop.c wsdebug.c integration.c netbeans.c … … 23204 23544 # Which files to check with lint. Select one of these three lines. ALL_SRC 23205 23545 # checks more, but may not work well for checking a GUI that wasn't configured. 23206 @@ -1486,7 +150 0,7 @@23546 @@ -1486,7 +1504,7 @@ 23207 23547 #LINT_SRC = $(ALL_SRC) 23208 23548 #LINT_SRC = $(BASIC_SRC) … … 23213 23553 objects/blowfish.o \ 23214 23554 objects/charset.o \ 23215 @@ -1507,10 +152 1,8 @@23555 @@ -1507,10 +1525,8 @@ 23216 23556 $(HANGULIN_OBJ) \ 23217 23557 objects/if_cscope.o \ … … 23225 23565 objects/message.o \ 23226 23566 objects/misc1.o \ 23227 @@ -1535,6 +15 47,7 @@23567 @@ -1535,6 +1551,7 @@ 23228 23568 objects/term.o \ 23229 23569 objects/ui.o \ … … 23233 23573 $(GUI_OBJ) \ 23234 23574 $(LUA_OBJ) \ 23235 @@ -1549,6 +156 2,13 @@23575 @@ -1549,6 +1566,13 @@ 23236 23576 $(NETBEANS_OBJ) \ 23237 23577 $(WSDEBUG_OBJ) … … 23247 23587 blowfish.pro \ 23248 23588 buffer.pro \ 23249 @@ -1612,7 +163 2,7 @@23589 @@ -1612,7 +1636,7 @@ 23250 23590 RSRC_DIR = os_mac_rsrc 23251 23591 … … 23256 23596 # Default target is making the executable and tools 23257 23597 all: $(VIMTARGET) $(TOOLS) languages $(GUI_BUNDLE) 23258 @@ -1633,7 +165 3,8 @@23598 @@ -1633,7 +1657,8 @@ 23259 23599 CC="$(CC)" CPPFLAGS="$(CPPFLAGS)" CFLAGS="$(CFLAGS)" \ 23260 23600 LDFLAGS="$(LDFLAGS)" $(CONF_SHELL) srcdir="$(srcdir)" \ … … 23266 23606 $(CONF_OPT_CSCOPE) $(CONF_OPT_MULTIBYTE) $(CONF_OPT_INPUT) \ 23267 23607 $(CONF_OPT_OUTPUT) $(CONF_OPT_GPM) $(CONF_OPT_WORKSHOP) \ 23268 @@ -1694,11 +171 5,12 @@23608 @@ -1694,11 +1719,12 @@ 23269 23609 $(VIMTARGET): auto/config.mk objects $(OBJ) version.c version.h 23270 23610 $(CCC) version.c -o objects/version.o … … 23282 23622 23283 23623 # Build the language specific files if they were unpacked. 23284 @@ -1818,6 +184 0,15 @@23624 @@ -1818,6 +1844,15 @@ 23285 23625 ln -s $(VIMTARGET) vim; \ 23286 23626 fi … … 23298 23638 testclean: 23299 23639 cd testdir; $(MAKE) -f Makefile clean 23300 @@ -1825,6 +18 56,17 @@23640 @@ -1825,6 +1860,17 @@ 23301 23641 cd $(PODIR); $(MAKE) checkclean; \ 23302 23642 fi … … 23316 23656 23317 23657 install_normal: installvim installtools $(INSTALL_LANGS) install-icons 23318 @@ -2258,6 +230 0,7 @@23658 @@ -2258,6 +2304,7 @@ 23319 23659 -rm -f *.o objects/* core $(VIMTARGET).core $(VIMTARGET) vim xxd/*.o 23320 23660 -rm -f $(TOOLS) auto/osdef.h auto/pathdef.c auto/if_perl.c … … 23324 23664 -rm -rf $(APPDIR) 23325 23665 -rm -rf mzscheme_base.c 23326 @@ -2291,6 +233 4,7 @@23666 @@ -2291,6 +2338,7 @@ 23327 23667 ../../testdir/vimrc.unix \ 23328 23668 ../../testdir/*.in \ … … 23332 23672 23333 23673 # Link needed for doing "make install" in a shadow directory. 23334 @@ -2532,7 +2576,7 @@ 23674 @@ -2367,7 +2415,6 @@ 23675 auto/osdef.h: auto/config.h osdef.sh osdef1.h.in osdef2.h.in 23676 CC="$(CC) $(OSDEF_CFLAGS)" srcdir=$(srcdir) sh $(srcdir)/osdef.sh 23677 23678 -QUOTESED = sed -e 's/[\\"]/\\&/g' -e 's/\\"/"/' -e 's/\\";$$/";/' 23679 auto/pathdef.c: Makefile auto/config.mk 23680 -@echo creating $@ 23681 -@echo '/* pathdef.c */' > $@ 23682 @@ -2532,7 +2579,7 @@ 23335 23683 $(CCC) $(PYTHON3_CFLAGS) $(PYTHON3_CFLAGS_EXTRA) -o $@ if_python3.c 23336 23684 … … 23341 23689 objects/if_sniff.o: if_sniff.c 23342 23690 $(CCC) -o $@ if_sniff.c 23343 @@ -2552,6 +259 6,9 @@23691 @@ -2552,6 +2599,9 @@ 23344 23692 objects/memfile.o: memfile.c 23345 23693 $(CCC) -o $@ memfile.c … … 23351 23699 $(CCC) -o $@ memline.c 23352 23700 23353 @@ -2870,7 +29 17,7 @@23701 @@ -2870,7 +2920,7 @@ 23354 23702 objects/os_unix.o: os_unix.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \ 23355 23703 ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \ … … 23360 23708 auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \ 23361 23709 regexp.h gui.h gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h \ 23362 @@ -3009,6 +305 6,10 @@23710 @@ -3009,6 +3059,10 @@ 23363 23711 objects/pty.o: pty.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h ascii.h \ 23364 23712 keymap.h term.h macros.h option.h structs.h regexp.h gui.h gui_beval.h \ … … 23371 23719 auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \ 23372 23720 regexp.h gui.h gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h \ 23373 @@ -3020,7 +307 1,7 @@23721 @@ -3020,7 +3074,7 @@ 23374 23722 objects/if_mzsch.o: if_mzsch.c vim.h auto/config.h feature.h os_unix.h \ 23375 23723 auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \ … … 23380 23728 auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \ 23381 23729 regexp.h gui.h gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h \ 23382 @@ -3041,7 +309 2,7 @@23730 @@ -3041,7 +3095,7 @@ 23383 23731 ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \ 23384 23732 gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h globals.h farsi.h \ … … 23390 23738 arabic.h version.h 23391 23739 diff -Naur vim73.orig/src/VisVim/Commands.cpp vim73/src/VisVim/Commands.cpp 23392 --- vim73.orig/src/VisVim/Commands.cpp 201 2-06-03 23:09:52.932006845+000023393 +++ vim73/src/VisVim/Commands.cpp 2012-0 6-03 23:09:54.592051020+000023740 --- vim73.orig/src/VisVim/Commands.cpp 2010-05-15 11:04:08.000000000 +0000 23741 +++ vim73/src/VisVim/Commands.cpp 2012-07-20 20:31:12.320974199 +0000 23394 23742 @@ -549,7 +549,7 @@ 23395 23743 if (g_bNewTabs) … … 23412 23760 else 23413 23761 diff -Naur vim73.orig/src/arabic.c vim73/src/arabic.c 23414 --- vim73.orig/src/arabic.c 201 2-06-03 23:09:52.924006631+000023415 +++ vim73/src/arabic.c 2012-0 6-03 23:09:55.924086467+000023762 --- vim73.orig/src/arabic.c 2010-05-15 11:04:09.000000000 +0000 23763 +++ vim73/src/arabic.c 2012-07-20 20:31:16.377643778 +0000 23416 23764 @@ -1066,7 +1066,7 @@ 23417 23765 … … 23424 23772 (*mb_char2bytes)(curr_c, buf); 23425 23773 diff -Naur vim73.orig/src/ascii.h vim73/src/ascii.h 23426 --- vim73.orig/src/ascii.h 201 2-06-03 23:09:52.948007269+000023427 +++ vim73/src/ascii.h 2012-0 6-03 23:09:55.076063900+000023774 --- vim73.orig/src/ascii.h 2010-05-15 11:04:07.000000000 +0000 23775 +++ vim73/src/ascii.h 2012-07-20 20:31:13.754308564 +0000 23428 23776 @@ -123,7 +123,7 @@ 23429 23777 #define DCS 0x90 /* Device Control String */ … … 23450 23798 #endif 23451 23799 diff -Naur vim73.orig/src/auto/config.mk vim73/src/auto/config.mk 23452 --- vim73.orig/src/auto/config.mk 201 2-06-03 23:09:52.948007269+000023800 --- vim73.orig/src/auto/config.mk 2010-08-15 13:02:25.000000000 +0000 23453 23801 +++ vim73/src/auto/config.mk 1970-01-01 00:00:00.000000000 +0000 23454 23802 @@ -1,5 +0,0 @@ … … 23459 23807 -VIEWNAME = view 23460 23808 diff -Naur vim73.orig/src/auto/configure vim73/src/auto/configure 23461 --- vim73.orig/src/auto/configure 201 2-06-03 23:09:52.948007269+000023462 +++ vim73/src/auto/configure 2012-0 6-03 23:09:55.372071777+000023809 --- vim73.orig/src/auto/configure 2010-08-13 14:17:15.000000000 +0000 23810 +++ vim73/src/auto/configure 2012-07-20 20:31:17.054310930 +0000 23463 23811 @@ -593,6 +593,7 @@ 23464 23812 … … 23515 23863 CFLAGS="-O" 23516 23864 test "$GCC" = yes && CFLAGS="-O2 -fno-strength-reduce -Wall" 23517 @@ -4726,6 +4743,9 @@ 23865 @@ -4409,15 +4426,18 @@ 23866 echo "" 23867 echo "------------------------------------------" 23868 echo " On z/OS Unix, the environment variable" 23869 - echo " __CC_${ccn}MODE must be set to \"1\"!" 23870 + echo " _CC_${ccn}MODE must be set to \"1\"!" 23871 echo " Do:" 23872 echo " export _CC_${ccn}MODE=1" 23873 echo " and then call configure again." 23874 echo "------------------------------------------" 23875 exit 1 23876 fi 23877 - CFLAGS="$CFLAGS -D_ALL_SOURCE -Wc,float\\(IEEE\\)"; 23878 - LDFLAGS="$LDFLAGS -Wl,EDIT=NO" 23879 + # Set CFLAGS for configure process. 23880 + # This will be reset later for config.mk. 23881 + # Use haltonmsg to force error for missing H files. 23882 + CFLAGS="$CFLAGS -D_ALL_SOURCE -Wc,float(ieee),haltonmsg(3296)"; 23883 + LDFLAGS="$LDFLAGS -Wl,EDIT=NO" 23884 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 23885 $as_echo "yes" >&6; } 23886 ;; 23887 @@ -4726,6 +4746,9 @@ 23518 23888 LUA_CFLAGS="-DDYNAMIC_LUA_DLL=\\\"liblua${vi_cv_version_lua}.so$LUA_SONAME\\\" $LUA_CFLAGS" 23519 23889 fi … … 23525 23895 23526 23896 23527 @@ -4862,16 +488 2,36 @@23897 @@ -4862,16 +4885,36 @@ 23528 23898 else 23529 23899 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 … … 23567 23937 fi 23568 23938 fi 23569 @@ -4883,12 +492 3,22 @@23939 @@ -4883,12 +4926,22 @@ 23570 23940 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"; then 23571 23941 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a" … … 23591 23961 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme -lmzgc" 23592 23962 fi 23593 @@ -4901,10 +495 1,20 @@23963 @@ -4901,10 +4954,20 @@ 23594 23964 fi 23595 23965 if test -d $vi_cv_path_mzscheme_pfx/lib/plt/collects; then … … 23614 23984 fi 23615 23985 MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -I${SCHEME_INC} \ 23616 @@ -5099,6 +51 59,10 @@23986 @@ -5099,6 +5162,10 @@ 23617 23987 PERL_CFLAGS="-DDYNAMIC_PERL_DLL=\\\"$libperl\\\" $PERL_CFLAGS" 23618 23988 fi … … 23625 23995 23626 23996 23627 @@ -5285,9 +53 49,9 @@23997 @@ -5285,9 +5352,9 @@ 23628 23998 23629 23999 PYTHON_LIBS="${vi_cv_path_python_plibs}" … … 23637 24007 PYTHON_SRC="if_python.c" 23638 24008 if test "x$MACOSX" = "xyes"; then 23639 @@ -5298,7 +536 2,7 @@24009 @@ -5298,7 +5365,7 @@ 23640 24010 if test "${vi_cv_var_python_version}" = "1.4"; then 23641 24011 PYTHON_OBJ="$PYTHON_OBJ objects/py_getpath.o" … … 23646 24016 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if -pthread should be used" >&5 23647 24017 $as_echo_n "checking if -pthread should be used... " >&6; } 23648 @@ -5388,6 +545 2,10 @@24018 @@ -5388,6 +5455,10 @@ 23649 24019 $as_echo "too old" >&6; } 23650 24020 fi … … 23657 24027 23658 24028 23659 @@ -5464,6 +553 2,23 @@24029 @@ -5464,6 +5535,23 @@ 23660 24030 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $vi_cv_var_python3_version" >&5 23661 24031 $as_echo "$vi_cv_var_python3_version" >&6; } … … 23681 24051 $as_echo_n "checking Python's install prefix... " >&6; } 23682 24052 if test "${vi_cv_path_python3_pfx+set}" = set; then : 23683 @@ -5514,9 +5 599,13 @@24053 @@ -5514,9 +5602,13 @@ 23684 24054 else 23685 24055 … … 23696 24066 vi_cv_path_python3_conf="$d" 23697 24067 fi 23698 @@ -5545,13 +563 4,12 @@24068 @@ -5545,13 +5637,12 @@ 23699 24069 @echo "python3_BASEMODLIBS='$(BASEMODLIBS)'" 23700 24070 @echo "python3_LIBS='$(LIBS)'" … … 23712 24082 vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-lffi//` 23713 24083 23714 @@ -5560,9 +56 48,9 @@24084 @@ -5560,9 +5651,9 @@ 23715 24085 23716 24086 PYTHON3_LIBS="${vi_cv_path_python3_plibs}" … … 23724 24094 PYTHON3_SRC="if_python3.c" 23725 24095 if test "x$MACOSX" = "xyes"; then 23726 @@ -5667,12 +575 5,12 @@24096 @@ -5667,12 +5758,12 @@ 23727 24097 23728 24098 $as_echo "#define DYNAMIC_PYTHON3 1" >>confdefs.h … … 23741 24111 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 23742 24112 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} 23743 @@ -5689,15 +57 77,17 @@24113 @@ -5689,15 +5780,17 @@ 23744 24114 * Only the first pyhton version used will be switched on. 23745 24115 */ … … 23760 24130 needed = (*simple)("import termios") == -1; 23761 24131 (*final)(); 23762 @@ -5709,7 +5 799,7 @@24132 @@ -5709,7 +5802,7 @@ 23763 24133 int main(int argc, char** argv) 23764 24134 { … … 23769 24139 return !not_needed; 23770 24140 } 23771 @@ -5726,8 +581 6,76 @@24141 @@ -5726,8 +5819,76 @@ 23772 24142 conftest.$ac_objext conftest.beam conftest.$ac_ext 23773 24143 fi 23774 24144 23775 24145 + 23776 23777 24146 + CFLAGS=$cflags_save 24147 + LDFLAGS=$ldflags_save 23778 24148 + 23779 24149 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we can do without RTLD_GLOBAL for Python3" >&5 … … 23840 24210 + 23841 24211 + 23842 +CFLAGS=$cflags_save23843 +LDFLAGS=$ldflags_save24212 CFLAGS=$cflags_save 24213 LDFLAGS=$ldflags_save 23844 24214 + 23845 24215 PYTHON_SRC="if_python.c" 23846 24216 PYTHON_OBJ="objects/if_python.o" 23847 24217 PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${python_INSTSONAME}\\\"" 23848 @@ -6085,6 +624 3,9 @@24218 @@ -6085,6 +6246,9 @@ 23849 24219 $as_echo "too old; need Tcl version 8.0 or later" >&6; } 23850 24220 fi … … 23856 24226 23857 24227 23858 @@ -6103,20 +626 4,20 @@24228 @@ -6103,20 +6267,20 @@ 23859 24229 23860 24230 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_rubyinterp" >&5 … … 23880 24250 set dummy $RUBY_CMD; ac_word=$2 23881 24251 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 23882 @@ -6181,17 +634 2,14 @@24252 @@ -6181,17 +6345,14 @@ 23883 24253 RUBY_LIBS="$rubylibs" 23884 24254 fi … … 23906 24276 23907 24277 if test "X$librubyarg" != "X"; then 23908 @@ -6209,6 +63 67,13 @@24278 @@ -6209,6 +6370,13 @@ 23909 24279 RUBY_PRO="if_ruby.pro" 23910 24280 $as_echo "#define FEAT_RUBY 1" >>confdefs.h … … 23920 24290 { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found; disabling Ruby" >&5 23921 24291 $as_echo "not found; disabling Ruby" >&6; } 23922 @@ -6218,6 +638 3,10 @@24292 @@ -6218,6 +6386,10 @@ 23923 24293 $as_echo "too old; need Ruby version 1.6.0 or later" >&6; } 23924 24294 fi … … 23931 24301 23932 24302 23933 @@ -9768,9 +9937,9 @@ 24303 @@ -8528,8 +8700,13 @@ 24304 if test -z "$SKIP_MOTIF"; then 24305 cppflags_save=$CPPFLAGS 24306 CPPFLAGS="$CPPFLAGS $X_CFLAGS" 24307 - for ac_header in Xm/Xm.h Xm/XpmP.h Xm/JoinSideT.h Xm/TraitP.h Xm/Manager.h \ 24308 - Xm/UnhighlightT.h Xm/Notebook.h 24309 + if test "$zOSUnix" = "yes"; then 24310 + xmheader="Xm/Xm.h" 24311 + else 24312 + xmheader="Xm/Xm.h Xm/XpmP.h Xm/JoinSideT.h Xm/TraitP.h Xm/Manager.h 24313 + Xm/UnhighlightT.h Xm/Notebook.h" 24314 + fi 24315 + for ac_header in $xmheader 24316 do : 24317 as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` 24318 ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" 24319 @@ -8544,7 +8721,7 @@ 24320 done 24321 24322 24323 - if test $ac_cv_header_Xm_XpmP_h = yes; then 24324 + if test "x$ac_cv_header_Xm_XpmP_h" = "xyes"; then 24325 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XpmAttributes_21 in Xm/XpmP.h" >&5 24326 $as_echo_n "checking for XpmAttributes_21 in Xm/XpmP.h... " >&6; } 24327 cat confdefs.h - <<_ACEOF >conftest.$ac_ext 24328 @@ -9768,9 +9945,9 @@ 23934 24329 else 23935 24330 { $as_echo "$as_me:${as_lineno-$LINENO}: result: empty: automatic terminal library selection" >&5 … … 23944 24339 for libname in $tlibs; do 23945 24340 as_ac_Lib=`$as_echo "ac_cv_lib_${libname}''_tgetent" | $as_tr_sh` 23946 @@ -11159,7 +113 28,47 @@24341 @@ -11159,7 +11336,47 @@ 23947 24342 rm -f core conftest.err conftest.$ac_objext \ 23948 24343 conftest$ac_exeext conftest.$ac_ext … … 23993 24388 cat confdefs.h - <<_ACEOF >conftest.$ac_ext 23994 24389 /* end confdefs.h. */ 23995 @@ -11186,6 +11 395,8 @@24390 @@ -11186,6 +11403,8 @@ 23996 24391 fi 23997 24392 rm -f core conftest.err conftest.$ac_objext \ … … 24002 24397 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for AIX ACL support" >&5 24003 24398 $as_echo_n "checking for AIX ACL support... " >&6; } 24004 @@ -11642,7 +118 53,8 @@24399 @@ -11642,7 +11861,8 @@ 24005 24400 { $as_echo "$as_me:${as_lineno-$LINENO}: checking uint32_t is 32 bits" >&5 24006 24401 $as_echo_n "checking uint32_t is 32 bits... " >&6; } … … 24012 24407 cat confdefs.h - <<_ACEOF >conftest.$ac_ext 24013 24408 /* end confdefs.h. */ 24014 @@ -11915,6 +121 27,10 @@24409 @@ -11915,6 +12135,10 @@ 24015 24410 test -f tags && mv tags tags.save 24016 24411 if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&5 2>&1; then … … 24023 24418 TAGPRG="ctags" 24024 24419 (eval etags /dev/null) < /dev/null 1>&5 2>&1 && TAGPRG="etags" 24025 @@ -12344,10 +1256 0,10 @@24420 @@ -12344,10 +12568,10 @@ 24026 24421 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 24027 24422 $as_echo "no" >&6; } … … 24036 24431 $as_echo "yes" >&6; } 24037 24432 else 24038 @@ -12357,6 +125 73,23@@24433 @@ -12357,6 +12581,28 @@ 24039 24434 fi 24040 24435 … … 24057 24452 + 24058 24453 + 24454 +# IBM z/OS reset CFLAGS for config.mk 24455 +if test "$zOSUnix" = "yes"; then 24456 + CFLAGS="-D_ALL_SOURCE -Wc,float\(ieee\),dll" 24457 +fi 24458 + 24059 24459 ac_config_files="$ac_config_files auto/config.mk:config.mk.in" 24060 24460 24061 24461 cat >confcache <<\_ACEOF 24062 24462 diff -Naur vim73.orig/src/blowfish.c vim73/src/blowfish.c 24063 --- vim73.orig/src/blowfish.c 201 2-06-03 23:09:52.932006845+000024064 +++ vim73/src/blowfish.c 2012-0 6-03 23:09:53.732028133+000024463 --- vim73.orig/src/blowfish.c 2010-07-14 14:45:39.000000000 +0000 24464 +++ vim73/src/blowfish.c 2012-07-20 20:31:09.647638940 +0000 24065 24465 @@ -413,6 +413,7 @@ 24066 24466 int salt_len; … … 24083 24483 mch_memmove(sbx, sbi, 4 * 4 * 256); 24084 24484 diff -Naur vim73.orig/src/buffer.c vim73/src/buffer.c 24085 --- vim73.orig/src/buffer.c 2012-06-03 23:09:52.920006524 +0000 24086 +++ vim73/src/buffer.c 2012-06-03 23:09:55.588077525 +0000 24087 @@ -64,6 +64,9 @@ 24485 --- vim73.orig/src/buffer.c 2010-08-13 09:14:35.000000000 +0000 24486 +++ vim73/src/buffer.c 2012-07-20 20:31:18.240978445 +0000 24487 @@ -57,13 +57,15 @@ 24488 24489 #if defined(FEAT_SIGNS) 24490 static void insert_sign __ARGS((buf_T *buf, signlist_T *prev, signlist_T *next, int id, linenr_T lnum, int typenr)); 24491 -static void buf_delete_signs __ARGS((buf_T *buf)); 24492 #endif 24493 24494 #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX) 24088 24495 static char *msg_loclist = N_("[Location List]"); 24089 24496 static char *msg_qflist = N_("[Quickfix List]"); … … 24095 24502 /* 24096 24503 * Open current buffer, that is: open the memfile and read the file into 24097 @@ -96,7 +9 9,7 @@24504 @@ -96,7 +98,7 @@ 24098 24505 * There MUST be a memfile, otherwise we can't do anything 24099 24506 * If we can't create one for the current buffer, take another buffer … … 24104 24511 if (curbuf->b_ml.ml_mfp != NULL) 24105 24512 break; 24106 @@ -316,12 +31 9,17 @@24513 @@ -316,12 +318,17 @@ 24107 24514 * get a new buffer very soon! 24108 24515 * … … 24123 24530 #ifdef FEAT_AUTOCMD 24124 24531 int is_curbuf; 24125 @@ -371,8 +379,12 @@ 24532 @@ -369,19 +376,35 @@ 24533 /* When the buffer is no longer in a window, trigger BufWinLeave */ 24534 if (buf->b_nwindows == 1) 24126 24535 { 24536 + buf->b_closing = TRUE; 24127 24537 apply_autocmds(EVENT_BUFWINLEAVE, buf->b_fname, buf->b_fname, 24128 24538 FALSE, buf); 24129 24539 - if (!buf_valid(buf)) /* autocommands may delete the buffer */ 24130 + /* Return if autocommands deleted the buffer or made it the only one. */ 24131 + if (!buf_valid(buf) || (abort_if_last && one_window())) 24540 + if (!buf_valid(buf)) 24132 24541 + { 24542 + /* Autocommands deleted the buffer. */ 24543 +aucmd_abort: 24133 24544 + EMSG(_(e_auabort)); 24134 24545 return; 24135 24546 + } 24547 + buf->b_closing = FALSE; 24548 + if (abort_if_last && one_window()) 24549 + /* Autocommands made this the only window. */ 24550 + goto aucmd_abort; 24136 24551 24137 24552 /* When the buffer becomes hidden, but is not unloaded, trigger 24138 24553 * BufHidden */ 24139 @@ -380,8 +392,13 @@ 24554 if (!unload_buf) 24140 24555 { 24556 + buf->b_closing = TRUE; 24141 24557 apply_autocmds(EVENT_BUFHIDDEN, buf->b_fname, buf->b_fname, 24142 24558 FALSE, buf); 24143 24559 - if (!buf_valid(buf)) /* autocmds may delete the buffer */ 24144 + /* Return if autocommands deleted the buffer or made it the only 24145 + * one. */ 24146 + if (!buf_valid(buf) || (abort_if_last && one_window())) 24147 + { 24148 + EMSG(_(e_auabort)); 24149 return; 24150 + } 24560 - return; 24561 + if (!buf_valid(buf)) 24562 + /* Autocommands deleted the buffer. */ 24563 + goto aucmd_abort; 24564 + buf->b_closing = FALSE; 24565 + if (abort_if_last && one_window()) 24566 + /* Autocommands made this the only window. */ 24567 + goto aucmd_abort; 24151 24568 } 24152 24569 # ifdef FEAT_EVAL 24153 24570 if (aborting()) /* autocmds may abort script processing */ 24154 @@ -416,6 +43 3,14 @@24571 @@ -416,6 +439,14 @@ 24155 24572 #endif 24156 24573 … … 24167 24584 #ifdef FEAT_AUTOCMD 24168 24585 /* Autocommands may have deleted the buffer. */ 24169 @@ -560,6 +585,11 @@ 24586 @@ -527,6 +558,7 @@ 24587 #ifdef FEAT_AUTOCMD 24588 int is_curbuf = (buf == curbuf); 24589 24590 + buf->b_closing = TRUE; 24591 apply_autocmds(EVENT_BUFUNLOAD, buf->b_fname, buf->b_fname, FALSE, buf); 24592 if (!buf_valid(buf)) /* autocommands may delete the buffer */ 24593 return; 24594 @@ -543,6 +575,7 @@ 24595 if (!buf_valid(buf)) /* autocommands may delete the buffer */ 24596 return; 24597 } 24598 + buf->b_closing = FALSE; 24599 # ifdef FEAT_EVAL 24600 if (aborting()) /* autocmds may abort script processing */ 24601 return; 24602 @@ -560,6 +593,11 @@ 24170 24603 #ifdef FEAT_DIFF 24171 24604 diff_buf_delete(buf); /* Can't use 'diff' for unloaded buffer. */ … … 24179 24612 #ifdef FEAT_FOLDING 24180 24613 /* No folds in an empty buffer. */ 24181 @@ -639,6 +6 69,9 @@24614 @@ -639,6 +677,9 @@ 24182 24615 { 24183 24616 clear_wininfo(buf); /* including window-local options */ … … 24189 24622 #ifdef FEAT_EVAL 24190 24623 vars_clear(&buf->b_vars.dv_hashtab); /* free all internal variables */ 24191 @@ -661,9 + 694,6 @@24624 @@ -661,9 +702,6 @@ 24192 24625 vim_free(buf->b_start_fenc); 24193 24626 buf->b_start_fenc = NULL; … … 24199 24632 24200 24633 /* 24201 @@ -762,7 + 792,7 @@24634 @@ -762,7 +800,7 @@ 24202 24635 * open a new, empty buffer. */ 24203 24636 swap_exists_action = SEA_NONE; /* don't want it again */ … … 24208 24641 old_curbuf = buflist_new(NULL, NULL, 1L, BLN_CURBUF | BLN_LISTED); 24209 24642 if (old_curbuf != NULL) 24210 @@ -1109,7 +11 39,7 @@24643 @@ -1109,7 +1147,7 @@ 24211 24644 * if the buffer still exists. 24212 24645 */ … … 24217 24650 } 24218 24651 24219 @@ -1133,7 +1163,7 @@ 24652 @@ -1120,6 +1158,9 @@ 24653 * a window with this buffer. 24654 */ 24655 while (buf == curbuf 24656 +# ifdef FEAT_AUTOCMD 24657 + && !(curwin->w_closing || curwin->w_buffer->b_closing) 24658 +# endif 24659 && (firstwin != lastwin || first_tabpage->tp_next != NULL)) 24660 win_close(curwin, FALSE); 24661 #endif 24662 @@ -1133,7 +1174,7 @@ 24220 24663 close_windows(buf, FALSE); 24221 24664 #endif … … 24226 24669 } 24227 24670 24228 @@ -1288,9 +13 18,12 @@24671 @@ -1288,9 +1329,12 @@ 24229 24672 /* Go to the other buffer. */ 24230 24673 set_curbuf(buf, action); … … 24241 24684 24242 24685 #if defined(FEAT_AUTOCMD) && defined(FEAT_EVAL) 24243 @@ -1343,6 +13 76,10 @@24686 @@ -1343,6 +1387,10 @@ 24244 24687 # endif 24245 24688 #endif … … 24252 24695 if (unload) 24253 24696 close_windows(prevbuf, FALSE); 24254 @@ -1358,7 +1395,7 @@ 24697 @@ -1353,22 +1401,34 @@ 24698 if (buf_valid(prevbuf)) 24699 #endif 24700 { 24701 +#ifdef FEAT_WINDOWS 24702 + win_T *previouswin = curwin; 24703 +#endif 24704 if (prevbuf == curbuf) 24705 u_sync(FALSE); 24255 24706 close_buffer(prevbuf == curwin->w_buffer ? curwin : NULL, prevbuf, 24256 24707 unload ? action : (action == DOBUF_GOTO … … 24258 24709 - && !bufIsChanged(prevbuf)) ? DOBUF_UNLOAD : 0); 24259 24710 + && !bufIsChanged(prevbuf)) ? DOBUF_UNLOAD : 0, FALSE); 24711 +#ifdef FEAT_WINDOWS 24712 + if (curwin != previouswin && win_valid(previouswin)) 24713 + /* autocommands changed curwin, Grr! */ 24714 + curwin = previouswin; 24715 +#endif 24260 24716 } 24261 24717 } 24262 24718 #ifdef FEAT_AUTOCMD 24263 @@ -1392,10 +1429,6 @@ 24719 /* An autocommand may have deleted "buf", already entered it (e.g., when 24720 - * it did ":bunload") or aborted the script processing! */ 24721 + * it did ":bunload") or aborted the script processing! 24722 + * If curwin->w_buffer is null, enter_buffer() will make it valid again */ 24723 + if ((buf_valid(buf) && buf != curbuf 24724 # ifdef FEAT_EVAL 24725 - if (buf_valid(buf) && buf != curbuf && !aborting()) 24726 -# else 24727 - if (buf_valid(buf) && buf != curbuf) 24728 + && !aborting() 24729 +# endif 24730 +# ifdef FEAT_WINDOWS 24731 + ) || curwin->w_buffer == NULL 24732 # endif 24733 + ) 24734 #endif 24735 enter_buffer(buf); 24736 } 24737 @@ -1392,10 +1452,6 @@ 24264 24738 foldUpdateAll(curwin); /* update folds (later). */ 24265 24739 #endif … … 24272 24746 curwin->w_buffer = buf; 24273 24747 curbuf = buf; 24274 @@ -1406,6 +14 39,10 @@24748 @@ -1406,6 +1462,10 @@ 24275 24749 diff_buf_add(curbuf); 24276 24750 #endif … … 24283 24757 curwin->w_cursor.lnum = 1; 24284 24758 curwin->w_cursor.col = 0; 24285 @@ -1805,9 +1842,6 @@ 24759 @@ -1687,7 +1747,8 @@ 24760 buf->b_wininfo->wi_win = curwin; 24761 24762 #ifdef FEAT_EVAL 24763 - init_var_dict(&buf->b_vars, &buf->b_bufvar); /* init b: variables */ 24764 + /* init b: variables */ 24765 + init_var_dict(&buf->b_vars, &buf->b_bufvar, VAR_SCOPE); 24766 #endif 24767 #ifdef FEAT_SYN_HL 24768 hash_init(&buf->b_s.b_keywtab); 24769 @@ -1805,9 +1866,6 @@ 24286 24770 #ifdef FEAT_AUTOCMD 24287 24771 clear_string_option(&buf->b_p_ft); … … 24293 24777 clear_string_option(&buf->b_p_cink); 24294 24778 clear_string_option(&buf->b_p_cino); 24295 @@ -1917,9 +19 51,7 @@24779 @@ -1917,9 +1975,7 @@ 24296 24780 tabpage_new(); 24297 24781 else if (win_split(0, 0) == FAIL) /* Open in a new window */ … … 24304 24788 } 24305 24789 #endif 24306 @@ -2526,6 +25 58,9 @@24790 @@ -2526,6 +2582,9 @@ 24307 24791 if (p_fdls >= 0) 24308 24792 curwin->w_p_fdl = p_fdls; … … 24314 24798 24315 24799 /* 24316 @@ -2690,7 +27 25,8 @@24800 @@ -2690,7 +2749,8 @@ 24317 24801 vim_free(ffname); 24318 24802 return FAIL; … … 24324 24808 sfname = vim_strsave(sfname); 24325 24809 if (ffname == NULL || sfname == NULL) 24326 @@ -3175,7 +32 11,7 @@24810 @@ -3175,7 +3235,7 @@ 24327 24811 /* format: "fname + (path) (1 of 2) - VIM" */ 24328 24812 … … 24333 24817 { 24334 24818 p = transstr(gettail(curbuf->b_fname)); 24335 @@ -3231,7 +32 67,7 @@24819 @@ -3231,7 +3291,7 @@ 24336 24820 if (serverName != NULL) 24337 24821 { … … 24342 24826 else 24343 24827 #endif 24344 @@ -3240,9 +3 276,8 @@24828 @@ -3240,9 +3300,8 @@ 24345 24829 if (maxlen > 0) 24346 24830 { … … 24354 24838 } 24355 24839 } 24356 @@ -3363,7 +3 398,8 @@24840 @@ -3363,7 +3422,8 @@ 24357 24841 * or truncated if too long, fillchar is used for all whitespace. 24358 24842 */ … … 24364 24848 char_u *out; /* buffer to write into != NameBuff */ 24365 24849 size_t outlen; /* length of out[] */ 24366 @@ -3458,6 +3 494,18 @@24850 @@ -3458,6 +3518,18 @@ 24367 24851 prevchar_isitem = FALSE; 24368 24852 for (s = usefmt; *s; ) … … 24383 24867 prevchar_isflag = prevchar_isitem = FALSE; 24384 24868 24385 @@ -3473,6 +35 21,8 @@24869 @@ -3473,6 +3545,8 @@ 24386 24870 * Handle one '%' item. 24387 24871 */ … … 24392 24876 { 24393 24877 if (p + 1 >= out + outlen) 24394 @@ -4355,7 +44 05,12 @@24878 @@ -4355,7 +4429,12 @@ 24395 24879 { 24396 24880 int i; … … 24406 24890 int use_firstwin = FALSE; /* use first window for arglist */ 24407 24891 int split_ret = OK; 24408 @@ -4364,6 +44 19,8 @@24892 @@ -4364,6 +4443,8 @@ 24409 24893 buf_T *buf; 24410 24894 tabpage_T *tpnext; … … 24415 24899 tabpage_T *new_curtab = NULL; 24416 24900 24417 @@ -4380,6 +44 37,15 @@24901 @@ -4380,6 +4461,15 @@ 24418 24902 if (opened == NULL) 24419 24903 return; … … 24431 24915 need_mouse_correct = TRUE; 24432 24916 #endif 24433 @@ -4401,36 +4467,51 @@ 24917 @@ -4392,7 +4482,7 @@ 24918 * When the ":tab" modifier was used do this for all tab pages. 24919 */ 24920 if (had_tab > 0) 24921 - goto_tabpage_tp(first_tabpage); 24922 + goto_tabpage_tp(first_tabpage, TRUE); 24923 for (;;) 24924 { 24925 tpnext = curtab->tp_next; 24926 @@ -4401,36 +4491,51 @@ 24434 24927 wpnext = wp->w_next; 24435 24928 buf = wp->w_buffer; … … 24461 24954 + 24462 24955 + if (old_curtab == curtab) 24463 { 24464 - opened[i] = TRUE; 24956 + { 24465 24957 + ++weight; 24466 24958 + if (old_curwin == wp) … … 24469 24961 + 24470 24962 + if (weight > (int)opened[i]) 24471 + { 24963 { 24964 - opened[i] = TRUE; 24472 24965 + opened[i] = (char_u)weight; 24473 24966 if (i == 0) … … 24493 24986 } 24494 24987 break; 24495 @@ -4439,7 +45 20,7 @@24988 @@ -4439,7 +4544,7 @@ 24496 24989 } 24497 24990 wp->w_arg_idx = i; … … 24502 24995 if (P_HID(buf) || forceit || buf->b_nwindows > 1 24503 24996 || !bufIsChanged(buf)) 24504 @@ -4461,7 +45 42,8 @@24997 @@ -4461,7 +4566,8 @@ 24505 24998 } 24506 24999 #ifdef FEAT_WINDOWS … … 24512 25005 use_firstwin = TRUE; 24513 25006 #ifdef FEAT_WINDOWS 24514 @@ -4495,20 +4577,16 @@ 25007 @@ -4488,27 +4594,23 @@ 25008 if (!valid_tabpage(tpnext)) 25009 tpnext = first_tabpage; /* start all over...*/ 25010 # endif 25011 - goto_tabpage_tp(tpnext); 25012 + goto_tabpage_tp(tpnext, TRUE); 25013 } 25014 25015 /* 24515 25016 * Open a window for files in the argument list that don't have one. 24516 25017 * ARGCOUNT may change while doing this, because of autocommands. … … 24537 25038 #ifdef FEAT_WINDOWS 24538 25039 /* ":drop all" should re-use an empty window to avoid "--remote-tab" 24539 @@ -4518,11 +4 596,11 @@25040 @@ -4518,11 +4620,11 @@ 24540 25041 use_firstwin = TRUE; 24541 25042 #endif … … 24551 25052 /* Move the already present window to below the current window */ 24552 25053 if (curwin->w_arg_idx != i) 24553 @@ -4531,7 +46 09,13 @@25054 @@ -4531,7 +4633,13 @@ 24554 25055 { 24555 25056 if (wpnext->w_arg_idx == i) … … 24566 25067 } 24567 25068 } 24568 @@ -4586, 6 +4670,14@@25069 @@ -4586,9 +4694,17 @@ 24569 25070 #ifdef FEAT_AUTOCMD 24570 25071 --autocmd_no_enter; … … 24574 25075 + { 24575 25076 + if (valid_tabpage(last_curtab)) 24576 + goto_tabpage_tp(last_curtab );25077 + goto_tabpage_tp(last_curtab, TRUE); 24577 25078 + if (win_valid(last_curwin)) 24578 25079 + win_enter(last_curwin, FALSE); … … 24580 25081 /* to window with first arg */ 24581 25082 if (valid_tabpage(new_curtab)) 24582 goto_tabpage_tp(new_curtab); 24583 @@ -5465,7 +5557,7 @@ 25083 - goto_tabpage_tp(new_curtab); 25084 + goto_tabpage_tp(new_curtab, TRUE); 25085 if (win_valid(new_curwin)) 25086 win_enter(new_curwin, FALSE); 25087 25088 @@ -4640,7 +4756,7 @@ 25089 */ 25090 #ifdef FEAT_WINDOWS 25091 if (had_tab > 0) 25092 - goto_tabpage_tp(first_tabpage); 25093 + goto_tabpage_tp(first_tabpage, TRUE); 25094 for (;;) 25095 { 25096 #endif 25097 @@ -4658,7 +4774,11 @@ 25098 #ifdef FEAT_WINDOWS 25099 || (had_tab > 0 && wp != firstwin) 25100 #endif 25101 - ) && firstwin != lastwin) 25102 + ) && firstwin != lastwin 25103 +#ifdef FEAT_AUTOCMD 25104 + && !(wp->w_closing || wp->w_buffer->b_closing) 25105 +#endif 25106 + ) 25107 { 25108 win_close(wp, FALSE); 25109 #ifdef FEAT_AUTOCMD 25110 @@ -4676,7 +4796,7 @@ 25111 /* Without the ":tab" modifier only do the current tab page. */ 25112 if (had_tab == 0 || tpnext == NULL) 25113 break; 25114 - goto_tabpage_tp(tpnext); 25115 + goto_tabpage_tp(tpnext, TRUE); 25116 } 25117 #endif 25118 25119 @@ -5417,7 +5537,7 @@ 25120 /* 25121 * Delete signs in buffer "buf". 25122 */ 25123 - static void 25124 + void 25125 buf_delete_signs(buf) 25126 buf_T *buf; 25127 { 25128 @@ -5465,7 +5585,7 @@ 24584 25129 buf = firstbuf; 24585 25130 else … … 24590 25135 if (buf->b_signlist != NULL) 24591 25136 { 24592 @@ -5473,7 +55 65,7 @@25137 @@ -5473,7 +5593,7 @@ 24593 25138 MSG_PUTS_ATTR(lbuf, hl_attr(HLF_D)); 24594 25139 msg_putchar('\n'); … … 24599 25144 vim_snprintf(lbuf, BUFSIZ, _(" line=%ld id=%d name=%s"), 24600 25145 (long)p->lnum, p->id, sign_typenr2name(p->typenr)); 24601 @@ -5606,7 +5 698,7 @@25146 @@ -5606,7 +5726,7 @@ 24602 25147 if (!aucmd) /* Don't trigger BufDelete autocommands here. */ 24603 25148 block_autocmds(); … … 24609 25154 unblock_autocmds(); 24610 25155 diff -Naur vim73.orig/src/charset.c vim73/src/charset.c 24611 --- vim73.orig/src/charset.c 201 2-06-03 23:09:52.948007269+000024612 +++ vim73/src/charset.c 2012-0 6-03 23:09:55.892085615+000025156 --- vim73.orig/src/charset.c 2010-08-12 18:16:04.000000000 +0000 25157 +++ vim73/src/charset.c 2012-07-20 20:31:16.277643707 +0000 24613 25158 @@ -463,41 +463,42 @@ 24614 25159 if (enc_utf8) … … 24712 25257 } 24713 25258 diff -Naur vim73.orig/src/config.h.in vim73/src/config.h.in 24714 --- vim73.orig/src/config.h.in 201 2-06-03 23:09:52.956007482+000024715 +++ vim73/src/config.h.in 2012-0 6-03 23:09:55.372071777+000025259 --- vim73.orig/src/config.h.in 2010-08-13 13:45:27.000000000 +0000 25260 +++ vim73/src/config.h.in 2012-07-20 20:31:14.604309173 +0000 24716 25261 @@ -346,9 +346,15 @@ 24717 25262 /* Define if dynamic python does not require RTLD_GLOBAL */ … … 24739 25284 24740 25285 diff -Naur vim73.orig/src/config.mk.in vim73/src/config.mk.in 24741 --- vim73.orig/src/config.mk.in 201 2-06-03 23:09:52.952007375+000024742 +++ vim73/src/config.mk.in 2012-0 6-03 23:09:53.304016743+000025286 --- vim73.orig/src/config.mk.in 2010-07-17 15:28:51.000000000 +0000 25287 +++ vim73/src/config.mk.in 2012-07-20 20:31:08.224304578 +0000 24743 25288 @@ -30,6 +30,7 @@ 24744 25289 CPP = @CPP@ … … 24750 25295 X_PRE_LIBS = @X_PRE_LIBS@ 24751 25296 diff -Naur vim73.orig/src/configure.in vim73/src/configure.in 24752 --- vim73.orig/src/configure.in 201 2-06-03 23:09:52.948007269+000024753 +++ vim73/src/configure.in 2012-0 6-03 23:09:55.368071671+000025297 --- vim73.orig/src/configure.in 2010-08-13 14:15:17.000000000 +0000 25298 +++ vim73/src/configure.in 2012-07-20 20:31:17.044310922 +0000 24754 25299 @@ -28,6 +28,16 @@ 24755 25300 AC_HEADER_STDC … … 24769 25314 if test -z "$CFLAGS"; then 24770 25315 CFLAGS="-O" 24771 @@ -491,6 +501,9 @@ 25316 @@ -319,15 +329,18 @@ 25317 echo "" 25318 echo "------------------------------------------" 25319 echo " On z/OS Unix, the environment variable" 25320 - echo " __CC_${ccn}MODE must be set to \"1\"!" 25321 + echo " _CC_${ccn}MODE must be set to \"1\"!" 25322 echo " Do:" 25323 echo " export _CC_${ccn}MODE=1" 25324 echo " and then call configure again." 25325 echo "------------------------------------------" 25326 exit 1 25327 fi 25328 - CFLAGS="$CFLAGS -D_ALL_SOURCE -Wc,float\\(IEEE\\)"; 25329 - LDFLAGS="$LDFLAGS -Wl,EDIT=NO" 25330 + # Set CFLAGS for configure process. 25331 + # This will be reset later for config.mk. 25332 + # Use haltonmsg to force error for missing H files. 25333 + CFLAGS="$CFLAGS -D_ALL_SOURCE -Wc,float(ieee),haltonmsg(3296)"; 25334 + LDFLAGS="$LDFLAGS -Wl,EDIT=NO" 25335 AC_MSG_RESULT(yes) 25336 ;; 25337 *) zOSUnix="no"; 25338 @@ -491,6 +504,9 @@ 24772 25339 LUA_CFLAGS="-DDYNAMIC_LUA_DLL=\\\"liblua${vi_cv_version_lua}.so$LUA_SONAME\\\" $LUA_CFLAGS" 24773 25340 fi … … 24779 25346 AC_SUBST(LUA_OBJ) 24780 25347 AC_SUBST(LUA_PRO) 24781 @@ -568,13 +58 1,27 @@25348 @@ -568,13 +584,27 @@ 24782 25349 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include/plt 24783 25350 else … … 24811 25378 fi 24812 25379 fi 24813 @@ -586,13 +61 3,23 @@25380 @@ -586,13 +616,23 @@ 24814 25381 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"; then 24815 25382 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a" … … 24836 25403 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme -lmzgc" 24837 25404 fi 24838 @@ -607,10 +64 4,20 @@25405 @@ -607,10 +647,20 @@ 24839 25406 fi 24840 25407 if test -d $vi_cv_path_mzscheme_pfx/lib/plt/collects; then … … 24858 25425 MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/mzc" 24859 25426 fi 24860 @@ -747,6 +79 4,10 @@25427 @@ -747,6 +797,10 @@ 24861 25428 PERL_CFLAGS="-DDYNAMIC_PERL_DLL=\\\"$libperl\\\" $PERL_CFLAGS" 24862 25429 fi … … 24869 25436 AC_SUBST(shrpenv) 24870 25437 AC_SUBST(PERL_SRC) 24871 @@ -857,9 +9 08,9 @@25438 @@ -857,9 +911,9 @@ 24872 25439 24873 25440 PYTHON_LIBS="${vi_cv_path_python_plibs}" … … 24881 25448 PYTHON_SRC="if_python.c" 24882 25449 dnl For Mac OSX 10.2 config.o is included in the Python library. 24883 @@ -871,7 +92 2,7 @@25450 @@ -871,7 +925,7 @@ 24884 25451 if test "${vi_cv_var_python_version}" = "1.4"; then 24885 25452 PYTHON_OBJ="$PYTHON_OBJ objects/py_getpath.o" … … 24890 25457 dnl On FreeBSD linking with "-pthread" is required to use threads. 24891 25458 dnl _THREAD_SAFE must be used for compiling then. 24892 @@ -932,6 +98 3,10 @@25459 @@ -932,6 +986,10 @@ 24893 25460 AC_MSG_RESULT(too old) 24894 25461 fi … … 24901 25468 24902 25469 AC_SUBST(PYTHON_CONFDIR) 24903 @@ -958,6 +101 3,17 @@25470 @@ -958,6 +1016,17 @@ 24904 25471 ${vi_cv_path_python3} -c 'import sys; print(sys.version[:3])'` 24905 25472 ]]) … … 24919 25486 AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python3_pfx, 24920 25487 [ vi_cv_path_python3_pfx=` 24921 @@ -987,9 +105 3,13 @@25488 @@ -987,9 +1056,13 @@ 24922 25489 AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python3_conf, 24923 25490 [ … … 24934 25501 vi_cv_path_python3_conf="$d" 24935 25502 fi 24936 @@ -1014,14 +108 4,13 @@25503 @@ -1014,14 +1087,13 @@ 24937 25504 @echo "python3_BASEMODLIBS='$(BASEMODLIBS)'" 24938 25505 @echo "python3_LIBS='$(LIBS)'" … … 24951 25518 vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-ltermcap//` 24952 25519 vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-lffi//` 24953 @@ -1029,9 +1 098,9 @@25520 @@ -1029,9 +1101,9 @@ 24954 25521 24955 25522 PYTHON3_LIBS="${vi_cv_path_python3_plibs}" … … 24963 25530 PYTHON3_SRC="if_python3.c" 24964 25531 dnl For Mac OSX 10.2 config.o is included in the Python library. 24965 @@ -1109,11 +11 78,12 @@25532 @@ -1109,11 +1181,12 @@ 24966 25533 if test "$python_ok" = yes && test "$python3_ok" = yes; then 24967 25534 AC_DEFINE(DYNAMIC_PYTHON) … … 24979 25546 #include <dlfcn.h> 24980 25547 /* If this program fails, then RTLD_GLOBAL is needed. 24981 @@ -1122,15 +119 2,17 @@25548 @@ -1122,15 +1195,17 @@ 24982 25549 * Only the first pyhton version used will be switched on. 24983 25550 */ … … 24998 25565 needed = (*simple)("import termios") == -1; 24999 25566 (*final)(); 25000 @@ -1142,13 +121 4,61 @@25567 @@ -1142,13 +1217,61 @@ 25001 25568 int main(int argc, char** argv) 25002 25569 { … … 25009 25576 [AC_MSG_RESULT(yes);AC_DEFINE(PY_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)]) 25010 25577 + 25011 25012 25578 + CFLAGS=$cflags_save 25579 + LDFLAGS=$ldflags_save 25013 25580 + 25014 25581 + AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL for Python3) … … 25055 25622 + [AC_MSG_RESULT(yes);AC_DEFINE(PY3_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)]) 25056 25623 + 25057 +CFLAGS=$cflags_save25058 +LDFLAGS=$ldflags_save25624 CFLAGS=$cflags_save 25625 LDFLAGS=$ldflags_save 25059 25626 + 25060 25627 PYTHON_SRC="if_python.c" 25061 25628 PYTHON_OBJ="objects/if_python.o" 25062 25629 PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${python_INSTSONAME}\\\"" 25063 @@ -1290,6 +141 0,9 @@25630 @@ -1290,6 +1413,9 @@ 25064 25631 AC_MSG_RESULT(too old; need Tcl version 8.0 or later) 25065 25632 fi … … 25071 25638 AC_SUBST(TCL_SRC) 25072 25639 AC_SUBST(TCL_OBJ) 25073 @@ -1299,15 +142 2,15 @@25640 @@ -1299,15 +1425,15 @@ 25074 25641 25075 25642 AC_MSG_CHECKING(--enable-rubyinterp argument) … … 25091 25658 if test "X$vi_cv_path_ruby" != "X"; then 25092 25659 AC_MSG_CHECKING(Ruby version) 25093 @@ -1329,18 +145 2,15 @@25660 @@ -1329,18 +1455,15 @@ 25094 25661 RUBY_LIBS="$rubylibs" 25095 25662 fi … … 25119 25686 25120 25687 if test "X$librubyarg" != "X"; then 25121 @@ -1360,6 +148 0,12 @@25688 @@ -1360,6 +1483,12 @@ 25122 25689 RUBY_OBJ="objects/if_ruby.o" 25123 25690 RUBY_PRO="if_ruby.pro" … … 25132 25699 AC_MSG_RESULT(not found; disabling Ruby) 25133 25700 fi 25134 @@ -1367,6 +149 3,10 @@25701 @@ -1367,6 +1496,10 @@ 25135 25702 AC_MSG_RESULT(too old; need Ruby version 1.6.0 or later) 25136 25703 fi … … 25143 25710 AC_SUBST(RUBY_SRC) 25144 25711 AC_SUBST(RUBY_OBJ) 25145 @@ -2529,13 +2659,14 @@ 25712 @@ -2248,10 +2381,15 @@ 25713 if test -z "$SKIP_MOTIF"; then 25714 cppflags_save=$CPPFLAGS 25715 CPPFLAGS="$CPPFLAGS $X_CFLAGS" 25716 - AC_CHECK_HEADERS(Xm/Xm.h Xm/XpmP.h Xm/JoinSideT.h Xm/TraitP.h Xm/Manager.h \ 25717 - Xm/UnhighlightT.h Xm/Notebook.h) 25718 + if test "$zOSUnix" = "yes"; then 25719 + xmheader="Xm/Xm.h" 25720 + else 25721 + xmheader="Xm/Xm.h Xm/XpmP.h Xm/JoinSideT.h Xm/TraitP.h Xm/Manager.h 25722 + Xm/UnhighlightT.h Xm/Notebook.h" 25723 + fi 25724 + AC_CHECK_HEADERS($xmheader) 25725 25726 - if test $ac_cv_header_Xm_XpmP_h = yes; then 25727 + if test "x$ac_cv_header_Xm_XpmP_h" = "xyes"; then 25728 dnl Solaris uses XpmAttributes_21, very annoying. 25729 AC_MSG_CHECKING([for XpmAttributes_21 in Xm/XpmP.h]) 25730 AC_TRY_COMPILE([#include <Xm/XpmP.h>], [XpmAttributes_21 attr;], 25731 @@ -2529,13 +2667,14 @@ 25146 25732 AC_MSG_RESULT([empty: automatic terminal library selection]) 25147 25733 dnl On HP-UX 10.10 termcap or termlib should be used instead of … … 25161 25747 for libname in $tlibs; do 25162 25748 AC_CHECK_LIB(${libname}, tgetent,,) 25163 @@ -2975,6 +31 06,7 @@25749 @@ -2975,6 +3114,7 @@ 25164 25750 25165 25751 dnl Link with -lposix1e for ACL stuff; if not found, try -lacl for SGI … … 25169 25755 AC_ARG_ENABLE(acl, 25170 25756 [ --disable-acl Don't check for ACL support.], 25171 @@ -2997,6 +31 29,7 @@25757 @@ -2997,6 +3137,7 @@ 25172 25758 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_POSIX_ACL), 25173 25759 AC_MSG_RESULT(no)) … … 25177 25763 AC_TRY_LINK([ 25178 25764 #ifdef HAVE_SYS_ACL_H 25179 @@ -3004,7 +31 37,7 @@25765 @@ -3004,7 +3145,7 @@ 25180 25766 #endif], [acl("foo", GETACLCNT, 0, NULL); 25181 25767 ], … … 25186 25772 AC_MSG_CHECKING(for AIX ACL support) 25187 25773 AC_TRY_LINK([ 25188 @@ -3180,7 +33 13,7 @@25774 @@ -3180,7 +3321,7 @@ 25189 25775 }], 25190 25776 AC_MSG_RESULT(ok), … … 25195 25781 dnl Check for memmove() before bcopy(), makes memmove() be used when both are 25196 25782 dnl present, fixes problem with incompatibility between Solaris 2.4 and 2.5. 25197 @@ -3280,7 +34 13,7 @@25783 @@ -3280,7 +3421,7 @@ 25198 25784 AC_CHECK_LIB(xpg4, _xpg4_setrunelocale, [LIBS="$LIBS -lxpg4"],,) 25199 25785 … … 25204 25790 dnl -t for typedefs (many ctags have this) 25205 25791 dnl -s for static functions (Elvis ctags only?) 25206 @@ -3290,6 +34 23,10 @@25792 @@ -3290,6 +3431,10 @@ 25207 25793 test -f tags && mv tags tags.save 25208 25794 if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then … … 25215 25801 TAGPRG="ctags" 25216 25802 (eval etags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags" 25217 @@ -3477,9 +36 14,10 @@25803 @@ -3477,9 +3622,10 @@ 25218 25804 dnl -D_FORTIFY_SOURCE=2 crashes Vim on strcpy(buf, "000") when buf is 25219 25805 dnl declared as char x[1] but actually longer. Introduced in gcc 4.0. … … 25227 25813 else 25228 25814 AC_MSG_RESULT(no) 25229 @@ -3487,6 +36 25,23@@25815 @@ -3487,6 +3633,28 @@ 25230 25816 fi 25231 25817 AC_SUBST(DEPEND_CFLAGS_FILTER) … … 25248 25834 +AC_SUBST(LINK_AS_NEEDED) 25249 25835 + 25836 +# IBM z/OS reset CFLAGS for config.mk 25837 +if test "$zOSUnix" = "yes"; then 25838 + CFLAGS="-D_ALL_SOURCE -Wc,float\(ieee\),dll" 25839 +fi 25840 + 25250 25841 dnl write output files 25251 25842 AC_OUTPUT(auto/config.mk:config.mk.in) 25252 25843 25844 diff -Naur vim73.orig/src/dehqx.py vim73/src/dehqx.py 25845 --- vim73.orig/src/dehqx.py 2010-05-15 11:04:12.000000000 +0000 25846 +++ vim73/src/dehqx.py 2012-07-20 20:31:17.260977744 +0000 25847 @@ -1,7 +1,10 @@ 25848 # Python script to get both the data and resource fork from a BinHex encoded 25849 # file. 25850 -# Author: Taro Muraoka 25851 -# Last Change: 2003 Oct 25 25852 +# Author: MURAOKA Taro <koron.kaoriya@gmail.com> 25853 +# Last Change: 2012 Jun 29 25854 +# 25855 +# Copyright (C) 2003,12 MURAOKA Taro <koron.kaoriya@gmail.com> 25856 +# THIS FILE IS DISTRIBUTED UNDER THE VIM LICENSE. 25857 25858 import sys 25859 import binhex 25253 25860 diff -Naur vim73.orig/src/diff.c vim73/src/diff.c 25254 --- vim73.orig/src/diff.c 201 2-06-03 23:09:52.920006524+000025255 +++ vim73/src/diff.c 2012-0 6-03 23:09:55.880085297+000025861 --- vim73.orig/src/diff.c 2010-07-31 13:35:21.000000000 +0000 25862 +++ vim73/src/diff.c 2012-07-20 20:31:16.204310320 +0000 25256 25863 @@ -783,6 +783,15 @@ 25257 25864 goto theend; … … 25299 25906 curwin = wp; 25300 25907 diff -Naur vim73.orig/src/digraph.c vim73/src/digraph.c 25301 --- vim73.orig/src/digraph.c 201 2-06-03 23:09:52.952007375+000025302 +++ vim73/src/digraph.c 2012-0 6-03 23:09:55.156066030+000025908 --- vim73.orig/src/digraph.c 2010-05-15 11:04:09.000000000 +0000 25909 +++ vim73/src/digraph.c 2012-07-20 20:31:14.044308771 +0000 25303 25910 @@ -2080,13 +2080,13 @@ 25304 25911 /* … … 25349 25956 } 25350 25957 diff -Naur vim73.orig/src/edit.c vim73/src/edit.c 25351 --- vim73.orig/src/edit.c 201 2-06-03 23:09:52.952007375+000025352 +++ vim73/src/edit.c 2012-0 6-03 23:09:55.928086574+000025958 --- vim73.orig/src/edit.c 2010-08-08 12:55:05.000000000 +0000 25959 +++ vim73/src/edit.c 2012-07-20 20:31:18.157645052 +0000 25353 25960 @@ -58,6 +58,10 @@ 25354 25961 }; … … 25489 26096 #endif 25490 26097 - c)) 25491 + 26098 + c) && c != Ctrl_RSB)) 25492 26099 { 25493 26100 insert_special(c, FALSE, FALSE); … … 25594 26201 * Show the popup menu with a different set of matches. 25595 26202 * May also search for matches again if the previous search was interrupted. 25596 @@ -3397,14 +3473,20 @@ 26203 @@ -3391,20 +3467,32 @@ 26204 (*mb_char2bytes)(c, buf); 26205 buf[cc] = NUL; 26206 ins_char_bytes(buf, cc); 26207 + if (compl_opt_refresh_always) 26208 + AppendToRedobuff(buf); 26209 } 26210 else 26211 #endif 26212 + { 25597 26213 ins_char(c); 26214 + if (compl_opt_refresh_always) 26215 + AppendCharToRedobuff(c); 26216 + } 25598 26217 25599 26218 /* If we didn't complete finding matches we must search again. */ … … 25605 26224 - compl_leader = vim_strnsave(ml_get_curline() + compl_col, 25606 26225 + /* When 'always' is set, don't reset compl_leader. While completing, 25607 + * cursor do n't point original position, changing compl_leader would26226 + * cursor doesn't point original position, changing compl_leader would 25608 26227 + * break redo. */ 25609 26228 + if (!compl_opt_refresh_always) … … 25620 26239 25621 26240 /* 25622 @@ -3480,11 +356 2,7 @@26241 @@ -3480,11 +3568,7 @@ 25623 26242 return; 25624 26243 } … … 25633 26252 } 25634 26253 25635 @@ -3653,9 +373 1,6 @@26254 @@ -3653,9 +3737,6 @@ 25636 26255 * memory that was used, and make sure we can redo the insert. */ 25637 26256 if (compl_curr_match != NULL || compl_leader != NULL || c == Ctrl_E) … … 25643 26262 * If any of the original typed text has been changed, eg when 25644 26263 * ignorecase is set, we must add back-spaces to the redo 25645 @@ -3666,25 +374 1,9 @@26264 @@ -3666,25 +3747,9 @@ 25646 26265 */ 25647 26266 if (compl_curr_match != NULL && compl_used_match && c != Ctrl_E) … … 25671 26290 25672 26291 #ifdef FEAT_CINDENT 25673 @@ -3774,6 +3833,44 @@ 26292 @@ -3759,6 +3824,11 @@ 26293 if (want_cindent && in_cinkeys(KEY_COMPLETE, ' ', inindent(0))) 26294 do_c_expr_indent(); 26295 #endif 26296 +#ifdef FEAT_AUTOCMD 26297 + /* Trigger the CompleteDone event to give scripts a chance to act 26298 + * upon the completion. */ 26299 + apply_autocmds(EVENT_COMPLETEDONE, NULL, NULL, FALSE, curbuf); 26300 +#endif 26301 } 26302 } 26303 26304 @@ -3774,6 +3844,44 @@ 25674 26305 } 25675 26306 … … 25716 26347 * (depending on flag) starting from buf and looking for a non-scanned 25717 26348 * buffer (other than curbuf). curbuf is special, if it is called with 25718 @@ -3829,10 +39 26,14 @@26349 @@ -3829,10 +3937,14 @@ 25719 26350 int type; /* CTRL_X_OMNI or CTRL_X_FUNCTION */ 25720 26351 char_u *base; … … 25732 26363 funcname = (type == CTRL_X_FUNCTION) ? curbuf->b_p_cfu : curbuf->b_p_ofu; 25733 26364 if (*funcname == NUL) 25734 @@ -3843,13 +39 44,50 @@26365 @@ -3843,13 +3955,50 @@ 25735 26366 args[1] = base; 25736 26367 … … 25788 26419 #endif /* FEAT_COMPL_FUNC */ 25789 26420 25790 @@ -3876,6 +40 14,33 @@26421 @@ -3876,6 +4025,33 @@ 25791 26422 } 25792 26423 … … 25822 26453 * If the given string is already in the list of completions, then return 25823 26454 * NOTDONE, otherwise add it to the list and return OK. If there is an error, 25824 @@ -3889,6 +40 54,7 @@26455 @@ -3889,6 +4065,7 @@ 25825 26456 char_u *word; 25826 26457 int icase = FALSE; … … 25830 26461 25831 26462 if (tv->v_type == VAR_DICT && tv->vval.v_dict != NULL) 25832 @@ -3906,13 +40 72,15 @@26463 @@ -3906,13 +4083,15 @@ 25833 26464 icase = get_dict_number(tv->vval.v_dict, (char_u *)"icase"); 25834 26465 if (get_dict_string(tv->vval.v_dict, (char_u *)"dup", FALSE) != NULL) … … 25847 26478 return ins_compl_add(word, -1, icase, NULL, cptext, dir, 0, adup); 25848 26479 } 25849 @@ -4403,6 +45 71,11 @@26480 @@ -4403,6 +4582,11 @@ 25850 26481 int found_end = FALSE; 25851 26482 int advance; … … 25859 26490 && (compl_shown_match->cp_flags & ORIGINAL_TEXT) == 0) 25860 26491 { 25861 @@ -4994,6 +51 67,8 @@26492 @@ -4994,6 +5178,8 @@ 25862 26493 int col; 25863 26494 char_u *funcname; … … 25868 26499 /* Call 'completefunc' or 'omnifunc' and get pattern length as a 25869 26500 * string */ 25870 @@ -5009,8 +51 84,40 @@26501 @@ -5009,8 +5195,40 @@ 25871 26502 args[0] = (char_u *)"1"; 25872 26503 args[1] = NULL; … … 25909 26540 if (col < 0) 25910 26541 col = curs_col; 25911 @@ -5089,6 +5 296,10 @@26542 @@ -5089,6 +5307,10 @@ 25912 26543 else 25913 26544 edit_submode = (char_u *)_(CTRL_X_MSG(ctrl_x_mode)); … … 25920 26551 vim_free(compl_orig_text); 25921 26552 compl_orig_text = vim_strnsave(line + compl_col, compl_length); 25922 @@ -5249,7 +54 60,7 @@26553 @@ -5249,7 +5471,7 @@ 25923 26554 compl_curr_match->cp_number); 25924 26555 edit_submode_extra = match_ref; … … 25929 26560 } 25930 26561 } 25931 @@ -5691,6 +5902,8 @@ 26562 @@ -5558,6 +5780,16 @@ 26563 # define WHITECHAR(cc) vim_iswhite(cc) 26564 #endif 26565 26566 +/* 26567 + * "flags": INSCHAR_FORMAT - force formatting 26568 + * INSCHAR_CTRLV - char typed just after CTRL-V 26569 + * INSCHAR_NO_FEX - don't use 'formatexpr' 26570 + * 26571 + * NOTE: passes the flags value straight through to internal_format() which, 26572 + * beside INSCHAR_FORMAT (above), is also looking for these: 26573 + * INSCHAR_DO_COM - format comments 26574 + * INSCHAR_COM_LIST - format comments with num list or 2nd line indent 26575 + */ 26576 void 26577 insertchar(c, flags, second_indent) 26578 int c; /* character to insert or NUL */ 26579 @@ -5636,7 +5868,7 @@ 26580 * Need to remove existing (middle) comment leader and insert end 26581 * comment leader. First, check what comment leader we can find. 26582 */ 26583 - i = get_leader_len(line = ml_get_curline(), &p, FALSE); 26584 + i = get_leader_len(line = ml_get_curline(), &p, FALSE, TRUE); 26585 if (i > 0 && vim_strchr(p, COM_MIDDLE) != NULL) /* Just checking */ 26586 { 26587 /* Skip middle-comment string */ 26588 @@ -5691,6 +5923,8 @@ 25932 26589 * Don't do this when 'cindent' or 'indentexpr' is set, because we might 25933 26590 * need to re-indent at a ':', or any other character (but not what … … 25938 26595 #ifdef USE_ON_FLY_SCROLL 25939 26596 dont_scroll = FALSE; /* allow scrolling here */ 25940 @@ -5708,6 +59 21,9 @@26597 @@ -5708,6 +5942,9 @@ 25941 26598 #ifdef FEAT_RIGHTLEFT 25942 26599 && !p_ri … … 25948 26605 { 25949 26606 #define INPUT_BUFLEN 100 25950 @@ -5902,6 +6118,7 @@ 26607 @@ -5795,6 +6032,9 @@ 26608 26609 /* 26610 * Format text at the current insert position. 26611 + * 26612 + * If the INSCHAR_COM_LIST flag is present, then the value of second_indent 26613 + * will be the comment leader length sent to open_line(). 26614 */ 26615 static void 26616 internal_format(textwidth, second_indent, flags, format_only, c) 26617 @@ -5869,7 +6109,7 @@ 26618 26619 /* Don't break until after the comment leader */ 26620 if (do_comments) 26621 - leader_len = get_leader_len(ml_get_curline(), NULL, FALSE); 26622 + leader_len = get_leader_len(ml_get_curline(), NULL, FALSE, TRUE); 26623 else 26624 leader_len = 0; 26625 26626 @@ -5902,6 +6142,7 @@ 25951 26627 * Stop at first entered white when 'formatoptions' has 'v' 25952 26628 */ … … 25956 26632 || curwin->w_cursor.col >= Insstart.col) 25957 26633 { 25958 @@ -6598,11 +6815,7 @@ 26634 @@ -6072,23 +6313,59 @@ 26635 + (fo_white_par ? OPENLINE_KEEPTRAIL : 0) 26636 #ifdef FEAT_COMMENTS 26637 + (do_comments ? OPENLINE_DO_COM : 0) 26638 + + ((flags & INSCHAR_COM_LIST) ? OPENLINE_COM_LIST : 0) 26639 #endif 26640 - , old_indent); 26641 - old_indent = 0; 26642 + , ((flags & INSCHAR_COM_LIST) ? second_indent : old_indent)); 26643 + if (!(flags & INSCHAR_COM_LIST)) 26644 + old_indent = 0; 26645 26646 replace_offset = 0; 26647 if (first_line) 26648 { 26649 - if (second_indent < 0 && has_format_option(FO_Q_NUMBER)) 26650 - second_indent = get_number_indent(curwin->w_cursor.lnum -1); 26651 - if (second_indent >= 0) 26652 + if (!(flags & INSCHAR_COM_LIST)) 26653 { 26654 + /* 26655 + * This section is for auto-wrap of numeric lists. When not 26656 + * in insert mode (i.e. format_lines()), the INSCHAR_COM_LIST 26657 + * flag will be set and open_line() will handle it (as seen 26658 + * above). The code here (and in get_number_indent()) will 26659 + * recognize comments if needed... 26660 + */ 26661 + if (second_indent < 0 && has_format_option(FO_Q_NUMBER)) 26662 + second_indent = 26663 + get_number_indent(curwin->w_cursor.lnum - 1); 26664 + if (second_indent >= 0) 26665 + { 26666 #ifdef FEAT_VREPLACE 26667 - if (State & VREPLACE_FLAG) 26668 - change_indent(INDENT_SET, second_indent, FALSE, NUL, TRUE); 26669 - else 26670 + if (State & VREPLACE_FLAG) 26671 + change_indent(INDENT_SET, second_indent, 26672 + FALSE, NUL, TRUE); 26673 + else 26674 +#endif 26675 +#ifdef FEAT_COMMENTS 26676 + if (leader_len > 0 && second_indent - leader_len > 0) 26677 + { 26678 + int i; 26679 + int padding = second_indent - leader_len; 26680 + 26681 + /* We started at the first_line of a numbered list 26682 + * that has a comment. the open_line() function has 26683 + * inserted the proper comment leader and positioned 26684 + * the cursor at the end of the split line. Now we 26685 + * add the additional whitespace needed after the 26686 + * comment leader for the numbered list. */ 26687 + for (i = 0; i < padding; i++) 26688 + ins_str((char_u *)" "); 26689 + changed_bytes(curwin->w_cursor.lnum, leader_len); 26690 + } 26691 + else 26692 + { 26693 #endif 26694 - (void)set_indent(second_indent, SIN_CHANGED); 26695 + (void)set_indent(second_indent, SIN_CHANGED); 26696 +#ifdef FEAT_COMMENTS 26697 + } 26698 +#endif 26699 + } 26700 } 26701 first_line = FALSE; 26702 } 26703 @@ -6194,7 +6471,7 @@ 26704 /* With the 'c' flag in 'formatoptions' and 't' missing: only format 26705 * comments. */ 26706 if (has_format_option(FO_WRAP_COMS) && !has_format_option(FO_WRAP) 26707 - && get_leader_len(old, NULL, FALSE) == 0) 26708 + && get_leader_len(old, NULL, FALSE, TRUE) == 0) 26709 return; 26710 #endif 26711 26712 @@ -6598,11 +6875,7 @@ 25959 26713 char_u *s; 25960 26714 … … 25968 26722 { 25969 26723 s = last_insert; 25970 @@ -6640,7 +6 853,7 @@26724 @@ -6640,7 +6913,7 @@ 25971 26725 char_u *s; 25972 26726 { … … 25977 26731 int len; 25978 26732 25979 @@ -7202,7 +74 15,7 @@26733 @@ -7202,7 +7475,7 @@ 25980 26734 int cc; 25981 26735 { … … 25986 26740 int c; 25987 26741 25988 @@ -8768,7 +8981,7 @@ 26742 @@ -8352,7 +8625,7 @@ 26743 { 26744 temp = curwin->w_cursor.col; 26745 if (!can_bs(BS_EOL) /* only if "eol" included */ 26746 - || do_join(2, FALSE, TRUE) == FAIL) 26747 + || do_join(2, FALSE, TRUE, FALSE) == FAIL) 26748 vim_beep(); 26749 else 26750 curwin->w_cursor.col = temp; 26751 @@ -8533,7 +8806,7 @@ 26752 ptr[len - 1] = NUL; 26753 } 26754 26755 - (void)do_join(2, FALSE, FALSE); 26756 + (void)do_join(2, FALSE, FALSE, FALSE); 26757 if (temp == NUL && gchar_cursor() != NUL) 26758 inc_cursor(); 26759 } 26760 @@ -8768,7 +9041,7 @@ 25989 26761 * We can emulate the vi behaviour by pretending there is a dollar 25990 26762 * displayed even when there isn't. … … 25995 26767 25996 26768 #ifdef FEAT_FOLDING 25997 @@ -9598,6 +98 11,7 @@26769 @@ -9598,6 +9871,7 @@ 25998 26770 { 25999 26771 int c; … … 26003 26775 pc_status = PC_STATUS_UNSET; 26004 26776 if (redrawing() && !char_avail()) 26005 @@ -9606,6 +98 20,7 @@26777 @@ -9606,6 +9880,7 @@ 26006 26778 ins_redraw(FALSE); 26007 26779 … … 26011 26783 add_to_showcmd_c(Ctrl_K); 26012 26784 #endif 26013 @@ -9622,8 +98 37,10 @@26785 @@ -9622,8 +9897,10 @@ 26014 26786 c = plain_vgetc(); 26015 26787 --no_mapping; … … 26024 26796 if (IS_SPECIAL(c) || mod_mask) /* special key */ 26025 26797 { 26026 @@ -9635,6 +9 852,7 @@26798 @@ -9635,6 +9912,7 @@ 26027 26799 } 26028 26800 if (c != ESC) … … 26032 26804 { 26033 26805 /* may need to redraw when no more chars available now */ 26034 @@ -9642,11 +9 860,9 @@26806 @@ -9642,11 +9920,9 @@ 26035 26807 26036 26808 if (char2cells(c) == 1) … … 26045 26817 #ifdef FEAT_CMDL_INFO 26046 26818 add_to_showcmd_c(c); 26047 @@ -9657,8 +9 873,10 @@26819 @@ -9657,8 +9933,10 @@ 26048 26820 cc = plain_vgetc(); 26049 26821 --no_mapping; … … 26058 26830 { 26059 26831 AppendToRedobuff((char_u *)CTRL_V_STR); 26060 @@ -9680,7 +9 898,7 @@26832 @@ -9680,7 +9958,7 @@ 26061 26833 * Handle CTRL-E and CTRL-Y in Insert mode: copy char from other line. 26062 26834 * Returns the char to be inserted, or NUL if none found. … … 26067 26839 linenr_T lnum; 26068 26840 { 26069 @@ -9870,3 +10 088,52 @@26841 @@ -9870,3 +10148,52 @@ 26070 26842 validate_virtcol(); 26071 26843 return curwin->w_virtcol; … … 26121 26893 +#endif 26122 26894 diff -Naur vim73.orig/src/eval.c vim73/src/eval.c 26123 --- vim73.orig/src/eval.c 201 2-06-03 23:09:52.952007375+000026124 +++ vim73/src/eval.c 2012-0 6-03 23:09:55.932086681 +000026895 --- vim73.orig/src/eval.c 2010-08-09 20:12:14.000000000 +0000 26896 +++ vim73/src/eval.c 2012-07-20 20:31:18.337645181 +0000 26125 26897 @@ -10,9 +10,6 @@ 26126 26898 /* … … 26159 26931 static char_u *skip_var_list __ARGS((char_u *arg, int *var_count, int *semicolon)); 26160 26932 static char_u *skip_var_one __ARGS((char_u *arg)); 26161 @@ -433,9 +428,9 @@ 26933 @@ -429,31 +424,22 @@ 26934 static int get_lit_string_tv __ARGS((char_u **arg, typval_T *rettv, int evaluate)); 26935 static int get_list_tv __ARGS((char_u **arg, typval_T *rettv, int evaluate)); 26936 static int rettv_list_alloc __ARGS((typval_T *rettv)); 26937 -static listitem_T *listitem_alloc __ARGS((void)); 26162 26938 static void listitem_free __ARGS((listitem_T *item)); 26163 26939 -static void listitem_remove __ARGS((list_T *l, listitem_T *item)); 26164 26940 static long list_len __ARGS((list_T *l)); 26165 26941 -static int list_equal __ARGS((list_T *l1, list_T *l2, int ic)); 26166 26942 -static int dict_equal __ARGS((dict_T *d1, dict_T *d2, int ic)); 26167 26943 -static int tv_equal __ARGS((typval_T *tv1, typval_T *tv2, int ic)); 26944 -static listitem_T *list_find __ARGS((list_T *l, long n)); 26168 26945 +static int list_equal __ARGS((list_T *l1, list_T *l2, int ic, int recursive)); 26169 26946 +static int dict_equal __ARGS((dict_T *d1, dict_T *d2, int ic, int recursive)); 26170 26947 +static int tv_equal __ARGS((typval_T *tv1, typval_T *tv2, int ic, int recursive)); 26171 static listitem_T *list_find __ARGS((list_T *l, long n));26172 26948 static long list_find_nr __ARGS((list_T *l, long idx, int *errorp)); 26173 26949 static long list_idx_of_item __ARGS((list_T *l, listitem_T *item)); 26174 @@ -447,13 +442,13 @@ 26950 -static void list_append __ARGS((list_T *l, listitem_T *item)); 26951 static int list_append_number __ARGS((list_T *l, varnumber_T n)); 26952 -static int list_insert_tv __ARGS((list_T *l, typval_T *tv, listitem_T *item)); 26953 static int list_extend __ARGS((list_T *l1, list_T *l2, listitem_T *bef)); 26954 static int list_concat __ARGS((list_T *l1, list_T *l2, typval_T *tv)); 26175 26955 static list_T *list_copy __ARGS((list_T *orig, int deep, int copyID)); 26176 26956 -static void list_remove __ARGS((list_T *l, listitem_T *item, listitem_T *item2)); 26177 26957 static char_u *list2string __ARGS((typval_T *tv, int copyID)); 26178 26958 +static int list_join_inner __ARGS((garray_T *gap, list_T *l, char_u *sep, int echo_style, int copyID, garray_T *join_gap)); 26179 26959 static int list_join __ARGS((garray_T *gap, list_T *l, char_u *sep, int echo, int copyID)); 26180 26960 static int free_unref_items __ARGS((int copyID)); 26181 26182 26183 26961 -static void set_ref_in_ht __ARGS((hashtab_T *ht, int copyID)); 26962 -static void set_ref_in_list __ARGS((list_T *l, int copyID)); 26963 -static void set_ref_in_item __ARGS((typval_T *tv, int copyID)); 26184 26964 static int rettv_dict_alloc __ARGS((typval_T *rettv)); 26185 26965 -static void dict_unref __ARGS((dict_T *d)); … … 26187 26967 static dictitem_T *dictitem_copy __ARGS((dictitem_T *org)); 26188 26968 static void dictitem_remove __ARGS((dict_T *dict, dictitem_T *item)); 26189 @@ -480,6 +4 75,7 @@26969 @@ -480,6 +466,7 @@ 26190 26970 static void f_acos __ARGS((typval_T *argvars, typval_T *rettv)); 26191 26971 #endif … … 26195 26975 static void f_argc __ARGS((typval_T *argvars, typval_T *rettv)); 26196 26976 static void f_argidx __ARGS((typval_T *argvars, typval_T *rettv)); 26197 @@ -608,6 + 604,7 @@26977 @@ -608,6 +595,7 @@ 26198 26978 static void f_inputsave __ARGS((typval_T *argvars, typval_T *rettv)); 26199 26979 static void f_inputsecret __ARGS((typval_T *argvars, typval_T *rettv)); … … 26203 26983 static void f_islocked __ARGS((typval_T *argvars, typval_T *rettv)); 26204 26984 static void f_items __ARGS((typval_T *argvars, typval_T *rettv)); 26205 @@ -625,6 +6 22,9 @@26985 @@ -625,6 +613,9 @@ 26206 26986 static void f_log __ARGS((typval_T *argvars, typval_T *rettv)); 26207 26987 static void f_log10 __ARGS((typval_T *argvars, typval_T *rettv)); … … 26213 26993 static void f_maparg __ARGS((typval_T *argvars, typval_T *rettv)); 26214 26994 static void f_mapcheck __ARGS((typval_T *argvars, typval_T *rettv)); 26215 @@ -646,6 +6 46,7 @@26995 @@ -646,6 +637,7 @@ 26216 26996 #endif 26217 26997 static void f_nextnonblank __ARGS((typval_T *argvars, typval_T *rettv)); … … 26221 27001 #ifdef FEAT_FLOAT 26222 27002 static void f_pow __ARGS((typval_T *argvars, typval_T *rettv)); 26223 @@ -757,6 +758,7 @@ 27003 @@ -653,6 +645,12 @@ 27004 static void f_prevnonblank __ARGS((typval_T *argvars, typval_T *rettv)); 27005 static void f_printf __ARGS((typval_T *argvars, typval_T *rettv)); 27006 static void f_pumvisible __ARGS((typval_T *argvars, typval_T *rettv)); 27007 +#ifdef FEAT_PYTHON3 27008 +static void f_py3eval __ARGS((typval_T *argvars, typval_T *rettv)); 27009 +#endif 27010 +#ifdef FEAT_PYTHON 27011 +static void f_pyeval __ARGS((typval_T *argvars, typval_T *rettv)); 27012 +#endif 27013 static void f_range __ARGS((typval_T *argvars, typval_T *rettv)); 27014 static void f_readfile __ARGS((typval_T *argvars, typval_T *rettv)); 27015 static void f_reltime __ARGS((typval_T *argvars, typval_T *rettv)); 27016 @@ -757,6 +755,7 @@ 26224 27017 static void f_winsaveview __ARGS((typval_T *argvars, typval_T *rettv)); 26225 27018 static void f_winwidth __ARGS((typval_T *argvars, typval_T *rettv)); … … 26229 27022 static int list2fpos __ARGS((typval_T *arg, pos_T *posp, int *fnump)); 26230 27023 static pos_T *var2fpos __ARGS((typval_T *varp, int dollar_lnum, int *fnum)); 26231 @@ -791,6 +79 3,8 @@27024 @@ -791,6 +790,8 @@ 26232 27025 static void set_var __ARGS((char_u *name, typval_T *varp, int copy)); 26233 27026 static int var_check_ro __ARGS((int flags, char_u *name)); … … 26238 27031 static int item_copy __ARGS((typval_T *from, typval_T *to, int deep, int copyID)); 26239 27032 static char_u *find_option_end __ARGS((char_u **arg, int *opt_flags)); 26240 @@ -853,6 +857,7 @@ 26241 26242 init_var_dict(&globvardict, &globvars_var); 26243 init_var_dict(&vimvardict, &vimvars_var); 27033 @@ -820,8 +821,6 @@ 27034 static char_u *autoload_name __ARGS((char_u *name)); 27035 static void cat_func_name __ARGS((char_u *buf, ufunc_T *fp)); 27036 static void func_free __ARGS((ufunc_T *fp)); 27037 -static void func_unref __ARGS((char_u *name)); 27038 -static void func_ref __ARGS((char_u *name)); 27039 static void call_user_func __ARGS((ufunc_T *fp, int argcount, typval_T *argvars, typval_T *rettv, linenr_T firstline, linenr_T lastline, dict_T *selfdict)); 27040 static int can_free_funccal __ARGS((funccall_T *fc, int copyID)) ; 27041 static void free_funccal __ARGS((funccall_T *fc, int free_val)); 27042 @@ -851,8 +850,9 @@ 27043 int i; 27044 struct vimvar *p; 27045 27046 - init_var_dict(&globvardict, &globvars_var); 27047 - init_var_dict(&vimvardict, &vimvars_var); 27048 + init_var_dict(&globvardict, &globvars_var, VAR_DEF_SCOPE); 27049 + init_var_dict(&vimvardict, &vimvars_var, VAR_SCOPE); 26244 27050 + vimvardict.dv_lock = VAR_FIXED; 26245 27051 hash_init(&compat_hashtab); 26246 27052 hash_init(&func_hashtab); 26247 27053 26248 @@ -875,10 +8 80,11 @@27054 @@ -875,10 +875,11 @@ 26249 27055 hash_add(&compat_hashtab, p->vv_di.di_key); 26250 27056 } … … 26259 27065 sortFunctions(); 26260 27066 #endif 26261 @@ -910,6 +91 6,7 @@27067 @@ -910,6 +911,7 @@ 26262 27068 hash_clear(&compat_hashtab); 26263 27069 … … 26267 27073 /* global variables */ 26268 27074 vars_clear(&globvarht); 26269 @@ -1355,7 +13 62,11 @@27075 @@ -1355,7 +1357,11 @@ 26270 27076 { 26271 27077 ga_init2(&ga, (int)sizeof(char), 80); … … 26279 27085 retval = (char_u *)ga.ga_data; 26280 27086 } 26281 @@ -1557,7 +156 8,7 @@27087 @@ -1557,7 +1563,7 @@ 26282 27088 * arguments are currently supported. 26283 27089 * Returns OK or FAIL. … … 26288 27094 char_u *func; 26289 27095 int argc; 26290 @@ -2325,7 +233 6,7 @@27096 @@ -2325,7 +2331,7 @@ 26291 27097 else if (endchars != NULL 26292 27098 && vim_strchr(endchars, *skipwhite(arg)) == NULL) … … 26297 27103 c1 = name[len]; 26298 27104 name[len] = NUL; 26299 @@ -2718,8 +272 9,27@@27105 @@ -2718,8 +2724,39 @@ 26300 27106 lp->ll_list = NULL; 26301 27107 lp->ll_dict = lp->ll_tv->vval.v_dict; 26302 27108 lp->ll_di = dict_find(lp->ll_dict, key, len); 26303 27109 + 26304 + /* When assigning to g: check that a function and variable name is 26305 + * valid. */ 26306 + if (rettv != NULL && lp->ll_dict == &globvardict) 27110 + /* When assigning to a scope dictionary check that a function and 27111 + * variable name is valid (only variable name unless it is l: or 27112 + * g: dictionary). Disallow overwriting a builtin function. */ 27113 + if (rettv != NULL && lp->ll_dict->dv_scope != 0) 26307 27114 + { 26308 + if (rettv->v_type == VAR_FUNC 27115 + int prevval; 27116 + int wrong; 27117 + 27118 + if (len != -1) 27119 + { 27120 + prevval = key[len]; 27121 + key[len] = NUL; 27122 + } 27123 + wrong = (lp->ll_dict->dv_scope == VAR_DEF_SCOPE 27124 + && rettv->v_type == VAR_FUNC 26309 27125 + && var_check_func_name(key, lp->ll_di == NULL)) 26310 + return NULL; 26311 + if (!valid_varname(key)) 27126 + || !valid_varname(key); 27127 + if (len != -1) 27128 + key[len] = prevval; 27129 + if (wrong) 26312 27130 + return NULL; 26313 27131 + } … … 26325 27143 if (*p == '[' || *p == '.' || unlet) 26326 27144 { 26327 @@ -2739,6 +27 69,10 @@27145 @@ -2739,6 +2776,10 @@ 26328 27146 p = NULL; 26329 27147 break; … … 26336 27154 clear_tv(&var1); 26337 27155 lp->ll_tv = &lp->ll_di->di_tv; 26338 @@ -2770,6 +28 04,8 @@27156 @@ -2770,6 +2811,8 @@ 26339 27157 { 26340 27158 if (lp->ll_range && !lp->ll_empty2) … … 26345 27163 } 26346 27164 26347 @@ -2787,7 +28 23,11 @@27165 @@ -2787,7 +2830,11 @@ 26348 27166 { 26349 27167 ni = list_find(lp->ll_list, lp->ll_n2); … … 26357 27175 } 26358 27176 26359 @@ -2795,7 +28 35,11 @@27177 @@ -2795,7 +2842,11 @@ 26360 27178 if (lp->ll_n1 < 0) 26361 27179 lp->ll_n1 = list_idx_of_item(lp->ll_list, lp->ll_li); … … 26369 27187 26370 27188 lp->ll_tv = &lp->ll_li->li_tv; 26371 @@ -3337,6 +338 1,18 @@27189 @@ -3337,6 +3388,18 @@ 26372 27190 int failed = FALSE; 26373 27191 funcdict_T fudi; … … 26388 27206 if (fudi.fd_newkey != NULL) 26389 27207 { 26390 @@ -3386,6 +344 2,9 @@27208 @@ -3386,6 +3449,9 @@ 26391 27209 { 26392 27210 curwin->w_cursor.lnum = lnum; … … 26398 27216 arg = startarg; 26399 27217 if (get_func_tv(name, (int)STRLEN(name), &rettv, &arg, 26400 @@ -4349,7 +44 08,8 @@27218 @@ -4349,7 +4415,8 @@ 26401 27219 else 26402 27220 { … … 26408 27226 n1 = !n1; 26409 27227 } 26410 @@ -4378,7 +44 38,8 @@27228 @@ -4378,7 +4445,8 @@ 26411 27229 else 26412 27230 { … … 26418 27236 n1 = !n1; 26419 27237 } 26420 @@ -5097,9 +51 58,7 @@27238 @@ -5097,9 +5165,7 @@ 26421 27239 else 26422 27240 ret = OK; … … 26429 27247 26430 27248 *arg = skipwhite(*arg); 26431 @@ -5913,10 +5972,11 @@ 27249 @@ -5868,7 +5934,7 @@ 27250 /* 27251 * Allocate a list item. 27252 */ 27253 - static listitem_T * 27254 + listitem_T * 27255 listitem_alloc() 27256 { 27257 return (listitem_T *)alloc(sizeof(listitem_T)); 27258 @@ -5888,7 +5954,7 @@ 27259 /* 27260 * Remove a list item from a List and free it. Also clears the value. 27261 */ 27262 - static void 27263 + void 27264 listitem_remove(l, item) 27265 list_T *l; 27266 listitem_T *item; 27267 @@ -5913,10 +5979,11 @@ 26432 27268 * Return TRUE when two lists have exactly the same values. 26433 27269 */ … … 26442 27278 listitem_T *item1, *item2; 26443 27279 26444 @@ -5930,7 +599 0,7 @@27280 @@ -5930,7 +5997,7 @@ 26445 27281 for (item1 = l1->lv_first, item2 = l2->lv_first; 26446 27282 item1 != NULL && item2 != NULL; … … 26451 27287 return item1 == NULL && item2 == NULL; 26452 27288 } 26453 @@ -5952,10 +601 2,11 @@27289 @@ -5952,10 +6019,11 @@ 26454 27290 * Return TRUE when two dictionaries have exactly the same key/values. 26455 27291 */ … … 26464 27300 hashitem_T *hi; 26465 27301 dictitem_T *item2; 26466 @@ -5976,7 +60 37,7 @@27302 @@ -5976,7 +6044,7 @@ 26467 27303 item2 = dict_find(d2, hi->hi_key, -1); 26468 27304 if (item2 == NULL) … … 26473 27309 --todo; 26474 27310 } 26475 @@ -5984,41 +60 45,54 @@27311 @@ -5984,41 +6052,54 @@ 26476 27312 return TRUE; 26477 27313 } … … 26539 27375 26540 27376 case VAR_FUNC: 26541 @@ -6502,47 +6576,119 @@ 27377 @@ -6049,7 +6130,7 @@ 27378 * A negative index is counted from the end; -1 is the last item. 27379 * Returns NULL when "n" is out of range. 27380 */ 27381 - static listitem_T * 27382 + listitem_T * 27383 list_find(l, n) 27384 list_T *l; 27385 long n; 27386 @@ -6191,7 +6272,7 @@ 27387 /* 27388 * Append item "item" to the end of list "l". 27389 */ 27390 - static void 27391 + void 27392 list_append(l, item) 27393 list_T *l; 27394 listitem_T *item; 27395 @@ -6304,7 +6385,7 @@ 27396 * If "item" is NULL append at the end. 27397 * Return FAIL when out of memory. 27398 */ 27399 - static int 27400 + int 27401 list_insert_tv(l, tv, item) 27402 list_T *l; 27403 typval_T *tv; 27404 @@ -6449,7 +6530,7 @@ 27405 * Remove items "item" to "item2" from list "l". 27406 * Does not free the listitem or the value! 27407 */ 27408 - static void 27409 + void 27410 list_remove(l, item, item2) 27411 list_T *l; 27412 listitem_T *item; 27413 @@ -6502,47 +6583,119 @@ 26542 27414 return (char_u *)ga.ga_data; 26543 27415 } … … 26676 27548 * 26677 27549 * We use reference counts to be able to free most items right away when they 26678 @@ -6635,6 +678 1,10@@27550 @@ -6635,6 +6788,18 @@ 26679 27551 /* v: vars */ 26680 27552 set_ref_in_ht(&vimvarht, copyID); … … 26684 27556 +#endif 26685 27557 + 27558 +#ifdef FEAT_PYTHON 27559 + set_ref_in_python(copyID); 27560 +#endif 27561 + 27562 +#ifdef FEAT_PYTHON3 27563 + set_ref_in_python3(copyID); 27564 +#endif 27565 + 26686 27566 /* 26687 27567 * 2. Free lists and dictionaries that are not referenced. 26688 27568 */ 26689 @@ -6837,7 +6987,7 @@ 27569 @@ -6720,7 +6885,7 @@ 27570 /* 27571 * Mark all lists and dicts referenced through hashtab "ht" with "copyID". 27572 */ 27573 - static void 27574 + void 27575 set_ref_in_ht(ht, copyID) 27576 hashtab_T *ht; 27577 int copyID; 27578 @@ -6740,7 +6905,7 @@ 27579 /* 27580 * Mark all lists and dicts referenced through list "l" with "copyID". 27581 */ 27582 - static void 27583 + void 27584 set_ref_in_list(l, copyID) 27585 list_T *l; 27586 int copyID; 27587 @@ -6754,7 +6919,7 @@ 27588 /* 27589 * Mark all lists and dicts referenced through typval "tv" with "copyID". 27590 */ 27591 - static void 27592 + void 27593 set_ref_in_item(tv, copyID) 27594 typval_T *tv; 27595 int copyID; 27596 @@ -6798,7 +6963,7 @@ 27597 d = (dict_T *)alloc(sizeof(dict_T)); 27598 if (d != NULL) 27599 { 27600 - /* Add the list to the list of dicts for garbage collection. */ 27601 + /* Add the dict to the list of dicts for garbage collection. */ 27602 if (first_dict != NULL) 27603 first_dict->dv_used_prev = d; 27604 d->dv_used_next = first_dict; 27605 @@ -6807,6 +6972,7 @@ 27606 27607 hash_init(&d->dv_hashtab); 27608 d->dv_lock = 0; 27609 + d->dv_scope = 0; 27610 d->dv_refcount = 0; 27611 d->dv_copyID = 0; 27612 } 27613 @@ -6837,7 +7003,7 @@ 26690 27614 * Unreference a Dictionary: decrement the reference count and free it when it 26691 27615 * becomes zero. … … 26696 27620 dict_T *d; 26697 27621 { 26698 @@ -7075,7 +72 25,7 @@27622 @@ -7075,7 +7241,7 @@ 26699 27623 } 26700 27624 … … 26705 27629 */ 26706 27630 int 26707 @@ -7097,6 +72 47,7 @@27631 @@ -7097,6 +7263,7 @@ 26708 27632 dictitem_free(item); 26709 27633 return FAIL; … … 26713 27637 } 26714 27638 26715 @@ -7649,6 +78 00,7 @@27639 @@ -7649,6 +7816,7 @@ 26716 27640 {"acos", 1, 1, f_acos}, /* WJMc */ 26717 27641 #endif … … 26721 27645 {"argc", 0, 0, f_argc}, 26722 27646 {"argidx", 0, 0, f_argidx}, 26723 @@ -7708,7 +78 60,7 @@27647 @@ -7708,7 +7876,7 @@ 26724 27648 #ifdef FEAT_FLOAT 26725 27649 {"exp", 1, 1, f_exp}, … … 26730 27654 {"feedkeys", 1, 2, f_feedkeys}, 26731 27655 {"file_readable", 1, 1, f_filereadable}, /* obsolete */ 26732 @@ -7759,7 +79 11,7 @@27656 @@ -7759,7 +7927,7 @@ 26733 27657 {"getwinposx", 0, 0, f_getwinposx}, 26734 27658 {"getwinposy", 0, 0, f_getwinposy}, … … 26739 27663 {"has", 1, 1, f_has}, 26740 27664 {"has_key", 2, 2, f_has_key}, 26741 @@ -7784,6 +79 36,7 @@27665 @@ -7784,6 +7952,7 @@ 26742 27666 {"inputsave", 0, 0, f_inputsave}, 26743 27667 {"inputsecret", 1, 2, f_inputsecret}, … … 26747 27671 {"islocked", 1, 1, f_islocked}, 26748 27672 {"items", 1, 1, f_items}, 26749 @@ -7801,8 +79 54,11 @@27673 @@ -7801,8 +7970,11 @@ 26750 27674 {"log", 1, 1, f_log}, 26751 27675 {"log10", 1, 1, f_log10}, … … 26760 27684 {"match", 2, 4, f_match}, 26761 27685 {"matchadd", 2, 4, f_matchadd}, 26762 @@ -7822,6 +79 78,7 @@27686 @@ -7822,6 +7994,7 @@ 26763 27687 #endif 26764 27688 {"nextnonblank", 1, 1, f_nextnonblank}, … … 26768 27692 #ifdef FEAT_FLOAT 26769 27693 {"pow", 2, 2, f_pow}, 26770 @@ -7870,7 +8027,7 @@ 27694 @@ -7829,6 +8002,12 @@ 27695 {"prevnonblank", 1, 1, f_prevnonblank}, 27696 {"printf", 2, 19, f_printf}, 27697 {"pumvisible", 0, 0, f_pumvisible}, 27698 +#ifdef FEAT_PYTHON3 27699 + {"py3eval", 1, 1, f_py3eval}, 27700 +#endif 27701 +#ifdef FEAT_PYTHON 27702 + {"pyeval", 1, 1, f_pyeval}, 27703 +#endif 27704 {"range", 1, 3, f_range}, 27705 {"readfile", 1, 3, f_readfile}, 27706 {"reltime", 0, 2, f_reltime}, 27707 @@ -7870,7 +8049,7 @@ 26771 27708 {"sin", 1, 1, f_sin}, 26772 27709 {"sinh", 1, 1, f_sinh}, … … 26777 27714 {"spellbadword", 0, 1, f_spellbadword}, 26778 27715 {"spellsuggest", 1, 3, f_spellsuggest}, 26779 @@ -7933,6 +8 090,7 @@27716 @@ -7933,6 +8112,7 @@ 26780 27717 {"winsaveview", 0, 0, f_winsaveview}, 26781 27718 {"winwidth", 1, 1, f_winwidth}, … … 26785 27722 26786 27723 #if defined(FEAT_CMDL_COMPL) || defined(PROTO) 26787 @@ -8497,7 +86 55,7 @@27724 @@ -8497,7 +8677,7 @@ 26788 27725 if (argvars[0].v_type == VAR_LIST) 26789 27726 { … … 26794 27731 copy_tv(&argvars[0], rettv); 26795 27732 } 26796 @@ -8506,6 +86 64,18 @@27733 @@ -8506,6 +8686,18 @@ 26797 27734 } 26798 27735 … … 26813 27750 */ 26814 27751 static void 26815 @@ -9298,7 +9468,7 @@ 27752 @@ -8980,6 +9172,45 @@ 27753 #endif 27754 } 27755 27756 + int 27757 +func_call(name, args, selfdict, rettv) 27758 + char_u *name; 27759 + typval_T *args; 27760 + dict_T *selfdict; 27761 + typval_T *rettv; 27762 +{ 27763 + listitem_T *item; 27764 + typval_T argv[MAX_FUNC_ARGS + 1]; 27765 + int argc = 0; 27766 + int dummy; 27767 + int r = 0; 27768 + 27769 + for (item = args->vval.v_list->lv_first; item != NULL; 27770 + item = item->li_next) 27771 + { 27772 + if (argc == MAX_FUNC_ARGS) 27773 + { 27774 + EMSG(_("E699: Too many arguments")); 27775 + break; 27776 + } 27777 + /* Make a copy of each argument. This is needed to be able to set 27778 + * v_lock to VAR_FIXED in the copy without changing the original list. 27779 + */ 27780 + copy_tv(&item->li_tv, &argv[argc++]); 27781 + } 27782 + 27783 + if (item == NULL) 27784 + r = call_func(name, (int)STRLEN(name), rettv, argc, argv, 27785 + curwin->w_cursor.lnum, curwin->w_cursor.lnum, 27786 + &dummy, TRUE, selfdict); 27787 + 27788 + /* Free the arguments. */ 27789 + while (argc > 0) 27790 + clear_tv(&argv[--argc]); 27791 + 27792 + return r; 27793 +} 27794 + 27795 /* 27796 * "call(func, arglist)" function 27797 */ 27798 @@ -8989,10 +9220,6 @@ 27799 typval_T *rettv; 27800 { 27801 char_u *func; 27802 - typval_T argv[MAX_FUNC_ARGS + 1]; 27803 - int argc = 0; 27804 - listitem_T *item; 27805 - int dummy; 27806 dict_T *selfdict = NULL; 27807 27808 if (argvars[1].v_type != VAR_LIST) 27809 @@ -9020,28 +9247,7 @@ 27810 selfdict = argvars[2].vval.v_dict; 27811 } 27812 27813 - for (item = argvars[1].vval.v_list->lv_first; item != NULL; 27814 - item = item->li_next) 27815 - { 27816 - if (argc == MAX_FUNC_ARGS) 27817 - { 27818 - EMSG(_("E699: Too many arguments")); 27819 - break; 27820 - } 27821 - /* Make a copy of each argument. This is needed to be able to set 27822 - * v_lock to VAR_FIXED in the copy without changing the original list. 27823 - */ 27824 - copy_tv(&item->li_tv, &argv[argc++]); 27825 - } 27826 - 27827 - if (item == NULL) 27828 - (void)call_func(func, (int)STRLEN(func), rettv, argc, argv, 27829 - curwin->w_cursor.lnum, curwin->w_cursor.lnum, 27830 - &dummy, TRUE, selfdict); 27831 - 27832 - /* Free the arguments. */ 27833 - while (argc > 0) 27834 - clear_tv(&argv[--argc]); 27835 + (void)func_call(func, &argvars[1], selfdict, rettv); 27836 } 27837 27838 #ifdef FEAT_FLOAT 27839 @@ -9298,7 +9504,7 @@ 26816 27840 26817 27841 if (!error) … … 26822 27846 } 26823 27847 26824 @@ -9389,7 +95 59,7 @@27848 @@ -9389,7 +9595,7 @@ 26825 27849 } 26826 27850 … … 26831 27855 } 26832 27856 } 26833 @@ -9416,7 +9 586,7 @@27857 @@ -9416,7 +9622,7 @@ 26834 27858 if (!HASHITEM_EMPTY(hi)) 26835 27859 { … … 26840 27864 } 26841 27865 } 26842 @@ -9857,17 +100 27,36 @@27866 @@ -9857,17 +10063,36 @@ 26843 27867 char_u *s; 26844 27868 int len; … … 26879 27903 else 26880 27904 { 26881 @@ -9875,12 +10 064,25 @@27905 @@ -9875,12 +10100,25 @@ 26882 27906 * for 'wildignore' and don't put matches for 'suffixes' at the end. */ 26883 27907 if (argvars[1].v_type != VAR_UNKNOWN … … 26907 27931 else 26908 27932 rettv->vval.v_string = NULL; 26909 @@ -9896,6 +10 098,8 @@27933 @@ -9896,6 +10134,8 @@ 26910 27934 typval_T *argvars; 26911 27935 typval_T *rettv; … … 26916 27940 { 26917 27941 list_T *l1, *l2; 26918 @@ -9905,7 +101 09,7 @@27942 @@ -9905,7 +10145,7 @@ 26919 27943 26920 27944 l1 = argvars[0].vval.v_list; … … 26925 27949 { 26926 27950 if (argvars[2].v_type != VAR_UNKNOWN) 26927 @@ -9944,7 +101 48,7 @@27951 @@ -9944,7 +10184,7 @@ 26928 27952 26929 27953 d1 = argvars[0].vval.v_dict; … … 26934 27958 { 26935 27959 /* Check the third argument. */ 26936 @@ -9987,7 +10191,7 @@ 27960 @@ -9976,6 +10216,19 @@ 27961 { 27962 --todo; 27963 di1 = dict_find(d1, hi2->hi_key, -1); 27964 + if (d1->dv_scope != 0) 27965 + { 27966 + /* Disallow replacing a builtin function in l: and g:. 27967 + * Check the key to be valid when adding to any 27968 + * scope. */ 27969 + if (d1->dv_scope == VAR_DEF_SCOPE 27970 + && HI2DI(hi2)->di_tv.v_type == VAR_FUNC 27971 + && var_check_func_name(hi2->hi_key, 27972 + di1 == NULL)) 27973 + break; 27974 + if (!valid_varname(hi2->hi_key)) 27975 + break; 27976 + } 27977 if (di1 == NULL) 27978 { 27979 di1 = dictitem_copy(HI2DI(hi2)); 27980 @@ -9987,7 +10240,7 @@ 26937 27981 EMSG2(_("E737: Key already exists: %s"), hi2->hi_key); 26938 27982 break; … … 26943 27987 clear_tv(&di1->di_tv); 26944 27988 copy_tv(&HI2DI(hi2)->di_tv, &di1->di_tv); 26945 @@ -10186,20 +10 390,22 @@27989 @@ -10186,20 +10439,22 @@ 26946 27990 typval_T save_key; 26947 27991 int rem; … … 26969 28013 } 26970 28014 else 26971 @@ -10236,7 +104 42,8 @@28015 @@ -10236,7 +10491,8 @@ 26972 28016 { 26973 28017 --todo; … … 26979 28023 vimvars[VV_KEY].vv_str = vim_strsave(di->di_key); 26980 28024 if (filter_map_one(&di->di_tv, expr, map, &rem) == FAIL 26981 @@ -10255,7 +10 462,7 @@28025 @@ -10255,7 +10511,7 @@ 26982 28026 26983 28027 for (li = l->lv_first; li != NULL; li = nli) … … 26988 28032 nli = li->li_next; 26989 28033 vimvars[VV_KEY].vv_nr = idx; 26990 @@ -10839,6 +110 46,11 @@28034 @@ -10839,6 +11095,11 @@ 26991 28035 26992 28036 if (*varname == '&') /* buffer-local-option */ … … 27000 28044 { 27001 28045 if (*varname == NUL) 27002 @@ -11039,18 +11 251,22 @@28046 @@ -11039,18 +11300,22 @@ 27003 28047 typval_T *argvars UNUSED; 27004 28048 typval_T *rettv; … … 27030 28074 } 27031 28075 27032 @@ -11653,22 +11 869,44 @@28076 @@ -11653,22 +11918,44 @@ 27033 28077 typval_T *argvars; 27034 28078 typval_T *rettv; … … 27082 28126 else 27083 28127 rettv->vval.v_string = NULL; 27084 @@ -11741,9 +1 1979,6 @@28128 @@ -11741,9 +12028,6 @@ 27085 28129 #ifdef __QNX__ 27086 28130 "qnx", … … 27092 28136 "unix", 27093 28137 #endif 27094 @@ -11856,7 +12091,7 @@ 28138 @@ -11786,6 +12070,11 @@ 28139 "all_builtin_terms", 28140 # endif 28141 #endif 28142 +#if defined(FEAT_BROWSE) && (defined(USE_FILE_CHOOSER) \ 28143 + || defined(FEAT_GUI_W32) \ 28144 + || defined(FEAT_GUI_MOTIF)) 28145 + "browsefilter", 28146 +#endif 28147 #ifdef FEAT_BYTEOFF 28148 "byte_offset", 28149 #endif 28150 @@ -11856,7 +12145,7 @@ 27095 28151 #ifdef FEAT_SEARCHPATH 27096 28152 "file_in_path", … … 27101 28157 #endif 27102 28158 #ifdef FEAT_FIND_ID 27103 @@ -12002,9 +122 37,6 @@28159 @@ -12002,9 +12291,6 @@ 27104 28160 #ifdef FEAT_OLE 27105 28161 "ole", … … 27111 28167 "path_extra", 27112 28168 #endif 27113 @@ -12116,6 +12 348,9 @@28169 @@ -12116,6 +12402,9 @@ 27114 28170 #ifdef FEAT_TOOLBAR 27115 28171 "toolbar", … … 27121 28177 "user-commands", /* was accidentally included in 5.4 */ 27122 28178 "user_commands", 27123 @@ -12159,6 +12 394,9 @@28179 @@ -12159,6 +12448,9 @@ 27124 28180 #ifdef FEAT_XFONTSET 27125 28181 "xfontset", … … 27131 28187 "xsmp", 27132 28188 #endif 27133 @@ -12572,7 +128 10,7 @@28189 @@ -12572,7 +12864,7 @@ 27134 28190 } 27135 28191 … … 27140 28196 rettv->vval.v_number = idx; 27141 28197 break; 27142 @@ -12712,7 +12950,7 @@ 28198 @@ -12648,6 +12940,7 @@ 28199 int xp_namelen; 28200 long argt; 28201 28202 + /* input() with a third argument: completion */ 28203 rettv->vval.v_string = NULL; 28204 28205 xp_name = get_tv_string_buf_chk(&argvars[2], buf); 28206 @@ -12666,6 +12959,11 @@ 28207 rettv->vval.v_string = 28208 getcmdline_prompt(inputsecret_flag ? NUL : '@', p, echo_attr, 28209 xp_type, xp_arg); 28210 + if (rettv->vval.v_string == NULL 28211 + && argvars[1].v_type != VAR_UNKNOWN 28212 + && argvars[2].v_type != VAR_UNKNOWN) 28213 + rettv->vval.v_string = vim_strsave(get_tv_string_buf( 28214 + &argvars[2], buf)); 28215 28216 vim_free(xp_arg); 28217 28218 @@ -12712,7 +13010,7 @@ 27143 28219 IObuff[0] = NUL; 27144 28220 if (message != NULL && defstr != NULL … … 27149 28225 else 27150 28226 { 27151 @@ -12850,7 +13 088,7 @@28227 @@ -12850,7 +13148,7 @@ 27152 28228 if (argvars[0].v_type != VAR_LIST) 27153 28229 EMSG2(_(e_listarg), "insert()"); … … 27158 28234 if (argvars[2].v_type != VAR_UNKNOWN) 27159 28235 before = get_tv_number_chk(&argvars[2], &error); 27160 @@ -12877,6 +131 15,17 @@28236 @@ -12877,6 +13175,17 @@ 27161 28237 } 27162 28238 … … 27176 28252 */ 27177 28253 static void 27178 @@ -13290,8 +135 39,10 @@28254 @@ -13290,8 +13599,10 @@ 27179 28255 char_u *keys_buf = NULL; 27180 28256 char_u *rhs; … … 27188 28264 /* return empty string for failure */ 27189 28265 rettv->v_type = VAR_STRING; 27190 @@ -13305,7 +13 556,11 @@28266 @@ -13305,7 +13616,11 @@ 27191 28267 { 27192 28268 which = get_tv_string_buf_chk(&argvars[1], buf); … … 27200 28276 else 27201 28277 which = (char_u *)""; 27202 @@ -13315,19 +13 570,34 @@28278 @@ -13315,19 +13630,34 @@ 27203 28279 mode = get_map_mode(&which, 0); 27204 28280 … … 27245 28321 } 27246 28322 27247 @@ -13367,6 +136 37,23 @@28323 @@ -13367,6 +13697,23 @@ 27248 28324 } 27249 28325 #endif … … 27269 28345 * "map()" function 27270 28346 */ 27271 @@ -14006,6 +14 293,18 @@28347 @@ -14006,6 +14353,18 @@ 27272 28348 } 27273 28349 … … 27288 28364 */ 27289 28365 static void 27290 @@ -14177,22 +14476,19 @@ 28366 @@ -14125,6 +14484,40 @@ 28367 #endif 28368 } 28369 28370 +#ifdef FEAT_PYTHON3 28371 +/* 28372 + * "py3eval()" function 28373 + */ 28374 + static void 28375 +f_py3eval(argvars, rettv) 28376 + typval_T *argvars; 28377 + typval_T *rettv; 28378 +{ 28379 + char_u *str; 28380 + char_u buf[NUMBUFLEN]; 28381 + 28382 + str = get_tv_string_buf(&argvars[0], buf); 28383 + do_py3eval(str, rettv); 28384 +} 28385 +#endif 28386 + 28387 +#ifdef FEAT_PYTHON 28388 +/* 28389 + * "pyeval()" function 28390 + */ 28391 + static void 28392 +f_pyeval(argvars, rettv) 28393 + typval_T *argvars; 28394 + typval_T *rettv; 28395 +{ 28396 + char_u *str; 28397 + char_u buf[NUMBUFLEN]; 28398 + 28399 + str = get_tv_string_buf(&argvars[0], buf); 28400 + do_pyeval(str, rettv); 28401 +} 28402 +#endif 28403 + 28404 /* 28405 * "range()" function 28406 */ 28407 @@ -14177,22 +14570,19 @@ 27291 28408 typval_T *rettv; 27292 28409 { … … 27322 28439 if (argvars[1].v_type != VAR_UNKNOWN) 27323 28440 { 27324 @@ -14214,49 +14 510,61 @@28441 @@ -14214,49 +14604,61 @@ 27325 28442 return; 27326 28443 } … … 27415 28532 } 27416 28533 li->li_tv.v_type = VAR_STRING; 27417 @@ -14264,71 +14 572,111 @@28534 @@ -14264,71 +14666,111 @@ 27418 28535 li->li_tv.vval.v_string = s; 27419 28536 list_append(rettv->vval.v_list, li); … … 27514 28631 + prevsize = (long)(p - start); 27515 28632 + else 27516 + { 28633 { 28634 - mch_memmove(s, prev, prevlen); 28635 - mch_memmove(s + prevlen, buf, buflen); 28636 - vim_free(prev); 28637 - prev = s; 28638 - prevlen += buflen; 27517 28639 + long grow50pc = (prevsize * 3) / 2; 27518 28640 + long growmin = (long)((p - start) * 2 + prevlen); … … 27522 28644 + : vim_realloc(prev, prevsize); 27523 28645 + if (newprev == NULL) 27524 { 27525 - mch_memmove(s, prev, prevlen); 27526 - mch_memmove(s + prevlen, buf, buflen); 27527 - vim_free(prev); 27528 - prev = s; 27529 - prevlen += buflen; 28646 + { 27530 28647 + do_outofmem_msg((long_u)prevsize); 27531 28648 + failed = TRUE; … … 27569 28686 fclose(fd); 27570 28687 } 27571 @@ -14691,13 +15 039,14 @@28688 @@ -14691,13 +15133,14 @@ 27572 28689 char_u *key; 27573 28690 dict_T *d; … … 27585 28702 key = get_tv_string_chk(&argvars[1]); 27586 28703 if (key != NULL) 27587 @@ -14717,7 +15 066,7 @@28704 @@ -14717,7 +15160,7 @@ 27588 28705 else if (argvars[0].v_type != VAR_LIST) 27589 28706 EMSG2(_(e_listdictarg), "remove()"); … … 27594 28711 int error = FALSE; 27595 28712 27596 @@ -14847,6 +15 196,9 @@28713 @@ -14847,6 +15290,9 @@ 27597 28714 typval_T *rettv; 27598 28715 { … … 27604 28721 p = get_tv_string(&argvars[0]); 27605 28722 #ifdef FEAT_SHORTCUT 27606 @@ -14862,7 +15 214,6 @@28723 @@ -14862,7 +15308,6 @@ 27607 28724 #else 27608 28725 # ifdef HAVE_READLINK … … 27612 28729 int len; 27613 28730 char_u *remain = NULL; 27614 @@ -14879,7 +15 230,10 @@28731 @@ -14879,7 +15324,10 @@ 27615 28732 27616 28733 len = STRLEN(p); … … 27623 28740 q = getnextcomp(p); 27624 28741 if (*q != NUL) 27625 @@ -14890,6 +15 244,10 @@28742 @@ -14890,6 +15338,10 @@ 27626 28743 q[-1] = NUL; 27627 28744 } … … 27634 28751 { 27635 28752 for (;;) 27636 @@ -15033,6 +15 391,7 @@28753 @@ -15033,6 +15485,7 @@ 27637 28754 27638 28755 #ifdef HAVE_READLINK … … 27642 28759 rettv->v_type = VAR_STRING; 27643 28760 } 27644 @@ -15051,7 +15 410,7 @@28761 @@ -15051,7 +15504,7 @@ 27645 28762 if (argvars[0].v_type != VAR_LIST) 27646 28763 EMSG2(_(e_listarg), "reverse()"); … … 27651 28768 li = l->lv_last; 27652 28769 l->lv_first = l->lv_last = NULL; 27653 @@ -16256,6 +16615,7 @@ 28770 @@ -16056,7 +16509,7 @@ 28771 if (tp != NULL && varname != NULL && varp != NULL) 28772 { 28773 save_curtab = curtab; 28774 - goto_tabpage_tp(tp); 28775 + goto_tabpage_tp(tp, TRUE); 28776 28777 tabvarname = alloc((unsigned)STRLEN(varname) + 3); 28778 if (tabvarname != NULL) 28779 @@ -16069,7 +16522,7 @@ 28780 28781 /* Restore current tabpage */ 28782 if (valid_tabpage(save_curtab)) 28783 - goto_tabpage_tp(save_curtab); 28784 + goto_tabpage_tp(save_curtab, TRUE); 28785 } 28786 } 28787 28788 @@ -16133,7 +16586,7 @@ 28789 /* set curwin to be our win, temporarily */ 28790 save_curwin = curwin; 28791 save_curtab = curtab; 28792 - goto_tabpage_tp(tp); 28793 + goto_tabpage_tp(tp, TRUE); 28794 if (!win_valid(win)) 28795 return; 28796 curwin = win; 28797 @@ -16168,7 +16621,7 @@ 28798 /* Restore current tabpage and window, if still valid (autocomands can 28799 * make them invalid). */ 28800 if (valid_tabpage(save_curtab)) 28801 - goto_tabpage_tp(save_curtab); 28802 + goto_tabpage_tp(save_curtab, TRUE); 28803 if (win_valid(save_curwin)) 28804 { 28805 curwin = save_curwin; 28806 @@ -16256,6 +16709,7 @@ 27654 28807 27655 28808 static int item_compare_ic; … … 27659 28812 #define ITEM_COMPARE_FAIL 999 27660 28813 27661 @@ -16315,7 +16 675,8 @@28814 @@ -16315,7 +16769,8 @@ 27662 28815 27663 28816 rettv.v_type = VAR_UNKNOWN; /* clear_tv() uses this */ … … 27669 28822 clear_tv(&argv[1]); 27670 28823 27671 @@ -16348,7 +16 709,8 @@28824 @@ -16348,7 +16803,8 @@ 27672 28825 else 27673 28826 { … … 27679 28832 rettv->vval.v_list = l; 27680 28833 rettv->v_type = VAR_LIST; 27681 @@ -16360,8 +16 722,10 @@28834 @@ -16360,8 +16816,10 @@ 27682 28835 27683 28836 item_compare_ic = FALSE; … … 27690 28843 item_compare_func = argvars[1].vval.v_string; 27691 28844 else 27692 @@ -16376,6 +16 740,17 @@28845 @@ -16376,6 +16834,17 @@ 27693 28846 else 27694 28847 item_compare_func = get_tv_string(&argvars[1]); … … 27708 28861 27709 28862 /* Make an array with each entry pointing to an item in the List. */ 27710 @@ -17512,18 +17 887,22 @@28863 @@ -17512,18 +17981,22 @@ 27711 28864 typval_T *argvars UNUSED; 27712 28865 typval_T *rettv; … … 27732 28885 27733 28886 /* 27734 @@ -17711,7 +18 090,7 @@28887 @@ -17711,7 +18184,7 @@ 27735 28888 typval_T *argvars; 27736 28889 typval_T *rettv; … … 27741 28894 char_u *tostr; 27742 28895 char_u *p; 27743 @@ -17728,7 +18 107,7 @@28896 @@ -17728,7 +18201,7 @@ 27744 28897 char_u buf2[NUMBUFLEN]; 27745 28898 garray_T ga; … … 27750 28903 tostr = get_tv_string_buf_chk(&argvars[2], buf2); 27751 28904 27752 @@ -17754,19 +18 133,19 @@28905 @@ -17754,19 +18227,19 @@ 27753 28906 } 27754 28907 … … 27774 28927 for (p = tostr; *p != NUL; p += tolen) 27775 28928 { 27776 @@ -17785,11 +18 164,11 @@28929 @@ -17785,11 +18258,11 @@ 27777 28930 ++idx; 27778 28931 } … … 27788 28941 for (p = tostr; *p != NUL; p += tolen) 27789 28942 { 27790 @@ -17804,18 +18 183,18 @@28943 @@ -17804,18 +18277,18 @@ 27791 28944 mch_memmove((char *)ga.ga_data + ga.ga_len, cpstr, (size_t)cplen); 27792 28945 ga.ga_len += cplen; … … 27811 28964 } 27812 28965 27813 @@ -17882,11 +18 261,21 @@28966 @@ -17882,11 +18355,21 @@ 27814 28967 rettv->v_type = VAR_STRING; 27815 28968 #ifdef FEAT_PERSISTENT_UNDO … … 27817 28970 - char_u *ffname = FullName_save(get_tv_string(&argvars[0]), FALSE); 27818 28971 + char_u *fname = get_tv_string(&argvars[0]); 27819 + 28972 28973 - if (ffname != NULL) 28974 - rettv->vval.v_string = u_get_undo_file_name(ffname, FALSE); 28975 - vim_free(ffname); 27820 28976 + if (*fname == NUL) 27821 28977 + { … … 27826 28982 + { 27827 28983 + char_u *ffname = FullName_save(fname, FALSE); 27828 27829 - if (ffname != NULL) 27830 - rettv->vval.v_string = u_get_undo_file_name(ffname, FALSE); 27831 - vim_free(ffname); 28984 + 27832 28985 + if (ffname != NULL) 27833 28986 + rettv->vval.v_string = u_get_undo_file_name(ffname, FALSE); … … 27837 28990 #else 27838 28991 rettv->vval.v_string = NULL; 27839 @@ -18258,6 +18647,19 @@ 28992 @@ -18118,9 +18601,11 @@ 28993 curwin->w_skipcol = get_dict_number(dict, (char_u *)"skipcol"); 28994 28995 check_cursor(); 28996 - changed_cline_bef_curs(); 28997 - invalidate_botline(); 28998 - redraw_later(VALID); 28999 + win_new_height(curwin, curwin->w_height); 29000 +# ifdef FEAT_VERTSPLIT 29001 + win_new_width(curwin, W_WIDTH(curwin)); 29002 +# endif 29003 + changed_window_setting(); 29004 29005 if (curwin->w_topline == 0) 29006 curwin->w_topline = 1; 29007 @@ -18258,6 +18743,19 @@ 27840 29008 } 27841 29009 … … 27857 29025 * Returns NULL when there is an error. 27858 29026 */ 27859 @@ -18768,11 +19 170,7 @@29027 @@ -18768,11 +19266,7 @@ 27860 29028 set_vim_var_char(c) 27861 29029 int c; … … 27870 29038 #ifdef FEAT_MBYTE 27871 29039 if (has_mbyte) 27872 @@ -19453,9 +19 851,14 @@29040 @@ -19453,9 +19947,14 @@ 27873 29041 * worked find the variable again. Don't auto-load a script if it was 27874 29042 * loaded already, otherwise it would be loaded every time when … … 27887 29055 return NULL; 27888 29056 } 27889 @@ -19730,7 +20133,6 @@ 29057 @@ -19564,7 +20063,7 @@ 29058 { 29059 sv = SCRIPT_SV(ga_scripts.ga_len + 1) = 29060 (scriptvar_T *)alloc_clear(sizeof(scriptvar_T)); 29061 - init_var_dict(&sv->sv_dict, &sv->sv_var); 29062 + init_var_dict(&sv->sv_dict, &sv->sv_var, VAR_SCOPE); 29063 ++ga_scripts.ga_len; 29064 } 29065 } 29066 @@ -19575,11 +20074,14 @@ 29067 * point to it. 29068 */ 29069 void 29070 -init_var_dict(dict, dict_var) 29071 +init_var_dict(dict, dict_var, scope) 29072 dict_T *dict; 29073 dictitem_T *dict_var; 29074 + int scope; 29075 { 29076 hash_init(&dict->dv_hashtab); 29077 + dict->dv_lock = 0; 29078 + dict->dv_scope = scope; 29079 dict->dv_refcount = DO_NOT_FREE_CNT; 29080 dict->dv_copyID = 0; 29081 dict_var->di_tv.vval.v_dict = dict; 29082 @@ -19730,7 +20232,6 @@ 27890 29083 dictitem_T *v; 27891 29084 char_u *varname; … … 27895 29088 ht = find_var_ht(name, &varname); 27896 29089 if (ht == NULL || *varname == NUL) 27897 @@ -19740,25 +20 142,8 @@29090 @@ -19740,25 +20241,8 @@ 27898 29091 } 27899 29092 v = find_var_in_ht(ht, varname, TRUE); … … 27923 29116 if (v != NULL) 27924 29117 { 27925 @@ -19824,13 +20 209,8 @@29118 @@ -19824,13 +20308,8 @@ 27926 29119 } 27927 29120 … … 27939 29132 v = (dictitem_T *)alloc((unsigned)(sizeof(dictitem_T) 27940 29133 + STRLEN(varname))); 27941 @@ -19895,6 +20 275,55 @@29134 @@ -19895,6 +20374,55 @@ 27942 29135 } 27943 29136 … … 27995 29188 * Also give an error message, using "name". 27996 29189 */ 27997 @@ -20099,7 +20 528,13 @@29190 @@ -20099,7 +20627,13 @@ 27998 29191 /* Call msg_start() after eval1(), evaluating the expression 27999 29192 * may cause a message to appear. */ … … 28009 29202 else if (eap->cmdidx == CMD_echo) 28010 29203 msg_puts_attr((char_u *)" ", echo_attr); 28011 @@ -20302,6 +20 737,7 @@29204 @@ -20302,6 +20836,7 @@ 28012 29205 exarg_T *eap; 28013 29206 { … … 28017 29210 int c; 28018 29211 int saved_did_emsg; 28019 @@ -20548,6 +2 0984,15 @@29212 @@ -20548,6 +21083,15 @@ 28020 29213 arg = vim_strsave(arg); 28021 29214 if (arg == NULL) … … 28033 29226 *p = c; 28034 29227 newargs.ga_len++; 28035 @@ -20623,7 +21 068,8 @@29228 @@ -20623,7 +21167,8 @@ 28036 29229 nesting = 0; 28037 29230 for (;;) … … 28043 29236 sourcing_lnum_off = sourcing_lnum; 28044 29237 28045 @@ -20726,6 +21 172,8 @@29238 @@ -20726,6 +21271,8 @@ 28046 29239 && (!ASCII_ISALPHA(p[2]) || p[2] == 'r')) 28047 29240 || (p[0] == 't' && p[1] == 'c' … … 28052 29245 && (!ASCII_ISALPHA(p[3]) || p[3] == 'y')) 28053 29246 || (p[0] == 'm' && p[1] == 'z' 28054 @@ -21562,6 +22 010,9 @@29247 @@ -21562,6 +22109,9 @@ 28055 29248 ++hi; 28056 29249 fp = HI2UF(hi); … … 28062 29255 return fp->uf_name; /* prevents overflow */ 28063 29256 28064 @@ -21921,8 +22372,12 @@ 29257 @@ -21689,7 +22239,7 @@ 29258 * Unreference a Function: decrement the reference count and free it when it 29259 * becomes zero. Only for numbered functions. 29260 */ 29261 - static void 29262 + void 29263 func_unref(name) 29264 char_u *name; 29265 { 29266 @@ -21713,7 +22263,7 @@ 29267 /* 29268 * Count a reference to a Function. 29269 */ 29270 - static void 29271 + void 29272 func_ref(name) 29273 char_u *name; 29274 { 29275 @@ -21792,7 +22342,7 @@ 29276 /* 29277 * Init l: variables. 29278 */ 29279 - init_var_dict(&fc->l_vars, &fc->l_vars_var); 29280 + init_var_dict(&fc->l_vars, &fc->l_vars_var, VAR_DEF_SCOPE); 29281 if (selfdict != NULL) 29282 { 29283 /* Set l:self to "selfdict". Use "name" to avoid a warning from 29284 @@ -21813,7 +22363,7 @@ 29285 * Set a:0 to "argcount". 29286 * Set a:000 to a list with room for the "..." arguments. 29287 */ 29288 - init_var_dict(&fc->l_avars, &fc->l_avars_var); 29289 + init_var_dict(&fc->l_avars, &fc->l_avars_var, VAR_SCOPE); 29290 add_nr_var(&fc->l_avars, &fc->fixvar[fixvar_idx++].var, "0", 29291 (varnumber_T)(argcount - fp->uf_args.ga_len)); 29292 /* Use "name" to avoid a warning from some compiler that checks the 29293 @@ -21921,8 +22471,12 @@ 28065 29294 s = tv2string(&argvars[i], &tofree, numbuf2, 0); 28066 29295 if (s != NULL) … … 28077 29306 } 28078 29307 } 28079 @@ -22010,8 +22 465,12 @@29308 @@ -22010,8 +22564,12 @@ 28080 29309 s = tv2string(fc->rettv, &tofree, numbuf2, 0); 28081 29310 if (s != NULL) … … 28092 29321 } 28093 29322 } 28094 @@ -22519,18 +2 2978,21 @@29323 @@ -22519,18 +23077,21 @@ 28095 29324 if (tab != NULL) 28096 29325 { … … 28119 29348 (int)(tab - virp->vir_line + 1), TRUE); 28120 29349 #ifdef FEAT_FLOAT 28121 @@ -22539,9 +23 001,28 @@29350 @@ -22539,9 +23100,28 @@ 28122 29351 #endif 28123 29352 else … … 28149 29378 } 28150 29379 } 28151 @@ -22583,8 +23 064,10 @@29380 @@ -22583,8 +23163,10 @@ 28152 29381 case VAR_STRING: s = "STR"; break; 28153 29382 case VAR_NUMBER: s = "NUM"; break; … … 28161 29390 } 28162 29391 fprintf(fp, "!%s\t%s\t", this_var->di_key, s); 28163 @@ -22656,7 +23 139,7 @@29392 @@ -22656,7 +23238,7 @@ 28164 29393 f = -f; 28165 29394 sign = '-'; … … 28170 29399 || put_eol(fd) == FAIL) 28171 29400 return FAIL; 28172 @@ -23019,6 +23 502,7 @@29401 @@ -23019,6 +23601,7 @@ 28173 29402 int c; 28174 29403 int has_fullname = 0; … … 28178 29407 #endif 28179 29408 28180 @@ -23193,24 +23677,25 @@ 29409 @@ -23072,6 +23655,27 @@ 29410 return -1; 29411 } 29412 29413 +#ifdef WIN3264 29414 +# if _WIN32_WINNT >= 0x0500 29415 + if (vim_strchr(*fnamep, '~') != NULL) 29416 + { 29417 + /* Expand 8.3 filename to full path. Needed to make sure the same 29418 + * file does not have two different names. 29419 + * Note: problem does not occur if _WIN32_WINNT < 0x0500. */ 29420 + p = alloc(_MAX_PATH + 1); 29421 + if (p != NULL) 29422 + { 29423 + if (GetLongPathName(*fnamep, p, MAXPATHL)) 29424 + { 29425 + vim_free(*bufp); 29426 + *bufp = *fnamep = p; 29427 + } 29428 + else 29429 + vim_free(p); 29430 + } 29431 + } 29432 +# endif 29433 +#endif 29434 /* Append a path separator to a directory. */ 29435 if (mch_isdir(*fnamep)) 29436 { 29437 @@ -23193,24 +23797,25 @@ 28181 29438 } 28182 29439 … … 28211 29468 { 28212 29469 if (shortpath_for_partial(fnamep, bufp, fnamelen) == FAIL) 28213 @@ -23218,18 +23 703,16 @@29470 @@ -23218,18 +23823,16 @@ 28214 29471 } 28215 29472 else … … 28234 29491 return -1; 28235 29492 diff -Naur vim73.orig/src/ex_cmds.c vim73/src/ex_cmds.c 28236 --- vim73.orig/src/ex_cmds.c 201 2-06-03 23:09:52.940007057+000028237 +++ vim73/src/ex_cmds.c 2012-0 6-03 23:09:55.848084445+000029493 --- vim73.orig/src/ex_cmds.c 2010-08-13 09:14:35.000000000 +0000 29494 +++ vim73/src/ex_cmds.c 2012-07-20 20:31:18.014311616 +0000 28238 29495 @@ -11,10 +11,6 @@ 28239 29496 * ex_cmds.c: some functions for command line commands … … 28701 29958 - p = p_rtp; 28702 29959 - while (*p != NUL) 28703 + if (strstr((char *)line, "*local-additions*") == NULL) 28704 + continue; 28705 + 28706 + /* Go through all directories in 'runtimepath', skipping 28707 + * $VIMRUNTIME. */ 28708 + p = p_rtp; 28709 + while (*p != NUL) 28710 + { 28711 + copy_option_part(&p, NameBuff, MAXPATHL, ","); 28712 + mustfree = FALSE; 28713 + rt = vim_getenv((char_u *)"VIMRUNTIME", &mustfree); 28714 + if (fullpathcmp(rt, NameBuff, FALSE) != FPC_SAME) 28715 { 29960 - { 28716 29961 - copy_option_part(&p, NameBuff, MAXPATHL, ","); 28717 29962 - mustfree = FALSE; … … 28724 29969 - char_u *s; 28725 29970 - int fi; 29971 + if (strstr((char *)line, "*local-additions*") == NULL) 29972 + continue; 29973 + 29974 + /* Go through all directories in 'runtimepath', skipping 29975 + * $VIMRUNTIME. */ 29976 + p = p_rtp; 29977 + while (*p != NUL) 29978 + { 29979 + copy_option_part(&p, NameBuff, MAXPATHL, ","); 29980 + mustfree = FALSE; 29981 + rt = vim_getenv((char_u *)"VIMRUNTIME", &mustfree); 29982 + if (fullpathcmp(rt, NameBuff, FALSE) != FPC_SAME) 29983 + { 28726 29984 + int fcount; 28727 29985 + char_u **fnames; … … 29085 30343 29086 30344 /* set values for a defined sign. */ 29087 @@ -6886,6 +7004,8 @@ 30345 @@ -6879,6 +6997,16 @@ 30346 lnum = atoi((char *)arg); 30347 arg = skiptowhite(arg); 30348 } 30349 + else if (STRNCMP(arg, "*", 1) == 0 && idx == SIGNCMD_UNPLACE) 30350 + { 30351 + if (id != -1) 30352 + { 30353 + EMSG(_(e_invarg)); 30354 + return; 30355 + } 30356 + id = -2; 30357 + arg = skiptowhite(arg + 1); 30358 + } 30359 else if (STRNCMP(arg, "name=", 5) == 0) 30360 { 30361 arg += 5; 30362 @@ -6886,6 +7014,8 @@ 29088 30363 arg = skiptowhite(arg); 29089 30364 if (*arg != NUL) … … 29094 30369 else if (STRNCMP(arg, "file=", 5) == 0) 29095 30370 { 30371 @@ -6913,7 +7043,7 @@ 30372 { 30373 EMSG2(_("E158: Invalid buffer name: %s"), arg); 30374 } 30375 - else if (id <= 0) 30376 + else if (id <= 0 && !(idx == SIGNCMD_UNPLACE && id == -2)) 30377 { 30378 if (lnum >= 0 || sign_name != NULL) 30379 EMSG(_(e_invarg)); 30380 @@ -6954,11 +7084,17 @@ 30381 } 30382 else if (idx == SIGNCMD_UNPLACE) 30383 { 30384 - /* ":sign unplace {id} file={fname}" */ 30385 if (lnum >= 0 || sign_name != NULL) 30386 EMSG(_(e_invarg)); 30387 + else if (id == -2) 30388 + { 30389 + /* ":sign unplace * file={fname}" */ 30390 + redraw_buf_later(buf, NOT_VALID); 30391 + buf_delete_signs(buf); 30392 + } 30393 else 30394 { 30395 + /* ":sign unplace {id} file={fname}" */ 30396 lnum = buf_delsign(buf, id); 30397 update_debug_sign(buf, lnum); 30398 } 29096 30399 diff -Naur vim73.orig/src/ex_cmds.h vim73/src/ex_cmds.h 29097 --- vim73.orig/src/ex_cmds.h 201 2-06-03 23:09:52.948007269+000029098 +++ vim73/src/ex_cmds.h 2012-0 6-03 23:09:55.880085297+000030400 --- vim73.orig/src/ex_cmds.h 2010-07-21 13:48:02.000000000 +0000 30401 +++ vim73/src/ex_cmds.h 2012-07-20 20:31:17.920978216 +0000 29099 30402 @@ -102,7 +102,7 @@ 29100 30403 EX(CMD_aboveleft, "aboveleft", ex_wrongmodifier, … … 29133 30436 NEEDARG|EXTRA|NOTRLCOM), 29134 30437 EX(CMD_saveas, "saveas", ex_write, 30438 @@ -944,7 +944,7 @@ 30439 EX(CMD_tabfirst, "tabfirst", ex_tabnext, 30440 TRLBAR), 30441 EX(CMD_tabmove, "tabmove", ex_tabmove, 30442 - RANGE|NOTADR|ZEROR|COUNT|TRLBAR|ZEROR), 30443 + RANGE|NOTADR|ZEROR|EXTRA|NOSPC|TRLBAR), 30444 EX(CMD_tablast, "tablast", ex_tabnext, 30445 TRLBAR), 30446 EX(CMD_tabnext, "tabnext", ex_tabnext, 29135 30447 @@ -1078,7 +1078,7 @@ 29136 30448 EX(CMD_wsverb, "wsverb", ex_wsverb, … … 29143 30455 EX(CMD_xit, "xit", ex_exit, 29144 30456 diff -Naur vim73.orig/src/ex_cmds2.c vim73/src/ex_cmds2.c 29145 --- vim73.orig/src/ex_cmds2.c 201 2-06-03 23:09:52.948007269+000029146 +++ vim73/src/ex_cmds2.c 2012-0 6-03 23:09:55.780082635+000030457 --- vim73.orig/src/ex_cmds2.c 2010-07-27 19:43:38.000000000 +0000 30458 +++ vim73/src/ex_cmds2.c 2012-07-20 20:31:17.370977822 +0000 29147 30459 @@ -11,10 +11,6 @@ 29148 30460 * ex_cmds2.c: some more functions for command line commands … … 29175 30487 if (p == NULL) 29176 30488 return FAIL; 29177 @@ -694,10 +682,12 @@ 30489 @@ -608,10 +596,15 @@ 30490 garray_T *gap; 30491 30492 gap = &dbg_breakp; 30493 -#ifdef FEAT_PROFILE 30494 if (eap->cmdidx == CMD_profdel) 30495 + { 30496 +#ifdef FEAT_PROFILE 30497 gap = &prof_ga; 30498 +#else 30499 + ex_ni(eap); 30500 + return; 30501 #endif 30502 + } 30503 30504 if (vim_isdigit(*eap->arg)) 30505 { 30506 @@ -694,10 +687,12 @@ 29178 30507 for (i = 0; i < dbg_breakp.ga_len; ++i) 29179 30508 { … … 29189 30518 } 29190 30519 } 29191 @@ -1119,7 +11 09,7 @@30520 @@ -1119,7 +1114,7 @@ 29192 30521 static enum 29193 30522 { … … 29198 30527 29199 30528 static char *pexpand_cmds[] = { 29200 @@ -1488,7 +14 78,7 @@30529 @@ -1488,7 +1483,7 @@ 29201 30530 #endif 29202 30531 … … 29207 30536 */ 29208 30537 void 29209 @@ -1496,9 +14 86,10 @@30538 @@ -1496,9 +1491,10 @@ 29210 30539 buf_T *buf; 29211 30540 int checkall; /* may abandon all changed buffers */ … … 29219 30548 dialog_msg(buff, _("Save changes to \"%s\"?"), 29220 30549 (buf->b_fname != NULL) ? 29221 @@ -1508,13 +1 499,19 @@30550 @@ -1508,13 +1504,19 @@ 29222 30551 else 29223 30552 ret = vim_dialog_yesnocancel(VIM_QUESTION, NULL, buff, 1); … … 29240 30569 } 29241 30570 else if (ret == VIM_NO) 29242 @@ -1542,7 +15 39,9 @@30571 @@ -1542,7 +1544,9 @@ 29243 30572 /* May get file name, when there is none */ 29244 30573 browse_save_fname(buf2); … … 29251 30580 #ifdef FEAT_AUTOCMD 29252 30581 /* an autocommand may have deleted the buffer */ 29253 @@ -1579,6 +15 78,26 @@30582 @@ -1579,6 +1583,26 @@ 29254 30583 || forceit); 29255 30584 } … … 29278 30607 * Return TRUE if any buffer was changed and cannot be abandoned. 29279 30608 * That changed buffer becomes the current buffer. 29280 @@ -1587,32 +16 06,64 @@30609 @@ -1587,32 +1611,64 @@ 29281 30610 check_changed_any(hidden) 29282 30611 int hidden; /* Only check hidden buffers */ … … 29358 30687 #if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG) 29359 30688 /* 29360 @@ -1645,24 +1 696,29 @@30689 @@ -1645,24 +1701,29 @@ 29361 30690 #ifdef FEAT_WINDOWS 29362 30691 /* Try to find a window that contains the buffer. */ … … 29393 30722 29394 30723 /* 29395 @@ -1949,7 +2005,7 @@ 30724 @@ -1789,22 +1850,28 @@ 30725 #if defined(FEAT_QUICKFIX) || defined(FEAT_SYN_HL) || defined(PROTO) 30726 /* 30727 * Parse a list of arguments (file names), expand them and return in 30728 - * "fnames[fcountp]". 30729 + * "fnames[fcountp]". When "wig" is TRUE, removes files matching 'wildignore'. 30730 * Return FAIL or OK. 30731 */ 30732 int 30733 -get_arglist_exp(str, fcountp, fnamesp) 30734 +get_arglist_exp(str, fcountp, fnamesp, wig) 30735 char_u *str; 30736 int *fcountp; 30737 char_u ***fnamesp; 30738 + int wig; 30739 { 30740 garray_T ga; 30741 int i; 30742 30743 if (get_arglist(&ga, str) == FAIL) 30744 return FAIL; 30745 - i = gen_expand_wildcards(ga.ga_len, (char_u **)ga.ga_data, 30746 - fcountp, fnamesp, EW_FILE|EW_NOTFOUND); 30747 + if (wig == TRUE) 30748 + i = expand_wildcards(ga.ga_len, (char_u **)ga.ga_data, 30749 + fcountp, fnamesp, EW_FILE|EW_NOTFOUND); 30750 + else 30751 + i = gen_expand_wildcards(ga.ga_len, (char_u **)ga.ga_data, 30752 + fcountp, fnamesp, EW_FILE|EW_NOTFOUND); 30753 + 30754 ga_clear(&ga); 30755 return i; 30756 } 30757 @@ -1949,7 +2016,7 @@ 29396 30758 } 29397 30759 … … 29402 30764 */ 29403 30765 static int 29404 @@ -2165,9 +22 21,7 @@30766 @@ -2165,9 +2232,7 @@ 29405 30767 { 29406 30768 if (win_split(0, 0) == FAIL) … … 29413 30775 else 29414 30776 #endif 29415 @@ -2946,11 +3000,7 @@ 30777 @@ -2422,7 +2487,7 @@ 30778 /* go to window "tp" */ 30779 if (!valid_tabpage(tp)) 30780 break; 30781 - goto_tabpage_tp(tp); 30782 + goto_tabpage_tp(tp, TRUE); 30783 tp = tp->tp_next; 30784 } 30785 #endif 30786 @@ -2946,11 +3011,7 @@ 29416 30787 proftime_T wait_start; 29417 30788 #endif … … 29425 30796 return retval; 29426 30797 fname_exp = fix_fname(p); 29427 @@ -3286,7 +33 36,11 @@30798 @@ -3286,7 +3347,11 @@ 29428 30799 29429 30800 for (i = 1; i <= script_items.ga_len && !got_int; ++i) … … 29438 30809 29439 30810 # if defined(BACKSLASH_IN_FILENAME) || defined(PROTO) 29440 @@ -3412,7 +34 66,7 @@30811 @@ -3412,7 +3477,7 @@ 29441 30812 { 29442 30813 struct source_cookie *sp = (struct source_cookie *)cookie; … … 29447 30818 #ifdef FEAT_EVAL 29448 30819 /* If breakpoints have been added/deleted need to check for it. */ 29449 @@ -3451,28 +35 05,49 @@30820 @@ -3451,28 +3516,49 @@ 29450 30821 { 29451 30822 /* compensate for the one line read-ahead */ … … 29512 30883 s = string_convert(&sp->conv, line, NULL); 29513 30884 if (s != NULL) 29514 @@ -4166,11 +42 41,90 @@30885 @@ -4166,11 +4252,90 @@ 29515 30886 /* Set v:lang, v:lc_time and v:ctype to the final result. */ 29516 30887 set_lang_var(); … … 29603 30974 * Function given to ExpandGeneric() to obtain the possible arguments of the 29604 30975 * ":language" command. 29605 @@ -4186,7 +43 40,25 @@30976 @@ -4186,7 +4351,25 @@ 29606 30977 return (char_u *)"ctype"; 29607 30978 if (idx == 2) … … 29631 31002 29632 31003 diff -Naur vim73.orig/src/ex_docmd.c vim73/src/ex_docmd.c 29633 --- vim73.orig/src/ex_docmd.c 201 2-06-03 23:09:52.924006631+000029634 +++ vim73/src/ex_docmd.c 2012-0 6-03 23:09:55.824083805+000031004 --- vim73.orig/src/ex_docmd.c 2010-08-07 14:59:47.000000000 +0000 31005 +++ vim73/src/ex_docmd.c 2012-07-20 20:31:18.217645094 +0000 29635 31006 @@ -61,6 +61,7 @@ 29636 31007 static char_u *do_one_cmd __ARGS((char_u **, int, char_u *(*fgetline)(int, void *, int), void *cookie)); … … 30263 31634 uc_add_command(name, end - name, p, argt, def, flags, compl, compl_arg, 30264 31635 eap->forceit); 30265 @@ -5888,7 +5983,14 @@ 31636 @@ -5750,8 +5845,14 @@ 31637 } 31638 else 31639 { 31640 +#ifdef FEAT_MBYTE 31641 + int charlen = (*mb_ptr2len)(p); 31642 + len += charlen; 31643 + p += charlen; 31644 +#else 31645 ++len; 31646 ++p; 31647 +#endif 31648 } 31649 } 31650 31651 @@ -5794,7 +5895,7 @@ 31652 } 31653 else 31654 { 31655 - *q++ = *p++; 31656 + MB_COPY_CHAR(p, q); 31657 } 31658 } 31659 *q++ = '"'; 31660 @@ -5888,7 +5989,14 @@ 30266 31661 result = STRLEN(eap->arg) + 2; 30267 31662 for (p = eap->arg; *p; ++p) … … 30279 31674 } 30280 31675 30281 @@ -5897,7 + 5999,14 @@31676 @@ -5897,7 +6005,14 @@ 30282 31677 *buf++ = '"'; 30283 31678 for (p = eap->arg; *p; ++p) … … 30295 31690 *buf++ = *p; 30296 31691 } 30297 @@ -6039,15 +61 48,17 @@31692 @@ -6039,15 +6154,17 @@ 30298 31693 end = vim_strchr(start + 1, '>'); 30299 31694 if (buf != NULL) … … 30316 31711 * do_cmdline() doesn't handle that, so convert it back. 30317 31712 * Also change K_SPECIAL KS_EXTRA KE_CSI into CSI. */ 30318 @@ -6439,7 +6550,7 @@ 31713 @@ -6347,7 +6464,10 @@ 31714 return; 31715 } 31716 #ifdef FEAT_AUTOCMD 31717 - if (curbuf_locked()) 31718 + apply_autocmds(EVENT_QUITPRE, NULL, NULL, FALSE, curbuf); 31719 + /* Refuse to quick when locked or when the buffer in the last window is 31720 + * being closed (can only happen in autocommands). */ 31721 + if (curbuf_locked() || (curbuf->b_nwindows == 1 && curbuf->b_closing)) 31722 return; 31723 #endif 31724 31725 @@ -6439,7 +6559,7 @@ 30319 31726 { 30320 31727 # ifdef FEAT_CMDWIN … … 30325 31732 # endif 30326 31733 if (!text_locked() 30327 @@ -6897,9 +70 08,7 @@31734 @@ -6897,9 +7017,7 @@ 30328 31735 # ifdef FEAT_WINDOWS 30329 31736 if (win_split(0, 0) == FAIL) … … 30336 31743 /* When splitting the window, create a new alist. Otherwise the 30337 31744 * existing one is overwritten. */ 30338 @@ -7026,7 +71 35,7 @@31745 @@ -7026,7 +7144,7 @@ 30339 31746 old_arg_count = GARGCOUNT; 30340 31747 if (expand_wildcards(old_arg_count, old_arg_files, … … 30345 31752 { 30346 31753 alist_set(&global_alist, new_arg_file_count, new_arg_files, 30347 @@ -7299,7 +74 08,9 @@31754 @@ -7299,7 +7417,9 @@ 30348 31755 || cmdmod.browse 30349 31756 # endif … … 30356 31763 do_check_scrollbind(FALSE); 30357 31764 # endif 30358 @@ -8122,6 +8233,12 @@ 31765 @@ -7364,7 +7484,42 @@ 31766 ex_tabmove(eap) 31767 exarg_T *eap; 31768 { 31769 - tabpage_move(eap->addr_count == 0 ? 9999 : (int)eap->line2); 31770 + int tab_number = 9999; 31771 + 31772 + if (eap->arg && *eap->arg != NUL) 31773 + { 31774 + char_u *p = eap->arg; 31775 + int relative = 0; /* argument +N/-N means: move N places to the 31776 + * right/left relative to the current position. */ 31777 + 31778 + if (*eap->arg == '-') 31779 + { 31780 + relative = -1; 31781 + p = eap->arg + 1; 31782 + } 31783 + else if (*eap->arg == '+') 31784 + { 31785 + relative = 1; 31786 + p = eap->arg + 1; 31787 + } 31788 + else 31789 + p = eap->arg; 31790 + 31791 + if (p == skipdigits(p)) 31792 + { 31793 + /* No numbers as argument. */ 31794 + eap->errmsg = e_invarg; 31795 + return; 31796 + } 31797 + 31798 + tab_number = getdigits(&p); 31799 + if (relative != 0) 31800 + tab_number = tab_number * relative + tabpage_index(curtab) - 1;; 31801 + } 31802 + else if (eap->addr_count != 0) 31803 + tab_number = eap->line2; 31804 + 31805 + tabpage_move(tab_number); 31806 } 31807 31808 /* 31809 @@ -8122,6 +8277,12 @@ 30359 31810 { 30360 31811 ui_delay(msec - done > 1000L ? 1000L : msec - done, TRUE); … … 30369 31820 } 30370 31821 30371 @@ -8193,7 +83 10,7 @@31822 @@ -8193,7 +8354,7 @@ 30372 31823 p = skipwhite(p); 30373 31824 if (*p != NUL && *p != '"' && eap->nextcmd == NULL) … … 30378 31829 /* Pass flags on for ":vertical wincmd ]". */ 30379 31830 postponed_split_flags = cmdmod.split; 30380 @@ -8907,35 +9024,42 @@ 31831 @@ -8428,7 +8589,7 @@ 31832 } 31833 ++eap->line2; 31834 } 31835 - (void)do_join(eap->line2 - eap->line1 + 1, !eap->forceit, TRUE); 31836 + (void)do_join(eap->line2 - eap->line1 + 1, !eap->forceit, TRUE, TRUE); 31837 beginline(BL_WHITE | BL_FIX); 31838 ex_may_print(eap); 31839 } 31840 @@ -8907,35 +9068,42 @@ 30381 31841 failed = TRUE; 30382 31842 if (eap->cmdidx == CMD_mksession) … … 30445 31905 } 30446 31906 else 30447 @@ -8966,10 +9 090,15 @@31907 @@ -8966,10 +9134,15 @@ 30448 31908 else if (eap->cmdidx == CMD_mksession) 30449 31909 { … … 30464 31924 #endif 30465 31925 #ifdef MKSESSION_NL 30466 @@ -9295,7 +94 24,7 @@31926 @@ -9295,7 +9468,7 @@ 30467 31927 && !got_int) 30468 31928 { … … 30473 31933 } 30474 31934 #endif 30475 @@ -9393,7 +95 22,7 @@31935 @@ -9393,7 +9566,7 @@ 30476 31936 ex_ptag(eap) 30477 31937 exarg_T *eap; … … 30482 31942 } 30483 31943 30484 @@ -9525,17 +96 54,23 @@31944 @@ -9525,17 +9698,23 @@ 30485 31945 #define SPEC_CFILE 4 30486 31946 "<sfile>", /* ":so" file name */ … … 30510 31970 }; 30511 31971 30512 @@ -9560,6 +9 695,7 @@31972 @@ -9560,6 +9739,7 @@ 30513 31973 * '<cWORD>' to WORD under the cursor 30514 31974 * '<cfile>' to path name under the cursor … … 30518 31978 * '<abuf>' to buffer number for autocommand 30519 31979 * '<amatch>' to matching name for autocommand 30520 @@ -9591,10 +97 27,7 @@31980 @@ -9591,10 +9771,7 @@ 30521 31981 #ifdef FEAT_MODIFY_FNAME 30522 31982 int skip_mod = FALSE; … … 30529 31989 *errormsg = NULL; 30530 31990 if (escaped != NULL) 30531 @@ -9653,14 +9 786,7 @@31991 @@ -9653,14 +9830,7 @@ 30532 31992 valid = 0; /* Must have ":p:h" to be valid */ 30533 31993 } … … 30544 32004 30545 32005 case SPEC_HASH: /* '#' or "#99": alternate file */ 30546 @@ -9783,6 +99 09,15 @@32006 @@ -9783,6 +9953,15 @@ 30547 32007 return NULL; 30548 32008 } … … 30560 32020 case SPEC_CLIENT: /* Source of last submitted input */ 30561 32021 sprintf((char *)strbuf, PRINTF_HEX_LONG_U, 30562 @@ -9796,11 +99 31,7 @@32022 @@ -9796,11 +9975,7 @@ 30563 32023 if (src[*usedlen] == '<') /* remove the file name extension */ 30564 32024 { … … 30572 32032 } 30573 32033 #ifdef FEAT_MODIFY_FNAME 30574 @@ -10645,7 +10 776,7 @@32034 @@ -10645,7 +10820,7 @@ 30575 32035 unsigned *flagp; 30576 32036 { … … 30581 32041 30582 32042 if (gap->ga_len == 0) 30583 @@ -10660,11 +10 791,19 @@32043 @@ -10660,11 +10835,19 @@ 30584 32044 { 30585 32045 if (fullname) … … 30603 32063 } 30604 32064 return put_eol(fd); 30605 @@ -10707,7 +108 46,7 @@32065 @@ -10707,7 +10890,7 @@ 30606 32066 * Write a file name to the session file. 30607 32067 * Takes care of the "slash" option in 'sessionoptions' and escapes special … … 30612 32072 static int 30613 32073 ses_put_fname(fd, name, flagp) 30614 @@ -10716,49 +108 55,32 @@32074 @@ -10716,49 +10899,32 @@ 30615 32075 unsigned *flagp; 30616 32076 { … … 30682 32142 } 30683 32143 30684 @@ -10826,8 +109 48,7 @@32144 @@ -10826,8 +10992,7 @@ 30685 32145 else if (vim_ispathsep(*p)) 30686 32146 { … … 30692 32152 *s++ = '-'; 30693 32153 else 30694 @@ -10910,7 +110 31,7 @@32154 @@ -10910,7 +11075,7 @@ 30695 32155 30696 32156 #if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG) || defined(PROTO) … … 30701 32161 */ 30702 32162 void 30703 @@ -10921,7 +110 42,7 @@32163 @@ -10921,7 +11086,7 @@ 30704 32164 { 30705 32165 if (fname == NULL) … … 30711 32171 30712 32172 diff -Naur vim73.orig/src/ex_getln.c vim73/src/ex_getln.c 30713 --- vim73.orig/src/ex_getln.c 201 2-06-03 23:09:52.956007482+000030714 +++ vim73/src/ex_getln.c 2012-0 6-03 23:09:55.884085403 +000032173 --- vim73.orig/src/ex_getln.c 2010-08-14 15:25:45.000000000 +0000 32174 +++ vim73/src/ex_getln.c 2012-07-20 20:31:17.557644623 +0000 30715 32175 @@ -25,7 +25,7 @@ 30716 32176 int cmdlen; /* number of chars in command line */ … … 30893 32353 } 30894 32354 30895 @@ -2843,6 +2888,7 @@ 32355 @@ -2719,6 +2764,11 @@ 32356 msg_no_more = TRUE; 32357 if (ccline.cmdlen == ccline.cmdpos) 32358 msg_putchar(' '); 32359 +#ifdef FEAT_MBYTE 32360 + else if (has_mbyte) 32361 + draw_cmdline(ccline.cmdpos, 32362 + (*mb_ptr2len)(ccline.cmdbuff + ccline.cmdpos)); 32363 +#endif 32364 else 32365 draw_cmdline(ccline.cmdpos, 1); 32366 msg_no_more = FALSE; 32367 @@ -2843,6 +2893,7 @@ 30896 32368 { 30897 32369 msg_no_more = TRUE; … … 30901 32373 /* Avoid clearing the rest of the line too often. */ 30902 32374 if (cmdline_row != i || ccline.overstrike) 30903 @@ -3023,7 +30 69,7 @@32375 @@ -3023,7 +3074,7 @@ 30904 32376 int len; 30905 32377 … … 30910 32382 #ifdef FEAT_MBYTE 30911 32383 if (has_mbyte) 30912 @@ -3041,7 +30 87,7 @@32384 @@ -3041,7 +3092,7 @@ 30913 32385 --w; 30914 32386 } … … 30919 32391 p += len; 30920 32392 } 30921 @@ -3258,6 +3304,24 @@ 32393 @@ -3082,7 +3133,8 @@ 32394 else 32395 #endif 32396 c = *s++; 32397 - if (cv == Ctrl_V || c == ESC || c == Ctrl_C || c == CAR || c == NL 32398 + if (cv == Ctrl_V || c == ESC || c == Ctrl_C 32399 + || c == CAR || c == NL || c == Ctrl_L 32400 #ifdef UNIX 32401 || c == intr_char 32402 #endif 32403 @@ -3258,6 +3310,24 @@ 30922 32404 return check_abbr(c, ccline.cmdbuff, ccline.cmdpos, 0); 30923 32405 } … … 30944 32426 * Return FAIL if this is not an appropriate context in which to do 30945 32427 * completion of anything, return OK if it is (even if there are no matches). 30946 @@ -3316,10 +338 0,14 @@32428 @@ -3316,10 +3386,14 @@ 30947 32429 p2 = NULL; 30948 32430 else … … 30961 32443 /* longest match: make sure it is not shorter, happens with :help */ 30962 32444 if (p2 != NULL && type == WILD_LONGEST) 30963 @@ -3396,6 +34 64,7 @@32445 @@ -3396,6 +3470,7 @@ 30964 32446 * mode = WILD_PREV: use previous match in multiple match, wrap to first 30965 32447 * mode = WILD_ALL: return all matches concatenated … … 30969 32451 * options = WILD_LIST_NOTFOUND: list entries without a match 30970 32452 * options = WILD_HOME_REPLACE: do home_replace() for buffer names 30971 @@ -3405,6 +34 74,7 @@32453 @@ -3405,6 +3480,7 @@ 30972 32454 * options = WILD_KEEP_ALL: don't remove 'wildignore' entries 30973 32455 * options = WILD_SILENT: don't print warning messages … … 30977 32459 * The variables xp->xp_context and xp->xp_backslash must have been set! 30978 32460 */ 30979 @@ -3518,7 +35 88,8 @@32461 @@ -3518,7 +3594,8 @@ 30980 32462 /* 30981 32463 * Check for matching suffixes in file names. … … 30987 32469 if (xp->xp_numfiles) 30988 32470 non_suf_match = xp->xp_numfiles; 30989 @@ -3674,6 +37 45,7 @@32471 @@ -3674,6 +3751,7 @@ 30990 32472 if (options & WILD_ESCAPE) 30991 32473 { … … 30995 32477 || xp->xp_context == EXPAND_BUFFERS 30996 32478 || xp->xp_context == EXPAND_DIRECTORIES) 30997 @@ -4338,6 +441 0,7 @@32479 @@ -4338,6 +4416,7 @@ 30998 32480 char_u ***matches; /* return: array of pointers to matches */ 30999 32481 { … … 31003 32485 if (xp->xp_context == EXPAND_UNSUCCESSFUL) 31004 32486 { 31005 @@ -4356,9 +44 29,11 @@32487 @@ -4356,9 +4435,11 @@ 31006 32488 if (file_str == NULL) 31007 32489 return EXPAND_UNSUCCESSFUL; … … 31017 32499 *matchcount = 0; 31018 32500 *matches = NULL; 31019 @@ -4410,7 +44 85,7 @@32501 @@ -4410,7 +4491,7 @@ 31020 32502 char_u *pat; 31021 32503 int *num_file; … … 31026 32508 #ifdef FEAT_CMDL_COMPL 31027 32509 regmatch_T regmatch; 31028 @@ -4464,6 +45 39,9 @@32510 @@ -4464,6 +4545,9 @@ 31029 32511 flags |= (EW_FILE | EW_PATH); 31030 32512 else … … 31036 32518 ret = expand_wildcards_eval(&pat, num_file, file, flags); 31037 32519 if (free_pat) 31038 @@ -4501,13 +45 79,25 @@32520 @@ -4501,13 +4585,25 @@ 31039 32521 || xp->xp_context == EXPAND_TAGS_LISTFILES) 31040 32522 return expand_tags(xp->xp_context == EXPAND_TAGS, pat, num_file, file); … … 31066 32548 if (xp->xp_context == EXPAND_USER_LIST) 31067 32549 return ExpandUserList(xp, num_file, file); 31068 @@ -4536,48 +46 26,53 @@32550 @@ -4536,48 +4632,53 @@ 31069 32551 int context; 31070 32552 char_u *((*func)__ARGS((expand_T *, int))); … … 31141 32623 int i; 31142 32624 31143 @@ -4591,7 +46 86,8 @@32625 @@ -4591,7 +4692,8 @@ 31144 32626 { 31145 32627 if (tab[i].ic) … … 31147 32629 - ret = ExpandGeneric(xp, ®match, num_file, file, tab[i].func); 31148 32630 + ret = ExpandGeneric(xp, ®match, num_file, file, 31149 + 32631 + tab[i].func, tab[i].escaped); 31150 32632 break; 31151 32633 } 31152 32634 } 31153 @@ -4613,13 +47 09,14 @@32635 @@ -4613,13 +4715,14 @@ 31154 32636 * Returns OK when no problems encountered, FAIL for error (out of memory). 31155 32637 */ … … 31167 32649 int i; 31168 32650 int count = 0; 31169 @@ -4644,7 +474 1,10 @@32651 @@ -4644,7 +4747,10 @@ 31170 32652 { 31171 32653 if (round) … … 31179 32661 #ifdef FEAT_MENU 31180 32662 if (func == get_menu_names && str != NULL) 31181 @@ -4676,7 +47 76,16 @@32663 @@ -4676,7 +4782,16 @@ 31182 32664 31183 32665 /* Sort the results. Keep menu's in the specified order. */ … … 31197 32679 #ifdef FEAT_CMDL_COMPL 31198 32680 /* Reset the variables used for special highlight names expansion, so that 31199 @@ -4728,7 +48 37,11 @@32681 @@ -4728,7 +4843,11 @@ 31200 32682 || (pat[1] == '.' && vim_ispathsep(pat[2]))))) 31201 32683 path = (char_u *)"."; … … 31209 32691 /* 31210 32692 * Go over all directories in $PATH. Expand matches in that directory and 31211 @@ -4949,57 +506 2,68 @@32693 @@ -4949,57 +5068,68 @@ 31212 32694 /* 31213 32695 * Expand color scheme, compiler or filetype names: … … 31300 32782 - vim_free(all); 31301 32783 + if (ga.ga_len == 0) 31302 + 32784 + return FAIL; 31303 32785 31304 32786 /* Sort and remove duplicates which can happen when specifying multiple … … 31308 32790 31309 32791 *file = ga.ga_data; 31310 @@ -5127,6 +525 1,34 @@32792 @@ -5127,6 +5257,34 @@ 31311 32793 NULL 31312 32794 }; … … 31343 32825 * init_history() - Initialize the command line history. 31344 32826 * Also used to re-allocate the history when the size changes. 31345 @@ -5220,13 +537 2,15 @@32827 @@ -5220,13 +5378,15 @@ 31346 32828 * If 'move_to_front' is TRUE, matching entry is moved to end of history. 31347 32829 */ … … 31360 32842 if (hisidx[type] < 0) 31361 32843 return FALSE; 31362 @@ -5235,7 +53 89,12 @@32844 @@ -5235,7 +5395,12 @@ 31363 32845 { 31364 32846 if (history[type][i].hisstr == NULL) … … 31374 32856 if (!move_to_front) 31375 32857 return TRUE; 31376 @@ -5329,7 +54 88,7 @@32858 @@ -5329,7 +5494,7 @@ 31377 32859 } 31378 32860 last_maptick = -1; … … 31383 32865 if (++hisidx[histype] == hislen) 31384 32866 hisidx[histype] = 0; 31385 @@ -5803,7 +596 2,7 @@32867 @@ -5803,7 +5968,7 @@ 31386 32868 hist[i].hisnum); 31387 32869 if (vim_strsize(hist[i].hisstr) > (int)Columns - 10) … … 31392 32874 STRCAT(IObuff, hist[i].hisstr); 31393 32875 msg_outtrans(IObuff); 31394 @@ -5907,8 +60 66,10 @@32876 @@ -5907,8 +6072,10 @@ 31395 32877 val = viminfo_readstring(virp, 1, TRUE); 31396 32878 if (val != NULL && *val != NUL) … … 31404 32886 /* Need to re-allocate to append the separator byte. */ 31405 32887 len = STRLEN(val); 31406 @@ -5920,7 +608 1,7 @@32888 @@ -5920,7 +6087,7 @@ 31407 32889 /* Search entry: Move the separator from the first 31408 32890 * column to after the NUL. */ … … 31413 32895 else 31414 32896 { 31415 @@ -6147,9 +63 08,7 @@32897 @@ -6147,9 +6314,7 @@ 31416 32898 curwin->w_p_rl = cmdmsg_rl; 31417 32899 cmdmsg_rl = FALSE; … … 31424 32906 # ifdef FEAT_AUTOCMD 31425 32907 /* Do execute autocommands for setting the filetype (load syntax). */ 31426 @@ -6287,6 +64 46,12 @@32908 @@ -6287,6 +6452,12 @@ 31427 32909 ccline.cmdbuff = vim_strsave((char_u *)"qa"); 31428 32910 cmdwin_result = CAR; … … 31437 32919 ccline.cmdbuff = vim_strsave(ml_get_curline()); 31438 32920 if (ccline.cmdbuff == NULL) 31439 @@ -6317,7 +648 2,7 @@32921 @@ -6317,7 +6488,7 @@ 31440 32922 /* win_close() may have already wiped the buffer when 'bh' is 31441 32923 * set to 'wipe' */ … … 31446 32928 /* Restore window sizes. */ 31447 32929 win_size_restore(&winsizes); 32930 diff -Naur vim73.orig/src/farsi.c vim73/src/farsi.c 32931 --- vim73.orig/src/farsi.c 2010-05-15 11:04:10.000000000 +0000 32932 +++ vim73/src/farsi.c 2012-07-20 20:31:18.224311766 +0000 32933 @@ -1813,7 +1813,7 @@ 32934 ptr[i] = toF_leading(ptr[i]); 32935 ++i; 32936 32937 - while(canF_Rjoin(ptr[i]) && (i < llen)) 32938 + while (canF_Rjoin(ptr[i]) && i < llen) 32939 { 32940 ptr[i] = toF_Rjoin(ptr[i]); 32941 if (F_isterm(ptr[i]) || !F_isalpha(ptr[i])) 31448 32942 diff -Naur vim73.orig/src/feature.h vim73/src/feature.h 31449 --- vim73.orig/src/feature.h 201 2-06-03 23:09:52.952007375+000031450 +++ vim73/src/feature.h 2012-0 6-03 23:09:55.760082103+000032943 --- vim73.orig/src/feature.h 2010-07-27 19:45:42.000000000 +0000 32944 +++ vim73/src/feature.h 2012-07-20 20:31:15.827643384 +0000 31451 32945 @@ -506,15 +506,6 @@ 31452 32946 #endif … … 31516 33010 +#endif 31517 33011 diff -Naur vim73.orig/src/fileio.c vim73/src/fileio.c 31518 --- vim73.orig/src/fileio.c 201 2-06-03 23:09:52.924006631+000031519 +++ vim73/src/fileio.c 2012-0 6-03 23:09:55.800083168+000033012 --- vim73.orig/src/fileio.c 2010-08-14 12:20:54.000000000 +0000 33013 +++ vim73/src/fileio.c 2012-07-20 20:31:18.164311724 +0000 31520 33014 @@ -11,14 +11,6 @@ 31521 33015 * fileio.c: read from and write to a file … … 31974 33468 # else 31975 33469 char_u *p; 31976 @@ -7682,6 +7674,7 @@ 33470 @@ -7651,6 +7643,7 @@ 33471 {"CmdwinEnter", EVENT_CMDWINENTER}, 33472 {"CmdwinLeave", EVENT_CMDWINLEAVE}, 33473 {"ColorScheme", EVENT_COLORSCHEME}, 33474 + {"CompleteDone", EVENT_COMPLETEDONE}, 33475 {"CursorHold", EVENT_CURSORHOLD}, 33476 {"CursorHoldI", EVENT_CURSORHOLDI}, 33477 {"CursorMoved", EVENT_CURSORMOVED}, 33478 @@ -7682,9 +7675,11 @@ 31977 33479 {"InsertChange", EVENT_INSERTCHANGE}, 31978 33480 {"InsertEnter", EVENT_INSERTENTER}, … … 31982 33484 {"QuickFixCmdPost", EVENT_QUICKFIXCMDPOST}, 31983 33485 {"QuickFixCmdPre", EVENT_QUICKFIXCMDPRE}, 31984 @@ -8744,6 +8737,8 @@ 33486 + {"QuitPre", EVENT_QUITPRE}, 33487 {"RemoteReply", EVENT_REMOTEREPLY}, 33488 {"SessionLoadPost", EVENT_SESSIONLOADPOST}, 33489 {"ShellCmdPost", EVENT_SHELLCMDPOST}, 33490 @@ -8744,6 +8739,8 @@ 31985 33491 int retval; 31986 33492 aco_save_T aco; … … 31991 33497 /* 31992 33498 * This is a bit tricky: For some commands curwin->w_buffer needs to be 31993 @@ -8760,11 +875 5,15 @@33499 @@ -8760,11 +8757,15 @@ 31994 33500 aucmd_prepbuf(&aco, buf); 31995 33501 … … 32011 33517 /* restore the current window */ 32012 33518 aucmd_restbuf(&aco); 32013 @@ -8779,6 +87 78,23 @@33519 @@ -8779,6 +8780,23 @@ 32014 33520 } 32015 33521 … … 32035 33541 * Search for a visible window containing the current buffer. If there isn't 32036 33542 * one then use "aucmd_win". 32037 @@ -8903,10 +8919,11 @@ 33543 @@ -8901,12 +8919,13 @@ 33544 if (wp == aucmd_win) 33545 { 32038 33546 if (tp != curtab) 32039 goto_tabpage_tp(tp); 33547 - goto_tabpage_tp(tp); 33548 + goto_tabpage_tp(tp, TRUE); 32040 33549 win_goto(aucmd_win); 32041 33550 - break; … … 32048 33557 /* Remove the window and frame from the tree of frames. */ 32049 33558 (void)winframe_remove(curwin, &dummy, NULL); 32050 @@ -8965,6 +898 2,10 @@33559 @@ -8965,6 +8984,10 @@ 32051 33560 && buf_valid(aco->new_curbuf) 32052 33561 && aco->new_curbuf->b_ml.ml_mfp != NULL) … … 32059 33568 curbuf = aco->new_curbuf; 32060 33569 curwin->w_buffer = curbuf; 32061 @@ -9063,7 +908 4,10 @@33570 @@ -9063,7 +9086,10 @@ 32062 33571 { 32063 33572 int state; … … 32071 33580 && !ins_compl_active() 32072 33581 #endif 32073 @@ -9094,6 +91 18,15 @@33582 @@ -9094,6 +9120,15 @@ 32074 33583 return (first_autopat[(int)EVENT_CURSORMOVEDI] != NULL); 32075 33584 } … … 32087 33596 apply_autocmds_group(event, fname, fname_io, force, group, buf, eap) 32088 33597 event_T event; 32089 @@ -9954,6 +998 7,8 @@33598 @@ -9954,6 +9989,8 @@ 32090 33599 if ((c == ';' || c == '>') && match == FALSE) 32091 33600 { … … 32096 33605 *pattern = c; /* Restore the terminator */ 32097 33606 type_start = pattern + 1; 32098 @@ -10181,19 +1021 6,11 @@33607 @@ -10181,19 +10218,11 @@ 32099 33608 ++p; 32100 33609 break; … … 32116 33625 break; 32117 33626 case '\\': 32118 @@ -10304,3 +1033 1,55 @@33627 @@ -10304,3 +10333,55 @@ 32119 33628 } 32120 33629 return reg_pat; … … 32173 33682 +#endif 32174 33683 diff -Naur vim73.orig/src/fold.c vim73/src/fold.c 32175 --- vim73.orig/src/fold.c 201 2-06-03 23:09:52.944007163+000032176 +++ vim73/src/fold.c 2012-0 6-03 23:09:55.544076354+000033684 --- vim73.orig/src/fold.c 2010-06-22 04:20:24.000000000 +0000 33685 +++ vim73/src/fold.c 2012-07-20 20:31:15.170976247 +0000 32177 33686 @@ -1033,10 +1033,10 @@ 32178 33687 * Init the fold info in a new window. … … 32322 33831 /* }}}1 */ 32323 33832 diff -Naur vim73.orig/src/getchar.c vim73/src/getchar.c 32324 --- vim73.orig/src/getchar.c 201 2-06-03 23:09:52.952007375+000032325 +++ vim73/src/getchar.c 2012-0 6-03 23:09:55.936086788+000033833 --- vim73.orig/src/getchar.c 2010-08-08 13:00:33.000000000 +0000 33834 +++ vim73/src/getchar.c 2012-07-20 20:31:16.570977250 +0000 32326 33835 @@ -418,12 +418,12 @@ 32327 33836 … … 32611 34120 : p_tm)), typebuf.tb_change_cnt); 32612 34121 32613 @@ -3168,6 +3188,7 @@ 34122 @@ -2799,7 +2819,8 @@ 34123 edit_unputchar(); 34124 if (State & CMDLINE) 34125 unputcmdline(); 34126 - setcursor(); /* put cursor back where it belongs */ 34127 + else 34128 + setcursor(); /* put cursor back where it belongs */ 34129 } 34130 34131 if (c < 0) 34132 @@ -3168,6 +3189,7 @@ 32614 34133 int expr = FALSE; 32615 34134 #endif … … 32619 34138 keys = arg; 32620 34139 map_table = maphash; 32621 @@ -3251,9 +327 2,9 @@34140 @@ -3251,9 +3273,9 @@ 32622 34141 validate_maphash(); 32623 34142 … … 32631 34150 p = keys; 32632 34151 do_backslash = (vim_strchr(p_cpo, CPO_BSLASH) == NULL); 32633 @@ -3266,6 +328 7,7 @@34152 @@ -3266,6 +3288,7 @@ 32634 34153 } 32635 34154 if (*p != NUL) … … 32639 34158 rhs = p; 32640 34159 hasarg = (*rhs != NUL); 32641 @@ -3288,6 +331 0,7 @@34160 @@ -3288,6 +3311,7 @@ 32642 34161 */ 32643 34162 if (haskey) … … 32647 34166 { 32648 34167 if (STRICMP(rhs, "<nop>") == 0) /* "<Nop>" means nothing */ 32649 @@ -3298,7 +332 1,7 @@34168 @@ -3298,7 +3322,7 @@ 32650 34169 32651 34170 #ifdef FEAT_FKMAP … … 32656 34175 */ 32657 34176 if (p_altkeymap && curwin->w_p_rl) 32658 @@ -3556,6 +35 79,8 @@34177 @@ -3556,6 +3580,8 @@ 32659 34178 } 32660 34179 vim_free(mp->m_str); … … 32665 34184 mp->m_silent = silent; 32666 34185 mp->m_mode = mode; 32667 @@ -3633,10 +365 8,12 @@34186 @@ -3633,10 +3659,12 @@ 32668 34187 32669 34188 mp->m_keys = vim_strsave(keys); … … 32678 34197 retval = 4; /* no mem */ 32679 34198 goto theend; 32680 @@ -3682,6 +37 09,7 @@34199 @@ -3682,6 +3710,7 @@ 32681 34200 mp = *mpp; 32682 34201 vim_free(mp->m_keys); … … 32686 34205 vim_free(mp); 32687 34206 } 32688 @@ -3851,12 +38 79,57 @@34207 @@ -3851,12 +3880,57 @@ 32689 34208 } 32690 34209 } … … 32745 34264 if (msg_didout || msg_silent != 0) 32746 34265 { 32747 @@ -3864,49 +393 7,15 @@34266 @@ -3864,49 +3938,15 @@ 32748 34267 if (got_int) /* 'q' typed at MORE prompt */ 32749 34268 return; … … 32802 34321 msg_putchar(' '); 32803 34322 32804 @@ -3931,12 +397 0,21 @@34323 @@ -3931,12 +3971,21 @@ 32805 34324 msg_putchar(' '); 32806 34325 … … 32827 34346 if (p_verbose > 0) 32828 34347 last_set_msg(mp->m_script_ID); 32829 @@ -4287,11 +433 5,7 @@34348 @@ -4287,11 +4336,7 @@ 32830 34349 int scol; /* starting column of the abbr. */ 32831 34350 int j; … … 32839 34358 #ifdef FEAT_LOCALMAP 32840 34359 mapblock_T *mp2; 32841 @@ -4304,8 +434 8,9 @@34360 @@ -4304,8 +4349,9 @@ 32842 34361 32843 34362 if (typebuf.tb_no_abbr_cnt) /* abbrev. are not recursive */ … … 32851 34370 32852 34371 /* 32853 @@ -4478,12 +452 3,25 @@34372 @@ -4478,12 +4524,25 @@ 32854 34373 { 32855 34374 char_u *res; … … 32877 34396 /* Forbid changing text or using ":normal" to avoid most of the bad side 32878 34397 * effects. Also restore the cursor position. */ 32879 @@ -4493,16 +455 1,23 @@34398 @@ -4493,16 +4552,23 @@ 32880 34399 #endif 32881 34400 set_vim_var_char(c); /* set v:char to the typed character */ … … 32902 34421 vim_free(p); 32903 34422 32904 @@ -4995,19 +506 0,21 @@34423 @@ -4995,19 +5061,21 @@ 32905 34424 sourcing_name = save_name; 32906 34425 } … … 32929 34448 int hash; 32930 34449 int len, minlen; 32931 @@ -5062,7 +51 29,17 @@34450 @@ -5062,7 +5130,17 @@ 32932 34451 minlen = mp->m_keylen - 3; 32933 34452 } … … 32948 34467 } 32949 34468 diff -Naur vim73.orig/src/globals.h vim73/src/globals.h 32950 --- vim73.orig/src/globals.h 201 2-06-03 23:09:52.952007375+000032951 +++ vim73/src/globals.h 2012-0 6-03 23:09:55.404072629+000034469 --- vim73.orig/src/globals.h 2010-07-23 19:20:45.000000000 +0000 34470 +++ vim73/src/globals.h 2012-07-20 20:31:18.067644988 +0000 32952 34471 @@ -113,9 +113,9 @@ 32953 34472 * When '$' is included in 'cpoptions' option set: … … 32962 34481 #ifdef FEAT_INS_EXPAND 32963 34482 /* 32964 @@ -510, 8 +510,13@@34483 @@ -510,9 +510,15 @@ 32965 34484 EXTERN VimClipboard clip_plus; /* CLIPBOARD selection in X11 */ 32966 34485 # else … … 32969 34488 # endif 32970 34489 -EXTERN int clip_unnamed INIT(= FALSE); 32971 + 32972 +#define CLIP_UNNAMED 1 32973 +#define CLIP_UNNAMED_PLUS 2 34490 -EXTERN int clip_autoselect INIT(= FALSE); 34491 + 34492 +# define CLIP_UNNAMED 1 34493 +# define CLIP_UNNAMED_PLUS 2 32974 34494 +EXTERN int clip_unnamed INIT(= 0); /* above two values or'ed */ 32975 34495 + 32976 EXTERN int clip_autoselect INIT(= FALSE); 34496 +EXTERN int clip_autoselect_star INIT(= FALSE); 34497 +EXTERN int clip_autoselect_plus INIT(= FALSE); 32977 34498 EXTERN int clip_autoselectml INIT(= FALSE); 32978 34499 EXTERN int clip_html INIT(= FALSE); 32979 @@ -530,6 +535,10 @@ 34500 EXTERN regprog_T *clip_exclude_prog INIT(= NULL); 34501 @@ -530,6 +536,10 @@ 32980 34502 EXTERN win_T *prevwin INIT(= NULL); /* previous window */ 32981 34503 # define W_NEXT(wp) ((wp)->w_next) … … 32988 34510 for ((tp) = first_tabpage; (tp) != NULL; (tp) = (tp)->tp_next) \ 32989 34511 for ((wp) = ((tp) == curtab) \ 32990 @@ -1052,10 +1061,6 @@ 34512 @@ -728,9 +738,9 @@ 34513 #endif 34514 34515 EXTERN pos_T saved_cursor /* w_cursor before formatting text. */ 34516 -# ifdef DO_INIT 34517 +#ifdef DO_INIT 34518 = INIT_POS_T(0, 0, 0) 34519 -# endif 34520 +#endif 34521 ; 34522 34523 /* 34524 @@ -798,9 +808,9 @@ 34525 # endif 34526 EXTERN int has_mbyte INIT(= 0); /* any multi-byte encoding */ 34527 34528 -#if defined(WIN3264) && defined(FEAT_MBYTE) 34529 +# if defined(WIN3264) && defined(FEAT_MBYTE) 34530 EXTERN int wide_WindowProc INIT(= FALSE); /* use wide WindowProc() */ 34531 -#endif 34532 +# endif 34533 34534 /* 34535 * To speed up BYTELEN() we fill a table with the byte lengths whenever 34536 @@ -1052,10 +1062,6 @@ 32991 34537 ; 32992 34538 #endif … … 32999 34545 EXTERN int postponed_split INIT(= 0); /* for CTRL-W CTRL-] command */ 33000 34546 EXTERN int postponed_split_flags INIT(= 0); /* args for win_split() */ 33001 @@ -1512,7 +1517,7 @@ 34547 @@ -1094,8 +1100,8 @@ 34548 EXTERN int save_p_ls INIT(= -1); /* Save 'laststatus' setting */ 34549 EXTERN int save_p_wmh INIT(= -1); /* Save 'winminheight' setting */ 34550 EXTERN int wild_menu_showing INIT(= 0); 34551 -#define WM_SHOWN 1 /* wildmenu showing */ 34552 -#define WM_SCROLLED 2 /* wildmenu showing with scroll */ 34553 +# define WM_SHOWN 1 /* wildmenu showing */ 34554 +# define WM_SCROLLED 2 /* wildmenu showing with scroll */ 34555 #endif 34556 34557 #ifdef MSWIN 34558 @@ -1305,9 +1311,9 @@ 34559 EXTERN Atom commProperty INIT(= None); 34560 EXTERN char_u *serverDelayedStartName INIT(= NULL); 34561 # else 34562 -# ifdef PROTO 34563 +# ifdef PROTO 34564 typedef int HWND; 34565 -# endif 34566 +# endif 34567 EXTERN HWND clientWindow INIT(= 0); 34568 # endif 34569 #endif 34570 @@ -1512,7 +1518,7 @@ 33002 34571 EXTERN char_u e_sandbox[] INIT(= N_("E48: Not allowed in sandbox")); 33003 34572 #endif … … 33008 34577 EXTERN char_u e_screenmode[] INIT(= N_("E359: Screen mode setting not supported"));