Compare commits

...

578 Commits

Author SHA1 Message Date
Bram Moolenaar
95a467e7ee patch 8.2.0621: after running tests asan files may remain
Problem:    After running tests asan files may remain.
Solution:   Clean up asan files with "make testclean".
2020-04-23 14:41:46 +02:00
Bram Moolenaar
0d6fe631f7 patch 8.2.0620: error in menu translations
Problem:    Error in menu translations.
Solution:   Insert a backslash before a space.
2020-04-23 13:58:12 +02:00
Bram Moolenaar
ea04a6e8ba patch 8.2.0619: null dict is not handled like an empty dict
Problem:    Null dict is not handled like an empty dict.
Solution:   Fix the code and add tests. (Yegappan Lakshmanan, closes #5968)
2020-04-23 13:38:02 +02:00
Bram Moolenaar
db950e4c03 patch 8.2.0618: echoing a null list results in no output
Problem:    Echoing a null list results in no output. (Yegappan Lakshmanan)
Solution:   Return "[]" instead of NULL in echo_string_core().
2020-04-22 19:13:19 +02:00
Bram Moolenaar
d2662ad2de patch 8.2.0617: new error check triggers in Swedish menu
Problem:    New error check triggers in Swedish menu.
Solution:   Insert backslash. (Mats Tegner, closes #5966)
2020-04-22 14:30:31 +02:00
Bram Moolenaar
e770598f31 patch 8.2.0616: build error when disabling the diff feature
Problem:    Build error when disabling the diff feature.
Solution:   Move parenthesis outside of #ifdef. (Tom Ryder)
2020-04-21 22:23:15 +02:00
Bram Moolenaar
ad48e6c159 patch 8.2.0615: regexp benchmark stest is old style
Problem:    Regexp benchmark stest is old style.
Solution:   Make it a new style test.  Fix using a NULL list.  Add more tests.
            (Yegappan Lakshmanan, closes #5963)
2020-04-21 22:19:45 +02:00
Bram Moolenaar
ff06f283e3 patch 8.2.0614: get ml_get error when deleting a line in 'completefunc'
Problem:    Get ml_get error when deleting a line in 'completefunc'. (Yegappan
            Lakshmanan)
Solution:   Lock the text while evaluating 'completefunc'.
2020-04-21 22:01:14 +02:00
Bram Moolenaar
1966c24881 patch 8.2.0613: Vim9: no check for space before #comment
Problem:    Vim9: no check for space before #comment.
Solution:   Add space checks.
2020-04-20 22:42:32 +02:00
Bram Moolenaar
2c7f8c574f Update runtime files 2020-04-20 19:52:53 +02:00
Bram Moolenaar
2c5ed4e330 patch 8.2.0612: Vim9: no check for space before #comment
Problem:    Vim9: no check for space before #comment.
Solution:   Add space checks.
2020-04-20 19:42:10 +02:00
Bram Moolenaar
faac410409 patch 8.2.0611: Vim9: no check for space before #comment
Problem:    Vim9: no check for space before #comment.
Solution:   Add space checks.
2020-04-20 17:46:14 +02:00
Bram Moolenaar
08f4157c5c patch 8.2.0610: some tests are still old style
Problem:    Some tests are still old style.
Solution:   Convert to new style tests. (Yegappan Lakshmanan, closes #5957)
2020-04-20 16:50:00 +02:00
Bram Moolenaar
ad4dc83389 patch 8.2.0609: configure does not detect moonjit correctly
Problem:    Configure does not detect moonjit correctly.
Solution:   Double the brackets. (Ozaki Kiichi)
2020-04-20 16:21:53 +02:00
Bram Moolenaar
4da6df40f5 patch 8.2.0608: warning from clang when building message test
Problem:    Warning from clang when building message test.
Solution:   Use a void pointer.  (Dominique Pelle, closes #5958)
2020-04-20 16:12:09 +02:00
Bram Moolenaar
2bb76accc6 patch 8.2.0607: gcc warns for using uninitialized variable
Problem:    Gcc warns for using uninitialized variable. (John Marriott)
Solution:   Set name_end also for environment variables.
2020-04-19 22:57:44 +02:00
Bram Moolenaar
fbf2122cf9 patch 8.2.0606: several syntax HL errors not checked
Problem:    Several syntax HL errors not checked.
Solution:   Add tests. (Yegappan Lakshmanan, closes #5954)
2020-04-19 18:31:25 +02:00
Bram Moolenaar
7bdaea6e0d patch 8.2.0605: Vim9: cannot unlet an environment variable
Problem:    Vim9: cannot unlet an environment variable.
Solution:   Implement unlet for $VAR.
2020-04-19 18:27:26 +02:00
Bram Moolenaar
eb58a24658 patch 8.2.0604: :startinsert in a terminal window used later
Problem:    :startinsert in a terminal window used later.
Solution:   Ignore :startinsert in a terminal window. (closes #5952)
2020-04-19 18:13:19 +02:00
Bram Moolenaar
f49e564082 patch 8.2.0603: configure does not detect moonjit
Problem:    Configure does not detect moonjit.
Solution:   Add check for moonjit. (Shlomi Fish, closes #5947)
2020-04-19 17:46:53 +02:00
Bram Moolenaar
7e0868efcf patch 8.2.0602: :unlet $VAR does not work properly
Problem:    :unlet $VAR does not work properly.
Solution:   Make ":lockvar $VAR" fail.  Check the "skip" flag.
2020-04-19 17:24:53 +02:00
Bram Moolenaar
d72c1bf0a6 patch 8.2.0601: Vim9: :unlet is not compiled
Problem:    Vim9: :unlet is not compiled.
Solution:   Implement :unlet instruction and check for errors.
2020-04-19 16:28:59 +02:00
Bram Moolenaar
d3aac2917d patch 8.2.0600: Vim9: cannot read or write w:, t: and b: variables
Problem:    Vim9: cannot read or write w:, t: and b: variables.
Solution:   Implement load and store for w:, t: and b: variables.
            (closes #5950)
2020-04-19 14:32:17 +02:00
Bram Moolenaar
173d841e86 patch 8.2.0599: Netbeans interface insufficiently tested
Problem:    Netbeans interface insufficiently tested.
Solution:   Add more tests. (Yegappan Lakshmanan, closes #5921)
2020-04-19 14:02:26 +02:00
Bram Moolenaar
61fbb3371e patch 8.2.0598: test_eval_stuff fails in normal terminal
Problem:    Test_eval_stuff fails in normal terminal.
Solution:   Close the new window.
2020-04-18 23:20:37 +02:00
Bram Moolenaar
90455cfa87 patch 8.2.0597: test_eval is old style
Problem:    Test_eval is old style.
Solution:   Change some tests to a new style test.
2020-04-18 21:56:38 +02:00
Bram Moolenaar
ec9749f33d patch 8.2.0596: crash in test49
Problem:    Crash in test49.
Solution:   Check the right pointer.
2020-04-18 20:51:40 +02:00
Bram Moolenaar
a26b9700d7 patch 8.2.0595: Vim9: not all commands using ends_excmd() tested
Problem:    Vim9: not all commands using ends_excmd() tested.
Solution:   Find # comment after regular commands. Add more tests.  Report
            error for where it was caused.
2020-04-18 19:53:28 +02:00
Bram Moolenaar
b6fb0516ec patch 8.2.0594: MS-Windows: cannot build with WINVER set to 0x0501
Problem:    MS-Windows: cannot build with WINVER set to 0x0501.
Solution:   Only use inet_ntop() when available. (Ozaki Kiichi, closes #5946)
2020-04-18 18:24:18 +02:00
Bram Moolenaar
a494f56f88 patch 8.2.0593: finding a user command is not optimal
Problem:    Finding a user command is not optimal.
Solution:   Start further down in the list of commands.
2020-04-18 17:45:38 +02:00
Bram Moolenaar
2695de63e3 patch 8.2.0592: MS-Windows with VTP: cursor is not made invisible
Problem:    MS-Windows with VTP: cursor is not made invisible.
Solution:   Output the code to make the cursor visible or invisible. (Nobuhiro
            Takasaki, closes #5941)
2020-04-17 21:13:01 +02:00
Bram Moolenaar
aa82259fef patch 8.2.0591: MS-Windows: should always support IPv6
Problem:    MS-Windows: should always support IPv6
Solution:   Add build flag. (Ozaki Kiichi, closes #5944)
2020-04-17 20:48:57 +02:00
Bram Moolenaar
aa0489e12d patch 8.2.0590: no 'backspace' value allows ignoring the insertion point
Problem:    No 'backspace' value allows ignoring the insertion point.
Solution:   Add the "nostop" and 3 values. (Christian Brabandt, closes #5940)
2020-04-17 19:41:21 +02:00
Bram Moolenaar
0fc1288aef patch 8.2.0589: .bsd file type not recognized
Problem:    .bsd file type not recognized.
Solution:   Recognize .bsd as BSDL. (Daniel Kho, closes #5945)
2020-04-17 19:23:06 +02:00
Bram Moolenaar
314ca7cbb4 patch 8.2.0588: Putty does not use "sgr" 'ttymouse' by default
Problem:    Putty does not use "sgr" 'ttymouse' by default.
Solution:   Make "sgr" the default for Putty. (Christian Brabandt,
            closes #5942)
2020-04-17 16:40:31 +02:00
Bram Moolenaar
21cfe500f3 patch 8.2.0587: compiler warning for unused variable
Problem:    Compiler warning for unused variable.
Solution:   Add UNUSED.
2020-04-16 23:01:50 +02:00
Bram Moolenaar
4a8d9f2ed8 patch 8.2.0586: Vim9: # comment not sufficiently tested
Problem:    Vim9: # comment not sufficiently tested
Solution:   Check for preceding white space.
2020-04-16 22:54:32 +02:00
Bram Moolenaar
7a09224583 patch 8.2.0585: Vim9: # comment not recognized after :vim9script
Problem:    Vim9: # comment not recognized after :vim9script.
Solution:   Check script type. Make comment after ":echo" work.  And in
            several other places.
2020-04-16 22:10:49 +02:00
Bram Moolenaar
c5f33db888 patch 8.2.0584: viminfo file uses obsolete function file_readable()
Problem:    Viminfo file uses obsolete function file_readable().
Solution:   Use filereadable(). (closes #5934)
2020-04-16 21:04:41 +02:00
Bram Moolenaar
cb711abf0f patch 8.2.0583: Vim9: # comment not recognized in :def function
Problem:    Vim9: # comment not recognized in :def function.
Solution:   Recognize and skip # comment.
2020-04-16 13:00:29 +02:00
Bram Moolenaar
b4a549fb16 patch 8.2.0582: color ramp test does not show text colors
Problem:    Color ramp test does not show text colors.
Solution:   Add a row of 16 text colors and 16 bold text colors.
2020-04-15 21:44:11 +02:00
Bram Moolenaar
81ccbf199f patch 8.2.0581: Win32 console: the cursor position is always top-left
Problem:    Win32 console: the cursor position is always top-left.
Solution:   Revert the patch for restoring screen.
2020-04-15 21:05:30 +02:00
Bram Moolenaar
edd327cc07 patch 8.2.0580: window size wrong if 'ea' is off and 'splitright' is on
Problem:    Window size wrong if 'ea' is off and 'splitright' is on and
            splitting then closing a window.
Solution:   Put abandoned window space in the right place. (Mark Waggoner)
2020-04-15 20:05:47 +02:00
Bram Moolenaar
4d5d0dfe94 patch 8.2.0579: Coverity warns for unused value
Problem:    Coverity warns for unused value.
Solution:   Change order and use "else if".
2020-04-14 20:56:31 +02:00
Bram Moolenaar
6c2b7b8055 patch 8.2.0578: heredoc for interfaces does not support "trim"
Problem:    Heredoc for interfaces does not support "trim".
Solution:   Update the script heredoc support to be same as the :let command.
            (Yegappan Lakshmanan, closes #5916)
2020-04-14 20:15:49 +02:00
Bram Moolenaar
7a1637f4c0 patch 8.2.0577: not all modifiers supported for :options
Problem:    Not all modifiers supported for :options.
Solution:   Use all cmdmod.split flags. (closes #4401)
2020-04-13 21:16:21 +02:00
Bram Moolenaar
067297e16a patch 8.2.0576: some errors are not covered by tests
Problem:    Some errors are not covered by tests.
Solution:   Add a few more tests. (Dominique Pelle, closes #5920)
2020-04-13 19:55:50 +02:00
Bram Moolenaar
e3242346cf patch 8.2.0575: :digraph! not tested
Problem:    :digraph! not tested.
Solution:   Add a test. (Dominique Pelle, closes #5925)
2020-04-13 19:46:43 +02:00
Bram Moolenaar
352f554b85 patch 8.2.0574: ipv6 feature not shown in :version output
Problem:    Ipv6 feature not shown in :version output.
Solution:   Add ipv6 in :version output. (Ozaki Kiichi, closes #5924)
2020-04-13 19:04:21 +02:00
Bram Moolenaar
278e83863b patch 8.2.0573: using :version twice leaks memory
Problem:    using :version twice leaks memory
Solution:   Only initialize variables once. (Dominique Pelle, closes #5917)
2020-04-13 18:25:33 +02:00
Bram Moolenaar
df1956075d patch 8.2.0572: using two lines for free and reset
Problem:    Using two lines for free and reset.
Solution:   Use VIM_CLEAR() instead. (Yegappan Lakshmanan)
2020-04-13 18:13:33 +02:00
Bram Moolenaar
0015795baa patch 8.2.0571: double free when passing invalid argument to job_start()
Problem:    Double free when passing invalid argument to job_start().
Solution:   Clear the argument when freed. (Masato Nishihata, closes #5926)
2020-04-13 17:44:47 +02:00
Bram Moolenaar
6e949784be patch 8.2.0570: Vim9: no error when omitting type from argument
Problem:    Vim9: no error when omitting type from argument.
Solution:   Enforce specifying argument types.
2020-04-13 17:21:00 +02:00
Bram Moolenaar
fbda69b309 patch 8.2.0569: build failure with tiny version
Problem:    Build failure with tiny version.
Solution:   Add #ifdef.
2020-04-13 15:06:53 +02:00
Bram Moolenaar
55b0fb7001 patch 8.2.0568: the man filetype plugin overwrites the unnamed register
Problem:    The man filetype plugin overwrites the unnamed register.
Solution:   Use the black hole register. (Jason Franklin)
2020-04-13 14:58:37 +02:00
Bram Moolenaar
2c330432cf patch 8.2.0567: Vim9: cannot put comments halfway expressions
Problem:    Vim9: cannot put comments halfway expressions.
Solution:   Support # comments in many places.
2020-04-13 14:41:35 +02:00
Bram Moolenaar
1a2f4bf6c8 patch 8.2.0566: Vim9: variable can be used uninitialized
Problem:    Vim9: variable can be used uninitialized.
Solution:   Jump to after where variable is used.
2020-04-12 23:09:25 +02:00
Bram Moolenaar
675f716efb patch 8.2.0565: Vim9: tests contain superfluous line continuation
Problem:    Vim9: tests contain superfluous line continuation.
Solution:   Remove line continuation no longer needed.  Skip empty lines.
2020-04-12 22:53:54 +02:00
Bram Moolenaar
23e032523e patch 8.2.0564: Vim9: calling a def function from non-vim9 may fail
Problem:    Vim9: calling a def function from non-vim9 may fail.
Solution:   Convert varargs to a list.
2020-04-12 22:22:31 +02:00
Bram Moolenaar
5e774c7579 patch 8.2.0563: Vim9: cannot split a function line
Problem:    Vim9: cannot split a function line.
Solution:   Continue in next line so long as the function isn't done.
2020-04-12 21:53:00 +02:00
Bram Moolenaar
9c7e6dd653 patch 8.2.0562: Vim9: cannot split an expression into multiple lines
Problem:    Vim9: cannot split an expression into multiple lines.
Solution:   Continue in next line after an operator.
2020-04-12 20:55:20 +02:00
Bram Moolenaar
e6085c5350 patch 8.2.0561: Vim9: cannot split function call in multiple lines
Problem:    Vim9: cannot split function call in multiple lines.
Solution:   Find more arguments in following lines.
2020-04-12 20:19:16 +02:00
Bram Moolenaar
2196bce56f patch 8.2.0560: compiler warning in tiny build
Problem:    Compiler warning in tiny build.
Solution:   Move declaration inside #ifdef. (Dominique Pelle, closes #5915)
2020-04-12 20:01:11 +02:00
Bram Moolenaar
a80faa8930 patch 8.2.0559: clearing a struct is verbose
Problem:    Clearing a struct is verbose.
Solution:   Define and use CLEAR_FIELD() and CLEAR_POINTER().
2020-04-12 19:37:17 +02:00
Bram Moolenaar
82de464f76 patch 8.2.0558: Vim9: dict code not covered by tests
Problem:    Vim9: dict code not covered by tests.
Solution:   Remove dead code, adjust test case.
2020-04-12 18:02:06 +02:00
Bram Moolenaar
bfe13ccc58 patch 8.2.0557: no IPv6 support for channels
Problem:    No IPv6 support for channels.
Solution:   Add IPv6 support. (Ozaki Kiichi, closes #5893)
2020-04-12 17:53:12 +02:00
Bram Moolenaar
c5f1ef53c2 patch 8.2.0556: Vim9: memory leak when finding common type
Problem:    Vim9: memory leak when finding common type.
Solution:   Store allocated memory in type growarray.
2020-04-12 17:11:27 +02:00
Bram Moolenaar
4fdae9996f patch 8.2.0555: Vim9: line continuation is not always needed
Problem:    Vim9: line continuation is not always needed.
Solution:   Recognize continuation lines automatically in list and dict.
2020-04-12 16:38:57 +02:00
Bram Moolenaar
acc770a10f patch 8.2.0554: the GUI doesn't set t_Co
Problem:    The GUI doesn't set t_Co.
Solution:   In the GUI set t_Co to 256 * 256 * 256. (closes #5903)
2020-04-12 15:11:06 +02:00
Bram Moolenaar
cd630becc8 patch 8.2.0553: error for unused argument
Problem:    Error for unused argument.
Solution:   Add UNUSED.
2020-04-12 14:50:26 +02:00
Bram Moolenaar
99aaf0ce7c patch 8.2.0552: Vim9: some errors not covered by tests
Problem:    Vim9: some errors not covered by tests.
Solution:   Add more tests.  Check Funcref argument types.
2020-04-12 14:39:53 +02:00
Bram Moolenaar
1363a30cef patch 8.2.0551: not all code for options is tested
Problem:    Not all code for options is tested.
Solution:   Add more tests. (Yegappan Lakshmanan, closes #5913)
2020-04-12 13:50:26 +02:00
Bram Moolenaar
88c1ee84d6 patch 8.2.0550: some changes in the libvterm upstream code
Problem:    Some changes in the libvterm upstream code.
Solution:   Include some changes.
2020-04-12 13:38:57 +02:00
Bram Moolenaar
3b922f1138 patch 8.2.0549: user systemd files not recognized
Problem:    User systemd files not recognized.
Solution:   Add filetype patterns. (Kevin Locke, closes #5914)
2020-04-12 12:54:52 +02:00
Bram Moolenaar
08938eeba4 patch 8.2.0548: Vim9: not all possible func type errors tested
Problem:    Vim9: not all possible func type errors tested.
Solution:   Add more tests.
2020-04-11 23:17:17 +02:00
Bram Moolenaar
e7f234120f patch 8.2.0547: Win32: restoring screen not always done right
Problem:    Win32: restoring screen not always done right.
Solution:   Use a more appropriate method. (Nobuhiro Takasaki, closes #5909)
2020-04-11 22:38:34 +02:00
Bram Moolenaar
fe27081724 patch 8.2.0546: Vim9: varargs implementation is inefficient
Problem:    Vim9: varargs implementation is inefficient.
Solution:   Create list without moving the arguments.
2020-04-11 22:31:27 +02:00
Bram Moolenaar
d19a8f97ad patch 8.2.0545: unused arguments ignored in non-standard way
Problem:    Unused arguments ignored in non-standard way.
Solution:   Add UNUSED instead of (void).
2020-04-11 21:42:48 +02:00
Bram Moolenaar
880e4d9117 patch 8.2.0544: memory leak in search test
Problem:    Memory leak in search test.
Solution:   Free msgbuf. (Dominique Pelle, closes #5912)
2020-04-11 21:31:28 +02:00
Bram Moolenaar
1378fbc459 patch 8.2.0543: Vim9: function with varargs does not work properly
Problem:    Vim9: function with varargs does not work properly.
Solution:   Improve function type spec and add tests.  Fix bugs.
2020-04-11 20:50:33 +02:00
Bram Moolenaar
8832a34578 patch 8.2.0542: no test for E386
Problem:    No test for E386.
Solution:   Add a test. (Dominique Pelle, closes #5911)
2020-04-11 18:36:38 +02:00
Bram Moolenaar
81ea1dfb97 patch 8.2.0541: Travis CI does not give compiler warnings
Problem:    Travis CI does not give compiler warnings.
Solution:   Add flags for warnings.  Fix uncovered problems. (Ozaki Kiichi,
            closes #5898)
2020-04-11 18:01:41 +02:00
Bram Moolenaar
004a6781b3 patch 8.2.0540: regexp and other code not tested
Problem:    Regexp and other code not tested.
Solution:   Add more tests. (Yegappan Lakshmanan, closes #5904)
2020-04-11 17:09:31 +02:00
Bram Moolenaar
d1caa941d8 Update runtime files 2020-04-10 22:10:56 +02:00
Bram Moolenaar
7b293c730b patch 8.2.0539: comparing two NULL list fails
Problem:    Comparing two NULL list fails.
Solution:   Change the order of comparing two lists.
2020-04-09 21:33:22 +02:00
Bram Moolenaar
9c8bb7c0e2 patch 8.2.0538: Vim9: VAR_PARTIAL is not used during compilation
Problem:    Vim9: VAR_PARTIAL is not used during compilation.
Solution:   Remove VAR_PARTIAL.
2020-04-09 21:08:09 +02:00
Bram Moolenaar
cab2767874 patch 8.2.0537: Vim9: no check for sandbox when setting v:var
Problem:    Vim9: no check for sandbox when setting v:var.
Solution:   Check for sandbox.
2020-04-09 20:10:55 +02:00
Bram Moolenaar
5da356e073 patch 8.2.0536: Vim9: some compilation code not tested
Problem:    Vim9: some compilation code not tested.
Solution:   Add more test cases.
2020-04-09 19:34:43 +02:00
Bram Moolenaar
4d23c52824 patch 8.2.0535: regexp patterns not fully tested
Problem:    Regexp patterns not fully tested.
Solution:   Add more regexp tests and others. (Yegappan Lakshmanan,
            closes #5901)
2020-04-09 18:42:11 +02:00
Bram Moolenaar
25d5700952 patch 8.2.0534: client-server test fails under valgrind
Problem:    Client-server test fails under valgrind.
Solution:   Use WaitForAssert().
2020-04-08 22:56:34 +02:00
Bram Moolenaar
6a2c5a7dd5 patch 8.2.0533: tests using term_wait() can still be flaky
Problem:    Tests using term_wait() can still be flaky.
Solution:   Increase the wait time when rerunning a test. (James McCoy,
            closes #5899)  Halve the initial times to make tests run faster
            when there is no rerun.
2020-04-08 21:50:25 +02:00
Bram Moolenaar
7035fd9d90 patch 8.2.0532: cannot use simplify() as a method
Problem:    Cannot use simplify() as a method.
Solution:   Add FEARG_1. (closes #5996)
2020-04-08 20:03:52 +02:00
Bram Moolenaar
476a613135 patch 8.2.0531: various errors not tested
Problem:    Various errors not tested.
Solution:   Add tests. (Yegappan Lakshmanan, closes #5895)
2020-04-08 19:48:56 +02:00
Bram Moolenaar
a65c288134 patch 8.2.0530: test crashes on s390
Problem:    Test crashes on s390. (James McCoy)
Solution:   Explicitly define an 8 big signed type. (closes #5897)
2020-04-08 11:31:48 +02:00
Bram Moolenaar
49cf7cc8d2 patch 8.2.0529: Vim9: function argument with default not checked
Problem:    Vim9: function argument with default not checked.
Solution:   Check type of argument with default value.
2020-04-07 22:45:00 +02:00
Bram Moolenaar
0b76b42d0a patch 8.2.0528: Vim9: function arguments insufficiently tested
Problem:    Vim9: function arguments insufficiently tested.
Solution:   Check types.  Add more tests.  Fix function with varargs only.
2020-04-07 22:05:08 +02:00
Bram Moolenaar
ec5929d0fe patch 8.2.0527: Vim9: function types insufficiently tested
Problem:    Vim9: function types insufficiently tested.
Solution:   Add more tests.  Fix white space check.  Add "test_vim9" target.
2020-04-07 20:53:39 +02:00
Bram Moolenaar
86b9a3e8cd patch 8.2.0526: Gcc 9 complains about empty statement
Problem:    Gcc 9 complains about empty statement.
Solution:   Add {}. (Dominique Pelle, closes #5894)
2020-04-07 19:57:29 +02:00
Bram Moolenaar
40655d5016 patch 8.2.0525: Win32: typo in assignment and misplaced paren
Problem:    Win32: typo in assignment and misplaced paren.
Solution:   Fix the syntax.
2020-04-06 23:49:50 +02:00
Bram Moolenaar
c74fbfedfa patch 8.2.0524: Win32: searching for file matches is slow
Problem:    Win32: searching for file matches is slow.
Solution:   Instead of making another round to find any short filename, check
            for the short name right away. Avoid using an ordinary file like a
            directory.  (Nir Lichtman, closes #5883)
2020-04-06 22:56:28 +02:00
Bram Moolenaar
00d253e2b2 patch 8.2.0523: loops are repeated
Problem:    Loops are repeated.
Solution:   Use FOR_ALL_ macros. (Yegappan Lakshmanan, closes #5882)
2020-04-06 22:13:01 +02:00
Bram Moolenaar
ee4e0c1e9a patch 8.2.0522: several errors are not tested for
Problem:    Several errors are not tested for.
Solution:   Add tests. (Yegappan Lakshmanan, closes #5892)
2020-04-06 21:35:05 +02:00
Bram Moolenaar
15352dc6ec patch 8.2.0521: crash when reading a blob fails
Problem:    Crash when reading a blob fails.
Solution:   Avoid keeping a pointer to a freed blob object. (Dominique Pelle,
            closes #5890)  Adjust error messages.
2020-04-06 21:12:42 +02:00
Bram Moolenaar
6c307dcd55 patch 8.2.0520: tests are not listed in sorted order
Problem:    Tests are not listed in sorted order.
Solution:   Move test_ex_mode. (Doug Richardson, closes #5889)
2020-04-05 23:04:57 +02:00
Bram Moolenaar
8922860afb patch 8.2.0519: Vim9: return type not properly checked
Problem:    Vim9: return type not properly checked.
Solution:   Check type properly, also at runtime.
2020-04-05 22:14:54 +02:00
Bram Moolenaar
5ba8d3578c patch 8.2.0518: a terminal falls back to setting $TERM to "xterm"
Problem:    A terminal falls back to setting $TERM to "xterm".
Solution:   Use "xterm-color" if more than 16 colors are supported and
            "xterm-256color" if at least 256 colors are supported.
            (closes #5887)
2020-04-05 21:42:12 +02:00
Bram Moolenaar
4c68375057 patch 8.2.0517: Vim9: cannot separate "func" and "func(): void"
Problem:    Vim9: cannot separate "func" and "func(): void".
Solution:   Use VAR_ANY for "any" and VAR_UNKNOWN for "no type".
2020-04-05 21:38:23 +02:00
Bram Moolenaar
f87a0400fd patch 8.2.0516: client-server code is spread out
Problem:    Client-server code is spread out.
Solution:   Move client-server code to a new file. (Yegappan Lakshmanan,
            closes #5885)
2020-04-05 20:21:03 +02:00
Bram Moolenaar
b8ed3aa9e7 patch 8.2.0515: some compilers cannot add to "void *"
Problem:    Some compilers cannot add to "void *".
Solution:   Cast to "char *".
2020-04-05 19:09:05 +02:00
Bram Moolenaar
bdff012f44 patch 8.2.0514: several global functions are used in only one file
Problem:    Several global functions are used in only one file.
Solution:   Make the functions static. (Yegappan Lakshmanan, closes #5884)
2020-04-05 18:56:05 +02:00
Bram Moolenaar
5d905c2b96 patch 8.2.0513: reading past allocate memory when using varargs
Problem:    Reading past allocate memory when using varargs.
Solution:   Fix copying function argument types.
2020-04-05 18:20:45 +02:00
Bram Moolenaar
5deeb3f1f9 patch 8.2.0512: Vim9: no optional arguments in func type
Problem:    Vim9: no optional arguments in func type.
Solution:   Check for question mark after type.  Find function reference
            without function().
2020-04-05 17:08:17 +02:00
Bram Moolenaar
d7ffc0ba8c patch 8.2.0511: Cscope code not fully tested
Problem:    Cscope code not fully tested.
Solution:   Add more test cases. (Dominique Pelle, closes #5886)
2020-04-05 15:36:16 +02:00
Bram Moolenaar
8d4ed11da6 patch 8.2.0510: Coverity complains about using uninitialized variable
Problem:    Coverity complains about using uninitialized variable.
Solution:   Assign a value to "scol".  Move code inside NULL check.
2020-04-04 14:50:32 +02:00
Bram Moolenaar
cde0ff39da patch 8.2.0509: various code is not properly tested.
Problem:    various code is not properly tested.
Solution:   Add more tests. (Yegappan Lakshmanan, closes #5871)
2020-04-04 14:00:39 +02:00
Bram Moolenaar
d77a8525d5 patch 8.2.0508: Vim9: func and partial types not done yet
Problem:    Vim9: func and partial types not done yet
Solution:   Fill in details about func declaration, drop a separate partial
            declaration.
2020-04-03 21:59:57 +02:00
Bram Moolenaar
5259275347 patch 8.2.0507: getbufvar() may get the wrong dictionary
Problem:    Getbufvar() may get the wrong dictionary. (David le Blanc)
Solution:   Check for empty name. (closes #5878)
2020-04-03 18:43:35 +02:00
Bram Moolenaar
d1e9dc2723 patch 8.2.0506: Coverity complains about ignoring return value
Problem:    Coverity complains about ignoring return value.
Solution:   Add (void).
2020-04-03 18:13:57 +02:00
Bram Moolenaar
01603a9970 patch 8.2.0505: term_getty() not sufficiently tested
Problem:    term_getty() not sufficiently tested.
Solution:   Add more asserts. (Dominique Pelle, closes #5877)
2020-04-03 12:56:17 +02:00
Bram Moolenaar
3cca299520 patch 8.2.0504: Vim9: leaking scope memory when compilation fails
Problem:    Vim9: leaking scope memory when compilation fails.
Solution:   Cleanup the scope list.
2020-04-02 22:57:36 +02:00
Bram Moolenaar
585fea7b98 patch 8.2.0503: Vim9: some code is not tested
Problem:    Vim9: some code is not tested.
Solution:   Add tests.  Fix uncovered problems.
2020-04-02 22:33:21 +02:00
Bram Moolenaar
e8c4abbbd7 patch 8.2.0502: Vim9: some code is not tested
Problem:    Vim9: some code is not tested.
Solution:   Add more tests.  Fix uncovered problems.
2020-04-02 21:13:25 +02:00
Bram Moolenaar
2c869deeb7 patch 8.2.0501: Vim9: script test fails when channel feature is missing
Problem:    Vim9: script test fails when channel feature is missing.
Solution:   Add a has() condition.
2020-04-02 19:12:08 +02:00
Bram Moolenaar
aeea72151c patch 8.2.0500: using the same loop in many places
Problem:    Using the same loop in many places.
Solution:   Define more FOR_ALL macros. (Yegappan Lakshmanan, closes #5339)
2020-04-02 18:50:46 +02:00
Bram Moolenaar
f10806b250 patch 8.2.0499: calling a lambda is slower than evaluating a string
Problem:    Calling a lambda is slower than evaluating a string.
Solution:   Make calling a lambda faster. (Ken Takata, closes #5727)
2020-04-02 18:34:35 +02:00
Bram Moolenaar
4227c789ff patch 8.2.0498: Coverity complains about uninitialized field
Problem:    Coverity complains about uninitialized field.
Solution:   Initialize the whole typval_T.
2020-04-02 16:00:04 +02:00
Bram Moolenaar
e5bae13da3 patch 8.2.0497: too verbose output from the asan build in Travis
Problem:    Too verbose output from the asan build in Travis.
Solution:   Filter out suppression messages. (Ozaki Kiichi, closes #5874)
2020-04-02 15:17:32 +02:00
Bram Moolenaar
a4d4cf490e patch 8.2.0496: Vim9: disassemble test fails
Problem:    Vim9: disassemble test fails.
Solution:   Separate test cases with recognized constant expressions.
2020-04-02 13:50:27 +02:00
Bram Moolenaar
80c34ca312 patch 8.2.0495: Vim9: some code not tested
Problem:    Vim9: some code not tested.
Solution:   Add more tests.  Support more const expressions.
2020-04-01 23:05:18 +02:00
Bram Moolenaar
ea94fbe83b patch 8.2.0494: Vim9: asan error
Problem:    Vim9: asan error.
Solution:   Only get the type when there is one.
2020-04-01 22:36:49 +02:00
Bram Moolenaar
e69f6d044c patch 8.2.0493: Vim9: some error messages not tested
Problem:    Vim9: some error messages not tested.
Solution:   Add more tests.  Fix uncovered bugs.
2020-04-01 22:11:01 +02:00
Bram Moolenaar
a8c1770469 patch 8.2.0492: Vim9: some error messages not tested
Problem:    Vim9: some error messages not tested.
Solution:   Add more tests.  Remove dead code.  Fix uncovered bugs.
2020-04-01 21:17:24 +02:00
Bram Moolenaar
2da0f0c445 patch 8.2.0491: cannot recognize a <script> mapping using maparg()
Problem:    Cannot recognize a <script> mapping using maparg().
Solution:   Add the "script" key. (closes #5873)
2020-04-01 19:22:12 +02:00
Bram Moolenaar
0afdcf8601 patch 8.2.0490: Win32: VTP doesn't respect 'restorescreen'
Problem:    Win32: VTP doesn't respect 'restorescreen'.
Solution:   Use escape codes to switch to alternate screen. (Nobuhiro
            Takasaki, closes #5872)
2020-04-01 18:29:10 +02:00
Bram Moolenaar
25b70c780a patch 8.2.0489: Vim9: memory leaks
Problem:    Vim9: memory leaks.
Solution:   Free memory in the right place.  Add hints for using asan.
2020-04-01 16:34:17 +02:00
Bram Moolenaar
05afceeddc patch 8.2.0488: Vim9: compiling can break when using a lambda inside :def
Problem:    Vim9: Compiling can break when using a lambda inside :def.
Solution:   Do not keep a pointer to the dfunc_T for longer time.
2020-03-31 23:32:31 +02:00
Bram Moolenaar
bd5da371aa patch 8.2.0487: Vim9: compiling not sufficiently tested
Problem:    Vim9: compiling not sufficiently tested.
Solution:   Add more tests.  Fix bug with PCALL.
2020-03-31 23:13:10 +02:00
Bram Moolenaar
9be61bbb17 patch 8.2.0486: Vim9: some code and error messages not tested
Problem:    Vim9: some code and error messages not tested.
Solution:   Add more tests.
2020-03-30 22:51:24 +02:00
Bram Moolenaar
01b3862956 patch 8.2.0485: Vim9 script test fails
Problem:    Vim9 script test fails.
Solution:   Stricter condition for adding new local variable.
2020-03-30 21:28:39 +02:00
Bram Moolenaar
92dba36fc8 patch 8.2.0484: Vim9: some error messages not tested
Problem:    Vim9: some error messages not tested.
Solution:   Add more tests.
2020-03-30 21:22:56 +02:00
Bram Moolenaar
d25ec2cfa0 patch 8.2.0483: Vim9: "let x = x + 1" does not give an error
Problem:    Vim9: "let x = x + 1" does not give an error.
Solution:   Hide the variable when compiling the expression.
2020-03-30 21:05:45 +02:00
Bram Moolenaar
ca68ae1311 patch 8.2.0482: channel and sandbox code not sufficiently tested
Problem:    Channel and sandbox code not sufficiently tested.
Solution:   Add more tests. (Yegappan Lakshmanan, closes #5855)
2020-03-30 19:32:53 +02:00
Bram Moolenaar
7d333a900d patch 8.2.0481: Travis is still using trusty
Problem:    Travis is still using trusty.
Solution:   Adjust config to use bionic. (Ozaki Kiichi, closes #5868)
2020-03-30 19:13:29 +02:00
Bram Moolenaar
0b37a2f379 patch 8.2.0480: Vim9: some code is not tested
Problem:    Vim9: some code is not tested.
Solution:   Add more tests.
2020-03-29 21:38:15 +02:00
Bram Moolenaar
2027973b5b patch 8.2.0479: unloading shared libraries on exit has no purpose
Problem:    Unloading shared libraries on exit has no purpose.
Solution:   Do not unload shared libraries on exit.
2020-03-29 20:51:07 +02:00
Bram Moolenaar
5908fdf72f patch 8.2.0478: new buffers are not added to the Buffers menu
Problem:    New buffers are not added to the Buffers menu.
Solution:   Turn number into string. (Yee Cheng Chin, closes #5864)
2020-03-29 20:08:45 +02:00
Bram Moolenaar
c58164c5cf patch 8.2.0477: Vim9: error messages not tested
Problem:    Vim9: error messages not tested.
Solution:   Add more tests.
2020-03-29 18:40:30 +02:00
Bram Moolenaar
52ea92b19d patch 8.2.0476: terminal nasty callback test fails sometimes
Problem:    Terminal nasty callback test fails sometimes.
Solution:   use term_wait() instead of a sleep. (Yee Cheng Chin,closes #5865)
2020-03-29 17:50:48 +02:00
Bram Moolenaar
bf54dbeb5c patch 8.2.0475: channel out_cb test still fails sometimes on Mac
Problem:    Channel out_cb test still fails sometimes on Mac.
Solution:   Use an ever longer timeout.
2020-03-29 16:18:58 +02:00
Bram Moolenaar
0fff44152d patch 8.2.0474: cannot use :write when using a plugin with BufWriteCmd
Problem:    Cannot use :write when using a plugin with BufWriteCmd.
Solution:   Reset BF_NOTEDITED after BufWriteCmd. (closes #5807)
2020-03-29 16:06:29 +02:00
Bram Moolenaar
8601545338 patch 8.2.0473: variables declared in an outer scope
Problem:    Variables declared in an outer scope.
Solution:   Decleare variables only in the scope where they are used.
2020-03-29 15:12:15 +02:00
Bram Moolenaar
360bdbda81 patch 8.2.0472: terminal highlight name is set twice, leaking memory
Problem:    Terminal highlight name is set twice, leaking memory.
Solution:   Delete one.
2020-03-28 22:37:14 +01:00
Bram Moolenaar
a30590d3e7 patch 8.2.0471: missing change to compile_list()
Problem:    Missing change to compile_list().
Solution:   Add error message.
2020-03-28 22:06:23 +01:00
Bram Moolenaar
7b1b36b1cb patch 8.2.0470: Test_confirm_cmd_cancel() can fail on a slow system
Problem:    Test_confirm_cmd_cancel() can fail on a slow system.
Solution:   Use WaitForAssert(). (Ozaki Kiichi, closes #5861)
2020-03-28 21:48:55 +01:00
Bram Moolenaar
ee619e5bc0 patch 8.2.0469: Vim9: no error for missing ] after list
Problem:    Vim9: no error for missing ] after list.
Solution:   Add error message. Add more tests.
2020-03-28 21:38:06 +01:00
Bram Moolenaar
7c003aa314 patch 8.2.0468: GUI: pixel dust with some fonts and characters
Problem:    GUI: pixel dust with some fonts and characters.
Solution:   Always redraw the character before the cursor. (Nir Lichtman,
            closes #5549, closes #5856)
2020-03-28 20:44:41 +01:00
Bram Moolenaar
33fa29cf74 patch 8.2.0467: Vim9: some errors are not tested
Problem:    Vim9: some errors are not tested
Solution:   Add more tests.  Fix that Vim9 script flag is not reset.
2020-03-28 19:41:33 +01:00
Bram Moolenaar
09c569038c patch 8.2.0466: not parsing messages recursively breaks the govim plugin
Problem:    Not parsing messages recursively breaks the govim plugin.
Solution:   When called recursively do handle messages but do not close
            channels.
2020-03-28 18:06:31 +01:00
Bram Moolenaar
599c89c82f patch 8.2.0465: Vim9: dead code and wrong return type
Problem:    Vim9: dead code and wrong return type.
Solution:   Remove dead code.  Fix return type.  Add more tests.
2020-03-28 14:53:20 +01:00
Bram Moolenaar
495282b6e7 Correct list of patch numbers 2020-03-27 20:59:54 +01:00
Bram Moolenaar
14285cb801 patch 8.2.0464: typos and other small problems
Problem:    Typos and other small problems.
Solution:   Fix the typos.  Add missing files to the distribution.
2020-03-27 20:58:37 +01:00
Bram Moolenaar
2d9d409ad4 patch 8.2.0464: typos and other small problems
Problem:    Typos and other small problems.
Solution:   Fix the typos.  Add missing file to distribution.
2020-03-27 20:52:45 +01:00
Bram Moolenaar
191acfdeca Update runtime files 2020-03-27 20:42:43 +01:00
Bram Moolenaar
37bb030cd9 patch 8.2.0462: previewwindow test fails on some systems
Problem:    Previewwindow test fails on some systems. (James McCoy)
Solution:   Wait a bit after sending the "o". (closes #5849)
2020-03-27 20:24:14 +01:00
Bram Moolenaar
9207d1f523 patch 8.2.0461: confirm test fails on amd64 system
Problem:    Confirm test fails on amd64 system. (Alimar Riesebieter)
Solution:   Add an extra WaitForAssert(). (Dominique Pelle)
2020-03-27 19:41:02 +01:00
Bram Moolenaar
bd5e622bfa patch 8.2.0460: build failure because of wrong feature name
Problem:    Build failure because of wrong feature name.
Solution:   Correct feature name.
2020-03-26 23:13:34 +01:00
Bram Moolenaar
15c476023f patch 8.2.0459: cannot check if a function name is correct
Problem:    Cannot check if a function name is correct.
Solution:   Add "?funcname" to exists().
2020-03-26 22:16:48 +01:00
Bram Moolenaar
bea9023d42 patch 8.2.0458: missing feature check in test function
Problem:    Missing feature check in test function.
Solution:   Add check commands.
2020-03-26 22:09:52 +01:00
Bram Moolenaar
26bde6e2eb patch 8.2.0457: Test_quotestar() often fails when run under valgrind
Problem:    Test_quotestar() often fails when run under valgrind.
Solution:   Wait longer for the GUI to start.
2020-03-26 21:11:58 +01:00
Bram Moolenaar
72749f062f patch 8.2.0456: Test_confirm_cmd is flaky
Problem:    Test_confirm_cmd is flaky.
Solution:   Add a term_wait() call. (closes #5854)
2020-03-26 20:51:43 +01:00
Bram Moolenaar
83d4790a04 patch 8.2.0455: cannot set the highlight group for a specific terminal
Problem:    Cannot set the highlight group for a specific terminal.
Solution:   Add the "highlight" option to term_start(). (closes #5818)
2020-03-26 20:34:00 +01:00
Bram Moolenaar
3ed9efc2b1 patch 8.2.0454: some tests fail when the system is slow
Problem:    Some tests fail when the system is slow.
Solution:   Make the run number global, use in the test to increase the
            waiting time. (closes #5841)
2020-03-26 16:50:57 +01:00
Bram Moolenaar
7851b1ca99 patch 8.2.0453: trailing space in job_start() command causes empty argument
Problem:    Trailing space in job_start() command causes empty argument.
Solution:   Ignore trailing space. (closes #5851)
2020-03-26 16:27:38 +01:00
Bram Moolenaar
a9c3a30891 patch 8.2.0452: channel_parse_messages() fails when called recursively
Problem:    channel_parse_messages() fails when called recursively.
Solution:   Return for a recursive call. (closes #5835)
2020-03-26 16:03:45 +01:00
Bram Moolenaar
82e743c5b3 patch 8.2.0451: Win32: double-width character displayed incorrectly
Problem:    Win32: double-width character displayed incorrectly.
Solution:   First move the cursor to the first column. (Nobuhiro Takasaki,
            closes #5848)
2020-03-26 15:39:53 +01:00
Bram Moolenaar
7d941ee032 patch 8.2.0450: not enough testing for restricted mode and function calls
Problem:    Not enough testing for restricted mode and function calls.
Solution:   Add more tests. (Yegappan Lakshmanan, closes #5847)
2020-03-26 14:11:58 +01:00
Bram Moolenaar
cf3f8bf4dd patch 8.2.0449: Vim9: crash if return type is invalid
Problem:    Vim9: crash if return type is invalid. (Yegappan Lakshmanan)
Solution:   Always return some type, not NULL.
2020-03-26 13:15:42 +01:00
Bram Moolenaar
0e05de4622 patch 8.2.0448: various functions not properly tested
Problem:    Various functions not properly tested.
Solution:   Add more tests, especially for failures. (Yegappan Lakshmanan,
            closes #5843)
2020-03-25 22:23:46 +01:00
Bram Moolenaar
bfcfd5784a patch 8.2.0447: terminal scroll tests fails on some systems
Problem:    Terminal scroll tests fails on some systems.
Solution:   Remove the fixed 100msec wait for Win32.  Add a loop to wait until
            scrolling has finished. (James McCoy, closes #5842)
2020-03-25 21:27:22 +01:00
Bram Moolenaar
a07e31af54 patch 8.2.0446: listener with undo of deleting all lines not tested
Problem:    Listener with undo of deleting all lines not tested.
Solution:   Add a test.
2020-03-25 21:13:46 +01:00
Bram Moolenaar
f66ca9f1df patch 8.2.0445: png and xpm files not in MS-Windows zip file
Problem:    Png and xpm files not in MS-Windows zip file.
Solution:   Move files to shared between Unix and Windows target.
2020-03-25 20:17:00 +01:00
Bram Moolenaar
d36ef573b2 patch 8.2.0444: swap file test fails on some systems
Problem:    Swap file test fails on some systems.
Solution:   Preserve the swap file. Send NL terminated keys.
2020-03-24 21:44:51 +01:00
Bram Moolenaar
45fffdf10b patch 8.2.0443: clipboard code is spread out
Problem:    Clipboard code is spread out.
Solution:   Move clipboard code to its own file. (Yegappan Lakshmanan,
            closes #5827)
2020-03-24 21:42:01 +01:00
Bram Moolenaar
71658f74ae patch 8.2.0442: channel contents might be used after being freed
Problem:    Channel contents might be used after being freed.
Solution:   Reset the job channel before freeing the channel.
2020-03-24 20:35:19 +01:00
Bram Moolenaar
f3710ee22d patch 8.2.0441: terminal noblock test is still failing on BSD
Problem:    Terminal noblock test is still failing on BSD.
Solution:   Reduce the amount of text.
2020-03-24 12:12:30 +01:00
Bram Moolenaar
d06dbf3f42 patch 8.2.0440: terminal noblock test is still very flaky on BSD
Problem:    Terminal noblock test is still very flaky on BSD.
Solution:   Increase the waiting time.
2020-03-24 10:33:00 +01:00
Bram Moolenaar
1082772f4c patch 8.2.0439: :disassemble has minor flaws
Problem:    :disassemble has minor flaws.
Solution:   Format the code.  Use (int) instead of (char) for %c.
            (also by James McCoy, closes #5831)
2020-03-23 22:53:22 +01:00
Bram Moolenaar
d7b7770f11 patch 8.2.0438: terminal noblock test is very flaky on BSD
Problem:    Terminal noblock test is very flaky on BSD.
Solution:   Change WaitFor() to WaitForAssert() to be able to see why it
            failed.  Add a short wait in between sending keys.
2020-03-23 22:46:44 +01:00
Bram Moolenaar
0df541963d patch 8.2.0437: MS-Windows installer contains old stuff
Problem:    MS-Windows installer contains old stuff.
Solution:   Rely on Windows NT. (Ken Takata, closes #5832)
2020-03-23 22:17:11 +01:00
Bram Moolenaar
db99f9f29a patch 8.2.0436: no warnings for incorrect printf arguments
Problem:    No warnings for incorrect printf arguments.
Solution:   Fix attribute in declaration.  Fix uncovered mistakes. (Dominique
            Pelle, closes #5834)
2020-03-23 22:12:22 +01:00
Bram Moolenaar
dbbb0ef729 patch 8.2.0435: channel contents might be freed twice
Problem:    Channel contents might be freed twice.
Solution:   Call either channel_free_channel() or channel_free(), not both.
            (Nobuhiro Takasaki, closes #5835)
2020-03-23 22:01:17 +01:00
Bram Moolenaar
a8bd349638 patch 8.2.0434: MS-Windows with VTP: Normal color not working
Problem:    MS-Windows with VTP: Normal color not working.
Solution:   After changing the Normal color update the VTP console color.
            (Nobuhiro Takasaki, closes #5836)
2020-03-23 21:45:29 +01:00
Bram Moolenaar
bad8804cdd patch 8.2.0433: INT signal not properly tested
Problem:    INT signal not properly tested.
Solution:   Add a test.  Also clean up some unnecessary lines. (Dominique
            Pelle, closes #5828)
2020-03-23 20:54:32 +01:00
Bram Moolenaar
ab505b1a48 patch 8.2.0432: a few tests fail in a huge terminal
Problem:    A few tests fail in a huge terminal.
Solution:   Make the tests pass. (Dominique Pelle, closes #5829)
2020-03-23 19:28:44 +01:00
Bram Moolenaar
56ba21a156 patch 8.2.0431: some compilers don't support using \e for Esc
Problem:    Some compilers don't support using \e for Esc. (Yegappan
            Lakshmanan)
Solution:   use \033 instead.
2020-03-23 19:17:29 +01:00
Bram Moolenaar
5080b0a047 patch 8.2.0430: window creation failure not properly tested
Problem:    Window creation failure not properly tested.
Solution:   Improve the test. (Yegappan Lakshmanan, closes #5826)
2020-03-22 21:23:47 +01:00
Bram Moolenaar
c5a8fdc42d patch 8.2.0429: no warning when test checks for option that never exists
Problem:    No warning when test checks for option that never exists.
Solution:   In tests check that the option can exist.
2020-03-22 20:13:39 +01:00
Bram Moolenaar
d5bc32df20 patch 8.2.0428: buffer name may leak
Problem:    Buffer name may leak.
Solution:   Free the buffer name before overwriting it.
2020-03-22 19:25:50 +01:00
Bram Moolenaar
7929651e05 patch 8.2.0427: it is not possible to check for a typo in a feature name
Problem:    It is not possible to check for a typo in a feature name.
Solution:   Add an extra argument to has().
2020-03-22 16:17:14 +01:00
Bram Moolenaar
9b9be007e7 patch 8.2.0426: some errors were not tested for
Problem:    Some errors were not tested for.
Solution:   Add tests. (Dominique Pelle, closes #5824)
2020-03-22 14:41:22 +01:00
Bram Moolenaar
515545e11f patch 8.2.0425: code for modeless selection not sufficiently tested
Problem:    Code for modeless selection not sufficiently tested.
Solution:   Add tests.  Move mouse code functionality to a common script file.
            (Yegappan Lakshmanan, closes #5821)
2020-03-22 14:08:59 +01:00
Bram Moolenaar
97acfc781b patch 8.2.0424: checking for wrong return value
Problem:    Checking for wrong return value. (Tom)
Solution:   Invert the check and fix the test.
2020-03-22 13:44:28 +01:00
Bram Moolenaar
ce436de5a9 patch 8.2.0423: in some environments a few tests are expected to fail
Problem:    In some environments a few tests are expected to fail.
Solution:   Add $TEST_MAY_FAIL to list tests that should not cause make to
            fail.
2020-03-21 15:17:20 +01:00
Bram Moolenaar
0f1563ffee patch 8.2.0422: crash when passing popup window to win_splitmove()
Problem:    Crash when passing popup window to win_splitmove(). (john Devin)
Solution:   Disallow moving a popup window. (closes #5816)
2020-03-20 21:15:51 +01:00
Bram Moolenaar
9645e2d9fc patch 8.2.0421: interrupting with CTRL-C does not always work
Problem:    Interrupting with CTRL-C does not always work.
Solution:   Recognize CTRL-C while modifyOtherKeys is set.
2020-03-20 20:48:49 +01:00
Bram Moolenaar
f1ec378b01 patch 8.2.0420: Vim9: cannot interrupt a loop with CTRL-C
Problem:    Vim9: cannot interrupt a loop with CTRL-C.
Solution:   Check for CTRL-C once in a while.  Doesn't fully work yet.
2020-03-20 19:37:47 +01:00
Bram Moolenaar
20431c9dbb patch 8.2.0419: various memory leaks in Vim9 script code
Problem:    Various memory leaks in Vim9 script code.
Solution:   Fix the leaks. (Ozaki Kiichi, closes #5814)
2020-03-20 18:39:46 +01:00
Bram Moolenaar
8b63313510 patch 8.2.0418: code in eval.c not sufficiently covered by tests
Problem:    Code in eval.c not sufficiently covered by tests.
Solution:   Add more tests. (Yegappan Lakshmanan, closes #5815)
2020-03-20 18:20:51 +01:00
Bram Moolenaar
98be7fecac patch 8.2.0417: Travis CI config can be improved
Problem:    Travis CI config can be improved.
Solution:   Remove COVERAGE variable. Add load-snd-dummy script. add "-i NONE"
            to avoid messages about viminfo. (Ozaki Kiichi, closes #5813)
2020-03-20 18:12:59 +01:00
Bram Moolenaar
ff78155aa1 Update runtime files 2020-03-19 20:37:11 +01:00
Bram Moolenaar
95e59a355b patch 8.2.0416: test leaves file behind
Problem:    Test leaves file behind.
Solution:   Delete the file.
2020-03-19 20:33:33 +01:00
Bram Moolenaar
40d235e730 patch 8.2.0415: bsdl filetype is not detected
Problem:    Bsdl filetype is not detected.
Solution:   Add an entry in the filetype list. (Daniel Kho, closes #5810)
2020-03-19 20:32:01 +01:00
Bram Moolenaar
373a876d0c patch 8.2.0414: channel connect_waittime() test is flaky
Problem:    Channel connect_waittime() test is flaky.
Solution:   Set the test_is_flaky flag.  Use test_is_flaky for more tests.
2020-03-19 19:44:32 +01:00
Bram Moolenaar
5e94a29ebb patch 8.2.0413: buffer menu does not handle special buffers properly
Problem:    Buffer menu does not handle special buffers properly.
Solution:   Keep a dictionary with buffer names to reliably keep track of
            entries.
            Also trigger BufFilePre and BufFilePost for command-line and
            terminal buffers when the name changes.
2020-03-19 18:46:57 +01:00
Bram Moolenaar
37f471df6e patch 8.2.0412: MS-Windows: cannot use vimtutor from the start menu
Problem:    MS-Windows: cannot use vimtutor from the start menu.
Solution:   Better check for writable directory. Use the right path for the
            executable. (Wu Yongwei, closes #5774, closes #5756)
2020-03-19 17:13:40 +01:00
Bram Moolenaar
24e9b6fe4b patch 8.2.0411: Mac: breakcheck is using a value from the stone ages
Problem:    Mac: breakcheck is using a value from the stone ages.
Solution:   Delete BREAKCHECK_SKIP from the Mac header file. (Ben Jackson)
2020-03-19 16:28:44 +01:00
Bram Moolenaar
3696839ef1 patch 8.2.0410: channel test fails too often on slow Mac
Problem:    Channel test fails too often on slow Mac.
Solution:   Increase waiting time to 10 seconds.
2020-03-19 16:22:44 +01:00
Bram Moolenaar
b68df220c5 patch 8.2.0409: search test leaves file behind
Problem:    Search test leaves file behind.
Solution:   Delete the file.  Also use Check commands.
2020-03-19 15:05:28 +01:00
Bram Moolenaar
22da5596d0 patch 8.2.0408: delete() commented out for testing
Problem:    Delete() commented out for testing.
Solution:   Undo commenting-out.
2020-03-19 14:52:20 +01:00
Bram Moolenaar
2d10cd4780 patch 8.2.0407: no early check if :find and :sfind have an argument
Problem:    No early check if :find and :sfind have an argument.
Solution:   Add EX_NEEDARG.
2020-03-19 14:37:30 +01:00
Bram Moolenaar
e32848780c patch 8.2.0406: FileReadCmd event not well tested
Problem:    FileReadCmd event not well tested.
Solution:   Add a test.
2020-03-19 13:55:03 +01:00
Bram Moolenaar
3fa5e13262 patch 8.2.0405: MSVC: build fails with some combination of features
Problem:    MSVC: build fails with some combination of features.
Solution:   Enable CHANNEL if TERMINAL is enabled. (Mike Williams)
2020-03-19 13:36:56 +01:00
Bram Moolenaar
18a2b87ca2 patch 8.2.0404: writefile() error does not give a hint
Problem:    Writefile() error does not give a hint.
Solution:   Add remark about first argument.
2020-03-19 13:08:45 +01:00
Bram Moolenaar
a3a9c8ef69 patch 8.2.0403: when 'buftype' is "nofile" there is no overwrite check
Problem:    When 'buftype' is "nofile" there is no overwrite check.
Solution:   Also check for existing file when 'buftype' is set.
            (closes #5807)
2020-03-19 12:38:34 +01:00
Bram Moolenaar
30d53e2c11 patch 8.2.0402: setting local instead of global flag
Problem:    Setting local instead of global flag.
Solution:   Prepend "g:" to "test_is_flaky".
2020-03-18 21:10:44 +01:00
Bram Moolenaar
8dfcce3a78 patch 8.2.0401: not enough test coverage for evalvars.c
Problem:    Not enough test coverage for evalvars.c.
Solution:   Add more tests. (Yegappan Lakshmanan, closes #5804)
2020-03-18 19:32:26 +01:00
Bram Moolenaar
3cdcb090a6 patch 8.2.0400: not all tests using a terminal are in the list of flaky tests
Problem:    Not all tests using a terminal are in the list of flaky tests.
Solution:   Introduce the test_is_flaky flag.
2020-03-18 19:18:10 +01:00
Bram Moolenaar
292b90d4fa patch 8.2.0399: various memory leaks
Problem:    Various memory leaks.
Solution:   Avoid the leaks. (Ozaki Kiichi, closes #5803)
2020-03-18 15:23:16 +01:00
Bram Moolenaar
a21df1db3c patch 8.2.0398: profile test fails when two functions take same time
Problem:    Profile test fails when two functions take same time.
Solution:   Add a short sleep in once function. (closes #5797)
2020-03-17 20:57:09 +01:00
Bram Moolenaar
5715b3147b patch 8.2.0397: delayed screen update when using undo from Insert mode
Problem:    Delayed screen update when using undo from Insert mode.
Solution:   Update w_topline and cursor shape before sleeping. (closes #5790)
2020-03-16 22:08:45 +01:00
Bram Moolenaar
24ebd83e03 patch 8.2.0396: cmdexpand.c insufficiently tested
Problem:    Cmdexpand.c insufficiently tested.
Solution:   Add more tests. (Yegappan Lakshmanan, closes #5789)
2020-03-16 21:25:24 +01:00
Bram Moolenaar
a2cbdea968 patch 8.2.0395: build fails with FEAT_EVAL but without FEAT_MENU
Problem:    Build fails with FEAT_EVAL but without FEAT_MENU.
Solution:   Add #ifdef. (John Marriott)
2020-03-16 21:08:31 +01:00
Bram Moolenaar
7f009dfa06 patch 8.2.0394: Coverity complains about using NULL pointer
Problem:    Coverity complains about using NULL pointer.
Solution:   Use empty string when option value is NULL.
2020-03-16 20:27:38 +01:00
Bram Moolenaar
c030063329 patch 8.2.0393: Coverity warns for not using return value
Problem:    Coverity warns for not using return value.
Solution:   Add (void).
2020-03-16 20:07:16 +01:00
Bram Moolenaar
56cb337872 patch 8.2.0392: Coverity warns for using array index out of range
Problem:    Coverity warns for using array index out of range.
Solution:   Add extra "if" to avoid warning.
2020-03-16 20:04:41 +01:00
Bram Moolenaar
b2e1f8a28f patch 8.2.0391: CI test coverage dropped
Problem:    CI test coverage dropped.
Solution:   Set $DISPLAY also for non-GUI builds. (James McCoy, closes #5788)
2020-03-16 12:09:30 +01:00
Bram Moolenaar
ddbfe238a5 patch 8.2.0390: terminal postponed scrollback test is flaky
Problem:    Terminal postponed scrollback test is flaky.
Solution:   Add delay in between sending keys.  Rename dump files.
2020-03-15 20:33:40 +01:00
Bram Moolenaar
e4fc746d13 patch 8.2.0389: delayed redraw when shifting text from Insert mode
Problem:    Delayed redraw when shifting text from Insert mode.
Solution:   Use msg_attr_keep() instead of msg(). (closes #5782)
2020-03-15 19:17:50 +01:00
Bram Moolenaar
833805a486 patch 8.2.0388: printmbcharset option not tested
Problem:    Printmbcharset option not tested.
Solution:   Add a test.  Enable PostScript for AppVeyor build. (Dominique
            Pelle, closes #5783)
2020-03-15 18:27:43 +01:00
Bram Moolenaar
bb65a5690c patch 8.2.0387: error for possible NULL argument to qsort()
Problem:    Error for possible NULL argument to qsort().
Solution:   Don't call qsort() when there is nothing to sort. (Dominique
            Pelle, closes #5780)
2020-03-15 18:15:03 +01:00
Bram Moolenaar
0bdbc10e8a patch 8.2.0386: part from unfinished patch got included
Problem:    Part from unfinished patch got included.
Solution:   Undo that part.
2020-03-15 16:51:40 +01:00
Bram Moolenaar
0eabd4dc8f patch 8.2.0385: menu functionality insufficiently tested
Problem:    Menu functionality insufficiently tested.
Solution:   Add tests.  Add menu_info(). (Yegappan Lakshmanan, closes #5760)
2020-03-15 16:13:53 +01:00
Bram Moolenaar
5e4d1eba95 patch 8.2.0384: Travis CI has warnings
Problem:    Travis CI has warnings.
Solution:   Avoid warnings, clean up the config. (Ozaki Kiichi, closes #5779)
2020-03-15 15:10:11 +01:00
Bram Moolenaar
4f32f9c90e patch 8.2.0383: wrong feature check causes test not to be run
Problem:    Wrong feature check causes test not to be run.
Solution:   Use CheckFunction instead of CheckFeature. (Ozaki Kiichi,
            closes #5781)
2020-03-15 14:53:35 +01:00
Bram Moolenaar
353c351bd2 patch 8.2.0382: some tests fail when run under valgrind
Problem:    Some tests fail when run under valgrind.
Solution:   Increase timeouts.
2020-03-15 14:19:26 +01:00
Bram Moolenaar
2573af3519 patch 8.2.0381: using freed memory with :lvimgrep and autocommand
Problem:    Using freed memory with :lvimgrep and autocommand. (extracted from
            POC by Dominique Pelle)
Solution:   Avoid deleting a dummy buffer used in a window. (closes #5777)
2020-03-14 17:21:34 +01:00
Bram Moolenaar
1939826509 patch 8.2.0380: tiny popup when creating a terminal popup without minwidth
Problem:    Tiny popup when creating a terminal popup without minwidth.
Solution:   Use a default mininum size of 5 lines of 20 characters.
2020-03-14 15:28:08 +01:00
Bram Moolenaar
b17893aa94 Update runtime files 2020-03-14 08:19:51 +01:00
Bram Moolenaar
965fd8d4dc patch 8.2.0379: gcc warns for ambiguous else
Problem:    Gcc warns for ambiguous else.
Solution:   Add braces. (Dominique Pelle, closes #5778)
2020-03-14 07:46:40 +01:00
Bram Moolenaar
346f18e5fe patch 8.2.0378: prop_find() does not find all props
Problem:    prop_find() does not find all props.
Solution:   Check being in the start line. (Axel Forsman, closes #5776)
2020-03-13 21:36:40 +01:00
Bram Moolenaar
d47e6f0b4c patch 8.2.0377: no CI test for a big-endian system
Problem:    No CI test for a big-endian system.
Solution:   Test with s390x. (James McCoy, closes #5772)
2020-03-13 15:44:49 +01:00
Bram Moolenaar
fa5d8a191d patch 8.2.0376: nasty callback test fails on some systems
Problem:    Nasty callback test fails on some systems.
Solution:   Increase the sleep time.
2020-03-13 14:55:23 +01:00
Bram Moolenaar
8210693795 patch 8.2.0375: Coverity warning for not using return value
Problem:    Coverity warning for not using return value.
Solution:   Move error message to separate function.
2020-03-13 14:34:38 +01:00
Bram Moolenaar
8a677a37d0 patch 8.2.0374: using wrong printf directive for jump location
Problem:    Using wrong printf directive for jump location.
Solution:   Change "%lld" to "%d". (James McCoy, closes #5773)
2020-03-12 19:15:45 +01:00
Bram Moolenaar
3a05ce63fe patch 8.2.0373: type of term_sendkeys() is unknown
Problem:    Type of term_sendkeys() is unknown.
Solution:   Just return zero. (closes #5762)
2020-03-11 19:30:01 +01:00
Bram Moolenaar
66b98854d8 patch 8.2.0372: prop_find() may not find text property at start of the line
Problem:    Prop_find() may not find text property at start of the line.
Solution:   Adjust the loop to find properties. (Axel Forsman, closes #5761,
            closes #5663)
2020-03-11 19:15:52 +01:00
Bram Moolenaar
cee52204ca patch 8.2.0371: crash with combination of terminal popup and autocmd
Problem:    Crash with combination of terminal popup and autocmd.
Solution:   Disallow closing a popup that is the current window.  Add a check
            that the current buffer is valid. (closes #5754)
2020-03-11 14:19:58 +01:00
Bram Moolenaar
e49b4bb895 patch 8.2.0370: the typebuf_was_filled flag is sometimes not reset
Problem:    The typebuf_was_filled flag is sometimes not reset, which may
            cause a hang.
Solution:   Make sure typebuf_was_filled is reset when the typeahead buffer is
            empty.
2020-03-11 13:01:40 +01:00
Bram Moolenaar
1671f44881 patch 8.2.0369: various Normal mode commands not fully tested
Problem:    Various Normal mode commands not fully tested.
Solution:   Add more tests. (Yegappan Lakshmanan, closes #5751)
2020-03-10 07:48:13 +01:00
Bram Moolenaar
5269bd2a72 patch 8.2.0368: Vim9: import that redefines local variable does not fail
Problem:    Vim9: import that redefines local variable does not fail.
Solution:   Check for already defined symbols.
2020-03-09 19:25:27 +01:00
Bram Moolenaar
3a2505cc18 patch 8.2.0367: can use :pedit in a popup window
Problem:    Can use :pedit in a popup window.
Solution:   Disallow it.
2020-03-09 16:40:41 +01:00
Bram Moolenaar
2e09634a78 patch 8.2.0366: hardcopy command not tested enough
Problem:    Hardcopy command not tested enough.
Solution:   Add tests for printing. (Dominique Pelle, closes #5748)
2020-03-09 12:13:27 +01:00
Bram Moolenaar
283e5f4e69 patch 8.2.0365: tag kind can't be a multi-byte character
Problem:    Tag kind can't be a multi-byte character. (Marcin Szamotulski)
Solution:   Recognize multi-byte character. (closes #5724)
2020-03-09 08:17:52 +01:00
Bram Moolenaar
693e80e938 patch 8.2.0364: printf test failing on Haiku
Problem:    Printf test failing on Haiku.
Solution:   Make a difference between int and short. (Dominique Pelle,
            closes #5749)
2020-03-08 18:41:09 +01:00
Bram Moolenaar
f5f1e10d0d patch 8.2.0363: some Normal mode commands not tested
Problem:    Some Normal mode commands not tested.
Solution:   Add more tests. (Yegappan Lakshmanan, closes #5746)
2020-03-08 05:13:15 +01:00
Bram Moolenaar
d0d440f702 patch 8.2.0362: MS-Windows: channel test fails if grep is not available
Problem:    MS-Windows: channel test fails if grep is not available.
Solution:   Use another command. (Ken Takata, closes #5739)
2020-03-07 17:24:59 +01:00
Bram Moolenaar
14e57909e6 patch 8.2.0361: internal error when using "0" for a callback
Problem:    Internal error when using "0" for a callback.
Solution:   Give a normal error. (closes #5743)
2020-03-07 16:59:25 +01:00
Bram Moolenaar
8eab731328 patch 8.2.0360: yaml files are only recognized by the file extension
Problem:    Yaml files are only recognized by the file extension.
Solution:   Check for a line starting with "%YAML". (Jason Franklin)
2020-03-06 22:25:56 +01:00
Bram Moolenaar
ba2920fe97 patch 8.2.0359: popup_atcursor() may hang
Problem:    popup_atcursor() may hang. (Yasuhiro Matsumoto)
Solution:   Take the decoration into account. (closes #5728)
2020-03-06 21:43:17 +01:00
Bram Moolenaar
bd7206e02c patch 8.2.0358: insufficient testing for indent.c
Problem:    Insufficient testing for indent.c.
Solution:   Add indent tests. (Yegappan Lakshmanan, closes #5736)
2020-03-06 20:36:04 +01:00
Bram Moolenaar
49b79bd488 patch 8.2.0357: cannot delete a text property matching both id and type
Problem:    Cannot delete a text property matching both id and type. (Axel
            Forsman)
Solution:   Add the "both" argument.
2020-03-05 21:52:55 +01:00
Bram Moolenaar
8f027fe470 patch 8.2.0356: MS-Windows: feedkeys() with VIMDLL cannot handle CSI
Problem:    MS-Windows: feedkeys() with VIMDLL cannot handle CSI correctly.
Solution:   Modify mch_inchar() to encode CSI bytes. (Ozaki Kiichi, Ken
            Takata, closes #5726)
2020-03-04 23:21:35 +01:00
Bram Moolenaar
a471eeae75 patch 8.2.0355: Vim9: str_val is confusing, it's a number
Problem:    Vim9: str_val is confusing, it's a number
Solution:   Rename to stnr_val.
2020-03-04 22:20:26 +01:00
Bram Moolenaar
a65bb53514 patch 8.2.0354: Python 3.9 does not define _Py_DEC_REFTOTAL
Problem:    Python 3.9 does not define _Py_DEC_REFTOTAL. (Zdenek Dohnal)
Solution:   Remove it, it was only for debugging.
2020-03-04 22:06:07 +01:00
Bram Moolenaar
d0df1aacd8 patch 8.2.0353: Vim9: while loop not tested
Problem:    Vim9: while loop not tested.
Solution:   Add test with "while", "break" and "continue"
2020-03-04 21:50:46 +01:00
Bram Moolenaar
36ddf93831 patch 8.2.0352: FreeBSD: test for sourcing utf-8 is skipped
Problem:    FreeBSD: test for sourcing utf-8 is skipped.
Solution:   Run the matchadd_conceal test separately to avoid that setting
            'term' to "ansi" causes problems for other tests. (Ozaki Kiichi,
            closes #5721)
2020-03-03 23:06:48 +01:00
Bram Moolenaar
3e919d2924 patch 8.2.0351: terminal in popup test is still a bit flaky
Problem:    Terminal in popup test is still a bit flaky.
Solution:   Clear and redraw before opening the popup.
2020-03-03 22:56:39 +01:00
Bram Moolenaar
080457c02d patch 8.2.0350: Vim9: expression tests don't use recognized constants
Problem:    Vim9: expression tests don't use recognized constants.
Solution:   Recognize "true" and "false" as constants.  Make skipping work for
            assignment and expression evaluation.
2020-03-03 21:53:32 +01:00
Bram Moolenaar
6d69bf602b patch 8.2.0349: Vim9: constant expression not well tested
Problem:    Vim9: constant expression not well tested.
Solution:   Add tests for "if" with constant expression.
2020-03-03 19:02:12 +01:00
Bram Moolenaar
5381c7a162 patch 8.2.0348: Vim9: not all code tested
Problem:    Vim9: not all code tested.
Solution:   Add a few more tests. fix using "b:" in literal dictionary.
2020-03-02 22:53:32 +01:00
Bram Moolenaar
91ffc8a5f5 patch 8.2.0347: various code not covered by tests
Problem:    Various code not covered by tests.
Solution:   Add more test coverage. (Yegappan Lakshmanan, closes #5720)
2020-03-02 20:54:22 +01:00
Bram Moolenaar
61a6d4e48b patch 8.2.0346: Vim9: finding common list type not tested
Problem:    Vim9: finding common list type not tested.
Solution:   Add more tests.  Fix listing function.  Fix overwriting type.
2020-03-01 23:32:25 +01:00
Bram Moolenaar
815eb83b09 patch 8.2.0345: compiler warning when building without the float feature
Problem:    Compiler warning when building without the float feature.
Solution:   Add #ifdef. (John Marriott)
2020-03-01 20:34:26 +01:00
Bram Moolenaar
ab55c6826f patch 8.2.0344: ":def" not skipped properly
Problem:    ":def" not skipped properly.
Solution:   Add CMD_def to list of commands the require evaluation even when
            not being executed.
2020-03-01 19:41:43 +01:00
Bram Moolenaar
eab6dff19f Update runtime files 2020-03-01 19:06:45 +01:00
Bram Moolenaar
f51cb4e08e patch 8.2.0343: Vim9: using wrong instruction, limited test coverage
Problem:    Vim9: using wrong instruction, limited test coverage.
Solution:   Use ISN_PUSHJOB.  Add a few more tests.
2020-03-01 17:55:14 +01:00
Bram Moolenaar
0546d7df13 patch 8.2.0342: some code in ex_getln.c not covered by tests
Problem:    Some code in ex_getln.c not covered by tests.
Solution:   Add more tests. (Yegappan Lakshmanan, closes #5717)
2020-03-01 16:53:09 +01:00
Bram Moolenaar
41fe061753 patch 8.2.0341: using ":for" in Vim9 script gives an error
Problem:    Using ":for" in Vim9 script gives an error.
Solution:   Pass the LET_NO_COMMAND flag. (closes #5715)
2020-03-01 16:22:40 +01:00
Bram Moolenaar
087d2e1518 patch 8.2.0340: Vim9: function and partial types not tested
Problem:    Vim9: function and partial types not tested.
Solution:   Support more for partial, add tests.
2020-03-01 15:36:42 +01:00
Bram Moolenaar
fbdd08ed9b patch 8.2.0339: Vim9: function return type may depend on arguments
Problem:    Vim9: function return type may depend on arguments.
Solution:   Instead of a fixed return type use a function to figure out the
            return type.
2020-03-01 14:04:46 +01:00
Bram Moolenaar
f4f190d821 patch 8.2.0338: build failure without the channel feature
Problem:    Build failure without the channel feature.
Solution:   Add #ifdef
2020-03-01 13:01:16 +01:00
Bram Moolenaar
b54b8e0c86 patch 8.2.0337: build fails on a few systems
Problem:    Build fails on a few systems.
Solution:   Use vim_snprintf() instead of snprintf().
2020-03-01 01:05:53 +01:00
Bram Moolenaar
42a480bf72 patch 8.2.0336: Vim9: insufficient test coverage for compiling
Problem:    Vim9: insufficient test coverage for compiling.
Solution:   Add more tests.
2020-02-29 23:23:47 +01:00
Bram Moolenaar
cc390ff5b2 patch 8.2.0335: no completion for :disassemble
Problem:    No completion for :disassemble.
Solution:   Make completion work.  Also complete script-local functions if the
            name starts with "s:".
2020-02-29 22:06:30 +01:00
Bram Moolenaar
dd58923c6b patch 8.2.0334: abort called when using test_void()
Problem:    Abort called when using test_void(). (Dominique Pelle)
Solution:   Only give an error, don't abort.
2020-02-29 17:38:12 +01:00
Bram Moolenaar
57c339569e patch 8.2.0333: terminal in popup test is flaky
Problem:    Terminal in popup test is flaky.
Solution:   Make sure redraw is done before opening the popup.
2020-02-29 16:09:16 +01:00
Bram Moolenaar
d30ae2fc4a patch 8.2.0332: some code in ex_getln.c not covered by tests
Problem:    Some code in ex_getln.c not covered by tests.
Solution:   Add a few more tests. (Yegappan Lakshmanan, closes #5710)
2020-02-29 14:23:58 +01:00
Bram Moolenaar
7c215c5893 patch 8.2.0331: internal error when using test_void() and test_unknown()
Problem:    Internal error when using test_void() and test_unknown().
            (Dominique Pelle)
Solution:   Give a normal error.
2020-02-29 13:43:27 +01:00
Bram Moolenaar
57c732ed78 patch 8.2.0330: build error with popup window but without terminal
Problem:    Build error with popup window but without terminal.
Solution:   Add #ifdef.
2020-02-28 22:51:54 +01:00
Bram Moolenaar
ec084d3356 patch 8.2.0329: popup filter converts 0x80 bytes
Problem:    Popup filter converts 0x80 bytes.
Solution:   Keep 0x80 bytes as-is. (Ozaki Kiichi, closes #5706)
2020-02-28 22:44:47 +01:00
Bram Moolenaar
e52e0c89d1 patch 8.2.0328: no redraw when leaving term-normal mode in popup terminal
Problem:    No redraw when leaving terminal-normal mode in a terminal popup
            window.
Solution:   Redraw the popup window. (closes #5708)
2020-02-28 22:20:10 +01:00
Bram Moolenaar
80ae880f5f patch 8.2.0327: crash when opening and closing two popup terminal windows
Problem:    Crash when opening and closing two popup terminal windows.
Solution:   Check that prevwin is valid. (closes #5707)
2020-02-28 19:11:18 +01:00
Bram Moolenaar
d5aec0ced1 patch 8.2.0326: compiler warning for using uninitialized variable
Problem:    Compiler warning for using uninitialized variable. (Yegappan
            Lakshmanan)
Solution:   Do not jump to failed but return.
2020-02-27 21:48:51 +01:00
Bram Moolenaar
578fe947e3 patch 8.2.0325: ex_getln.c code not covered by tests
Problem:    Ex_getln.c code not covered by tests.
Solution:   Add a few more tests. (Yegappan Lakshmanan, closes #5702)
2020-02-27 21:32:51 +01:00
Bram Moolenaar
12f2003871 patch 8.2.0324: text property not updated correctly when inserting/deleting
Problem:    Text property not updated correctly when inserting/deleting.
Solution:   Use the right column when deleting. Make zero-width text
            properties respect start_incl and end_incl. (Axel Forsman,
            closes #5696, closes #5679)
2020-02-26 22:06:00 +01:00
Bram Moolenaar
7eeefd4a39 patch 8.2.0323: Vim9: calling a function that is defined later is slow
Problem:    Vim9: calling a function that is defined later is slow.
Solution:   Once the function is found update the instruction so it can be
            called directly.
2020-02-26 21:24:23 +01:00
Bram Moolenaar
b35efa5ed0 patch 8.2.0322: Vim9: error checks not tested
Problem:    Vim9: error checks not tested.
Solution:   Add more test cases.  Avoid error for function loaded later.
2020-02-26 20:15:18 +01:00
Bram Moolenaar
ad39c094d2 patch 8.2.0321: Vim9: ":execute" does not work yet
Problem:    Vim9: ":execute" does not work yet.
Solution:   Add ISN_EXECUTE. (closes #5699) Also make :echo work with more
            than one argument.
2020-02-26 18:23:43 +01:00
Bram Moolenaar
b3f740695a patch 8.2.0320: no Haiku support
Problem:    No Haiku support.
Solution:   Add support for Haiku. (Emir Sari, closes #5605)
2020-02-26 16:16:53 +01:00
Bram Moolenaar
d672dde584 patch 8.2.0319: file missing in distribution, comments outdated
Problem:    File missing in distribution, comments outdated.
Solution:   Correct path of README file.  Update comments.
2020-02-26 13:43:51 +01:00
Bram Moolenaar
bc93cebb69 Update runtime files. 2020-02-26 13:36:21 +01:00
Bram Moolenaar
0c2ca58ef0 patch 8.2.0318: Vim9: types not sufficiently tested
Problem:    Vim9: types not sufficiently tested.
Solution:   Add tests with more types.
2020-02-25 22:58:29 +01:00
Bram Moolenaar
703ea9eaef patch 8.2.0317: MSVC: _CRT_SECURE_NO_DEPRECATE not defined on DEBUG build
Problem:    MSVC: _CRT_SECURE_NO_DEPRECATE not defined on DEBUG build.
Solution:   Move where CFLAGS is updated. (Ken Takata, closes #5692)
2020-02-25 22:04:55 +01:00
Bram Moolenaar
8d588ccee5 patch 8.2.0316: ex_getln.c code has insufficient test coverage
Problem:    ex_getln.c code has insufficient test coverage.
Solution:   Add more tests. Fix a problem. (Yegappan Lakshmanan, closes #5693)
2020-02-25 21:47:45 +01:00
Bram Moolenaar
c593bec412 patch 8.2.0315: build failure on HP-UX system
Problem:    Build failure on HP-UX system.
Solution:   Use LONG_LONG_MIN instead of LLONG_MIN.  Add type casts for switch
            statement. (John Marriott)
2020-02-25 21:26:49 +01:00
Bram Moolenaar
e010c720b2 patch 8.2.0314: short name not set for terminal buffer
Problem:    Short name not set for terminal buffer.
Solution:   Set the short name. (closes #5687)
2020-02-24 21:37:54 +01:00
Bram Moolenaar
fa29c8abd6 patch 8.2.0313: Vim9: insufficient script tests
Problem:    Vim9: insufficient script tests.
Solution:   Add tests.  Make import of alphanumeric name work.
2020-02-23 22:35:05 +01:00
Bram Moolenaar
f2d5c240a5 patch 8.2.0312: Vim9: insufficient script tests
Problem:    Vim9: insufficient script tests.
Solution:   Add more tests.  Make "import * as Name" work.
2020-02-23 21:25:54 +01:00
Bram Moolenaar
750802b55c patch 8.2.0311: Vim9: insufficient script tests
Problem:    Vim9: insufficient script tests.
Solution:   Add tests.  Free imports when re-using a script.
2020-02-23 18:08:33 +01:00
Bram Moolenaar
8fb1b47a5e patch 8.2.0310: autocmd test fails on a slow system
Problem:    Autocmd test fails on a slow system.
Solution:   Adjust the expectations. (James McCoy, closes #5685)
2020-02-23 16:16:26 +01:00
Bram Moolenaar
b81f56fb57 patch 8.2.0309: window-local values have confusing name
Problem:    Window-local values have confusing name.
Solution:   Rename w_p_bri* to w_briopt_*.
2020-02-23 15:29:46 +01:00
Bram Moolenaar
1aa76b8fd0 patch 8.2.0308: 'showbreak' does not work for a very long line
Problem:    'showbreak' does not work for a very long line. (John Little)
Solution:   Check whether 'briopt' contains "sbr". (Ken Takata, closes #5523,
            closes #5684)
2020-02-23 15:17:27 +01:00
Bram Moolenaar
026270c01d patch 8.2.0307: Python 3 vim.eval not well tested
Problem:    Python 3 vim.eval not well tested.
Solution:   Add a test. (Dominique Pelle, closes #5680)
2020-02-23 15:10:16 +01:00
Bram Moolenaar
83f37b9142 patch 8.2.0306: Vim9: :substitute(pat(repl does not work in Vim9 script
Problem:    Vim9: :substitute(pat(repl does not work in Vim9 script.
Solution:   Remember starting with a colon. (closes #5676)
2020-02-23 14:35:01 +01:00
Bram Moolenaar
8040a7147f patch 8.2.0305: relativenumber test fails on some systems
Problem:    Relativenumber test fails on some systems. (James McCoy)
Solution:   Clear the command line.
2020-02-23 13:38:08 +01:00
Bram Moolenaar
95ffd43f88 patch 8.2.0304: terminal test if failing on some systems
Problem:    Terminal test if failing on some systems.
Solution:   Wait for the job to finish. (James McCoy)
2020-02-23 13:29:31 +01:00
Bram Moolenaar
d28e0b3652 patch 8.2.0303: TermChanged test fails in the GUI
Problem:    TermChanged test fails in the GUI.
Solution:   Skip the test when running the GUI.
2020-02-22 23:08:52 +01:00
Bram Moolenaar
0c81d1b112 patch 8.2.0302: setting 'term' may cause error in TermChanged autocommand
Problem:    Setting 'term' may cause error in TermChanged autocommand.
Solution:   Use aucmd_prepbuf() to switch to the buffer where the autocommand
            is to be executed. (closes #5682)
2020-02-22 22:45:55 +01:00
Bram Moolenaar
b654103ad1 patch 8.2.0301: insufficient testing for exception handling
Problem:    Insufficient testing for exception handling and the "attention"
            prompt.
Solution:   Add test cases. (Yegappan Lakshmanan, closes #5681)
2020-02-22 21:21:27 +01:00
Bram Moolenaar
b4d2cb1083 patch 8.2.0300: Vim9: expression test fails without channel support
Problem:    Vim9: expression test fails without channel support.
Solution:   Add has('channel') check.
2020-02-22 20:33:08 +01:00
Bram Moolenaar
8ed04587d3 patch 8.2.0299: Vim9: ISN_STORE with argument not tested
Problem:    Vim9: ISN_STORE with argument not tested.  Some cases in tv2bool()
            not tested.
Solution:   Add tests.  Add test_unknown() and test_void().
2020-02-22 19:07:28 +01:00
Bram Moolenaar
0c6ceaf903 patch 8.2.0298: Vim9 script: cannot start command with a string constant
Problem:    Vim9 script: cannot start command with a string constant.
Solution:   Recognize expression starting with '('.
2020-02-22 18:36:32 +01:00
Bram Moolenaar
8b430b4c1d patch 8.2.0297: compiler warnings for the Ruby interface
Problem:    Compiler warnings for the Ruby interface.
Solution:   Undefine a few macros, fix initialization. (Ozaki Kiichi,
            closes #5677)
2020-02-22 15:01:00 +01:00
Bram Moolenaar
f9706e9df0 patch 8.2.0296: mixing up "long long" and __int64 may cause problems
Problem:    Mixing up "long long" and __int64 may cause problems. (John
            Marriott)
Solution:   Pass varnumber_T to vim_snprintf().  Add v:numbersize.
2020-02-22 14:27:04 +01:00
Bram Moolenaar
c036e87bd7 patch 8.2.0295: highlighting for :s wrong when using different separator
Problem:    Highlighting for :s wrong when using different separator.
Solution:   Use separat argument for search direction and separator. (Rob
            Pilling, closes #5665)
2020-02-21 21:30:52 +01:00
Bram Moolenaar
5b1c8fe3d5 patch 8.2.0294: cannot use Ex command that is also a function name
Problem:    Cannot use Ex command that is also a function name.
Solution:   Recognize an Ex command by a colon prefix.
2020-02-21 18:42:43 +01:00
Bram Moolenaar
818fc9ad14 patch 8.2.0293: various Ex commands not sufficiently tested
Problem:    Various Ex commands not sufficiently tested.
Solution:   Add more test cases. (Yegappan Lakshmanan, closes #5673)
2020-02-21 17:54:45 +01:00
Bram Moolenaar
09f28f49c9 patch 8.2.0292: Vim9: CHECKNR and CHECKTYPE instructions not tested
Problem:    Vim9: CHECKNR and CHECKTYPE instructions not tested.
Solution:   Add tests.
2020-02-20 23:08:34 +01:00
Bram Moolenaar
436472f5e0 patch 8.2.0291: Vim9: assigning [] to list<string> doesn't work
Problem:    Vim9: assigning [] to list<string> doesn't work.
Solution:   Use void for empty list and dict. (Ken Takata, closes #5669)
2020-02-20 22:54:43 +01:00
Bram Moolenaar
85683ec620 patch 8.2.0290: running individual test differs from all tests
Problem:    Running individual test differs from all tests.
Solution:   Pass on environment variables. (Yee Cheng Chin, closes #5672)
2020-02-20 22:35:02 +01:00
Bram Moolenaar
e0807ea4a7 patch 8.2.0289: Vim9: :echo did not clear the rest of the line
Problem:    Vim9: :echo did not clear the rest of the line.
Solution:   Call msg_clr_eos(). (Ken Takata, closes #5668)
2020-02-20 22:18:06 +01:00
Bram Moolenaar
0062c2d4f9 patch 8.2.0288: Vim9: some float and blob operators not tested
Problem:    Vim9: some float and blob operators not tested.
Solution:   Add float and blob tests.  Fix addition.
2020-02-20 22:14:31 +01:00
Bram Moolenaar
f575adff06 patch 8.2.0287: Vim9: return in try block not tested; catch not tested
Problem:    Vim9: return in try block not tested; catch with pattern not
            tested.
Solution:   Add tests.  Make it work.
2020-02-20 20:41:06 +01:00
Bram Moolenaar
11ec807639 patch 8.2.0286: cannot use popup_close() for a terminal popup
Problem:    Cannot use popup_close() for a terminal popup.
Solution:   Allow using popup_close(). (closes #5666)
2020-02-20 20:12:29 +01:00
Bram Moolenaar
0bbf722aaa patch 8.2.0285: unused error message; cannot create s:var
Problem:    Unused error message. Cannot create s:var.
Solution:   Remove the error message. Make assignment to s:var work.
2020-02-19 22:31:48 +01:00
Bram Moolenaar
c0d656c89d patch 8.2.0284: Vim9: assignment test fails
Problem:    Vim9: assignment test fails.
Solution:   Avoid duplicating "s:".
2020-02-19 21:12:40 +01:00
Bram Moolenaar
fd1823e0b7 patch 8.2.0283: Vim9: failing to load script var not tested
Problem:    Vim9: failing to load script var not tested.
Solution:   Add more tests.   Fix using s: in old script.
2020-02-19 20:23:11 +01:00
Bram Moolenaar
401d9ffb5a patch 8.2.0282: Vim9: setting number option not tested
Problem:    Vim9: setting number option not tested.
Solution:   Add more tests.   Fix assigning to global variable.
2020-02-19 18:14:44 +01:00
Bram Moolenaar
a2f6e42ded patch 8.2.0281: two placed signs in the same line are not combined
Problem:    Two placed signs in the same line are not combined.  E.g. in the
            terminal debugger a breakpoint and the PC cannot be both be
            displayed.
Solution:   Combine the sign column and line highlight attributes.
2020-02-19 17:13:04 +01:00
Bram Moolenaar
257cc5ee95 patch 8.2.0280: Vim9: throw in :def function not caught higher up
Problem:    Vim9: throw in :def function not caught higher up.
Solution:   Set "need_rethrow".
2020-02-19 17:06:11 +01:00
Bram Moolenaar
63ce4849ef patch 8.2.0279: Vim9: no test for deleted :def function
Problem:    Vim9: no test for deleted :def function.
Solution:   Add a test.  Clear uf_cleared flag when redefining a function.
2020-02-19 15:46:48 +01:00
Bram Moolenaar
9ae3bbdb96 patch 8.2.0278: channel test is flaky on Mac
Problem:    Channel test is flaky on Mac.
Solution:   Reset variable before sending message.
2020-02-19 14:31:33 +01:00
Bram Moolenaar
ee2e52aa06 patch 8.2.0277: Vim9: not all instructions covered by tests
Problem:    Vim9: not all instructions covered by tests.
Solution:   Add more test cases.
2020-02-19 14:17:18 +01:00
Bram Moolenaar
38a5f517a7 patch 8.2.0276: Vim9: not allowing space before ")" in function call
Problem:    Vim9: not allowing space before ")" in function call is too
            restrictive. (Ben Jackson)
Solution:   Skip space before the ")".  Adjust other space checks.
2020-02-19 12:40:39 +01:00
Bram Moolenaar
406cd90f19 patch 8.2.0275: some Ex code not covered by tests
Problem:    Some Ex code not covered by tests.
Solution:   Add test cases. (Yegappan Lakshmanan, closes #5659)
2020-02-18 21:54:41 +01:00
Bram Moolenaar
9e2bcb5d23 patch 8.2.0274: hang with combination of feedkeys(), Ex mode and :global
Problem:    Hang with combination of feedkeys(), Ex mode and :global.
            (Yegappan Lakshmanan)
Solution:   Add the pending_exmode_active flag.
2020-02-18 21:33:00 +01:00
Bram Moolenaar
1fa8d2c33d patch 8.2.0273: MS-Windows uninstall may delete wrong batch file
Problem:    MS-Windows uninstall may delete wrong batch file.
Solution:   Add specific marker in the generated batch file. (Ken Takata,
            closes #5654)
2020-02-17 22:53:14 +01:00
Bram Moolenaar
414b796627 patch 8.2.0272: ":helptags ALL" gives error for some directories
Problem:    ":helptags ALL" gives error for directories without write
            permission. (Matěj Cepl)
Solution:   Ignore errors for ":helptags ALL". (Ken Takata, closes #5026,
            closes #5652)
2020-02-17 22:39:35 +01:00
Bram Moolenaar
82f654e092 patch 8.2.0271: the "num64" feature is available everywhere
Problem:    The "num64" feature is available everywhere and building without
            it causes problems.
Solution:   Graduage the "num64" feature. (James McCoy, closes #5650)
2020-02-17 22:12:50 +01:00
Bram Moolenaar
bc2b71d44a patch 8.2.0270: some code not covered by tests
Problem:    Some code not covered by tests.
Solution:   Add test cases. (Yegappan Lakshmanan, closes #5649)
2020-02-17 21:33:30 +01:00
Bram Moolenaar
b13af50f73 patch 8.2.0269: Vim9: operator after list index does not work
Problem:    Vim9: operator after list index does not work. (Yasuhiro
            Matsumoto)
Solution:   After indexing a list change the type to the list member type.
            (closes #5651)
2020-02-17 21:12:08 +01:00
Bram Moolenaar
40d9da2a43 patch 8.2.0268: trycatch test fails
Problem:    Trycatch test fails.
Solution:   When calling function fails only check for following command, do
            not give another error.
2020-02-17 10:01:24 +01:00
Bram Moolenaar
e51bb17dd0 patch 8.2.0267: no check for a following cmd when calling a function fails
Problem:    No check for a following command when calling a function fails.
Solution:   Also check for a following command when inside a try block.
            (closes #5642)
2020-02-16 19:42:23 +01:00
Bram Moolenaar
a28be85ccd patch 8.2.0266: terminal in popup test sometimes fails on Mac
Problem:    Terminal in popup test sometimes fails on Mac.
Solution:   Add a short delay.
2020-02-16 17:04:09 +01:00
Bram Moolenaar
a76b31542e patch 8.2.0265: "eval" after "if 0" doesn't check for following command
Problem:    "eval" after "if 0" doesn't check for following command.
Solution:   Add "eval" to list of commands that check for a following command.
            (closes #5640)
2020-02-16 16:20:21 +01:00
Bram Moolenaar
a36c830a32 patch 8.2.0264: fileformat test still fails on MS-Windows
Problem:    Fileformat test still fails on MS-Windows.
Solution:   Set fileformat of buffer in the right place.
2020-02-16 15:08:28 +01:00
Bram Moolenaar
df2ecddf9d patch 8.2.0263: a few new Vim9 messages are not localized
Problem:    A few new Vim9 messages are not localized.
Solution:   Add the gettext wrapper. (Dominique Pelle, closes #5647)
2020-02-16 15:03:48 +01:00
Bram Moolenaar
50434bd74c patch 8.2.0262: fileformat test fails on MS-Windows
Problem:    Fileformat test fails on MS-Windows.
Solution:   Set fileformat of buffer.
2020-02-16 14:55:22 +01:00
Bram Moolenaar
f0cee1971f patch 8.2.0261: some code not covered by tests
Problem:    Some code not covered by tests.
Solution:   Add test cases. (Yegappan Lakshmanan, closes #5645)
2020-02-16 13:33:56 +01:00
Bram Moolenaar
f4140488c7 patch 8.2.0260: several lines of code are duplicated
Problem:    Several lines of code are duplicated.
Solution:   Move duplicated code to a function. (Yegappan Lakshmanan,
            closes #5330)
2020-02-15 23:06:45 +01:00
Bram Moolenaar
ebdf3c964a Update runtime files. 2020-02-15 21:41:42 +01:00
Bram Moolenaar
c2adc00fa7 patch 8.2.0259: terminal in popup test sometimes fails
Problem:    Terminal in popup test sometimes fails.
Solution:   Clear the command line.
2020-02-14 17:05:18 +01:00
Bram Moolenaar
4132eb505c patch 8.2.0258: modifyOtherKeys cannot be temporarily disabled
Problem:    ModifyOtherKeys cannot be temporarily disabled.
Solution:   Add echoraw() with an example for modifyOtherKeys.
2020-02-14 16:53:00 +01:00
Bram Moolenaar
00f3b4e007 patch 8.2.0257: cannot recognize a terminal in a popup window
Problem:    Cannot recognize a terminal in a popup window.
Solution:   Add the win_gettype() function.
2020-02-14 14:32:22 +01:00
Bram Moolenaar
0a8fed6231 patch 8.2.0256: time and timer related code is spread out
Problem:    Time and timer related code is spread out.
Solution:   Move time and timer related code to a new file. (Yegappan
            Lakshmanan, closes #5604)
2020-02-14 13:22:17 +01:00
Bram Moolenaar
f2cecb6c10 patch 8.2.0255: VMS: missing files in build
Problem:    VMS: missing files in build.
Solution:   Add the files. (Zoltan Arpadffy)
2020-02-13 21:59:25 +01:00
Bram Moolenaar
ae8d2de3a9 patch 8.2.0254: compiler warning for checking size_t to be negative
Problem:    Compiler warning for checking size_t to be negative.
Solution:   Only check for zero. (Zoltan Arpadffy)
2020-02-13 21:42:24 +01:00
Bram Moolenaar
21456cdccb patch 8.2.0253: crash when using :disassamble without argument
Problem:    Crash when using :disassamble without argument. (Dhiraj Mishra)
Solution:   Check for missing argument. (Dominique Pelle, closes #5635,
            closes #5637)
2020-02-13 21:29:32 +01:00
Bram Moolenaar
3dd64608f6 patch 8.2.0252: Windows compiler warns for using size_t
Problem:    Windows compiler warns for using size_t.
Solution:   Change to int. (Mike Williams)
2020-02-13 20:31:28 +01:00
Bram Moolenaar
7306d6b1c9 patch 8.2.0251: a couple of function return types can be more specific
Problem:    A couple of function return types can be more specific.
Solution:   Use a better return type. (Ken Takata, closes #5629)
2020-02-12 22:25:56 +01:00
Bram Moolenaar
4f5776c17c patch 8.2.0250: test_clear_search_pat() is unused
Problem:    test_clear_search_pat() is unused.
Solution:   Remove the function. (Yegappan Lakshmanan, closes #5624)
2020-02-12 22:15:19 +01:00
Bram Moolenaar
3fb377fa78 patch 8.2.0249: MS-Windows: various warnings
Problem:    MS-Windows: various warnings.
Solution:   Set the charset to utf-8. Add _WIN32_WINNT and _USING_V110_SDK71_.
            (Ken Takata, closes #5625)
2020-02-12 21:52:32 +01:00
Bram Moolenaar
2f18975088 patch 8.2.0248: MS-Windows: dealing with deprecation is too complicated
Problem:    MS-Windows: dealing with deprecation is too complicated.
Solution:   Use io.h directly. Move _CRT_SECURE_NO_DEPRECATE to the build
            file. Suppress C4091 warning by setting "_WIN32_WINNT". (Ken
            Takata, closes #5626)
2020-02-12 21:15:43 +01:00
Bram Moolenaar
3b0ef8cfdb patch 8.2.0247: misleading comment in NSIS installer script
Problem:    Misleading comment in NSIS installer script.
Solution:   Negate the meaning of the comment. (Ken Takata, closes #5627)
2020-02-12 21:03:32 +01:00
Bram Moolenaar
49c99fcca0 patch 8.2.0246: MSVC: deprecation warnings with Ruby
Problem:    MSVC: deprecation warnings with Ruby.
Solution:   Move _CRT_SECURE_NO_DEPRECATE to build file. (Ken Takata,
            closes #5622)
2020-02-11 23:01:39 +01:00
Bram Moolenaar
5489eab345 patch 8.2.0245: MSVC: error message if the auto directory already exists
Problem:    MSVC: error message if the auto directory already exists.
Solution:   Add "if not exists". (Ken Takata, closes #5620)
2020-02-11 22:49:18 +01:00
Bram Moolenaar
5f1d3ae8a8 patch 8.2.0244: compiler warning in Lua interface
Problem:    Compiler warning in Lua interface.
Solution:   Add type cast. (Ken Takata, closes #5621)
2020-02-11 22:37:35 +01:00
Bram Moolenaar
9f6277bdde patch 8.2.0243: insufficient code coverage for ex_docmd.c functions
Problem:    Insufficient code coverage for ex_docmd.c functions.
Solution:   Add more tests. (Yegappan Lakshmanan, closes #5618)
2020-02-11 22:04:02 +01:00
Bram Moolenaar
799439a5d8 patch 8.2.0242: preview popup window test fails with long directory name
Problem:    Preview popup window test fails with long directory name. (Jakub
            Kądziołka)
Solution:   Use "silent cd". (closes #5615)
2020-02-11 21:44:17 +01:00
Bram Moolenaar
99234f29aa patch 8.2.0241: crash when setting 'buftype' to "quickfix"
Problem:    Crash when setting 'buftype' to "quickfix".
Solution:   Check that error list is not NULL. (closes #5613)
2020-02-10 22:56:54 +01:00
Bram Moolenaar
408030e8d0 patch 8.2.0240: using memory after it was freed
Problem:    Using memory after it was freed. (Dominique Pelle)
Solution:   Do not mix converion buffer with other buffer.
2020-02-10 22:44:32 +01:00
Bram Moolenaar
355757aed6 patch 8.2.0239: MS-Windows: 'env' job option does not override existing vars
Problem:    MS-Windows: 'env' job option does not override existing
            environment variables.  (Tim Pope)
Solution:   Set the environment variables later. (Yasuhiro Matsumoto,
            closes #5485, closes #5608)
2020-02-10 22:06:32 +01:00
Bram Moolenaar
b3e195cca7 patch 8.2.0238: MS-Windows: job_stop() results in exit value zero
Problem:    MS-Windows: job_stop() results in exit value zero.
Solution:   Call TerminateJobObject() with -1 instead of 0. (Yasuhiro
            Matsumoto, closes #5150, closes #5614)
2020-02-10 21:32:19 +01:00
Bram Moolenaar
7ba3b91e03 patch 8.2.0237: crash when setting 'wincolor' on finished terminal window
Problem:    Crash when setting 'wincolor' on finished terminal window.
            (Bakudankun)
Solution:   Check that the vterm is not NULL. (Yasuhiro Matsumoto, closes
            #5607, closes #5610)
2020-02-10 20:34:04 +01:00
Bram Moolenaar
57ea2924e5 patch 8.2.0236: MS-Windows unintall doesn't delete vimtutur.bat
Problem:    MS-Windows unintall doesn't delete vimtutur.bat.
Solution:   Change directory before deletion. (Ken Takata, closes #5603)
2020-02-09 14:27:20 +01:00
Bram Moolenaar
dbe5d361fe patch 8.2.0235: draw error when an empty group is removed from 'statusline'
Problem:    Draw error when an empty group is removed from 'statusline'.
Solution:   Do not use highlighting from a removed group.
2020-02-08 18:35:31 +01:00
Bram Moolenaar
d5b9914938 patch 8.2.0234: message test fails on SunOS
Problem:    Message test fails on SunOS.
Solution:   Adjust expectation for printf "%p". (Ozaki Kiichi, closes #5595)
2020-02-08 17:14:46 +01:00
Bram Moolenaar
4f645c54ef patch 8.2.0233: crash when using garbagecollect() in between rand()
Problem:    Crash when using garbagecollect() in between rand().
Solution:   Redesign the rand() and srand() implementation. (Yasuhiro
            Matsumoto, closes #5587, closes #5588)
2020-02-08 16:40:39 +01:00
Bram Moolenaar
165315584d patch 8.2.0232: the :compiler command causes a crash
Problem:    The :compiler command causes a crash. (Daniel Steinberg)
Solution:   Do not use the script index if it isn't set.
2020-02-08 16:00:46 +01:00
Bram Moolenaar
d02e508a18 patch 8.2.0231: silent system command may clear the screen
Problem:    Silent system command may clear the screen.
Solution:   Do not clear the screen in t_te.
2020-02-08 14:22:53 +01:00
Bram Moolenaar
670218839a patch 8.2.0230: terminal popup test is flaky
Problem:    Terminal popup test is flaky.
Solution:   Increase wait time a bit.
2020-02-07 22:20:53 +01:00
Bram Moolenaar
f2460a3aec patch 8.2.0229: compare instructions not tested
Problem:    Compare instructions not tested.
Solution:   Add test cases.  Fix disassemble with line continuation.
2020-02-07 22:09:54 +01:00
Bram Moolenaar
348808f7c0 patch 8.2.0228: configure does not recognize gcc version on BSD
Problem:    Configure does not recognize gcc version on BSD.
Solution:   Do not use "\+" in the pattern matching the version number. (Ozaki
            Kiichi, closes #5590)
2020-02-07 20:50:07 +01:00
Bram Moolenaar
c2a4b35b86 patch 8.2.0227: compiling a few instructions not tested
Problem:    Compiling a few instructions not tested.
Solution:   Add more test cases.
2020-02-06 22:41:16 +01:00
Bram Moolenaar
04d0522046 patch 8.2.0226: compiling for loop not tested
Problem:    Compiling for loop not tested.
Solution:   Add a test.  Make variable initialization work for more types.
2020-02-06 22:06:54 +01:00
Bram Moolenaar
777770fbb0 patch 8.2.0225: compiling lambda not tested yet
Problem:    compiling lambda not tested yet.
Solution:   Add test for lambda and funcref. Drop unused instruction arg.
2020-02-06 21:27:08 +01:00
Bram Moolenaar
158906cffc patch 8.2.0224: compiling :elseif not tested yet
Problem:    compiling :elseif not tested yet.
Solution:   Add test for :elseif.  Fix generating jumps.
2020-02-06 20:39:45 +01:00
Bram Moolenaar
5cab73f8cc patch 8.2.0223: some instructions not yet tested
Problem:    Some instructions not yet tested.
Solution:   Disassemble more instructions.  Move tests to a new file.  Compile
            call to s:function().
2020-02-06 19:25:19 +01:00
Bram Moolenaar
170fcfcf25 patch 8.2.0222: Vim9: optional function arguments don't work yet
Problem:    Vim9: optional function arguments don't work yet.
Solution:   Implement optional function arguments.
2020-02-06 17:51:35 +01:00
Bram Moolenaar
6e587dcbf3 patch 8.2.0221: no test for Vim9 += and ..=
Problem:    No test for Vim9 += and ..=.
Solution:   Add tests.
2020-02-06 13:15:52 +01:00
Bram Moolenaar
1af5ce01c3 patch 8.2.0220: terminal test did pass on Mac
Problem:    Terminal test did pass on Mac.
Solution:   Remove the skip again.
2020-02-06 11:54:35 +01:00
Bram Moolenaar
4af11174f7 patch 8.2.0219: terminal test still fails on Mac
Problem:    Terminal test still fails on Mac.
Solution:   Skip part of the test on Mac.
2020-02-05 23:01:34 +01:00
Bram Moolenaar
0de50864a7 patch 8.2.0218: several Vim9 instructions are not tested
Problem:    Several Vim9 instructions are not tested.
Solution:   Add more tests.
2020-02-05 22:55:48 +01:00
Bram Moolenaar
adbc11c2ee patch 8.2.0217: terminal test fails on Mac
Problem:    Terminal test fails on Mac.
Solution:   Add a short wait.
2020-02-05 22:21:08 +01:00
Bram Moolenaar
ff80cb6807 patch 8.2.0216: several Vim9 instructions are not tested
Problem:    Several Vim9 instructions are not tested.
Solution:   Add more tests. Fix :disassamble output. Make catch with pattern
            work.
2020-02-05 22:10:05 +01:00
Bram Moolenaar
a78e9c61a0 patch 8.2.0215: wrong file name shortening
Problem:    Wrong file name shortening. (Ingo Karkat)
Solution:   Better check for path separator. (Yasuhiro Matsumoto,
            closes #5583, closes #5584)
2020-02-05 21:14:00 +01:00
Bram Moolenaar
2e6638d5f0 patch 8.2.0214: a popup window with a terminal can be made hidden
Problem:    A popup window with a terminal can be made hidden.
Solution:   Disallow hiding a terminal popup.
2020-02-05 21:07:18 +01:00
Bram Moolenaar
7077892a79 patch 8.2.0213: configure does not recognize gcc 10.0 and later
Problem:    Configure does not recognize gcc 10.0 and later.
Solution:   Adjust the pattern matching the version number. (Sergei
            Trofimovich, closes #5580)
2020-02-05 20:44:24 +01:00
Bram Moolenaar
07ada5ff2f patch 8.2.0212: missing search/substitute pattern hardly tested
Problem:    Missing search/substitute pattern hardly tested.
Solution:   Add test_clear_search_pat() and tests. (Yegappan Lakshmanan,
            closes #5579)
2020-02-05 20:38:22 +01:00
Bram Moolenaar
94255df057 patch 8.2.0211: test for ANSI colors fails without an "ls" command
Problem:    Test for ANSI colors fails without an "ls" command.
Solution:   Use "dir". (Ken Takata, closes #5582)
2020-02-05 20:10:33 +01:00
Bram Moolenaar
eed3571fe0 patch 8.2.0210: Coverity complains about uninitialized field
Problem:    Coverity complains about uninitialized field.
Solution:   Initialize the field.
2020-02-04 23:08:14 +01:00
Bram Moolenaar
560979ed4f Update runtime files. 2020-02-04 22:53:05 +01:00
Bram Moolenaar
80147dda4f patch 8.2.0209: function a bit far away from where it's used
Problem:    Function a bit far away from where it's used.
Solution:   Move function close to where it's used. (Ken Takata, closes #5569)
2020-02-04 22:32:59 +01:00
Bram Moolenaar
d816cd94d8 patch 8.2.0208: fnamemodify() does not apply ":~" when followed by ":."
Problem:    Fnamemodify() does not apply ":~" when followed by ":.".
Solution:   Don't let a failing ":." cause the ":~" to be skipped. (Yasuhiro
            Matsumoto, closes #5577)
2020-02-04 22:23:09 +01:00
Bram Moolenaar
bfe1204312 patch 8.2.0207: crash when missing member type on list argument
Problem:    Crash when missing member type on list argument.
Solution:   Check for invalid type. (closes #5572)
2020-02-04 21:54:07 +01:00
Bram Moolenaar
26e117e9bc patch 8.2.0206: calling Vim9 function using default argument fails
Problem:    Calling Vim9 function using default argument fails.
Solution:   Give an appropriate error. (closes #5572)
2020-02-04 21:24:15 +01:00
Bram Moolenaar
a5edb670dc patch 8.2.0205: error code E899 used twice
Problem:    Error code E899 used twice.
Solution:   Use E863 for the terminal in popup error.
2020-02-03 22:58:48 +01:00
Bram Moolenaar
631ebc4814 patch 8.2.0204: crash when using winnr('j') in a popup window
Problem:    Crash when using winnr('j') in a popup window.
Solution:   Do not search for neighbors in a popup window. (closes #5568)
2020-02-03 22:15:26 +01:00
Bram Moolenaar
e20b9ececa patch 8.2.0203: :helptags and some other functionality not tested
Problem:    :helptags and some other functionality not tested.
Solution:   Add more tests. (Yegappan Lakshmanan, closes #5567)
2020-02-03 21:40:04 +01:00
Bram Moolenaar
e7ddf4e337 patch 8.2.0202: when 'lazyredraw' is set the window title may not be updated
Problem:    When 'lazyredraw' is set the window title may not be updated.
Solution:   Set "do_redraw" before entering the main loop. (Jason Franklin)
2020-02-03 21:29:30 +01:00
Bram Moolenaar
4e12a5df37 patch 8.2.0201: cannot assign to an imported variable
Problem:    Cannot assign to an imported variable.
Solution:   Make it work.
2020-02-03 20:50:59 +01:00
Bram Moolenaar
b283a8a680 patch 8.2.0200: Vim9 script commands not sufficiently tested
Problem:    Vim9 script commands not sufficiently tested.
Solution:   Add more tests.  Fix storing global variable.  Make script
            variables work.
2020-02-02 22:24:04 +01:00
Bram Moolenaar
0f18b6d17b patch 8.2.0199: Vim9 script commands not sufficiently tested
Problem:    Vim9 script commands not sufficiently tested.
Solution:   Add more tests.  Fix script-local function use.
2020-02-02 17:22:27 +01:00
Bram Moolenaar
43c60eda2a patch 8.2.0198: no tests for y/n prompt
Problem:    No tests for y/n prompt.
Solution:   Add tests. (Dominique Pelle, closes #5564)
2020-02-02 15:55:19 +01:00
Bram Moolenaar
ea3db914c0 patch 8.2.0197: some Ex commands not sufficiently tested
Problem:    Some Ex commands not sufficiently tested.
Solution:   Add more tests. (Yegappan Lakshmanan, closes #5565)
2020-02-02 15:32:13 +01:00
Bram Moolenaar
d98c0b63ab patch 8.2.0196: blocking commands for a finished job in a popup window
Problem:    Blocking commands for a finished job in a popup window.
Solution:   Do not block commands if the job has finished.  Adjust test.
2020-02-02 15:25:16 +01:00
Bram Moolenaar
3180fe6c6d patch 8.2.0195: some tests fail when run in the GUI
Problem:    Some tests fail when run in the GUI.
Solution:   Make sure the window width is enough.  In the GUI run terminal Vim
            in the terminal, if possible.
2020-02-02 13:47:06 +01:00
Bram Moolenaar
3c01c4a028 patch 8.2.0194: some commands can cause problems in terminal popup
Problem:    Some commands can cause problems in terminal popup.
Solution:   Disallow more commands.
2020-02-01 23:04:24 +01:00
Bram Moolenaar
284d1c24e2 patch 8.2.0193: still build failure without +terminal feature
Problem:    Still build failure without +terminal feature.
Solution:   Add more #ifdefs.
2020-02-01 22:39:32 +01:00
Bram Moolenaar
91cd59a0a2 patch 8.2.0192: build failure without +terminal feature
Problem:    Build failure without +terminal feature.
Solution:   Add #ifdefs.
2020-02-01 22:18:37 +01:00
Bram Moolenaar
219c7d0638 patch 8.2.0191: cannot put a terminal in a popup window
Problem:    Cannot put a terminal in a popup window.
Solution:   Allow opening a terminal in a popup window.  It will always have
            keyboard focus until closed.
2020-02-01 21:57:29 +01:00
Bram Moolenaar
ab067a21b9 patch 8.2.0190: Kotlin files are not recognized
Problem:    Kotlin files are not recognized.
Solution:   Detect Kotlin files. (Alkeryn, closes #5560)
2020-01-31 22:57:59 +01:00
Bram Moolenaar
7cc96923c4 patch 8.2.0189: cd() with NULL argument crashes
Problem:    cd() with NULL argument crashes.
Solution:   Check for NULL. (Ken Takata, closes #5558)
2020-01-31 22:41:38 +01:00
Bram Moolenaar
7f829cab35 patch 8.2.0188: Check commands don't work well with Vim9 script
Problem:    Check commands don't work well with Vim9 script.
Solution:   Improve constant expression handling.
2020-01-31 22:12:41 +01:00
Bram Moolenaar
0b76ad53b3 patch 8.2.0187: reduntant code
Problem:    Reduntant code.
Solution:   Remove unused assignments. (Dominique Pelle, closes #5557)
2020-01-31 21:20:51 +01:00
Bram Moolenaar
705724e430 patch 8.2.0186: a couple of tests may fail when features are missing
Problem:    A couple of tests may fail when features are missing.
Solution:   Check for features. (Dominique Pelle, closes #5561)
2020-01-31 21:13:42 +01:00
Bram Moolenaar
a259d8d30b patch 8.2.0185: Vim9 script: cannot use "if has()" to skip lines
Problem:    Vim9 script: cannot use "if has()" to skip lines.
Solution:   Evaluate constant expression at runtime.
2020-01-31 20:10:50 +01:00
Bram Moolenaar
92be6e3f46 patch 8.2.0184: blob test fails
Problem:    Blob test fails.
Solution:   Check for different error when float feature is missing.
2020-01-30 19:39:04 +01:00
Bram Moolenaar
5feabe00c4 patch 8.2.0183: tests fail when the float feature is disabled
Problem:    Tests fail when the float feature is disabled.
Solution:   Skip tests that don't work without float support.
2020-01-30 18:24:53 +01:00
Bram Moolenaar
9f2d020d39 patch 8.2.0182: min() and max() materialize a range() list
Problem:    Min() and max() materialize a range() list.
Solution:   Compute the result without materializing the list. (#5541)
2020-01-30 16:40:10 +01:00
Bram Moolenaar
21109272f5 patch 8.2.0181: problems parsing :term arguments
Problem:    Problems parsing :term arguments.
Solution:   Improve parsing, fix memory leak, add tests. (Ozaki Kiichi,
            closes #5536)
2020-01-30 16:27:20 +01:00
Bram Moolenaar
0c3064b39b patch 8.2.0180: test for wrapmargin fails if terminal is not 80 columns
Problem:    Test for wrapmargin fails if terminal is not 80 columns.
Solution:   Vertical split the window. (Ken Takata, closes #5554)
2020-01-30 16:09:25 +01:00
Bram Moolenaar
b09920203a patch 8.2.0179: still a few places where range() does not work
Problem:    Still a few places where range() does not work.
Solution:   Fix using range() causing problems.
2020-01-30 14:55:42 +01:00
Bram Moolenaar
df54382eac patch 8.2.0178: with VTP the screen may not be restored properly
Problem:    With VTP the screen may not be restored properly.
Solution:   Add another set of saved RGB values. (Nobuhiro Takasaki,
            closes #5548)
2020-01-30 11:53:59 +01:00
Bram Moolenaar
70b3e706b4 patch 8.2.0177: memory leak in get_tags()
Problem:    Memory leak in get_tags().
Solution:   Free matches when finding a pseudo-tag line. (Dominique Pelle,
            closes #5553)
2020-01-29 22:38:45 +01:00
Bram Moolenaar
e258368b4f patch 8.2.0176: generating os headers does not work for Swedish
Problem:    Generating os headers does not work for Swedish.
Solution:   Set the locale to C. (Christian Brabandt, closes #5258)
2020-01-29 22:29:40 +01:00
Bram Moolenaar
db661fb95d patch 8.2.0175: crash when removing list element in map()
Problem:    Crash when removing list element in map().
Solution:   Lock the list. (closes #2652)
2020-01-29 22:17:16 +01:00
Bram Moolenaar
5d98dc2a48 patch 8.2.0174: various commands not completely tested
Problem:    Various commands not completely tested.
Solution:   Add more test cases. (Yegappan Lakshmanan, closes #5551)
2020-01-29 21:57:34 +01:00
Bram Moolenaar
0ff6aad393 patch 8.2.0173: build fails with old compiler
Problem:    Build fails with old compiler.
Solution:   Do not use anonymous unions. (John Marriott)
2020-01-29 21:27:21 +01:00
Bram Moolenaar
4549ece47c patch 8.2.0172: Coverity warning for not restoring character
Problem:    Coverity warning for not restoring character.
Solution:   Restore the character also in case of failure.
2020-01-28 23:13:42 +01:00
Bram Moolenaar
9a5e5a3e33 patch 8.2.0171: Coverity warning for using uninitialized buffer
Problem:    Coverity warning for using uninitialized buffer.
Solution:   Check the skip flag.
2020-01-28 23:09:23 +01:00
Bram Moolenaar
a6d536829a patch 8.2.0170: Coverity warning for ignoring return value
Problem:    Coverity warning for ignoring return value.
Solution:   Check the return value and return if failed.
2020-01-28 23:04:06 +01:00
Bram Moolenaar
8cbd6dfc0c patch 8.2.0169: Coverity warning for dead code
Problem:    Coverity warning for dead code.
Solution:   Check if inside try-finally.
2020-01-28 22:59:45 +01:00
Bram Moolenaar
97a2af39cd patch 8.2.0168: Coverity warning for assigning NULL to an option
Problem:    Coverity warning for assigning NULL to an option.
Solution:   Use empty string instead of NULL.
2020-01-28 22:52:48 +01:00
Bram Moolenaar
58ceca5cae patch 8.2.0167: Coverity warning for ignoring return value
Problem:    Coverity warning for ignoring return value.
Solution:   Check the return value and jump if failed.
2020-01-28 22:46:22 +01:00
Bram Moolenaar
07da94b0f0 patch 8.2.0166: Coverity warning for using uninitialized variable
Problem:    Coverity warning for using uninitialized variable.
Solution:   Check for failure.
2020-01-28 22:39:19 +01:00
Bram Moolenaar
5b18c248d3 patch 8.2.0165: Coverity warning for using NULL pointer
Problem:    Coverity warning for using NULL pointer.
Solution:   Add missing "else".
2020-01-28 22:30:32 +01:00
Bram Moolenaar
842931cd7a patch 8.2.0164: test_alot takes too long
Problem:    Test_alot takes too long.
Solution:   Run several tests individually.
2020-01-28 21:53:28 +01:00
Bram Moolenaar
272ca95fc3 patch 8.2.0163: test hangs on MS-Windows console
Problem:    Test hangs on MS-Windows console.
Solution:   use feedkeys() instead of test_feedinput(). (Ken Takata)
2020-01-28 20:49:11 +01:00
Bram Moolenaar
7d8ea0b241 patch 8.2.0162: balloon test fails in the GUI
Problem:    Balloon test fails in the GUI.
Solution:   Skip test in the GUI.
2020-01-27 23:01:30 +01:00
Bram Moolenaar
f8ddb25789 patch 8.2.0161: not recognizing .gv file as dot filetype
Problem:    Not recognizing .gv file as dot filetype.
Solution:   Add *.gv to dot pattern. (closes #5544)
2020-01-27 22:47:09 +01:00
Bram Moolenaar
89bfc8218c patch 8.2.0160: range test fails
Problem:    Range test fails.
Solution:   Include change in list code. (#5541)
2020-01-27 22:37:23 +01:00
Bram Moolenaar
50985eb1f0 patch 8.2.0159: non-materialized range() list causes problems
Problem:    Non-materialized range() list causes problems. (Fujiwara Takuya)
Solution:   Materialize the list where needed.
2020-01-27 22:09:39 +01:00
Bram Moolenaar
3f169ce17e patch 8.2.0158: triggering CompleteDone earlier is not backwards compatible
Problem:    Triggering CompleteDone earlier is not backwards compatible.
            (Daniel Hahler)
Solution:   Add CompleteDonePre instead.
2020-01-26 22:43:31 +01:00
Bram Moolenaar
318e7a9c03 patch 8.2.0157: Vim9 script files not in list of distributed files
Problem:    Vim9 script files not in list of distributed files.
Solution:   Add the entries.
2020-01-26 22:05:06 +01:00
Bram Moolenaar
4b96df5a01 patch 8.2.0156: various typos in source files and tests
Problem:    Various typos in source files and tests.
Solution:   Fix the typos. (Emir Sari, closes #5532)
2020-01-26 22:00:26 +01:00
Bram Moolenaar
a5d5953d59 patch 8.2.0155: warnings from MinGW compiler; tests fail without +float
Problem:    Warnings from MinGW compiler. (John Marriott) Json test fails when
            building without +float feature.
Solution:   Init variables. Fix Json parsing. Skip a few tests that require
            the +float feature.
2020-01-26 21:42:03 +01:00
Bram Moolenaar
21b9e9773d patch 8.2.0154: reallocating the list of scripts is inefficient
Problem:    Reallocating the list of scripts is inefficient.
Solution:   Instead of using a growarray of scriptitem_T, store pointers and
            allocate each scriptitem_T separately.  Also avoids that the
            growarray pointers change when sourcing a new script.
2020-01-26 19:26:46 +01:00
Bram Moolenaar
b3de5114ac patch 8.2.0153: warning shows when listing version info
Problem:    Warning shows when listing version info.
Solution:   Use "-u NONE". (Ozaki Kiichi, closes #5534)
2020-01-26 18:56:34 +01:00
Bram Moolenaar
da812e282a patch 8.2.0152: restoring ctrl_x_mode is not needed
Problem:    Restoring ctrl_x_mode is not needed.
Solution:   Remove restoring the old value, it's changed again soon.
2020-01-26 18:35:31 +01:00
Bram Moolenaar
978d170bdc patch 8.2.0151: detecting a script was already sourced is unreliable
Problem:    Detecting a script was already sourced is unreliable.
Solution:   Do not use the inode number.
2020-01-26 17:38:12 +01:00
Bram Moolenaar
673660ab00 patch 8.2.0150: cannot define python function when using :execute
Problem:    Cannot define python function when using :execute. (Yasuhiro
            Matsumoto)
Solution:   Do not recognize "def" inside "function.
2020-01-26 16:50:05 +01:00
Bram Moolenaar
8a7d6542b3 patch 8.2.0149: maintaining a Vim9 branch separately is more work
Problem:    Maintaining a Vim9 branch separately is more work.
Solution:   Merge the Vim9 script changes.
2020-01-26 15:56:19 +01:00
Bram Moolenaar
1d9215b9aa Update runtime files. 2020-01-25 13:27:42 +01:00
Bram Moolenaar
7f51bbe0d1 patch 8.2.0148: mapping related function in wrong source file
Problem:    Mapping related function in wrong source file.
Solution:   Move the function.  Add a few more test cases. (Yegappan
            Lakshmanan, closes #5528)
2020-01-24 20:21:19 +01:00
Bram Moolenaar
03c3bd9fd0 patch 8.2.0147: block Visual mode operators not correct when 'linebreak' set
Problem:    Block Visual mode operators not correct when 'linebreak' set.
Solution:   Set w_p_lbr to lbr_saved more often. (Ken Takata, closes #5524)
2020-01-23 20:58:09 +01:00
Bram Moolenaar
dfede9a70b patch 8.2.0146: wrong indent when 'showbreak' and 'breakindent' are set
Problem:    Wrong indent when 'showbreak' and 'breakindent' are set and
            'briopt' includes "sbr".
Solution:   Reset "need_showbreak" where needed. (Ken Takata, closes #5523)
2020-01-23 19:59:22 +01:00
Bram Moolenaar
2c02d3843a patch 8.2.0145: using #error for compilation errors should be OK now
Problem:    Using #error for compilation errors should be OK now.
Solution:   Use #error. (Ken Takata, closes #5299)
2020-01-23 16:52:01 +01:00
Bram Moolenaar
c2a60ae10e patch 8.2.0144: some mapping code is not fully tested
Problem:    Some mapping code is not fully tested.
Solution:   Add more test cases. (Yegappan Lakshmanan, closes #5519)
2020-01-23 16:19:54 +01:00
Bram Moolenaar
81c3ea7496 patch 8.2.0143: Coverity warning for possible use of NULL pointer
Problem:    Coverity warning for possible use of NULL pointer.
Solution:   Check argv is not NULL.
2020-01-23 15:48:42 +01:00
Bram Moolenaar
8bf716cdba patch 8.2.0142: possible to enter popup window with CTRL-W p
Problem:    Possible to enter popup window with CTRL-W p. (John Devin)
Solution:   Check entered window is not a popup window. (closes #5515)
2020-01-23 15:33:54 +01:00
Bram Moolenaar
0d76683e09 patch 8.2.0141: no swift filetype detection
Problem:    No swift filetype detection.
Solution:   Add swift, swiftgyb and sil. (Emir Sarı, closes #5517)
2020-01-22 22:10:54 +01:00
Bram Moolenaar
ade0d39468 Update runtime files. 2020-01-21 22:33:58 +01:00
Bram Moolenaar
2387773d93 patch 8.2.0140: CI does not test building doc tags
Problem:    CI does not test building doc tags.
Solution:   Add the vimtags/gcc build. Cleanup showing version. (Ozaki Kiichi,
            closes #5513)
2020-01-21 22:13:42 +01:00
Bram Moolenaar
f0764e8bb6 patch 8.2.0139: MS-Windows: default for IME is inconsistent
Problem:    MS-Windows: default for IME is inconsistent.
Solution:   Also make IME default enabled with MVC. (Ken Takata, closes #5508)
2020-01-20 22:05:34 +01:00
Bram Moolenaar
538feb56e8 patch 8.2.0138: memory leak when starting a job fails
Problem:    Memory leak when starting a job fails.
Solution:   Free the list of arguments. (Ozaki Kiichi, closes #5510)
2020-01-20 21:59:39 +01:00
Bram Moolenaar
a44b3eeafa patch 8.2.0137: crash when using win_execute() from a new tab
Problem:    Crash when using win_execute() from a new tab.
Solution:   Set the tp_*win pointers. (Ozaki Kiichi, closes #5512)
2020-01-20 21:44:31 +01:00
Bram Moolenaar
ed5adff1e6 patch 8.2.0136: stray ch_logfile() call
Problem:    Stray ch_logfile() call.
Solution:   Remove it. (closes #5503)
2020-01-20 21:32:51 +01:00
Bram Moolenaar
fe4bbac116 patch 8.2.0135: bracketed paste can still cause invalid memory access
Problem:    Bracketed paste can still cause invalid memory access. (Dominique
            Pelle)
Solution:   Check for NULL pointer.
2020-01-20 21:12:20 +01:00
Bram Moolenaar
8ba6bb7c94 patch 8.2.0134: some map functionality not covered by tests
Problem:    Some map functionality not covered by tests.
Solution:   Add tests. (Yegappan Lakshmanan, closes #5504)
2020-01-20 20:41:42 +01:00
Bram Moolenaar
98a336dd49 patch 8.2.0133: invalid memory access with search command
Problem:    Invalid memory access with search command.
Solution:   When :normal runs out of characters in bracketed paste mode break
            out of the loop.(closes #5511)
2020-01-20 20:22:30 +01:00
Bram Moolenaar
ca33eb256e patch 8.2.0132: script may be re-used when deleting and creating a new one
Problem:    Script may be re-used when deleting and creating a new one.
Solution:   When the inode matches, also check the file name.
2020-01-19 20:18:09 +01:00
Bram Moolenaar
479950f6c9 patch 8.2.0131: command line is not cleared when switching tabs
Problem:    Command line is not cleared when switching tabs and the command
            line height differs.
Solution:   Set the "clear_cmdline" flag when needed. (Naruhiko Nishino,
            closes #5495)
2020-01-19 15:45:17 +01:00
Bram Moolenaar
904edabb64 patch 8.2.0130: Python3 ranges are not tested
Problem:    Python3 ranges are not tested.
Solution:   Add test. (Dominique Pelle, closes #5498)
2020-01-19 13:57:54 +01:00
Bram Moolenaar
1a928c2099 patch 8.2.0129: MS-Windows installer doesn't use Turkish translations
Problem:    MS-Windows installer doesn't use Turkish translations.
Solution:   Enable the Turkish translations and fix a few. (Emir Sarı,
            closes #5493)
2020-01-18 16:10:40 +01:00
Bram Moolenaar
6b915c0c0e patch 8.2.0128: cannot list options one per line
Problem:    Cannot list options one per line.
Solution:   Use ":set!" to list one option per line.
2020-01-18 15:53:19 +01:00
Bram Moolenaar
3029bcc094 patch 8.2.0127: some buffer commands work in a popup window
Problem:    Some buffer commands work in a popup window.
Solution:   Disallow :bnext, :bprev, etc. (Naruhiko Nishino, closes #5494)
2020-01-18 15:06:19 +01:00
Bram Moolenaar
94b6fb78c5 patch 8.2.0126: textprop test fails
Problem:    Textprop test fails.
Solution:   Fix sign in computation.
2020-01-17 21:00:59 +01:00
Bram Moolenaar
3c71aec696 patch 8.2.0125: :mode no longer works for any system
Problem:    :mode no longer works for any system.
Solution:   Always give an error message.
2020-01-17 19:32:20 +01:00
Bram Moolenaar
109ef128bd patch 8.2.0124: compiler warnings for variable types
Problem:    Compiler warnings for variable types.
Solution:   Change type, add type cast. (Mike Williams)
2020-01-17 19:12:03 +01:00
Bram Moolenaar
17e04781f2 patch 8.2.0123: complete_info() does not work when CompleteDone is triggered
Problem:    complete_info() does not work when CompleteDone is triggered.
Solution:   Trigger CompleteDone before clearing the info.
2020-01-17 18:58:59 +01:00
Bram Moolenaar
f2a44e5c48 patch 8.2.0122: readme files still mention MS-DOS
Problem:    Readme files still mention MS-DOS.
Solution:   Update readme files. (Ken Takata, closes #5486)
2020-01-16 19:40:38 +01:00
Bram Moolenaar
49c57ce500 patch 8.2.0121: filter() and map() on blob don't work
Problem:    filter() and map() on blob don't work.
Solution:   Correct the code. (closes #5483)
2020-01-15 20:51:34 +01:00
Bram Moolenaar
b3d33d8570 patch 8.2.0120: virtcol() does not check arguments to be valid
Problem:    virtcol() does not check arguments to be valid, which may lead to
            a crash.
Solution:   Check the column to be valid.  Do not decrement MAXCOL.
            (closes #5480)
2020-01-15 20:36:55 +01:00
Bram Moolenaar
1470dc35c4 patch 8.2.0119: message test fails on some platforms
Problem:    Message test fails on some platforms. (Elimar Riesebieter)
Solution:   Add type cast to vim_snprintf() argument. (Dominique Pelle)
2020-01-14 22:02:14 +01:00
Bram Moolenaar
ca7c078b79 patch 8.2.0118: crash when cycling to buffers involving popup window
Problem:    Crash when cycling to buffers involving popup window .
Solution:   Do not decrement buffer reference count.
2020-01-14 20:42:48 +01:00
Bram Moolenaar
8024f93636 Update runtime files. 2020-01-14 19:29:13 +01:00
Bram Moolenaar
ee93b737aa patch 8.2.0117: crash when using gettabwinvar() with invalid arguments
Problem:    Crash when using gettabwinvar() with invalid arguments. (Yilin
            Yang)
Solution:   Use "curtab" if "tp" is NULL. (closes #5475)
2020-01-14 19:05:39 +01:00
Bram Moolenaar
c10b521628 patch 8.2.0116: BufEnter autocmd not triggered on ":tab drop"
Problem:    BufEnter autocmd not triggered on ":tab drop". (Andy Stewart)
Solution:   Decrement autocmd_no_enter for the last file. (closes #1660,
            closes #5473)
2020-01-13 20:54:51 +01:00
Bram Moolenaar
9df53b62de patch 8.2.0115: byte2line() does not work correctly with text properties
Problem:    Byte2line() does not work correctly with text properties. (Billie
            Cleek)
Solution:   Take the bytes of the text properties into account.
            (closes #5334)
2020-01-13 20:40:51 +01:00
Bram Moolenaar
7ebcba61b2 patch 8.2.0114: info about sourced scripts is scattered
Problem:    Info about sourced scripts is scattered.
Solution:   Use scriptitem_T for info about a script, including s: variables.
            Drop ga_scripts.
2020-01-12 17:42:55 +01:00
Bram Moolenaar
9b24dfcb9f patch 8.2.0113: "make cmdidxs" fails
Problem:    "make cmdidxs" fails.
Solution:   Allow address for ":cquit".  Add --not-a-term to avoid a delay.
2020-01-12 15:46:08 +01:00
Bram Moolenaar
02ad46394e patch 8.2.0112: illegal memory access when using 'cindent'
Problem:    Illegal memory access when using 'cindent'.
Solution:   Check for NUL byte. (Dominique Pelle, closes #5470)
2020-01-12 13:48:18 +01:00
Bram Moolenaar
9b4a15d5db patch 8.2.0111: VAR_SPECIAL is also used for booleans
Problem:    VAR_SPECIAL is also used for booleans.
Solution:   Add VAR_BOOL for better type checking.
2020-01-11 16:05:23 +01:00
Bram Moolenaar
e05a89ac63 patch 8.2.0110: prop_find() is not implemented
Problem:    prop_find() is not implemented.
Solution:   Implement prop_find(). (Ryan Hackett, closes #5421, closes #4970)
2020-01-10 19:56:46 +01:00
Bram Moolenaar
2963456ff2 Update runtime files. 2020-01-09 21:46:04 +01:00
Bram Moolenaar
ac15fd8c67 patch 8.2.0109: corrupted text properties when expanding spaces
Problem:    Corrupted text properties when expanding spaces.
Solution:   Reallocate the line. (Nobuhiro Takasaki, closes #5457)
2020-01-09 21:35:48 +01:00
Bram Moolenaar
bf0acff012 patch 8.2.0108: when sign text is changed a manual redraw is needed
Problem:    When sign text is changed a manual redraw is needed. (Pontus
            Lietzler)
Solution:   Redraw automatically. (closes #5455)
2020-01-09 21:01:59 +01:00
Bram Moolenaar
4ba6441818 patch 8.2.0107: hgignore is out of sync from gitignore
Problem:    Hgignore is out of sync from gitignore.
Solution:   Add lines to hgignore. (Ken Takata)
2020-01-09 16:25:52 +01:00
Bram Moolenaar
b16ad96849 patch 8.2.0106: printf formats are not exactly right
Problem:    Printf formats are not exactly right.
Solution:   Adjust signed/unsigned conversions. (Frazer Clews, closes #5456)
2020-01-08 22:06:14 +01:00
Bram Moolenaar
c838626fea patch 8.2.0105: Vim license not easy to find on github
Problem:    Vim license not easy to find on github.
Solution:   Add a separate LICENCE file. (closes #5458)
2020-01-08 21:43:02 +01:00
Bram Moolenaar
b662591e50 patch 8.2.0104: using channel or job with ":execute" has strange effects
Problem:    Using channel or job with ":execute" has strange effects.
Solution:   Give an error message for Job and Channel.
2020-01-08 20:09:01 +01:00
Bram Moolenaar
e2a8f0773e patch 8.2.0103: using null object with execute() has strange effects
Problem:    Using null object with execute() has strange effects.
Solution:   Give an error message ofr Job and Channel.
2020-01-08 19:32:18 +01:00
Bram Moolenaar
da292b07af patch 8.2.0102: messages test fails in small version
Problem:    Messages test fails in small version.
Solution:   Only use test_null_job() when available.
2020-01-08 19:27:40 +01:00
Bram Moolenaar
9db2afe46d patch 8.2.0101: crash when passing null object to ":echomsg"
Problem:    Crash when passing null object to ":echomsg".
Solution:   Check for NULL pointer. (Yasuhiro Matsumoto, closes #5460)
2020-01-08 18:56:20 +01:00
Bram Moolenaar
41a4141ecb patch 8.2.0100: macros for Ruby are too complicated
Problem:    Macros for Ruby are too complicated.
Solution:   Do not use DYNAMIC_RUBY_VER, use RUBY_VERSION. (Ken Takata,
            closes #5452)
2020-01-07 21:32:19 +01:00
Bram Moolenaar
8b7aa2f9b2 patch 8.2.0099: use of NULL pointer when out of memory
Problem:    Use of NULL pointer when out of memory.
Solution:   Check for NULL pointer. (Dominique Pelle, closes #5449)
2020-01-07 21:05:49 +01:00
Bram Moolenaar
e31ee86859 patch 8.2.0098: exe stack length can be wrong without being detected
Problem:    Exe stack length can be wrong without being detected.
Solution:   Add a check when ABORT_ON_INTERNAL_ERROR is defined.
2020-01-07 20:59:34 +01:00
Bram Moolenaar
ce6db0273f patch 8.2.0097: crash with autocommand and spellfile
Problem:    Crash with autocommand and spellfile. (Tim Pope)
Solution:   Do not pop exestack when not pushed. (closes #5450)
2020-01-07 20:11:42 +01:00
Bram Moolenaar
fbcdf671f0 patch 8.2.0096: cannot create tiny popup window in last column
Problem:    Cannot create tiny popup window in last column. (Daniel Steinberg)
Solution:   Remove position limit. (closes #5447)
2020-01-06 23:07:48 +01:00
Bram Moolenaar
1860bde9d3 patch 8.2.0095: cannot specify exit code for :cquit
Problem:    Cannot specify exit code for :cquit.
Solution:   Add optional argument. (Thinca, Yegappan Lakshmanan, closes #5442)
2020-01-06 21:47:21 +01:00
Bram Moolenaar
e73b38f8e1 patch 8.2.0094: MS-Windows: cannot build with Strawberry Perl 5.30
Problem:    MS-Windows: cannot build with Strawberry Perl 5.30.
Solution:   Define __builtin_expect() as a workaround. (Ken Takata,
            closes #5267)
2020-01-06 21:22:09 +01:00
Bram Moolenaar
7b94e77132 patch 8.2.0093: win_splitmove() can make Vim hang
Problem:    win_splitmove() can make Vim hang.
Solution:   Check windows exists in the current tab page. (closes #5444)
2020-01-06 21:03:24 +01:00
Bram Moolenaar
a1353b5352 patch 8.2.0092: tags functionality insufficiently tested
Problem:    Tags functionality insufficiently tested.
Solution:   Add more tags tests. (Yegappan Lakshmanan, closes #5446)
2020-01-06 20:09:13 +01:00
Bram Moolenaar
4d7a248b64 patch 8.2.0091: compiler warnings for size_t / int types
Problem:    Compiler warnings for size_t / int types.
Solution:   Change type to size_t. (Mike Williams)
2020-01-06 19:53:43 +01:00
Bram Moolenaar
b376ace1ae patch 8.2.0090: generated files show up in git status
Problem:    Generated files show up in git status.
Solution:   Ignore a few more files.
2020-01-05 22:10:31 +01:00
Bram Moolenaar
f0f8055102 patch 8.2.0089: crash when running out of memory in :setfiletype completion
Problem:    Crash when running out of memory in :setfiletype completion.
Solution:   Do not allocate memory. (Dominique Pelle, closes #5438)
2020-01-05 22:05:49 +01:00
Bram Moolenaar
830c1afc9d patch 8.2.0088: insufficient tests for tags; bug in using extra tag field
Problem:    Insufficient tests for tags; bug in using extra tag field when
            using an ex command to position the cursor.
Solution:   Fix the bug, add more tests. (Yegappan Lakshmanan, closes #5439)
2020-01-05 20:35:44 +01:00
Bram Moolenaar
61d7c0d52c patch 8.2.0087: crash in command line expansion when out of memory
Problem:    Crash in command line expansion when out of memory.
Solution:   Check for NULL pointer.  Also make ExpandGeneric() static.
            (Dominique Pelle, closes #5437)
2020-01-05 14:38:40 +01:00
Bram Moolenaar
ab782c5b6f patch 8.2.0086: build error for small version
Problem:    Build error for small version. (Tony Mechelynck)
Solution:   Only use "user_data" with the +eval feature. Remove unused
            variable.
2020-01-04 19:00:11 +01:00
Bram Moolenaar
3d8a513b46 patch 8.2.0085: dead code in builtin functions
Problem:    Dead code in builtin functions.
Solution:   Clean up the code.
2020-01-04 16:13:49 +01:00
Bram Moolenaar
0892832bb6 patch 8.2.0084: complete item "user_data" can only be a string
Problem:    Complete item "user_data" can only be a string.
Solution:   Accept any type of variable. (closes #5412)
2020-01-04 14:32:48 +01:00
Bram Moolenaar
5cb0b93d52 patch 8.2.0083: text properties wrong when tabs and spaces are exchanged
Problem:    Text properties wrong when tabs and spaces are exchanged.
Solution:   Take text properties into account. (Nobuhiro Takasaki,
            closes #5427)
2020-01-03 21:25:59 +01:00
Bram Moolenaar
f10997a154 patch 8.2.0082: when reusing a buffer listeners are not cleared
Problem:    When reusing a buffer listeners are not cleared. (Axel Forsman)
Solution:   Clear listeners when reusing a buffer. (closes #5431)
2020-01-03 21:00:02 +01:00
Bram Moolenaar
467c32bd72 patch 8.2.0081: MS-Windows also need the change to support INIT4()
Problem:    MS-Windows also need the change to support INIT4().
Solution:   Add the ctags arguments. (Ken Takata)
2020-01-03 19:12:09 +01:00
Bram Moolenaar
509ff0688d patch 8.2.0080: globals using INIT4() are not in the tags file
Problem:    Globals using INIT4() are not in the tags file.
Solution:   Adjust the tags command.
2020-01-02 22:38:49 +01:00
Bram Moolenaar
d7df279808 Update a few runtime files. 2020-01-02 21:34:42 +01:00
Bram Moolenaar
7fc4785ea1 patch 8.2.0079: Python 3 unicode test still fails on MS-Windows
Problem:    Python 3 unicode test still fails on MS-Windows.
Solution:   Do not set 'encoding' to "euc-tw" on MS-Windows.
2020-01-02 16:38:07 +01:00
Bram Moolenaar
b9adef79ec patch 8.2.0078: expanding <sfile> works differently the second time
Problem:    Expanding <sfile> works differently the second time.
Solution:   Keep the expanded name when redefining a function. (closes #5425)
2020-01-02 14:31:22 +01:00
Bram Moolenaar
271fa08a35 patch 8.2.0077: settagstack() cannot truncate at current index
Problem:    settagstack() cannot truncate at current index.
Solution:   Add the "t" action. (Yegappan Lakshmanan, closes #5417)
2020-01-02 14:02:16 +01:00
Bram Moolenaar
955f4e6f36 patch 8.2.0076: Python 3 unicode test fails on MS-Windows
Problem:    Python 3 unicode test fails on MS-Windows.
Solution:   Do not set 'encoding' to "debug" on MS-Windows.
2020-01-01 17:44:56 +01:00
Bram Moolenaar
2466aea508 patch 8.2.0075: Python 3 unicode test still sometimes fails
Problem:    Python 3 unicode test still sometimes fails.
Solution:   Skip the test when 'termencoding' is not empty.
2020-01-01 17:09:11 +01:00
Bram Moolenaar
4b7cdca230 patch 8.2.0074: Python 3 unicode test someitmes fails
Problem:    Python 3 unicode test someitmes fails.
Solution:   Make 'termencoding' empty.  Correct number of error message.
2020-01-01 16:18:38 +01:00
Bram Moolenaar
ea8b7aecab patch 8.2.0073: initializing globals with COMMA is clumsy
Problem:    Initializing globals with COMMA is clumsy.
Solution:   Use INIT2(), INIT3(), etc.
2020-01-01 15:46:47 +01:00
Bram Moolenaar
bb062c1588 patch 8.2.0072: memory test still fails on Cirrus CI
Problem:    Memory test still fails on Cirrus CI.
Solution:   Allow for a tiny bit more tolerance in the upper limit.
2020-01-01 15:26:32 +01:00
Bram Moolenaar
1832d12aea patch 8.2.0071: memory test often fails on Cirrus CI
Problem:    Memory test often fails on Cirrus CI.
Solution:   Allow for more tolerance in the upper limit.  Remove sleep.
2020-01-01 15:17:25 +01:00
Bram Moolenaar
d518f952f0 patch 8.2.0070: crash when using Python 3 with "debug" encoding
Problem:    Crash when using Python 3 with "debug" encoding. (Dominique Pelle)
Solution:   Use "euc-jp" whenever enc_dbcs is set.
2020-01-01 15:04:17 +01:00
Bram Moolenaar
87396072c5 patch 8.2.0069: ETYPE_ is used for two different enums
Problem:    ETYPE_ is used for two different enums.
Solution:   Rename one to use EXPR_.
2019-12-31 22:36:18 +01:00
Bram Moolenaar
556684ff71 patch 8.2.0068: crash when using Python 3 with "utf32" encoding
Problem:    Crash when using Python 3 with "utf32" encoding. (Dominique Pelle)
Solution:   Use "utf-8" whenever enc_utf8 is set. (closes #5423)
2019-12-31 21:59:01 +01:00
Bram Moolenaar
ef140544f6 patch 8.2.0067: ERROR_UNKNOWN clashes on some systems
Problem:    ERROR_UNKNOWN clashes on some systems.
Solution:   Rename ERROR_ to FCERR_. (Ola Söder, closes #5415)
2019-12-31 21:27:13 +01:00
Bram Moolenaar
d2c946bacf patch 8.2.0066: some corners of vim_snprintf() are not tested
Problem:    Some corners of vim_snprintf() are not tested.
Solution:   Add a test in C. (Dominique Pelle, closes #5422)
2019-12-31 19:24:51 +01:00
Bram Moolenaar
dba7c85b61 patch 8.2.0065: Amiga and alikes: autoopen only used on Amiga OS4
Problem:    Amiga and alikes: autoopen only used on Amiga OS4.
Solution:   Adjust #ifdefs. (Ola Söder, closes #5413)
2019-12-30 22:33:17 +01:00
Bram Moolenaar
efcc329020 patch 8.2.0064: diffmode completion doesn't use per-window setting
Problem:    Diffmode completion doesn't use per-window setting.
Solution:   Check if a window is in diff mode. (Dominique Pell, closes #5419)
2019-12-30 21:59:03 +01:00
Bram Moolenaar
08b28b7ad5 patch 8.2.0063: wrong size argument to vim_snprintf()
Problem:    Wrong size argument to vim_snprintf(). (Dominique Pelle)
Solution:   Reduce the size by the length. (related to #5410)
2019-12-30 20:42:39 +01:00
Bram Moolenaar
e7538ae997 patch 8.2.0062: memory test is flaky on FreeBSD
Problem:    Memory test is flaky on FreeBSD.
Solution:   Add a short sleep before getting the first size.
2019-12-30 19:59:24 +01:00
Bram Moolenaar
3fbcc128cb patch 8.2.0061: the execute stack can grow big and never shrinks
Problem:    The execute stack can grow big and never shrinks.
Solution:   Reduce the size in gargage collect.
2019-12-30 19:19:53 +01:00
Bram Moolenaar
d0337e360e patch 8.2.0060: message test only runs with one encoding
Problem:    Message test only runs with one encoding. (Dominique Pelle)
Solution:   Run the test with "utf-8" and "latin1".  Fix underflow. (related
            to #5410)
2019-12-30 17:55:34 +01:00
Bram Moolenaar
85b0957616 patch 8.2.0059: compiler warnings for unused variables in small build
Problem:    Compiler warnings for unused variables in small build. (Tony
            Mechelynck)
Solution:   Add #ifdef.
2019-12-30 10:57:00 +01:00
630 changed files with 56711 additions and 14885 deletions

2
.gitignore vendored
View File

@@ -8,6 +8,7 @@ src/auto/gui_gtk_gresources.h
src/objects/.dirstamp
src/objects
src/tags
src/types.vim
# We do need src/auto/configure.
src/auto/config.cache
@@ -86,6 +87,7 @@ src/kword_test
# Generated by "make install"
runtime/doc/tags
runtime/doc/doctags
# Generated by "make shadow". The directory names could be anything but we
# restrict them to shadow (the default) or shadow-*

View File

@@ -10,6 +10,7 @@ src/auto/gui_gtk_gresources.h
src/objects/.dirstamp
src/objects
src/tags
src/types.vim
# We do need src/auto/configure.
src/auto/config.cache
@@ -86,6 +87,7 @@ src/kword_test
# Generated by "make install"
runtime/doc/tags
runtime/doc/doctags
# Generated by "make shadow". The directory names could be anything but we
# restrict them to shadow (the default) or shadow-*

View File

@@ -1,35 +1,34 @@
language: c
anchors:
_anchors:
envs:
- &tiny-nogui
BUILD=yes TEST=test COVERAGE=no FEATURES=tiny "CONFOPT='--disable-gui'" SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=no
BUILD=yes TEST=test FEATURES=tiny CONFOPT="--disable-gui" SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=no
- &tiny
BUILD=yes TEST=test COVERAGE=no FEATURES=tiny CONFOPT= SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=no
BUILD=yes TEST=test FEATURES=tiny CONFOPT= SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=no
- &small
BUILD=yes TEST=test COVERAGE=no FEATURES=small CONFOPT= SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=no
BUILD=yes TEST=test FEATURES=small CONFOPT= SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=no
- &normal
BUILD=yes TEST=test COVERAGE=no FEATURES=normal CONFOPT= SHADOWOPT="-C src/shadow" SRCDIR=./src/shadow CHECK_AUTOCONF=no
BUILD=yes TEST=test FEATURES=normal CONFOPT= SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=no
- &linux-huge
BUILD=yes TEST="scripttests test_libvterm" COVERAGE=yes CFLAGS=--coverage LDFLAGS=--coverage FEATURES=huge SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=no
"CONFOPT='--enable-perlinterp --enable-pythoninterp --enable-python3interp --enable-rubyinterp --enable-luainterp --enable-tclinterp'"
BUILD=yes TEST="scripttests test_libvterm" CFLAGS=--coverage LDFLAGS=--coverage FEATURES=huge SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=no
CONFOPT="--enable-perlinterp --enable-pythoninterp --enable-python3interp --enable-rubyinterp --enable-luainterp --enable-tclinterp"
- &osx-huge # macOS build
BUILD=yes TEST=test COVERAGE=no FEATURES=huge SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=no
"CONFOPT='--enable-perlinterp --enable-pythoninterp --enable-rubyinterp --enable-luainterp --enable-tclinterp'"
BUILD=yes TEST=test FEATURES=huge SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=no
CONFOPT="--enable-perlinterp --enable-pythoninterp --enable-rubyinterp --enable-luainterp --enable-tclinterp"
- &unittests
BUILD=no TEST=unittests COVERAGE=yes CFLAGS=--coverage LDFLAGS=--coverage FEATURES=huge SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=yes
BUILD=no TEST=unittests CFLAGS=--coverage LDFLAGS=--coverage FEATURES=huge SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=yes
- &asan # ASAN build
SANITIZER_CFLAGS="-g -O1 -DABORT_ON_INTERNAL_ERROR -DEXITFREE -fsanitize=address -fno-omit-frame-pointer"
ASAN_OPTIONS="print_stacktrace=1 log_path=asan" LSAN_OPTIONS="suppressions=$TRAVIS_BUILD_DIR/src/testdir/lsan-suppress.txt"
- &shadowopt
SHADOWOPT="-C src/shadow" SRCDIR=./src/shadow
linux: &linux
os: linux
dist: trusty
dist: bionic
addons:
apt:
sources:
# Need msgfmt 0.19.8 to be able to generate .desktop files
- sourceline: 'ppa:ricotz/toolchain'
packages:
- autoconf
- clang
@@ -39,46 +38,41 @@ anchors:
- libperl-dev
- python-dev
- python3-dev
- liblua5.2-dev
- lua5.2
- liblua5.3-dev
- lua5.3
- ruby-dev
- tcl-dev
- cscope
- libgtk2.0-dev
- desktop-file-utils
- libtool-bin
services:
- xvfb
before_install:
- rvm reset
# Remove /opt/python/3.x.x/bin from $PATH for using system python3.
# ("pyenv global system" doesn't seem to work.)
- |
if [[ "$(which python3)" =~ ^/opt/python/ ]]; then
export PATH=$(py3=$(which python3); echo ${PATH//${py3%/python3}:/})
fi
- |
if [[ "${COVERAGE}" = "yes" ]]; then
pip install --user cpp-coveralls
fi
# needed for https support for coveralls
# building cffi only works with gcc, not with clang
- |
if [[ "${COVERAGE}" = "yes" ]]; then
CC=gcc pip install --user pyopenssl ndg-httpsclient pyasn1
fi
# Use llvm-cov instead of gcov when compiler is clang.
- |
if [[ "${CC}" = "clang" ]]; then
ln -sf "$(which llvm-cov)" /home/travis/bin/gcov
ln -sf "$(command -v llvm-cov)" /home/travis/bin/gcov
fi
# Setup lua5.3 manually since its package doesn't provide alternative.
# https://bugs.launchpad.net/ubuntu/+source/lua5.3/+bug/1707212
- |
if [[ "${CONFOPT}" =~ luainterp ]]; then
sudo update-alternatives --install /usr/bin/lua lua /usr/bin/lua5.3 10
fi
before_script:
# Start virtual framebuffer to be able to test the GUI. Does not work on OS X.
- export DISPLAY=:99.0
- sh -e /etc/init.d/xvfb start && sleep 3
- sudo modprobe snd-dummy
- sudo sysctl -w net.ipv6.conf.lo.disable_ipv6=0
- sudo bash ci/load-snd-dummy.sh || true
- sudo usermod -a -G audio $USER
- do_test() { sg audio "sg $(id -gn) '$*'"; }
osx: &osx
os: osx
before_script:
- do_test() { "$@"; }
homebrew: &osx-homebrew
addons:
homebrew:
packages:
@@ -87,25 +81,24 @@ anchors:
cache:
directories:
- /usr/local/Homebrew/Library/Homebrew/vendor/
- /usr/local/Homebrew/Library/Taps/
- /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/
before_install:
- rvm reset
# Lua is not installed on Travis OSX
# Lua is not installed on macOS
- export LUA_PREFIX=/usr/local
before_script:
- do_test() { "$@"; }
coverage: &coverage
# needed for https support for coveralls building cffi only works with gcc,
# not with clang
- CC=gcc pip install --user cpp-coveralls pyopenssl ndg-httpsclient pyasn1
- ~/.local/bin/coveralls -b "${SRCDIR}" -x .xs -e "${SRCDIR}"/if_perl.c -e "${SRCDIR}"/xxd -e "${SRCDIR}"/libvterm --encodings utf-8
- (cd "${SRCDIR}" && bash <(curl -s https://codecov.io/bash))
asan_symbolize: &asan_symbolize
- |
while read log; do
asan_symbolize < "${log}"
done < <(find . -type f -name 'asan.*' -size +0)
sudo: false
# Update pyenv to fix the error "/opt/pyenv/libexec/pyenv: line 43: cd: asan_symbolize-6.0: Not a directory".
# https://github.com/pyenv/pyenv/issues/580
- (cd "${PYENV_ROOT}" && git fetch -p origin && git checkout "$(git rev-list --tags -n1)") &>/dev/null || true
- find . -type f -name 'asan.*' -size +0 2>/dev/null | xargs grep -l '^==[[:digit:]]*==ERROR:' | xargs -I{} -n1 -t asan_symbolize -l{}
branches:
except:
@@ -129,23 +122,23 @@ script:
- echo -e "\\033[33;1mBuilding Vim\\033[0m" && echo -en "travis_fold:start:build\\r\\033[0K"
- |
if [[ "${BUILD}" = "yes" ]]; then
# Append various warning flags to CFLAGS.
# BSD sed needs backup extension specified.
sed -i.bak -f ci/config.mk.sed ${SRCDIR}/auto/config.mk
sed -i.bak -f ci/config.mk.${CC}.sed ${SRCDIR}/auto/config.mk
make ${SHADOWOPT} -j${NPROC}
fi
- echo -en "travis_fold:end:build\\r\\033[0K"
- set +o errexit
- echo -e "\\033[33;1mTesting Vim\\033[0m" && echo -en "travis_fold:start:test\\r\\033[0K"
# Show Vim version and also if_xx versions.
- |
if [[ "${BUILD}" = "yes" ]]; then
"${SRCDIR}"/vim --version
"${SRCDIR}"/vim --not-a-term -u NONE -S "${SRCDIR}"/testdir/if_ver-1.vim -c quit > /dev/null
"${SRCDIR}"/vim --not-a-term -u NONE -S "${SRCDIR}"/testdir/if_ver-2.vim -c quit > /dev/null
cat if_ver.txt
"${SRCDIR}"/vim -u NONE -i NONE --not-a-term -esNX -V1 -S ci/if_ver-1.vim -c quit
"${SRCDIR}"/vim -u NONE -i NONE --not-a-term -esNX -V1 -S ci/if_ver-2.vim -c quit
fi
- >
do_test make ${SHADOWOPT} ${TEST} &&
make -C runtime/doc vimtags VIMEXE=../../"${SRCDIR}"/vim &&
FOLD_MARKER=travis_fold
- echo -e "\\033[33;1mTesting Vim\\033[0m" && echo -en "travis_fold:start:test\\r\\033[0K"
- do_test make ${SHADOWOPT} ${TEST} && FOLD_MARKER=travis_fold
- echo -en "${FOLD_MARKER}:end:test\\r\\033[0K"
@@ -153,7 +146,7 @@ script:
# exclude some builds on mac os x and linux
# on mac os x "tiny" is always without GUI
# linux: 2*compiler + 5*env + mac: 2*compiler + 2*env
matrix:
jobs:
include:
- <<: *osx
name: tiny-nogui/clang
@@ -164,10 +157,12 @@ matrix:
compiler: gcc
env: *tiny-nogui
- <<: *osx
<<: *osx-homebrew
name: huge/clang
compiler: clang
env: *osx-huge
- <<: *osx
<<: *osx-homebrew
name: huge/gcc
compiler: gcc
env: *osx-huge
@@ -194,26 +189,34 @@ matrix:
- <<: *linux
name: normal/clang
compiler: clang
env: *normal
env:
- *normal
- *shadowopt
- <<: *linux
name: normal/gcc
compiler: gcc
env: *normal
env:
- *normal
- *shadowopt
- <<: *linux
arch: s390x
name: huge/gcc-s390x
compiler: gcc
env: *linux-huge
services: []
- <<: *linux
name: huge+coverage/clang
compiler: clang
env: *linux-huge
env:
- *linux-huge
# Clang cannot compile test_libvterm with "--coverage" flag.
- TEST=scripttests
after_success: *coverage
- <<: *linux
name: huge+coverage/gcc
compiler: gcc
env: *linux-huge
after_success: *coverage
- <<: *linux
name: unittests+coverage/gcc
compiler: gcc
env: *unittests
after_success: *coverage
- <<: *linux # ASAN
name: huge+asan/gcc
compiler: gcc
@@ -228,5 +231,16 @@ matrix:
- *linux-huge
- TEST="-C src testgui"
after_success: *coverage
- <<: *linux
name: unittests+coverage/gcc
compiler: gcc
env: *unittests
after_success: *coverage
- <<: *linux
name: vimtags/gcc
compiler: gcc
env:
- *normal
- TEST="-C runtime/doc vimtags VIMEXE=../../${SRCDIR}/vim"
# vim:set sts=2 sw=2 tw=0 et:

View File

@@ -11,6 +11,8 @@ SRC_ALL = \
.cirrus.yml \
appveyor.yml \
ci/appveyor.bat \
ci/if_ver*.vim \
ci/load-snd-dummy.sh \
src/Make_all.mak \
src/README.md \
src/alloc.h \
@@ -28,6 +30,8 @@ SRC_ALL = \
src/channel.c \
src/charset.c \
src/cindent.c \
src/clientserver.c \
src/clipboard.c \
src/cmdexpand.c \
src/cmdhist.c \
src/crypt.c \
@@ -125,6 +129,7 @@ SRC_ALL = \
src/termlib.c \
src/testing.c \
src/textprop.c \
src/time.c \
src/ui.c \
src/undo.c \
src/usercmd.c \
@@ -132,6 +137,10 @@ SRC_ALL = \
src/version.c \
src/version.h \
src/vim.h \
src/vim9.h \
src/vim9compile.c \
src/vim9execute.c \
src/vim9script.c \
src/viminfo.c \
src/winclip.c \
src/window.c \
@@ -144,17 +153,18 @@ SRC_ALL = \
src/testdir/*.py \
src/testdir/lsan-suppress.txt \
src/testdir/sautest/autoload/*.vim \
src/testdir/runtest.vim \
src/testdir/summarize.vim \
src/testdir/check.vim \
src/testdir/shared.vim \
src/testdir/screendump.vim \
src/testdir/view_util.vim \
src/testdir/term_util.vim \
src/testdir/setup.vim \
src/testdir/gui_init.vim \
src/testdir/setup_gui.vim \
src/testdir/gui_preinit.vim \
src/testdir/mouse.vim \
src/testdir/runtest.vim \
src/testdir/screendump.vim \
src/testdir/setup.vim \
src/testdir/setup_gui.vim \
src/testdir/shared.vim \
src/testdir/summarize.vim \
src/testdir/term_util.vim \
src/testdir/view_util.vim \
src/testdir/test[0-9]*.ok \
src/testdir/test[0-9]*a.ok \
src/testdir/test_[a-z]*.ok \
@@ -177,7 +187,6 @@ SRC_ALL = \
src/testdir/dumps/*.dump \
src/testdir/samples/*.txt \
src/testdir/samples/test000 \
src/testdir/if_ver*.vim \
src/testdir/color_ramp.vim \
src/testdir/silent.wav \
src/testdir/popupbounce.vim \
@@ -195,6 +204,8 @@ SRC_ALL = \
src/proto/channel.pro \
src/proto/charset.pro \
src/proto/cindent.pro \
src/proto/clientserver.pro \
src/proto/clipboard.pro \
src/proto/cmdexpand.pro \
src/proto/cmdhist.pro \
src/proto/crypt.pro \
@@ -270,11 +281,15 @@ SRC_ALL = \
src/proto/termlib.pro \
src/proto/testing.pro \
src/proto/textprop.pro \
src/proto/time.pro \
src/proto/ui.pro \
src/proto/undo.pro \
src/proto/usercmd.pro \
src/proto/userfunc.pro \
src/proto/version.pro \
src/proto/vim9compile.pro \
src/proto/vim9execute.pro \
src/proto/vim9script.pro \
src/proto/viminfo.pro \
src/proto/winclip.pro \
src/proto/window.pro \
@@ -521,7 +536,6 @@ SRC_DOS = \
src/uninstall.c \
src/vim.def \
src/vim.rc \
src/vimio.h \
src/gvim.exe.mnf \
src/vimrun.c \
src/xpm_w32.c \
@@ -591,6 +605,14 @@ SRC_AMI = \
src/testdir/amiga.vim \
src/xxd/Make_amiga.mak \
# source files for Haiku (also in the extra archive)
SRC_HAIKU = \
src/os_haiku.h \
src/os_haiku.rdef \
src/gui_haiku.cc \
src/gui_haiku.h \
src/proto/gui_haiku.pro \
# source files for the Mac (also in the extra archive)
SRC_MAC = \
src/INSTALLmac.txt \
@@ -626,13 +648,13 @@ SRC_QNX = \
src/proto/gui_photon.pro \
src/proto/os_qnx.pro \
# source files for the extra archive (all sources that are not for Unix)
SRC_EXTRA = \
$(SRC_AMI) \
$(SRC_AMI_DOS) \
$(SRC_DOS) \
$(SRC_DOS_BIN) \
$(SRC_HAIKU) \
$(SRC_MAC) \
$(SRC_QNX) \
$(SRC_VMS) \
@@ -652,6 +674,8 @@ SRC_EXTRA = \
RT_ALL = \
README.txt \
README.md \
README_VIM9.md \
LICENSE \
CONTRIBUTING.md \
runtime/bugreport.vim \
runtime/doc/*.awk \
@@ -766,20 +790,20 @@ RT_UNIX = \
README_unix.txt \
runtime/hi16-action-make.png \
runtime/hi22-action-make.png \
runtime/vim16x16.png \
runtime/vim16x16.xpm \
runtime/vim32x32.png \
runtime/vim32x32.xpm \
runtime/vim48x48.png \
runtime/vim48x48.xpm \
runtime/gvim.desktop \
runtime/vim.desktop \
# Unix and DOS runtime without CR-LF translation
RT_UNIX_DOS_BIN = \
runtime/vim16x16.gif \
runtime/vim16x16.png \
runtime/vim16x16.xpm \
runtime/vim32x32.gif \
runtime/vim32x32.png \
runtime/vim32x32.xpm \
runtime/vim48x48.gif \
runtime/vim48x48.png \
runtime/vim48x48.xpm \
# runtime not for unix or extra
RT_NO_UNIX = \

78
LICENSE Normal file
View File

@@ -0,0 +1,78 @@
VIM LICENSE
I) There are no restrictions on distributing unmodified copies of Vim except
that they must include this license text. You can also distribute
unmodified parts of Vim, likewise unrestricted except that they must
include this license text. You are also allowed to include executables
that you made from the unmodified Vim sources, plus your own usage
examples and Vim scripts.
II) It is allowed to distribute a modified (or extended) version of Vim,
including executables and/or source code, when the following four
conditions are met:
1) This license text must be included unmodified.
2) The modified Vim must be distributed in one of the following five ways:
a) If you make changes to Vim yourself, you must clearly describe in
the distribution how to contact you. When the maintainer asks you
(in any way) for a copy of the modified Vim you distributed, you
must make your changes, including source code, available to the
maintainer without fee. The maintainer reserves the right to
include your changes in the official version of Vim. What the
maintainer will do with your changes and under what license they
will be distributed is negotiable. If there has been no negotiation
then this license, or a later version, also applies to your changes.
The current maintainer is Bram Moolenaar <Bram@vim.org>. If this
changes it will be announced in appropriate places (most likely
vim.sf.net, www.vim.org and/or comp.editors). When it is completely
impossible to contact the maintainer, the obligation to send him
your changes ceases. Once the maintainer has confirmed that he has
received your changes they will not have to be sent again.
b) If you have received a modified Vim that was distributed as
mentioned under a) you are allowed to further distribute it
unmodified, as mentioned at I). If you make additional changes the
text under a) applies to those changes.
c) Provide all the changes, including source code, with every copy of
the modified Vim you distribute. This may be done in the form of a
context diff. You can choose what license to use for new code you
add. The changes and their license must not restrict others from
making their own changes to the official version of Vim.
d) When you have a modified Vim which includes changes as mentioned
under c), you can distribute it without the source code for the
changes if the following three conditions are met:
- The license that applies to the changes permits you to distribute
the changes to the Vim maintainer without fee or restriction, and
permits the Vim maintainer to include the changes in the official
version of Vim without fee or restriction.
- You keep the changes for at least three years after last
distributing the corresponding modified Vim. When the maintainer
or someone who you distributed the modified Vim to asks you (in
any way) for the changes within this period, you must make them
available to him.
- You clearly describe in the distribution how to contact you. This
contact information must remain valid for at least three years
after last distributing the corresponding modified Vim, or as long
as possible.
e) When the GNU General Public License (GPL) applies to the changes,
you can distribute the modified Vim under the GNU GPL version 2 or
any later version.
3) A message must be added, at least in the output of the ":version"
command and in the intro screen, such that the user of the modified Vim
is able to see that it was modified. When distributing as mentioned
under 2)e) adding the message is only required for as far as this does
not conflict with the license used for the changes.
4) The contact information as required under 2)a) and 2)d) must not be
removed or changed, except that the person himself can make
corrections.
III) If you distribute a modified version of Vim, you are encouraged to use
the Vim license for your changes and make them available to the
maintainer, including the source code. The preferred way to do this is
by e-mail or by uploading the files to a server and e-mailing the URL.
If the number of changes is small (e.g., a modified Makefile) e-mailing a
context diff will do. The e-mail address to be used is
<maintainer@vim.org>
IV) It is not allowed to remove this license from the distribution of the Vim
sources, parts of it or from a modified version. You may use this
license for previous Vim releases instead of the license that they came
with, at your option.

View File

@@ -153,7 +153,7 @@ MINOR = 2
# > msvc2015.bat
# - Build the console binary:
# > nmake -f Make_mvc.mak
# - Run the tests and check the ouput:
# - Run the tests and check the output:
# > nmake -f Make_mvc.mak testclean
# > nmake -f Make_mvc.mak test
# - Rename (using ../tools/rename.bat):

View File

@@ -26,10 +26,12 @@ All commands are given with normal keyboard characters, so those who can type
with ten fingers can work very fast. Additionally, function keys can be
mapped to commands by the user, and the mouse can be used.
Vim runs under MS-Windows (NT, 2000, XP, Vista, 7, 8, 10), Macintosh, VMS and
almost all flavours of UNIX. Porting to other systems should not be very
difficult. Older versions of Vim run on MS-DOS, MS-Windows 95/98/Me, Amiga
DOS, Atari MiNT, BeOS, RISC OS and OS/2. These are no longer maintained.
Vim runs under MS-Windows (XP, Vista, 7, 8, 10), macOS, VMS and almost all
flavours of UNIX. Porting to other systems should not be very difficult.
Older versions of Vim run on MS-DOS, MS-Windows 95/98/Me/NT/2000, Amiga DOS,
Atari MiNT, BeOS, RISC OS and OS/2. These are no longer maintained.
For Vim9 script see [README_VIM9](README_VIM9.md).
## Distribution ##

View File

@@ -16,10 +16,10 @@ All commands are given with normal keyboard characters, so those who can type
with ten fingers can work very fast. Additionally, function keys can be
mapped to commands by the user, and the mouse can be used.
Vim runs under MS-Windows (NT, 2000, XP, Vista, 7, 8, 10), Macintosh, VMS and
almost all flavours of UNIX. Porting to other systems should not be very
difficult. Older versions of Vim run on MS-DOS, MS-Windows 95/98/Me, Amiga
DOS, Atari MiNT, BeOS, RISC OS and OS/2. These are no longer maintained.
Vim runs under MS-Windows (XP, Vista, 7, 8, 10), macOS, VMS and almost all
flavours of UNIX. Porting to other systems should not be very difficult.
Older versions of Vim run on MS-DOS, MS-Windows 95/98/Me/NT/2000, Amiga DOS,
Atari MiNT, BeOS, RISC OS and OS/2. These are no longer maintained.
DISTRIBUTION

344
README_VIM9.md Normal file
View File

@@ -0,0 +1,344 @@
![Vim Logo](https://github.com/vim/vim/blob/master/runtime/vimlogo.gif)
# What is Vim9?
This is an experimental side of [Vim](https://github.com/vim/vim).
It explores ways of making Vim script faster and better.
WARNING: The Vim9 script features are in the early stages of development,
anything can break!
# Why Vim9?
## 1. FASTER VIM SCRIPT
The third item on the poll results of 2018, after popup windows and text
properties, is faster Vim script. So how do we do that?
I have been throwing some ideas around, and soon came to the conclusion
that the current way functions are called and executed, with
dictionaries for the arguments and local variables, is never going to be
very fast. We're lucky if we can make it twice as fast. The overhead
of a function call and executing every line is just too high.
So what then? We can only make something fast by having a new way of
defining a function, with similar but different properties of the old
way:
* Arguments are only available by name, not through the a: dictionary or
the a:000 list.
* Local variables are not available in an l: dictionary.
* A few more things that slow us down, such as exception handling details.
I Implemented a "proof of concept" and measured the time to run a simple
for loop with an addition (Justin used this example in his presentation,
full code is below):
``` vim
let sum = 0
for i in range(1, 2999999)
let sum += i
endfor
```
| how | time in sec |
| --------| -------- |
| Vim old | 5.018541 |
| Python | 0.369598 |
| Lua | 0.078817 |
| Vim new | 0.073595 |
That looks very promising! It's just one example, but it shows how much
we can gain, and also that Vim script can be faster than builtin
interfaces.
In practice the script would not do something useless as counting but change
the text. For example, re-indent all the lines:
``` vim
let totallen = 0
for i in range(1, 100000)
call setline(i, ' ' .. getline(i))
let totallen += len(getline(i))
endfor
```
| how | time in sec |
| --------| -------- |
| Vim old | 0.853752 |
| Python | 0.304584 |
| Lua | 0.286573 |
| Vim new | 0.190276 |
The differences are smaller, but Vim 9 script is clearly the fastest.
How does Vim9 script work? The function is first compiled into a sequence of
instructions. Each instruction has one or two parameters and a stack is
used to store intermediate results. Local variables are also on the
stack, space is reserved during compilation. This is a fairly normal
way of compilation into an intermediate format, specialized for Vim,
e.g. each stack item is a typeval_T. And one of the instructions is
"execute Ex command", for commands that are not compiled.
## 2. PHASING OUT INTERFACES
Attempts have been made to implement functionality with built-in script
languages such as Python, Perl, Lua, Tcl and Ruby. This never gained much
foothold, for various reasons.
Instead of using script language support in Vim:
* Encourage implementing external tools in any language and communicate
with them. The job and channel support already makes this possible.
Really any language can be used, also Java and Go, which are not
available built-in.
* Phase out the built-in language interfaces, make maintenance a bit easier
and executables easier to build. They will be kept for backwards
compatibility, no new features.
* Improve the Vim script language, it is used to communicate with the external
tool and implements the Vim side of the interface. Also, it can be used when
an external tool is undesired.
All together this creates a clear situation: Vim with the +eval feature
will be sufficient for most plugins, while some plugins require
installing a tool that can be written in any language. No confusion
about having Vim but the plugin not working because some specific
language is missing. This is a good long term goal.
Rationale: Why is it better to run a tool separately from Vim than using a
built-in interface and interpreter? Take for example something that is
written in Python:
* The built-in interface uses the embedded python interpreter. This is less
well maintained than the python command. Building Vim with it requires
installing developer packages. If loaded dynamically there can be a version
mismatch.
* When running the tool externally the standard python command can be used,
which is quite often available by default or can be easily installed.
* The built-in interface has an API that is unique for Vim with Python. This is
an extra API to learn.
* A .py file can be compiled into a .pyc file and execute much faster.
* Inside Vim multi-threading can cause problems, since the Vim core is single
threaded. In an external tool there are no such problems.
* The Vim part is written in .vim files, the Python part is in .py files, this
is nicely separated.
* Disadvantage: An interface needs to be made between Vim and Python.
JSON is available for this, and it's fairly easy to use. But it still
requires implementing asynchronous communication.
## 3. BETTER VIM SCRIPT
To make Vim faster a new way of defining a function needs to be added.
While we are doing that, since the lines in this function won't be fully
backwards compatible anyway, we can also make Vim script easier to use.
In other words: "less weird". Making it work more like modern
programming languages will help. No surprises.
A good example is how in a function the arguments are prefixed with
"a:". No other language I know does that, so let's drop it.
Taking this one step further is also dropping "s:" for script-local variables;
everything at the script level is script-local by default. Since this is not
backwards compatible it requires a new script style: Vim9 script!
It should be possible to convert code from other languages to Vim
script. We can add functionality to make this easier. This still needs
to be discussed, but we can consider adding type checking and a simple
form of classes. If you look at JavaScript for example, it has gone
through these stages over time, adding real class support and now
TypeScript adds type checking. But we'll have to see how much of that
we actually want to include in Vim script. Ideally a conversion tool
can take Python, JavaScript or TypeScript code and convert it to Vim
script, with only some things that cannot be converted.
Vim script won't work the same as any specific language, but we can use
mechanisms that are commonly known, ideally with the same syntax. One
thing I have been thinking of is assignments without ":let". I often
make that mistake (after writing JavaScript especially). I think it is
possible, if we make local variables shadow commands. That should be OK,
if you shadow a command you want to use, just rename the variable.
Using "let" and "const" to declare a variable, like in JavaScript and
TypeScript, can work:
``` vim
def MyFunction(arg: number): number
let local = 1
let todo = arg
const ADD = 88
while todo > 0
local += ADD
--todo
endwhile
return local
enddef
```
The similarity with JavaScript/TypeScript can also be used for dependencies
between files. Vim currently uses the `:source` command, which has several
disadvantages:
* In the sourced script, is not clear what it provides. By default all
functions are global and can be used elsewhere.
* In a script that sources other scripts, it is not clear what function comes
from what sourced script. Finding the implementation is a hassle.
* Prevention of loading the whole script twice must be manually implemented.
We can use the `:import` and `:export` commands from the JavaScript standard to
make this much better. For example, in script "myfunction.vim" define a
function and export it:
``` vim
vim9script " Vim9 script syntax used here
let local = 'local variable is not exported, script-local'
export def MyFunction() " exported function
...
def LocalFunction() " not exported, script-local
...
```
And in another script import the function:
``` vim
vim9script " Vim9 script syntax used here
import MyFunction from 'myfunction.vim'
```
This looks like JavaScript/TypeScript, thus many users will understand the
syntax.
These are ideas, this will take time to design, discuss and implement.
Eventually this will lead to Vim 9!
## Code for sum time measurements
Vim was build with -O2.
``` vim
func VimOld()
let sum = 0
for i in range(1, 2999999)
let sum += i
endfor
return sum
endfunc
func Python()
py3 << END
sum = 0
for i in range(1, 3000000):
sum += i
END
return py3eval('sum')
endfunc
func Lua()
lua << END
sum = 0
for i = 1, 2999999 do
sum = sum + i
end
END
return luaeval('sum')
endfunc
def VimNew()
let sum = 0
for i in range(1, 2999999)
let sum += i
endfor
return sum
enddef
let start = reltime()
echo VimOld()
echo 'Vim old: ' .. reltimestr(reltime(start))
let start = reltime()
echo Python()
echo 'Python: ' .. reltimestr(reltime(start))
let start = reltime()
echo Lua()
echo 'Lua: ' .. reltimestr(reltime(start))
let start = reltime()
echo VimNew()
echo 'Vim new: ' .. reltimestr(reltime(start))
```
## Code for indent time measurements
``` vim
def VimNew(): number
let totallen = 0
for i in range(1, 100000)
setline(i, ' ' .. getline(i))
totallen += len(getline(i))
endfor
return totallen
enddef
func VimOld()
let totallen = 0
for i in range(1, 100000)
call setline(i, ' ' .. getline(i))
let totallen += len(getline(i))
endfor
return totallen
endfunc
func Lua()
lua << END
b = vim.buffer()
totallen = 0
for i = 1, 100000 do
b[i] = " " .. b[i]
totallen = totallen + string.len(b[i])
end
END
return luaeval('totallen')
endfunc
func Python()
py3 << END
cb = vim.current.buffer
totallen = 0
for i in range(0, 100000):
cb[i] = ' ' + cb[i]
totallen += len(cb[i])
END
return py3eval('totallen')
endfunc
new
call setline(1, range(100000))
let start = reltime()
echo VimOld()
echo 'Vim old: ' .. reltimestr(reltime(start))
bwipe!
new
call setline(1, range(100000))
let start = reltime()
echo Python()
echo 'Python: ' .. reltimestr(reltime(start))
bwipe!
new
call setline(1, range(100000))
let start = reltime()
echo Lua()
echo 'Lua: ' .. reltimestr(reltime(start))
bwipe!
new
call setline(1, range(100000))
let start = reltime()
echo VimNew()
echo 'Vim new: ' .. reltimestr(reltime(start))
bwipe!
```

View File

@@ -1,6 +1,6 @@
README_dos.txt for version 8.2 of Vim: Vi IMproved.
This file explains the installation of Vim on MS-DOS and MS-Windows systems.
This file explains the installation of Vim on MS-Windows systems.
See "README.txt" for general information about Vim.
There are two ways to install Vim:
@@ -64,10 +64,6 @@ These are the normal steps to install Vim from the .zip archives:
to another location. That is where they will stay, the install program
won't move or copy the runtime files.
Only for the 32 bit DOS version on MS-DOS without DPMI support (trying to
run install.exe will produce an error message): Unpack the CSDPMI4B.ZIP
archive and follow the instructions in the documentation.
3. Change to the new directory:
cd vim\vim82
Run the "install.exe" program. It will ask you a number of questions about
@@ -121,7 +117,7 @@ Remarks:
set VIM=d:\editors\vim
- If you have told the "install.exe" program to add the "Edit with Vim" menu
entry, you can remove it by running the "uninstal.exe". See
entry, you can remove it by running the "uninstall.exe". See
":help win32-popup-menu".
- In Windows 95/98/NT you can create a shortcut to Vim. This works for all
@@ -150,5 +146,4 @@ Remarks:
For further information, type one of these inside Vim:
:help dos
:help msdos
:help win32

View File

@@ -1,12 +1,12 @@
README_srcdos.txt for version 8.2 of Vim: Vi IMproved.
See "README.txt" for general information about Vim.
See "README_dos.txt" for installation instructions for MS-DOS and MS-Windows.
See "README_dos.txt" for installation instructions for MS-Windows.
These files are in the runtime archive (vim82rt.zip).
The DOS source archive contains the files needed to compile Vim on MS-DOS or
MS-Windows. It is packed for DOS systems, with CR-LF. It also includes the
VisVim sources.
The DOS source archive contains the files needed to compile Vim on MS-Windows.
It is packed for MS-Windows systems, with CR-LF. It also includes the VisVim
sources.
See "src/INSTALLpc.txt" for instructions on how to compile Vim on the PC.

View File

@@ -1,15 +1,6 @@
README_w32s.txt for version 8.2 of Vim: Vi IMproved.
This archive contains the gvim.exe that was specifically compiled for use in
the Win32s subsystem in MS-Windows 3.1 and 3.11.
Also see the README_bindos.txt, README_dos.txt and README.txt files.
Be careful not to overwrite the Win32s gvim.exe with the another gvim.exe when
unpacking another binary archive! Check the output of ":version":
Win32s - "MS-Windows 16/32 bit GUI version"
Win32 - "MS-Windows 32 bit GUI version"
Win32 with OLE - "MS-Windows 32 bit GUI version with OLE support"
For further information, type this inside Vim:
:help win32s
This file used to explain the installation of Vim on MS-Windows 3.1 and 3.11
systems. However, support for MS-Windows 3.1 and 3.11 has been removed in
patch 7.4.1364.
See "README.txt" for general information about Vim.

View File

@@ -25,9 +25,9 @@ test_script:
- cd src/testdir
# Testing with MSVC gvim
- path C:\Python35-x64;%PATH%
- nmake -f Make_dos.mak VIMPROG=..\gvim
- nmake -f Make_dos.mak POSTSCRIPT=yes VIMPROG=..\gvim
- nmake -f Make_dos.mak clean
# Testing with MingW console version
- nmake -f Make_dos.mak VIMPROG=..\vim
- nmake -f Make_dos.mak POSTSCRIPT=yes VIMPROG=..\vim
# vim: sw=2 sts=2 et ts=8 sr

1
ci/config.mk.clang.sed Normal file
View File

@@ -0,0 +1 @@
/^RUBY_CFLAGS\b/s/$/ -Wno-error=unknown-attributes -Wno-error=ignored-attributes/

1
ci/config.mk.gcc.sed Normal file
View File

@@ -0,0 +1 @@
/^CFLAGS\b/s/$/ -Wno-error=maybe-uninitialized/

2
ci/config.mk.sed Normal file
View File

@@ -0,0 +1,2 @@
/^CFLAGS\b/s/$/ -Wall -Wextra -Wshadow -Werror/
/^PERL_CFLAGS\b/s/$/ -Wno-error=unused-function/

25
ci/if_ver-1.vim Normal file
View File

@@ -0,0 +1,25 @@
" Print all interface versions for Ubuntu. Part 1.
if 1
execute 'source' expand('<sfile>:h') .. '/if_ver-cmd.vim'
echo "*** Interface versions ***\n"
echo 'Lua:'
PrintVer lua print(_VERSION)
echo 'MzScheme:'
PrintVer mzscheme (display (version))
echo 'Perl:'
PrintVer perl print $^V
echo 'Ruby:'
PrintVer ruby print RUBY_VERSION
echo 'Tcl:'
PrintVer tcl puts [info patchlevel]
echo 'Python 2:'
PrintVer python print sys.version
endif

8
ci/if_ver-2.vim Normal file
View File

@@ -0,0 +1,8 @@
" Print py3 interface versions for Ubuntu. Part 2.
if 1
execute 'source' expand('<sfile>:h') .. '/if_ver-cmd.vim'
echo 'Python 3:'
PrintVer python3 print(sys.version)
endif

12
ci/if_ver-cmd.vim Normal file
View File

@@ -0,0 +1,12 @@
" Provide 'PrintVer' command to print the interface versions.
func s:print_ver(lang, ...)
if has(a:lang)
exec a:lang join(a:000)
else
echo 'N/A'
endif
echo ''
endfunc
command -nargs=+ PrintVer call <SID>print_ver(<f-args>)

8
ci/load-snd-dummy.sh Normal file
View File

@@ -0,0 +1,8 @@
#!/bin/bash
set -e
if ! modprobe snd-dummy; then
# snd-dummy is contained in linux-modules-extra (if exists)
apt install -y "linux-modules-extra-$(uname -r)"
modprobe snd-dummy
fi

View File

@@ -32,12 +32,12 @@ To build the installable .exe:
5. Get a "diff.exe" program. If you skip this the built-in diff will always
be used (which is fine for most users). If you do have your own
"diff.exe" put it in the "../.." directory (above the "vim81" directory,
"diff.exe" put it in the "../.." directory (above the "vim82" directory,
it's the same for all Vim versions).
You can find one in previous Vim versions or in this archive:
http://www.mossbayeng.com/~ron/vim/diffutils.tar.gz
6 Also put winpty32.dll and winpty-agent.exe in "../.." (above the "vim81"
6 Also put winpty32.dll and winpty-agent.exe in "../.." (above the "vim82"
directory). This is required for the terminal window.
7. Do "make uganda.nsis.txt" in runtime/doc. This requires sed, you may have

View File

@@ -39,7 +39,7 @@ Unicode true
# Uncomment the next line if you want to include VisVim extension:
#!define HAVE_VIS_VIM
# Comment the following line to create a multilanguage installer:
# Comment the following line to create an English-only installer:
!define HAVE_MULTI_LANG
# Uncomment the next line if you want to create a 64-bit installer.
@@ -176,6 +176,7 @@ Page custom SetCustom ValidateCustom
!include "lang\japanese.nsi"
!include "lang\simpchinese.nsi"
!include "lang\tradchinese.nsi"
!include "lang\turkish.nsi"
!endif
##########################################################

View File

@@ -66,12 +66,12 @@ LangString str_desc_start_menu ${LANG_TURKISH} \
LangString str_section_edit_with ${LANG_TURKISH} \
"Vim ile Aç"
LangString str_desc_edit_with ${LANG_TURKISH} \
"Vim'i $\"Birlikte $\" sağ tıklama menüsüne ekler."
"Vim'i $\"Birlikte $\" sağ tık menüsüne ekler."
LangString str_section_vim_rc ${LANG_TURKISH} \
"Bir konfigürasyon dosyası oluştur"
"Bir yapılandırma dosyası oluştur"
LangString str_desc_vim_rc ${LANG_TURKISH} \
"Eğer yoksa bir konfigürasyon dosyası (_vimrc) oluşturur."
"Eğer yoksa bir yapılandırma dosyası (_vimrc) oluşturur."
LangString str_group_plugin ${LANG_TURKISH} \
"Eklenti dizinleri oluştur"
@@ -108,7 +108,7 @@ LangString str_desc_unregister ${LANG_TURKISH} \
LangString str_unsection_exe ${LANG_TURKISH} \
"Vim programını ve çalıştırma dosyalarını kaldır"
LangString str_desc_rm_exe ${LANG_TURKISH} \
"Tüm Vim çalıştırılabilir dosyalarını ve diğer dosyaları kaldırır."
"Vim çalıştırılabilir dosyalarını ve diğer dosyaları kaldırır."
LangString str_ungroup_plugin ${LANG_TURKISH} \
"Eklenti dizinlerini kaldır"
@@ -128,7 +128,7 @@ LangString str_desc_rm_plugin_vim ${LANG_TURKISH} \
LangString str_unsection_rootdir ${LANG_TURKISH} \
"Vim kök dizinini kaldır"
LangString str_desc_rm_rootdir ${LANG_TURKISH} \
"Vim kök dizinini kaldırır. Bu dizin Vim konfigürasyon dosyalarını içerir!"
"Vim kök dizinini kaldırır. Bu dizin Vim yapılandırma dosyalarını içerir!"
LangString str_msg_install_fail ${LANG_TURKISH} \
"Yükleme başarısız oldu. Yeniden deneyin."

View File

@@ -1,7 +1,7 @@
" Vim completion script
" Language: C
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2018 Aug 20
" Last Change: 2020 Apr 08
let s:cpo_save = &cpo
set cpo&vim
@@ -635,3 +635,5 @@ endfunc
let &cpo = s:cpo_save
unlet s:cpo_save
" vim: noet sw=2 sts=2

View File

@@ -1,7 +1,7 @@
" Vim functions for file type detection
"
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2019 Mar 08
" Last Change: 2020 Mar 30
" These functions are moved here from runtime/filetype.vim to make startup
" faster.
@@ -298,7 +298,7 @@ endfunc
func dist#ft#FTmms()
let n = 1
while n < 10
while n < 20
let line = getline(n)
if line =~ '^\s*\(%\|//\)' || line =~ '^\*'
setf mmix
@@ -325,7 +325,7 @@ endfunc
func dist#ft#FTmm()
let n = 1
while n < 10
while n < 20
let line = getline(n)
if line =~ '^\s*\(#\s*\(include\|import\)\>\|@import\>\|/\*\)'
setf objcpp

View File

@@ -22,7 +22,7 @@ if &cp
endif
if v:version < 702
echohl WarningMsg
echo "***warning*** this version of getscript needs vim 7.2"
echo "***warning*** this version of GetLatestVimScripts needs vim 7.2"
echohl Normal
finish
endif

View File

@@ -1,8 +1,8 @@
" netrw.vim: Handles file transfer and remote directory listing across
" AUTOLOAD SECTION
" Date: Nov 29, 2019
" Version: 167
" Maintainer: Charles E Campbell <NdrOchip@ScampbellPfamily.AbizM-NOSPAM>
" Date: Jan 07, 2020
" Version: 168
" Maintainer: Charles E Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
" GetLatestVimScripts: 1075 1 :AutoInstall: netrw.vim
" Copyright: Copyright (C) 2016 Charles E. Campbell {{{1
" Permission is hereby granted to use and distribute this code,
@@ -43,7 +43,7 @@ if exists("s:needspatches")
endfor
endif
let g:loaded_netrw = "v167"
let g:loaded_netrw = "v168"
if !exists("s:NOTE")
let s:NOTE = 0
let s:WARNING = 1
@@ -68,7 +68,7 @@ setl cpo&vim
" Usage: netrw#ErrorMsg(s:NOTE | s:WARNING | s:ERROR,"some message",error-number)
" netrw#ErrorMsg(s:NOTE | s:WARNING | s:ERROR,["message1","message2",...],error-number)
" (this function can optionally take a list of messages)
" Mar 21, 2017 : max errnum currently is 105
" Dec 2, 2019 : max errnum currently is 106
fun! netrw#ErrorMsg(level,msg,errnum)
" call Dfunc("netrw#ErrorMsg(level=".a:level." msg<".a:msg."> errnum=".a:errnum.") g:netrw_use_errorwindow=".g:netrw_use_errorwindow)
@@ -447,23 +447,9 @@ if !exists("g:netrw_localmovecmd")
let g:netrw_localmovecmd= ""
endif
endif
if v:version < 704 || (v:version == 704 && !has("patch1107"))
" 1109 provides for delete(tmpdir,"d") which is what will be used
if exists("g:netrw_local_rmdir")
let g:netrw_localrmdir= g:netrw_local_rmdir
call netrw#ErrorMsg(s:NOTE,"g:netrw_local_rmdir is deprecated in favor of g:netrw_localrmdir",86)
endif
if has("win32") || has("win95") || has("win64") || has("win16")
if g:netrw_cygwin
call s:NetrwInit("g:netrw_localrmdir","rmdir")
else
let g:netrw_localrmdir = expand("$COMSPEC")
let g:netrw_localrmdiropt= " /c rmdir"
endif
else
call s:NetrwInit("g:netrw_localrmdir","rmdir")
endif
endif
" following serves as an example for how to insert a version&patch specific test
"if v:version < 704 || (v:version == 704 && !has("patch1107"))
"endif
call s:NetrwInit("g:netrw_liststyle" , s:THINLIST)
" sanity checks
if g:netrw_liststyle < 0 || g:netrw_liststyle >= s:MAXLIST
@@ -5217,8 +5203,8 @@ fun! netrw#BrowseX(fname,remote)
if a:remote == 0 && isdirectory(a:fname)
" if its really just a local directory, then do a "gf" instead
" call Decho("remote≡0 and a:fname<".a:fname."> ".(isdirectory(a:fname)? "is a directory" : "is not a directory"),'~'.expand("<slnum>"))
" call Decho("..appears to be a local directory; using gf instead",'~'.expand("<slnum>"))
norm! gf
" call Decho("..appears to be a local directory; using e ".a:fname." instead",'~'.expand("<slnum>"))
exe "e ".a:fname
" call Dret("netrw#BrowseX")
return
elseif a:remote == 1 && a:fname !~ '^https\=:' && a:fname =~ '/$'
@@ -7158,17 +7144,8 @@ fun! s:NetrwMarkFileCopy(islocal,...)
" call Dret("s:NetrwMarkFileCopy : lcd failure")
return
endif
if v:version < 704 || (v:version == 704 && !has("patch1107"))
call s:NetrwExe("sil !".g:netrw_localrmdir.g:netrw_localrmdiropt." ".s:ShellEscape(tmpdir,1))
if v:shell_error != 0
call netrw#ErrorMsg(s:WARNING,"consider setting g:netrw_localrmdir<".g:netrw_localrmdir."> to something that works",80)
" " call Dret("s:NetrwMarkFileCopy : failed: sil !".g:netrw_localrmdir." ".s:ShellEscape(tmpdir,1) )
return
endif
else
if delete(tmpdir,"d")
call netrw#ErrorMsg(s:ERROR,"unable to delete directory <".tmpdir.">!",103)
endif
if delete(tmpdir,"d")
call netrw#ErrorMsg(s:ERROR,"unable to delete directory <".tmpdir.">!",103)
endif
else
if s:NetrwLcd(curdir)
@@ -9587,6 +9564,7 @@ fun! s:NetrwWideListing()
" call Decho("setl ma noro",'~'.expand("<slnum>"))
let b:netrw_cpf= 0
if line("$") >= w:netrw_bannercnt
" determine the maximum filename size; use that to set cpf
exe 'sil NetrwKeepj '.w:netrw_bannercnt.',$g/^./if virtcol("$") > b:netrw_cpf|let b:netrw_cpf= virtcol("$")|endif'
NetrwKeepj call histdel("/",-1)
else
@@ -9594,6 +9572,7 @@ fun! s:NetrwWideListing()
" call Dret("NetrwWideListing")
return
endif
" allow for two spaces to separate columns
let b:netrw_cpf= b:netrw_cpf + 2
" call Decho("b:netrw_cpf=max_filename_length+2=".b:netrw_cpf,'~'.expand("<slnum>"))
@@ -9621,10 +9600,11 @@ fun! s:NetrwWideListing()
if newcolend > line("$") | let newcolend= line("$") | endif
let newcolqty= newcolend - newcolstart
exe newcolstart
" COMBAK: both of the visual-mode using lines below are problematic vis-a-vis @*
if newcolqty == 0
exe "sil! NetrwKeepj norm! 0\<c-v>$h\"ax".w:netrw_bannercnt."G$\"ap"
else
exe "sil! NetrwKeepj norm! 0\<c-v>".newcolqty.'j$h\"ax'.w:netrw_bannercnt.'G$\"ap'
exe "sil! NetrwKeepj norm! 0\<c-v>".newcolqty.'j$h"ax'.w:netrw_bannercnt.'G$"ap'
endif
exe "sil! NetrwKeepj ".newcolstart.','.newcolend.'d _'
exe 'sil! NetrwKeepj '.w:netrw_bannercnt
@@ -11048,9 +11028,10 @@ fun! s:NetrwLocalRename(path) range
" call Dfunc("NetrwLocalRename(path<".a:path.">)")
" preparation for removing multiple files/directories
let ykeep = @@
let ctr = a:firstline
let svpos = winsaveview()
let ykeep = @@
let ctr = a:firstline
let svpos = winsaveview()
let all = 0
" call Decho("saving posn to svpos<".string(svpos).">",'~'.expand("<slnum>"))
" rename files given by the markfilelist
@@ -11078,6 +11059,23 @@ fun! s:NetrwLocalRename(path) range
let newname = substitute(oldname,subfrom,subto,'')
endif
endif
if !all && filereadable(newname)
call inputsave()
let response= input("File<".newname."> already exists; do you want to overwrite it? (y/all/n) ")
call inputrestore()
if response == "all"
let all= 1
elseif response != "y" && response != "yes"
" refresh the directory
" call Decho("refresh the directory listing",'~'.expand("<slnum>"))
NetrwKeepj call s:NetrwRefresh(1,s:NetrwBrowseChgDir(1,'./'))
" call Decho("restoring posn to svpos<".string(svpos).">",'~'.expand("<slnum>"))
NetrwKeepj call winrestview(svpos)
let @@= ykeep
" call Dret("NetrwLocalRename")
return
endif
endif
call rename(oldname,newname)
endfor
call s:NetrwUnmarkList(bufnr("%"),b:netrw_curdir)
@@ -11101,14 +11099,14 @@ fun! s:NetrwLocalRename(path) range
NetrwKeepj norm! 0
let oldname= s:ComposePath(a:path,curword)
" call Decho("oldname<".oldname.">",'~'.expand("<slnum>"))
" call Decho("oldname<".oldname.">",'~'.expand("<slnum>"))
call inputsave()
let newname= input("Moving ".oldname." to : ",substitute(oldname,'/*$','','e'))
call inputrestore()
call rename(oldname,newname)
" call Decho("renaming <".oldname."> to <".newname.">",'~'.expand("<slnum>"))
" call Decho("renaming <".oldname."> to <".newname.">",'~'.expand("<slnum>"))
let ctr= ctr + 1
endwhile
@@ -11896,6 +11894,9 @@ fun! s:NetrwExe(cmd)
" call Decho("exe ".a:cmd,'~'.expand("<slnum>"))
exe a:cmd
endif
if v:shell_error
call netrw#ErrorMsg(s:WARNING,"shell signalled an error",106)
endif
" call Dret("s:NetrwExe : v:shell_error=".v:shell_error)
endfun

View File

@@ -1,6 +1,6 @@
" netrwSettings.vim: makes netrw settings simpler
" Date: Nov 09, 2016
" Maintainer: Charles E Campbell <drchipNOSPAM at campbellfamily dot biz>
" Maintainer: Charles E Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
" Version: 16
" Copyright: Copyright (C) 1999-2007 Charles E. Campbell {{{1
" Permission is hereby granted to use and distribute this code,

View File

@@ -1,13 +1,13 @@
" tar.vim: Handles browsing tarfiles
" AUTOLOAD PORTION
" Date: Apr 17, 2013
" Version: 29
" Maintainer: Charles E Campbell <NdrOchip@ScampbellPfamily.AbizM-NOSPAM>
" License: Vim License (see vim's :help license)
" Date: Jan 07, 2020
" Version: 32
" Maintainer: Charles E Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
" License: Vim License (see vim's :help license)
"
" Contains many ideas from Michael Toren's <tar.vim>
"
" Copyright: Copyright (C) 2005-2011 Charles E. Campbell {{{1
" Copyright: Copyright (C) 2005-2017 Charles E. Campbell {{{1
" Permission is hereby granted to use and distribute this code,
" with or without modifications, provided that this copyright
" notice is copied with it. Like anything else that's free,
@@ -22,7 +22,7 @@
if &cp || exists("g:loaded_tar")
finish
endif
let g:loaded_tar= "v29"
let g:loaded_tar= "v32"
if v:version < 702
echohl WarningMsg
echo "***warning*** this version of tar needs vim 7.2"
@@ -48,6 +48,9 @@ endif
if !exists("g:tar_writeoptions")
let g:tar_writeoptions= "uf"
endif
if !exists("g:tar_delfile")
let g:tar_delfile="--delete -f"
endif
if !exists("g:netrw_cygwin")
if has("win32") || has("win95") || has("win64") || has("win16")
if &shell =~ '\%(\<bash\>\|\<zsh\>\)\%(\.exe\)\=$'
@@ -109,6 +112,7 @@ fun! tar#Browse(tarfile)
" sanity checks
if !executable(g:tar_cmd)
redraw!
" call Decho('***error*** (tar#Browse) "'.g:tar_cmd.'" not available on your system')
echohl Error | echo '***error*** (tar#Browse) "'.g:tar_cmd.'" not available on your system'
let &report= repkeep
" call Dret("tar#Browse")
@@ -119,6 +123,7 @@ fun! tar#Browse(tarfile)
if a:tarfile !~# '^\a\+://'
" if it's an url, don't complain, let url-handlers such as vim do its thing
redraw!
" call Decho("***error*** (tar#Browse) File not readable<".a:tarfile.">")
echohl Error | echo "***error*** (tar#Browse) File not readable<".a:tarfile.">" | echohl None
endif
let &report= repkeep
@@ -152,12 +157,27 @@ fun! tar#Browse(tarfile)
" assuming cygwin
let tarfile=substitute(system("cygpath -u ".shellescape(tarfile,0)),'\n$','','e')
endif
let curlast= line("$")
if tarfile =~# '\.\(gz\|tgz\)$'
let gzip_command = s:get_gzip_command(tarfile)
if tarfile =~# '\.\(gz\)$'
" call Decho("1: exe silent r! gzip -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - ")
exe "sil! r! " . gzip_command . " -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - "
exe "sil! r! gzip -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - "
elseif tarfile =~# '\.\(tgz\)$' || tarfile =~# '\.\(tbz\)$' || tarfile =~# '\.\(txz\)$'
if has("unix") && executable("file")
let filekind= system("file ".shellescape(tarfile,1)) =~ "bzip2"
else
let filekind= ""
endif
if filekind =~ "bzip2"
exe "sil! r! bzip2 -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - "
elseif filekind =~ "XZ"
exe "sil! r! xz -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - "
else
exe "sil! r! gzip -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - "
endif
elseif tarfile =~# '\.lrp'
" call Decho("2: exe silent r! cat -- ".shellescape(tarfile,1)."|gzip -d -c -|".g:tar_cmd." -".g:tar_browseoptions." - ")
exe "sil! r! cat -- ".shellescape(tarfile,1)."|gzip -d -c -|".g:tar_cmd." -".g:tar_browseoptions." - "
@@ -184,7 +204,7 @@ fun! tar#Browse(tarfile)
" call Dret("tar#Browse : a:tarfile<".a:tarfile.">")
return
endif
if line("$") == curlast || ( line("$") == (curlast + 1) && getline("$") =~ '\c\%(warning\|error\|inappropriate\|unrecognized\)')
if line("$") == curlast || ( line("$") == (curlast + 1) && getline("$") =~# '\c\%(warning\|error\|inappropriate\|unrecognized\)')
redraw!
echohl WarningMsg | echo "***warning*** (tar#Browse) ".a:tarfile." doesn't appear to be a tar file" | echohl None
keepj sil! %d
@@ -197,8 +217,13 @@ fun! tar#Browse(tarfile)
return
endif
" set up maps supported for tar
setlocal noma nomod ro
noremap <silent> <buffer> <cr> :call <SID>TarBrowseSelect()<cr>
noremap <silent> <buffer> <cr> :call <SID>TarBrowseSelect()<cr>
noremap <silent> <buffer> x :call tar#Extract()<cr>
if &mouse != ""
noremap <silent> <buffer> <leftmouse> <leftmouse>:call <SID>TarBrowseSelect()<cr>
endif
let &report= repkeep
" call Dret("tar#Browse : b:tarfile<".b:tarfile.">")
@@ -235,7 +260,8 @@ fun! s:TarBrowseSelect()
let tarfile=substitute(system("cygpath -u ".shellescape(tarfile,0)),'\n$','','e')
endif
new
" open a new window (tar#Read will read a file into it)
noswapfile new
if !exists("g:tar_nomax") || g:tar_nomax == 0
wincmd _
endif
@@ -267,7 +293,7 @@ fun! tar#Read(fname,mode)
if fname =~ '\.bz2$' && executable("bzcat")
let decmp= "|bzcat"
let doro = 1
elseif fname =~ '\.gz$' && executable("zcat")
elseif fname =~ '\.t\=gz$' && executable("zcat")
let decmp= "|zcat"
let doro = 1
elseif fname =~ '\.lzma$' && executable("lzcat")
@@ -291,20 +317,29 @@ fun! tar#Read(fname,mode)
endif
if tarfile =~# '\.bz2$'
" call Decho("7: exe silent r! bzip2 -d -c ".shellescape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp)
exe "sil! r! bzip2 -d -c -- ".shellescape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp
elseif tarfile =~# '\.\(gz\|tgz\)$'
let gzip_command = s:get_gzip_command(tarfile)
" call Decho("5: exe silent r! gzip -d -c -- ".shellescape(tarfile,1)."| ".g:tar_cmd.' -'.g:tar_readoptions.' - '.tar_secure.shellescape(fname,1))
exe "sil! r! " . gzip_command . " -d -c -- ".shellescape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp
elseif tarfile =~# '\.\(gz\)$'
exe "sil! r! gzip -d -c -- ".shellescape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp
elseif tarfile =~# '\(\.tgz\|\.tbz\|\.txz\)'
if has("unix") && executable("file")
let filekind= system("file ".shellescape(tarfile,1))
else
let filekind= ""
endif
if filekind =~ "bzip2"
exe "sil! r! bzip2 -d -c -- ".shellescape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp
elseif filekind =~ "XZ"
exe "sil! r! xz -d -c -- ".shellescape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp
else
exe "sil! r! gzip -d -c -- ".shellescape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp
endif
elseif tarfile =~# '\.lrp$'
" call Decho("6: exe silent r! cat ".shellescape(tarfile,1)." | gzip -d -c - | ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp)
exe "sil! r! cat -- ".shellescape(tarfile,1)." | gzip -d -c - | ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp
elseif tarfile =~# '\.lzma$'
" call Decho("7: exe silent r! lzma -d -c ".shellescape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp)
exe "sil! r! lzma -d -c -- ".shellescape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp
elseif tarfile =~# '\.\(xz\|txz\)$'
" call Decho("3: exe silent r! xz --decompress --stdout -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp)
exe "sil! r! xz --decompress --stdout -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp
else
if tarfile =~ '^\s*-'
@@ -348,13 +383,14 @@ fun! tar#Write(fname)
" sanity checks
if !executable(g:tar_cmd)
redraw!
echohl Error | echo '***error*** (tar#Browse) "'.g:tar_cmd.'" not available on your system'
" call Decho('***error*** (tar#Browse) "'.g:tar_cmd.'" not available on your system')
let &report= repkeep
" call Dret("tar#Write")
return
endif
if !exists("*mkdir")
redraw!
" call Decho("***error*** (tar#Write) sorry, mkdir() doesn't work on your system")
echohl Error | echo "***error*** (tar#Write) sorry, mkdir() doesn't work on your system" | echohl None
let &report= repkeep
" call Dret("tar#Write")
@@ -375,6 +411,7 @@ fun! tar#Write(fname)
exe "cd ".fnameescape(tmpdir)
catch /^Vim\%((\a\+)\)\=:E344/
redraw!
" call Decho("***error*** (tar#Write) cannot cd to temporary directory")
echohl Error | echo "***error*** (tar#Write) cannot cd to temporary directory" | Echohl None
let &report= repkeep
" call Dret("tar#Write")
@@ -393,8 +430,6 @@ fun! tar#Write(fname)
let tarfile = substitute(b:tarfile,'tarfile:\(.\{-}\)::.*$','\1','')
let fname = substitute(b:tarfile,'tarfile:.\{-}::\(.*\)$','\1','')
let gzip_command = s:get_gzip_command(tarfile)
" handle compressed archives
if tarfile =~# '\.bz2'
call system("bzip2 -d -- ".shellescape(tarfile,0))
@@ -402,12 +437,12 @@ fun! tar#Write(fname)
let compress= "bzip2 -- ".shellescape(tarfile,0)
" call Decho("compress<".compress.">")
elseif tarfile =~# '\.gz'
call system(gzip_command . " -d -- ".shellescape(tarfile,0))
call system("gzip -d -- ".shellescape(tarfile,0))
let tarfile = substitute(tarfile,'\.gz','','e')
let compress= "gzip -- ".shellescape(tarfile,0)
" call Decho("compress<".compress.">")
elseif tarfile =~# '\.tgz'
call system(gzip_command . " -d -- ".shellescape(tarfile,0))
call system("gzip -d -- ".shellescape(tarfile,0))
let tarfile = substitute(tarfile,'\.tgz','.tar','e')
let compress= "gzip -- ".shellescape(tarfile,0)
let tgz = 1
@@ -427,6 +462,7 @@ fun! tar#Write(fname)
if v:shell_error != 0
redraw!
" call Decho("***error*** (tar#Write) sorry, unable to update ".tarfile." with ".fname)
echohl Error | echo "***error*** (tar#Write) sorry, unable to update ".tarfile." with ".fname | echohl None
else
@@ -459,10 +495,11 @@ fun! tar#Write(fname)
endif
" delete old file from tarfile
" call Decho("system(".g:tar_cmd." --delete -f ".shellescape(tarfile,0)." -- ".shellescape(fname,0).")")
call system(g:tar_cmd." --delete -f ".shellescape(tarfile,0).tar_secure.shellescape(fname,0))
" call Decho("system(".g:tar_cmd." ".g:tar_delfile." ".shellescape(tarfile,0)." -- ".shellescape(fname,0).")")
call system(g:tar_cmd." ".g:tar_delfile." ".shellescape(tarfile,0).tar_secure.shellescape(fname,0))
if v:shell_error != 0
redraw!
" call Decho("***error*** (tar#Write) sorry, unable to update ".fnameescape(tarfile)." with ".fnameescape(fname))
echohl Error | echo "***error*** (tar#Write) sorry, unable to update ".fnameescape(tarfile)." with ".fnameescape(fname) | echohl None
else
@@ -471,6 +508,7 @@ fun! tar#Write(fname)
call system(g:tar_cmd." -".g:tar_writeoptions." ".shellescape(tarfile,0).tar_secure.shellescape(fname,0))
if v:shell_error != 0
redraw!
" call Decho("***error*** (tar#Write) sorry, unable to update ".fnameescape(tarfile)." with ".fnameescape(fname))
echohl Error | echo "***error*** (tar#Write) sorry, unable to update ".fnameescape(tarfile)." with ".fnameescape(fname) | echohl None
elseif exists("compress")
" call Decho("call system(".compress.")")
@@ -486,11 +524,11 @@ fun! tar#Write(fname)
if s:tblfile_{winnr()} =~ '^\a\+://'
" call Decho("handle writing <".tarfile."> across network to <".s:tblfile_{winnr()}.">")
let tblfile= s:tblfile_{winnr()}
1split|enew
1split|noswapfile enew
let binkeep= &l:binary
let eikeep = &ei
set binary ei=all
exe "e! ".fnameescape(tarfile)
exe "noswapfile e! ".fnameescape(tarfile)
call netrw#NetWrite(tblfile)
let &ei = eikeep
let &l:binary = binkeep
@@ -524,7 +562,7 @@ fun! tar#Diff(userfname,fname)
" sets up b:tardiff_otherbuf variables so each buffer knows about the other (for closing purposes)
diffthis
wincmd v
exe "e ".fnameescape(fname)
exe "noswapfile e ".fnameescape(fname)
diffthis
else
redraw!
@@ -533,6 +571,119 @@ fun! tar#Diff(userfname,fname)
" call Dret("tar#Diff")
endfun
" ---------------------------------------------------------------------
" tar#Extract: extract a file from a (possibly compressed) tar archive {{{2
fun! tar#Extract()
" call Dfunc("tar#Extract()")
let repkeep= &report
set report=10
let fname= getline(".")
" call Decho("fname<".fname.">")
if !exists("g:tar_secure") && fname =~ '^\s*-\|\s\+-'
redraw!
echohl WarningMsg | echo '***warning*** (tar#BrowseSelect) rejecting tarfile member<'.fname.'> because of embedded "-"'
" call Dret('tar#BrowseSelect : rejecting tarfile member<'.fname.'> because of embedded "-"')
return
endif
" sanity check
if fname =~ '^"'
let &report= repkeep
" call Dret("TarBrowseSelect")
return
endif
let tarball = expand("%")
" call Decho("tarball<".tarball.">")
let tarbase = substitute(tarball,'\..*$','','')
" call Decho("tarbase<".tarbase.">")
let extractcmd= netrw#WinPath(g:tar_extractcmd)
if filereadable(tarbase.".tar")
" call Decho("system(".extractcmd." ".shellescape(tarbase).".tar ".shellescape(fname).")")
call system(extractcmd." ".shellescape(tarbase).".tar ".shellescape(fname))
if v:shell_error != 0
echohl Error | echo "***error*** ".extractcmd." ".tarbase.".tar ".fname.": failed!" | echohl NONE
" call Decho("***error*** ".extractcmd." ".tarbase.".tar ".fname.": failed!")
else
echo "***note*** successfully extracted ".fname
endif
elseif filereadable(tarbase.".tgz")
let extractcmd= substitute(extractcmd,"-","-z","")
" call Decho("system(".extractcmd." ".shellescape(tarbase).".tgz ".shellescape(fname).")")
call system(extractcmd." ".shellescape(tarbase).".tgz ".shellescape(fname))
if v:shell_error != 0
echohl Error | echo "***error*** ".extractcmd." ".tarbase.".tgz ".fname.": failed!" | echohl NONE
" call Decho("***error*** ".extractcmd."t ".tarbase.".tgz ".fname.": failed!")
else
echo "***note*** successfully extracted ".fname
endif
elseif filereadable(tarbase.".tar.gz")
let extractcmd= substitute(extractcmd,"-","-z","")
" call Decho("system(".extractcmd." ".shellescape(tarbase).".tar.gz ".shellescape(fname).")")
call system(extractcmd." ".shellescape(tarbase).".tar.gz ".shellescape(fname))
if v:shell_error != 0
echohl Error | echo "***error*** ".extractcmd." ".tarbase.".tar.gz ".fname.": failed!" | echohl NONE
" call Decho("***error*** ".extractcmd." ".tarbase.".tar.gz ".fname.": failed!")
else
echo "***note*** successfully extracted ".fname
endif
elseif filereadable(tarbase.".tbz")
let extractcmd= substitute(extractcmd,"-","-j","")
" call Decho("system(".extractcmd." ".shellescape(tarbase).".tbz ".shellescape(fname).")")
call system(extractcmd." ".shellescape(tarbase).".tbz ".shellescape(fname))
if v:shell_error != 0
echohl Error | echo "***error*** ".extractcmd."j ".tarbase.".tbz ".fname.": failed!" | echohl NONE
" call Decho("***error*** ".extractcmd."j ".tarbase.".tbz ".fname.": failed!")
else
echo "***note*** successfully extracted ".fname
endif
elseif filereadable(tarbase.".tar.bz2")
let extractcmd= substitute(extractcmd,"-","-j","")
" call Decho("system(".extractcmd." ".shellescape(tarbase).".tar.bz2 ".shellescape(fname).")")
call system(extractcmd." ".shellescape(tarbase).".tar.bz2 ".shellescape(fname))
if v:shell_error != 0
echohl Error | echo "***error*** ".extractcmd."j ".tarbase.".tar.bz2 ".fname.": failed!" | echohl NONE
" call Decho("***error*** ".extractcmd."j ".tarbase.".tar.bz2 ".fname.": failed!")
else
echo "***note*** successfully extracted ".fname
endif
elseif filereadable(tarbase.".txz")
let extractcmd= substitute(extractcmd,"-","-J","")
" call Decho("system(".extractcmd." ".shellescape(tarbase).".txz ".shellescape(fname).")")
call system(extractcmd." ".shellescape(tarbase).".txz ".shellescape(fname))
if v:shell_error != 0
echohl Error | echo "***error*** ".extractcmd." ".tarbase.".txz ".fname.": failed!" | echohl NONE
" call Decho("***error*** ".extractcmd." ".tarbase.".txz ".fname.": failed!")
else
echo "***note*** successfully extracted ".fname
endif
elseif filereadable(tarbase.".tar.xz")
let extractcmd= substitute(extractcmd,"-","-J","")
" call Decho("system(".extractcmd." ".shellescape(tarbase).".tar.xz ".shellescape(fname).")")
call system(extractcmd." ".shellescape(tarbase).".tar.xz ".shellescape(fname))
if v:shell_error != 0
echohl Error | echo "***error*** ".extractcmd." ".tarbase.".tar.xz ".fname.": failed!" | echohl NONE
" call Decho("***error*** ".extractcmd." ".tarbase.".tar.xz ".fname.": failed!")
else
echo "***note*** successfully extracted ".fname
endif
endif
" restore option
let &report= repkeep
" call Dret("tar#Extract")
endfun
" ---------------------------------------------------------------------
" s:Rmdir: {{{2
fun! s:Rmdir(fname)
@@ -587,10 +738,7 @@ fun! tar#Vimuntar(...)
" if necessary, decompress the tarball; then, extract it
if tartail =~ '\.tgz'
let gzip_command = s:get_gzip_command(tarfile)
if executable(gzip_command)
silent exe "!" . gzip_command . " -d ".shellescape(tartail)
elseif executable("gunzip")
if executable("gunzip")
silent exe "!gunzip ".shellescape(tartail)
elseif executable("gzip")
silent exe "!gzip -d ".shellescape(tartail)
@@ -628,28 +776,6 @@ fun! tar#Vimuntar(...)
" call Dret("tar#Vimuntar")
endfun
func s:get_gzip_command(file)
" Try using the "file" command to get the actual compression type, since
" there is no standard way for the naming: ".tgz", ".tbz", ".txz", etc.
" If the "file" command doesn't work fall back to just using the file name.
if a:file =~# 'z$'
let filetype = system('file ' . a:file)
if filetype =~ 'bzip2 compressed' && executable('bzip2')
return 'bzip2'
endif
if filetype =~ 'XZ compressed' && executable('xz')
return 'xz'
endif
endif
if a:file =~# 'bz2$'
return 'bzip2'
endif
if a:file =~# 'xz$'
return 'xz'
endif
return 'gzip'
endfunc
" =====================================================================
" Modelines And Restoration: {{{1
let &cpo= s:keepcpo

View File

@@ -1,6 +1,6 @@
" Vim plugin for formatting XML
" Last Change: 2019 Oct 24
" Version: 0.2
" Last Change: 2020 Jan 06
" Version: 0.3
" Author: Christian Brabandt <cb@256bit.org>
" Repository: https://github.com/chrisbra/vim-xml-ftplugin
" License: VIM License
@@ -15,7 +15,7 @@ let s:keepcpo = &cpo
set cpo&vim
" Main function: Format the input {{{1
func! xmlformat#Format()
func! xmlformat#Format() abort
" only allow reformatting through the gq command
" (e.g. Vim is in normal mode)
if mode() != 'n'
@@ -40,14 +40,16 @@ func! xmlformat#Format()
continue
elseif line !~# '<[/]\?[^>]*>'
let nextmatch = match(list, '<[/]\?[^>]*>', current)
let line .= join(list[(current + 1):(nextmatch-1)], "\n")
call remove(list, current+1, nextmatch-1)
if nextmatch > -1
let line .= ' '. join(list[(current + 1):(nextmatch-1)], " ")
call remove(list, current+1, nextmatch-1)
endif
endif
" split on `>`, but don't split on very first opening <
" this means, items can be like ['<tag>', 'tag content</tag>']
for item in split(line, '.\@<=[>]\zs')
if s:EndTag(item)
let s:indent = s:DecreaseIndent()
call s:DecreaseIndent()
call add(result, s:Indent(item))
elseif s:EmptyTag(lastitem)
call add(result, s:Indent(item))
@@ -59,13 +61,23 @@ func! xmlformat#Format()
" Simply split on '<', if there is one,
" but reformat according to &textwidth
let t=split(item, '.<\@=\zs')
" if the content fits well within a single line, add it there
" so that the output looks like this:
"
" <foobar>1</foobar>
if s:TagContent(lastitem) is# s:TagContent(t[1]) && strlen(result[-1]) + strlen(item) <= s:Textwidth()
let result[-1] .= item
let lastitem = t[1]
continue
endif
" t should only contain 2 items, but just be safe here
if s:IsTag(lastitem)
let s:indent+=1
endif
let result+=s:FormatContent([t[0]])
if s:EndTag(t[1])
let s:indent = s:DecreaseIndent()
call s:DecreaseIndent()
endif
"for y in t[1:]
let result+=s:FormatContent(t[1:])
@@ -97,15 +109,15 @@ func! xmlformat#Format()
return 0
endfunc
" Check if given tag is XML Declaration header {{{1
func! s:IsXMLDecl(tag)
func! s:IsXMLDecl(tag) abort
return a:tag =~? '^\s*<?xml\s\?\%(version="[^"]*"\)\?\s\?\%(encoding="[^"]*"\)\? ?>\s*$'
endfunc
" Return tag indented by current level {{{1
func! s:Indent(item)
func! s:Indent(item) abort
return repeat(' ', shiftwidth()*s:indent). s:Trim(a:item)
endfu
" Return item trimmed from leading whitespace {{{1
func! s:Trim(item)
func! s:Trim(item) abort
if exists('*trim')
return trim(a:item)
else
@@ -113,44 +125,53 @@ func! s:Trim(item)
endif
endfunc
" Check if tag is a new opening tag <tag> {{{1
func! s:StartTag(tag)
func! s:StartTag(tag) abort
let is_comment = s:IsComment(a:tag)
return a:tag =~? '^\s*<[^/?]' && !is_comment
endfunc
" Check if tag is a Comment start {{{1
func! s:IsComment(tag)
func! s:IsComment(tag) abort
return a:tag =~? '<!--'
endfunc
" Remove one level of indentation {{{1
func! s:DecreaseIndent()
return (s:indent > 0 ? s:indent - 1 : 0)
func! s:DecreaseIndent() abort
let s:indent = (s:indent > 0 ? s:indent - 1 : 0)
endfunc
" Check if tag is a closing tag </tag> {{{1
func! s:EndTag(tag)
func! s:EndTag(tag) abort
return a:tag =~? '^\s*</'
endfunc
" Check that the tag is actually a tag and not {{{1
" something like "foobar</foobar>"
func! s:IsTag(tag)
func! s:IsTag(tag) abort
return s:Trim(a:tag)[0] == '<'
endfunc
" Check if tag is empty <tag/> {{{1
func! s:EmptyTag(tag)
func! s:EmptyTag(tag) abort
return a:tag =~ '/>\s*$'
endfunc
func! s:TagContent(tag) abort "{{{1
" Return content of a tag
return substitute(a:tag, '^\s*<[/]\?\([^>]*\)>\s*$', '\1', '')
endfunc
func! s:Textwidth() abort "{{{1
" return textwidth (or 80 if not set)
return &textwidth == 0 ? 80 : &textwidth
endfunc
" Format input line according to textwidth {{{1
func! s:FormatContent(list)
func! s:FormatContent(list) abort
let result=[]
let limit = 80
if &textwidth > 0
let limit = &textwidth
endif
let limit = s:Textwidth()
let column=0
let idx = -1
let add_indent = 0
let cnt = 0
for item in a:list
for word in split(item, '\s\+\S\+\zs')
if match(word, '^\s\+$') > -1
" skip empty words
continue
endif
let column += strdisplaywidth(word, column)
if match(word, "^\\s*\n\\+\\s*$") > -1
call add(result, '')

View File

@@ -1,10 +1,10 @@
" zip.vim: Handles browsing zipfiles
" AUTOLOAD PORTION
" Date: Sep 13, 2016
" Version: 28
" Maintainer: Charles E Campbell <NdrOchip@ScampbellPfamily.AbizM-NOSPAM>
" Date: Jan 07, 2020
" Version: 30
" Maintainer: Charles E Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
" License: Vim License (see vim's :help license)
" Copyright: Copyright (C) 2005-2013 Charles E. Campbell {{{1
" Copyright: Copyright (C) 2005-2019 Charles E. Campbell {{{1
" Permission is hereby granted to use and distribute this code,
" with or without modifications, provided that this copyright
" notice is copied with it. Like anything else that's free,
@@ -20,7 +20,7 @@
if &cp || exists("g:loaded_zip")
finish
endif
let g:loaded_zip= "v28"
let g:loaded_zip= "v30"
if v:version < 702
echohl WarningMsg
echo "***warning*** this version of zip needs vim 7.2 or later"
@@ -68,7 +68,7 @@ fun! zip#Browse(zipfile)
" sanity check: ensure that the zipfile has "PK" as its first two letters
" (zipped files have a leading PK as a "magic cookie")
if !filereadable(a:zipfile) || readfile(a:zipfile, "", 1)[0] !~ '^PK'
exe "noautocmd e ".fnameescape(a:zipfile)
exe "noswapfile noautocmd noswapfile e ".fnameescape(a:zipfile)
" call Dret("zip#Browse : not a zipfile<".a:zipfile.">")
return
" else " Decho
@@ -141,8 +141,11 @@ fun! zip#Browse(zipfile)
" Maps associated with zip plugin
setlocal noma nomod ro
noremap <silent> <buffer> <cr> :call <SID>ZipBrowseSelect()<cr>
noremap <silent> <buffer> x :call zip#Extract()<cr>
noremap <silent> <buffer> <cr> :call <SID>ZipBrowseSelect()<cr>
noremap <silent> <buffer> x :call zip#Extract()<cr>
if &mouse != ""
noremap <silent> <buffer> <leftmouse> <leftmouse>:call <SID>ZipBrowseSelect()<cr>
endif
let &report= repkeep
" call Dret("zip#Browse")
@@ -175,17 +178,17 @@ fun! s:ZipBrowseSelect()
" get zipfile to the new-window
let zipfile = b:zipfile
let curfile= expand("%")
let curfile = expand("%")
" call Decho("zipfile<".zipfile.">")
" call Decho("curfile<".curfile.">")
new
noswapfile new
if !exists("g:zip_nomax") || g:zip_nomax == 0
wincmd _
endif
let s:zipfile_{winnr()}= curfile
" call Decho("exe e ".fnameescape("zipfile:".zipfile.'::'.fname))
exe "e ".fnameescape("zipfile:".zipfile.'::'.fname)
exe "noswapfile e ".fnameescape("zipfile:".zipfile.'::'.fname)
filetype detect
let &report= repkeep
@@ -339,7 +342,7 @@ fun! zip#Write(fname)
let binkeep= &binary
let eikeep = &ei
set binary ei=all
exe "e! ".fnameescape(zipfile)
exe "noswapfile e! ".fnameescape(zipfile)
call netrw#NetWrite(netzipfile)
let &ei = eikeep
let &binary = binkeep

View File

@@ -64,6 +64,7 @@ DOCS = \
os_amiga.txt \
os_beos.txt \
os_dos.txt \
os_haiku.txt \
os_mac.txt \
os_mint.txt \
os_msdos.txt \
@@ -149,6 +150,7 @@ DOCS = \
version7.txt \
version8.txt \
vi_diff.txt \
vim9.txt \
visual.txt \
windows.txt \
workshop.txt
@@ -203,6 +205,7 @@ HTMLS = \
os_amiga.html \
os_beos.html \
os_dos.html \
os_haiku.html \
os_mac.html \
os_mint.html \
os_msdos.html \
@@ -289,6 +292,7 @@ HTMLS = \
version8.html \
vi_diff.html \
vimindex.html \
vim9.html \
visual.html \
windows.html \
workshop.html
@@ -323,10 +327,7 @@ all: tags vim.man evim.man vimdiff.man vimtutor.man xxd.man $(CONVERTED)
# Use Vim to generate the tags file. Can only be used when Vim has been
# compiled and installed. Supports multiple languages.
vimtags: $(DOCS)
@if command -v $(VIMEXE); then \
$(VIMEXE) --clean -eX -u doctags.vim >/dev/null && \
echo "help tags updated"; \
else echo "vim executable $(VIMEXE) not found; help tags not updated"; fi
@$(VIMEXE) --clean -esX -V1 -u doctags.vim
# Use "doctags" to generate the tags file. Only works for English!
tags: doctags $(DOCS)
@@ -423,6 +424,9 @@ os_beos.txt:
os_dos.txt:
touch os_dos.txt
os_haiku.txt:
touch os_haiku.txt
os_mac.txt:
touch os_mac.txt

View File

@@ -1,4 +1,4 @@
*autocmd.txt* For Vim version 8.2. Last change: 2019 Dec 17
*autocmd.txt* For Vim version 8.2. Last change: 2020 Jan 26
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -374,7 +374,10 @@ Name triggered by ~
|MenuPopup| just before showing the popup menu
|CompleteChanged| after Insert mode completion menu changed
|CompleteDone| after Insert mode completion is done
|CompleteDonePre| after Insert mode completion is done, before clearing
info
|CompleteDone| after Insert mode completion is done, after clearing
info
|User| to be used in combination with ":doautocmd"
@@ -589,8 +592,8 @@ ColorSchemePre Before loading a color scheme. |:colorscheme|
CompleteChanged *CompleteChanged*
After each time the Insert mode completion
menu changed. Not fired on popup menu hide,
use |CompleteDone| for that. Never triggered
recursively.
use |CompleteDonePre| or |CompleteDone| for
that. Never triggered recursively.
Sets these |v:event| keys:
completed_item See |complete-items|.
@@ -606,10 +609,22 @@ CompleteChanged *CompleteChanged*
The size and position of the popup are also
available by calling |pum_getpos()|.
*CompleteDonePre*
CompleteDonePre After Insert mode completion is done. Either
when something was completed or abandoning
completion. |ins-completion|
|complete_info()| can be used, the info is
cleared after triggering CompleteDonePre.
The |v:completed_item| variable contains
information about the completed item.
*CompleteDone*
CompleteDone After Insert mode completion is done. Either
when something was completed or abandoning
completion. |ins-completion|
|complete_info()| cannot be used, the info is
cleared before triggering CompleteDone. Use
CompleteDonePre if you need it.
The |v:completed_item| variable contains
information about the completed item.

View File

@@ -1,4 +1,4 @@
*change.txt* For Vim version 8.2. Last change: 2019 Sep 28
*change.txt* For Vim version 8.2. Last change: 2020 Apr 11
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -209,7 +209,7 @@ gR Enter Virtual Replace mode: Each character you type
start insert (for {Visual} see |Visual-mode|).
*v_r*
{Visual}["x]r{char} Replace all selected characters by {char}.
{Visual}r{char} Replace all selected characters by {char}.
*v_C*
{Visual}["x]C Delete the highlighted lines [into register x] and
@@ -636,6 +636,8 @@ For other systems the tmpnam() library function is used.
|cmdline-ranges|.
See |:s_flags| for [flags].
The delimiter doesn't need to be /, see
|pattern-delimiter|.
:[range]s[ubstitute] [flags] [count]
:[range]&[&][flags] [count] *:&*
@@ -775,7 +777,7 @@ This deletes "TESTING" from all lines, but only one per line.
For compatibility with Vi these two exceptions are allowed:
"\/{string}/" and "\?{string}?" do the same as "//{string}/r".
"\&{string}&" does the same as "//{string}/".
*E146*
*pattern-delimiter* *E146*
Instead of the '/' which surrounds the pattern and replacement string, you
can use any other single-byte character, but not an alphanumeric character,
'\', '"' or '|'. This is useful if you want to include a '/' in the search
@@ -1456,7 +1458,7 @@ text. Put it in your autoload directory, e.g. ~/.vim/autoload/format.vim: >
func! format#Format()
" only reformat on explicit gq command
if mode() != 'n'
" fall back to Vims internal reformatting
" fall back to Vim's internal reformatting
return 1
endif
let lines = getline(v:lnum, v:lnum + v:count - 1)

View File

@@ -120,6 +120,9 @@ Use |ch_status()| to see if the channel could be opened.
{address} has the form "hostname:port". E.g., "localhost:8765".
When using an IPv6 address, enclose it within square brackets. E.g.,
"[2001:db8::1]:8765".
{options} is a dictionary with optional entries: *channel-open-options*
"mode" can be: *channel-mode*
@@ -621,6 +624,9 @@ ch_open({address} [, {options}]) *ch_open()*
{address} has the form "hostname:port", e.g.,
"localhost:8765".
When using an IPv6 address, enclose it within square brackets.
E.g., "[2001:db8::1]:8765".
If {options} is given it must be a |Dictionary|.
See |channel-open-options|.

View File

@@ -1,4 +1,4 @@
*cmdline.txt* For Vim version 8.2. Last change: 2019 Dec 17
*cmdline.txt* For Vim version 8.2. Last change: 2020 Feb 29
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -476,6 +476,10 @@ emulate it. For example, this mimics autolist=ambiguous:
This will find the longest match with the first 'wildchar', then list all
matching files with the next.
*complete-script-local-functions*
When completing user function names, prepend "s:" to find script-local
functions.
*suffixes*
For file name completion you can use the 'suffixes' option to set a priority
between files with almost the same name. If there are multiple matches,
@@ -586,6 +590,7 @@ followed by another Vim command:
:command
:cscope
:debug
:eval
:folddoopen
:folddoclosed
:function
@@ -933,8 +938,7 @@ These modifiers can be given, in this order:
directory.
:. Reduce file name to be relative to current directory, if
possible. File name is unmodified if it is not below the
current directory, but on MS-Windows the drive is removed if
it is the current drive.
current directory.
For maximum shortness, use ":~:.".
:h Head of the file name (the last component and any separators
removed). Cannot be used with :e, :r or :t.

View File

@@ -114,7 +114,7 @@ other settings apply.
The debugger features were added for use with Sun's Visual WorkShop Integrated
Programming Environment (ipe). However, they were done in as generic a manner
as possible so that integration with other debuggers could also these
as possible so that integration with other debuggers could also use these
features.
The following compile time preprocessor variables control the features:

View File

@@ -1,4 +1,4 @@
*develop.txt* For Vim version 8.2. Last change: 2019 Nov 22
*develop.txt* For Vim version 8.2. Last change: 2020 Apr 13
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -151,7 +151,8 @@ VIM IS... NOT *design-not*
A satirical way to say this: "Unlike Emacs, Vim does not attempt to include
everything but the kitchen sink, but some people say that you can clean one
with it. ;-)"
To use Vim with gdb see: http://www.agide.org and http://clewn.sf.net.
To use Vim with gdb see |terminal-debugger|. Other (older) tools can be
found at http://www.agide.org and http://clewn.sf.net.
- Vim is not a fancy GUI editor that tries to look nice at the cost of
being less consistent over all platforms. But functional GUI features are
welcomed.

View File

@@ -2,5 +2,12 @@
"
" Usage: vim -eX -u doctags.vim
helptags ++t .
try
helptags ++t .
echo 'help tags updated'
catch
echo v:exception
echo 'help tags failed update'
endtry
echo ''
qa!

View File

@@ -1,4 +1,4 @@
*eval.txt* For Vim version 8.2. Last change: 2019 Dec 17
*eval.txt* For Vim version 8.2. Last change: 2020 Apr 19
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -12,6 +12,10 @@ Note: Expression evaluation can be disabled at compile time. If this has been
done, the features in this document are not available. See |+eval| and
|no-eval-feature|.
This file is about the backwards compatible Vim script. For Vim9 script,
which executes much faster, supports type checking and much more, see
|vim9.txt|.
1. Variables |variables|
1.1 Variable types
1.2 Function references |Funcref|
@@ -44,8 +48,7 @@ There are ten types of variables:
*Number* *Integer*
Number A 32 or 64 bit signed number. |expr-number|
64-bit Numbers are available only when compiled with the
|+num64| feature.
The number of bits is available in |v:numbersize|.
Examples: -123 0x10 0177 0b1011
Float A floating point number. |floating-point-format| *Float*
@@ -1804,10 +1807,14 @@ v:errors Errors found by assert functions, such as |assert_true()|.
*v:event* *event-variable*
v:event Dictionary containing information about the current
|autocommand|. The dictionary is emptied when the |autocommand|
finishes, please refer to |dict-identity| for how to get an
independent copy of it.
|autocommand|. See the specific event for what it puts in
this dictionary.
The dictionary is emptied when the |autocommand| finishes,
please refer to |dict-identity| for how to get an independent
copy of it. Use |deepcopy()| if you want to keep the
information after the event triggers. Example: >
au TextYankPost * let g:foo = deepcopy(v:event)
<
*v:exception* *exception-variable*
v:exception The value of the exception most recently caught and not
finished. See also |v:throwpoint| and |throw-variables|.
@@ -1985,6 +1992,10 @@ v:null An empty String. Used to put "null" in JSON. See
That is so that eval() can parse the string back to the same
value. Read-only.
*v:numbersize* *numbersize-variable*
v:numbersize Number of bits in a Number. This is normally 64, but on some
systems it may be 32.
*v:oldfiles* *oldfiles-variable*
v:oldfiles List of file names that is loaded from the |viminfo| file on
startup. These are the files that Vim remembers marks for.
@@ -2408,6 +2419,7 @@ deletebufline({expr}, {first} [, {last}])
did_filetype() Number |TRUE| if FileType autocmd event used
diff_filler({lnum}) Number diff filler lines about {lnum}
diff_hlID({lnum}, {col}) Number diff highlighting at {lnum}/{col}
echoraw({expr}) none output {expr} as-is
empty({expr}) Number |TRUE| if {expr} is empty
environ() Dict return environment variables
escape({string}, {chars}) String escape {chars} in {string} with '\'
@@ -2505,15 +2517,15 @@ glob({expr} [, {nosuf} [, {list} [, {alllinks}]]])
glob2regpat({expr}) String convert a glob pat into a search pat
globpath({path}, {expr} [, {nosuf} [, {list} [, {alllinks}]]])
String do glob({expr}) for all dirs in {path}
has({feature}) Number |TRUE| if feature {feature} supported
has({feature} [, {check}]) Number |TRUE| if feature {feature} supported
has_key({dict}, {key}) Number |TRUE| if {dict} has entry {key}
haslocaldir([{winnr} [, {tabnr}]])
Number |TRUE| if the window executed |:lcd|
or |:tcd|
hasmapto({what} [, {mode} [, {abbr}]])
Number |TRUE| if mapping to {what} exists
histadd({history}, {item}) String add an item to a history
histdel({history} [, {item}]) String remove an item from a history
histadd({history}, {item}) Number add an item to a history
histdel({history} [, {item}]) Number remove an item from a history
histget({history} [, {index}]) String get the item {index} from a history
histnr({history}) Number highest index of a history
hlexists({name}) Number |TRUE| if highlight group {name} exists
@@ -2591,6 +2603,7 @@ matchstr({expr}, {pat} [, {start} [, {count}]])
matchstrpos({expr}, {pat} [, {start} [, {count}]])
List {count}'th match of {pat} in {expr}
max({expr}) Number maximum value of items in {expr}
menu_info({name} [, {mode}]) Dict get menu item information
min({expr}) Number minimum value of items in {expr}
mkdir({name} [, {path} [, {prot}]])
Number create directory {name}
@@ -2850,16 +2863,20 @@ test_ignore_error({expr}) none ignore a specific error
test_null_blob() Blob null value for testing
test_null_channel() Channel null value for testing
test_null_dict() Dict null value for testing
test_null_function() Funcref null value for testing
test_null_job() Job null value for testing
test_null_list() List null value for testing
test_null_partial() Funcref null value for testing
test_null_string() String null value for testing
test_unknown() any unknown value for testing
test_void() any void value for testing
test_option_not_set({name}) none reset flag indicating option was set
test_override({expr}, {val}) none test with Vim internal overrides
test_refcount({expr}) Number get the reference count of {expr}
test_scrollbar({which}, {value}, {dragging})
none scroll in the GUI for testing
test_setmouse({row}, {col}) none set the mouse position for testing
test_srand_seed([seed]) none set seed for testing srand()
test_settime({expr}) none set current time for testing
timer_info([{id}]) List information about timers
timer_pause({id}, {pause}) none pause or unpause a timer
@@ -2886,6 +2903,7 @@ win_execute({id}, {command} [, {silent}])
String execute {command} in window {id}
win_findbuf({bufnr}) List find windows containing {bufnr}
win_getid([{win} [, {tab}]]) Number get window ID for {win} in {tab}
win_gettype([{nr}]) String type of window {nr}
win_gotoid({expr}) Number go to window with ID {expr}
win_id2tabwin({expr}) List get tab and window nr from window ID
win_id2win({expr}) Number get window nr from window ID
@@ -3047,10 +3065,6 @@ argv([{nr} [, {winid}])
The {winid} argument specifies the window ID, see |argc()|.
For the Vim command line arguments see |v:argv|.
assert_ functions are documented here: |assert-functions-details|
asin({expr}) *asin()*
Return the arc sine of {expr} measured in radians, as a |Float|
in the range of [-pi/2, pi/2].
@@ -3068,6 +3082,10 @@ asin({expr}) *asin()*
{only available when compiled with the |+float| feature}
assert_ functions are documented here: |assert-functions-details|
atan({expr}) *atan()*
Return the principal value of the arc tangent of {expr}, in
the range [-pi/2, +pi/2] radians, as a |Float|.
@@ -3451,6 +3469,7 @@ chdir({dir}) *chdir()*
directory (|:tcd|) then changes the tabpage local
directory.
- Otherwise, changes the global directory.
{dir} must be a String.
If successful, returns the previous working directory. Pass
this to another chdir() to restore the directory.
On failure, returns an empty string.
@@ -3935,13 +3954,17 @@ diff_hlID({lnum}, {col}) *diff_hlID()*
Can also be used as a |method|: >
GetLnum()->diff_hlID(col)
environ() *environ()*
Return all of environment variables as dictionary. You can
check if an environment variable exists like this: >
:echo has_key(environ(), 'HOME')
< Note that the variable name may be CamelCase; to ignore case
use this: >
:echo index(keys(environ()), 'HOME', 0, 1) != -1
echoraw({expr}) *echoraw()*
Output {expr} as-is, including unprintable characters. This
can be used to output a terminal code. For example, to disable
modifyOtherKeys: >
call echoraw(&t_TE)
< and to enable it again: >
call echoraw(&t_TI)
< Use with care, you can mess up the terminal this way.
empty({expr}) *empty()*
Return the Number 1 if {expr} is empty, zero otherwise.
@@ -3960,6 +3983,14 @@ empty({expr}) *empty()*
Can also be used as a |method|: >
mylist->empty()
environ() *environ()*
Return all of environment variables as dictionary. You can
check if an environment variable exists like this: >
:echo has_key(environ(), 'HOME')
< Note that the variable name may be CamelCase; to ignore case
use this: >
:echo index(keys(environ()), 'HOME', 0, 1) != -1
escape({string}, {chars}) *escape()*
Escape the characters in {chars} that occur in {string} with a
backslash. Example: >
@@ -4074,8 +4105,12 @@ exists({expr}) The result is a Number, which is |TRUE| if {expr} is defined,
string)
*funcname built-in function (see |functions|)
or user defined function (see
|user-functions|). Also works for a
variable that is a Funcref.
|user-functions|) that is implemented.
Also works for a variable that is a
Funcref.
?funcname built-in function that could be
implemented; to be used to check if
"funcname" is valid
varname internal variable (see
|internal-variables|). Also works
for |curly-braces-names|, |Dictionary|
@@ -4330,6 +4365,8 @@ feedkeys({string} [, {mode}]) *feedkeys()*
'L' Lowlevel input. Only works for Unix or when using the
GUI. Keys are used as if they were coming from the
terminal. Other flags are not used. *E980*
When a CTRL-C interrupts and 't' is included it sets
the internal "got_int" flag.
'i' Insert the string instead of appending (see above).
'x' Execute commands until typeahead is empty. This is
similar to using ":normal!". You can call feedkeys()
@@ -5102,10 +5139,11 @@ getcompletion({pat}, {type} [, {filtered}]) *getcompletion()*
<
*getcurpos()*
getcurpos() Get the position of the cursor. This is like getpos('.'), but
includes an extra item in the list:
[bufnum, lnum, col, off, curswant] ~
includes an extra "curswant" item in the list:
[0, lnum, col, off, curswant] ~
The "curswant" number is the preferred column when moving the
cursor vertically. Also see |getpos()|.
The first "bufnum" item is always zero.
This can be used to save and restore the cursor position: >
let save_cursor = getcurpos()
@@ -5659,7 +5697,7 @@ getwininfo([{winid}]) *getwininfo()*
GetWinnr()->getwininfo()
getwinpos([{timeout}]) *getwinpos()*
The result is a list with two numbers, the result of
The result is a List with two numbers, the result of
|getwinposx()| and |getwinposy()| combined:
[x-pos, y-pos]
{timeout} can be used to specify how long to wait in msec for
@@ -5798,11 +5836,32 @@ globpath({path}, {expr} [, {nosuf} [, {list} [, {alllinks}]]])
GetExpr()->globpath(&rtp)
<
*has()*
has({feature}) The result is a Number, which is 1 if the feature {feature} is
supported, zero otherwise. The {feature} argument is a
string. See |feature-list| below.
has({feature} [, {check}])
When {check} is omitted or is zero: The result is a Number,
which is 1 if the feature {feature} is supported, zero
otherwise. The {feature} argument is a string, case is
ignored. See |feature-list| below.
When {check} is present and not zero: The result is a Number,
which is 1 if the feature {feature} could ever be supported,
zero otherwise. This is useful to check for a typo in
{feature} and to detect dead code. Keep in mind that an older
Vim version will not know about a feature added later and
features that have been abandoned will not be know by the
current Vim version.
Also see |exists()|.
Note that to skip code that has a syntax error when the
feature is not available, Vim may skip the rest of the line
and miss a following `endif`. Therfore put the `endif` on a
separate line: >
if has('feature')
let x = this->breaks->without->the->feature
endif
< If the `endif` would be moved to the second line as "| endif" it
would not be found.
has_key({dict}, {key}) *has_key()*
The result is a Number, which is 1 if |Dictionary| {dict} has
@@ -6769,6 +6828,7 @@ maparg({name} [, {mode} [, {abbr} [, {dict}]]]) *maparg()*
"rhs" The {rhs} of the mapping as typed.
"silent" 1 for a |:map-silent| mapping, else 0.
"noremap" 1 if the {rhs} of the mapping is not remappable.
"script" 1 if mapping was defined with <script>.
"expr" 1 for an expression mapping (|:map-<expr>|).
"buffer" 1 for a buffer local mapping (|:map-local|).
"mode" Modes for which the mapping is defined. In
@@ -6885,6 +6945,10 @@ match({expr}, {pat} [, {start} [, {count}]]) *match()*
The 'ignorecase' option is used to set the ignore-caseness of
the pattern. 'smartcase' is NOT used. The matching is always
done like 'magic' is set and 'cpoptions' is empty.
Note that a match at the start is preferred, thus when the
pattern is using "*" (any number of matches) it tends to find
zero matches at the start instead of a number of matches
further down in the text.
Can also be used as a |method|: >
GetList()->match('word')
@@ -7082,22 +7146,83 @@ matchstrpos({expr}, {pat} [, {start} [, {count}]]) *matchstrpos()*
Can also be used as a |method|: >
GetText()->matchstrpos('word')
<
*max()*
max({expr}) Return the maximum value of all items in {expr}.
{expr} can be a list or a dictionary. For a dictionary,
it returns the maximum of all values in the dictionary.
If {expr} is neither a list nor a dictionary, or one of the
{expr} can be a List or a Dictionary. For a Dictionary,
it returns the maximum of all values in the Dictionary.
If {expr} is neither a List nor a Dictionary, or one of the
items in {expr} cannot be used as a Number this results in
an error. An empty |List| or |Dictionary| results in zero.
Can also be used as a |method|: >
mylist->max()
menu_info({name} [, {mode}]) *menu_info()*
Return information about the specified menu {name} in
mode {mode}. The menu name should be specified without the
shortcut character ('&').
{mode} can be one of these strings:
"n" Normal
"v" Visual (including Select)
"o" Operator-pending
"i" Insert
"c" Cmd-line
"s" Select
"x" Visual
"t" Terminal-Job
"" Normal, Visual and Operator-pending
"!" Insert and Cmd-line
When {mode} is omitted, the modes for "" are used.
Returns a |Dictionary| containing the following items:
accel menu item accelerator text |menu-text|
display display name (name without '&')
enabled v:true if this menu item is enabled
Refer to |:menu-enable|
icon name of the icon file (for toolbar)
|toolbar-icon|
iconidx index of a built-in icon
modes modes for which the menu is defined. In
addition to the modes mentioned above, these
characters will be used:
" " Normal, Visual and Operator-pending
name menu item name.
noremenu v:true if the {rhs} of the menu item is not
remappable else v:false.
priority menu order priority |menu-priority|
rhs right-hand-side of the menu item. The returned
string has special characters translated like
in the output of the ":menu" command listing.
When the {rhs} of a menu item is empty, then
"<Nop>" is returned.
script v:true if script-local remapping of {rhs} is
allowed else v:false. See |:menu-script|.
shortcut shortcut key (character after '&' in
the menu name) |menu-shortcut|
silent v:true if the menu item is created
with <silent> argument |:menu-silent|
submenus |List| containing the names of
all the submenus. Present only if the menu
item has submenus.
Returns an empty dictionary if the menu item is not found.
Examples: >
:echo menu_info('Edit.Cut')
:echo menu_info('File.Save', 'n')
<
Can also be used as a |method|: >
GetMenuName()->menu_info('v')
< *min()*
min({expr}) Return the minimum value of all items in {expr}.
{expr} can be a list or a dictionary. For a dictionary,
it returns the minimum of all values in the dictionary.
If {expr} is neither a list nor a dictionary, or one of the
{expr} can be a List or a Dictionary. For a Dictionary,
it returns the minimum of all values in the Dictionary.
If {expr} is neither a List nor a Dictionary, or one of the
items in {expr} cannot be used as a Number this results in
an error. An empty |List| or |Dictionary| results in zero.
@@ -7643,7 +7768,7 @@ range({expr} [, {max} [, {stride}]]) *range()*
GetExpr()->range()
<
rand([{expr}]) *rand()*
rand([{expr}]) *rand()* *random*
Return a pseudo-random Number generated with an xoshiro128**
algorithm using seed {expr}. The returned number is 32 bits,
also on 64 bits systems, for consistency.
@@ -8581,7 +8706,12 @@ setpos({expr}, {list})
setqflist({list} [, {action} [, {what}]]) *setqflist()*
Create or replace or add to the quickfix list.
When {what} is not present, use the items in {list}. Each
If the optional {what} dictionary argument is supplied, then
only the items listed in {what} are set. The first {list}
argument is ignored. See below for the supported items in
{what}.
When {what} is not present, the items in {list} or used. Each
item must be a dictionary. Non-dictionary items in {list} are
ignored. Each dictionary item can contain the following
entries:
@@ -8636,10 +8766,7 @@ setqflist({list} [, {action} [, {what}]]) *setqflist()*
freed. To add a new quickfix list at the end of the stack,
set "nr" in {what} to "$".
If the optional {what} dictionary argument is supplied, then
only the items listed in {what} are set. The first {list}
argument is ignored. The following items can be specified in
{what}:
The following items can be specified in dictionary {what}:
context quickfix list context. See |quickfix-context|
efm errorformat to use when parsing text from
"lines". If this is not present, then the
@@ -8686,6 +8813,7 @@ setqflist({list} [, {action} [, {what}]]) *setqflist()*
*setreg()*
setreg({regname}, {value} [, {options}])
Set the register {regname} to {value}.
If {regname} is "" or "@", the unnamed register '"' is used.
{value} may be any value returned by |getreg()|, including
a |List|.
If {options} contains "a" or {regname} is upper case,
@@ -8774,26 +8902,28 @@ settagstack({nr}, {dict} [, {action}]) *settagstack()*
{nr} can be the window number or the |window-ID|.
For a list of supported items in {dict}, refer to
|gettagstack()|
|gettagstack()|. "curidx" takes effect before changing the tag
stack.
*E962*
If {action} is not present or is set to 'r', then the tag
stack is replaced. If {action} is set to 'a', then new entries
from {dict} are pushed onto the tag stack.
How the tag stack is modified depends on the {action}
argument:
- If {action} is not present or is set to 'r', then the tag
stack is replaced.
- If {action} is set to 'a', then new entries from {dict} are
pushed (added) onto the tag stack.
- If {action} is set to 't', then all the entries from the
current entry in the tag stack or "curidx" in {dict} are
removed and then new entries are pushed to the stack.
The current index is set to one after the length of the tag
stack after the modification.
Returns zero for success, -1 for failure.
Examples:
Set current index of the tag stack to 4: >
call settagstack(1005, {'curidx' : 4})
< Empty the tag stack of window 3: >
Examples (for more examples see |tagstack-examples||):
Empty the tag stack of window 3: >
call settagstack(3, {'items' : []})
< Push a new item onto the tag stack: >
let pos = [bufnr('myfile.txt'), 10, 1, 0]
let newtag = [{'tagname' : 'mytag', 'from' : pos}]
call settagstack(2, {'items' : newtag}, 'a')
< Save and restore the tag stack: >
let stack = gettagstack(1003)
" do something else
@@ -8889,6 +9019,8 @@ simplify({filename}) *simplify()*
directory. In order to resolve all the involved symbolic
links before simplifying the path name, use |resolve()|.
Can also be used as a |method|: >
GetName()->simplify()
sin({expr}) *sin()*
Return the sine of {expr}, measured in radians, as a |Float|.
@@ -10309,6 +10441,23 @@ win_getid([{win} [, {tab}]]) *win_getid()*
Can also be used as a |method|: >
GetWinnr()->win_getid()
win_gettype([{nr}]) *win_gettype()*
Return the type of the window:
"popup" popup window |popup|
"command" command-line window |cmdwin|
(empty) normal window
"unknown" window {nr} not found
When {nr} is omitted return the type of the current window.
When {nr} is given return the type of this window by number or
|window-ID|.
Also see the 'buftype' option. When running a terminal in a
popup window then 'buftype' is "terminal" and win_gettype()
returns "popup".
win_gotoid({expr}) *win_gotoid()*
Go to window with ID {expr}. This may also change the current
tabpage.
@@ -10350,6 +10499,7 @@ win_splitmove({nr}, {target} [, {options}]) *win_splitmove()*
then closing {nr}.
Both {nr} and {target} can be window numbers or |window-ID|s.
Both must be in the current tab page.
Returns zero for success, non-zero for failure.
@@ -10365,6 +10515,7 @@ win_splitmove({nr}, {target} [, {options}]) *win_splitmove()*
Can also be used as a |method|: >
GetWinid()->win_splitmove(target)
<
*winbufnr()*
winbufnr({nr}) The result is a Number, which is the number of the buffer
associated with window {nr}. {nr} can be the window number or
@@ -10426,11 +10577,12 @@ winlayout([{tabnr}]) *winlayout()*
" Two horizontally split windows
:echo winlayout()
['col', [['leaf', 1000], ['leaf', 1001]]]
" Three horizontally split windows, with two
" vertically split windows in the middle window
" The second tab page, with three horizontally split
" windows, with two vertically split windows in the
" middle window
:echo winlayout(2)
['col', [['leaf', 1002], ['row', ['leaf', 1003],
['leaf', 1001]]], ['leaf', 1000]]
['col', [['leaf', 1002], ['row', [['leaf', 1003],
['leaf', 1001]]], ['leaf', 1000]]]
<
Can also be used as a |method|: >
GetTabnr()->winlayout()
@@ -10445,6 +10597,7 @@ winline() The result is a Number, which is the screen line of the cursor
*winnr()*
winnr([{arg}]) The result is a Number, which is the number of the current
window. The top window has number 1.
Returns zero for a popup window.
The optional argument {arg} supports the following values:
$ the number of the last window (the window
@@ -10618,7 +10771,7 @@ xor({expr}, {expr}) *xor()*
<
*feature-list*
There are four types of features:
There are three types of features:
1. Features that are only supported when they have been enabled when Vim
was compiled |+feature-list|. Example: >
:if has("cindent")
@@ -10658,6 +10811,7 @@ browsefilter Compiled with support for |browsefilter|.
bsd Compiled on an OS in the BSD family (excluding macOS).
builtin_terms Compiled with some builtin terminals.
byte_offset Compiled with support for 'o' in 'statusline'
channel Compiled with support for |channel| and |job|
cindent Compiled with 'cindent' support.
clientserver Compiled with remote invocation support |clientserver|.
clipboard Compiled with 'clipboard' support.
@@ -10704,17 +10858,21 @@ gui_gnome Compiled with Gnome support (gui_gtk is also defined).
gui_gtk Compiled with GTK+ GUI (any version).
gui_gtk2 Compiled with GTK+ 2 GUI (gui_gtk is also defined).
gui_gtk3 Compiled with GTK+ 3 GUI (gui_gtk is also defined).
gui_haiku Compiled with Haiku GUI.
gui_mac Compiled with Macintosh GUI.
gui_motif Compiled with Motif GUI.
gui_photon Compiled with Photon GUI.
gui_running Vim is running in the GUI, or it will start soon.
gui_win32 Compiled with MS Windows Win32 GUI.
gui_win32s idem, and Win32s system being used (Windows 3.1)
haiku Haiku version of Vim.
hangul_input Compiled with Hangul input support. |hangul|
hpux HP-UX version of Vim.
iconv Can use iconv() for conversion.
insert_expand Compiled with support for CTRL-X expansion commands in
Insert mode. (always true)
job Compiled with support for |channel| and |job|
ipv6 Compiled with support for IPv6 networking in |channel|.
jumplist Compiled with |jumplist| support.
keymap Compiled with 'keymap' support.
lambda Compiled with |lambda| support.
@@ -10769,7 +10927,7 @@ python_dynamic Python 2.x interface is dynamically loaded. |has-python|
python3 Python 3.x interface available. |has-python|
python3_compiled Compiled with Python 3.x interface. |has-python|
python3_dynamic Python 3.x interface is dynamically loaded. |has-python|
pythonx Compiled with |python_x| interface. |has-pythonx|
pythonx Python 2.x and/or 3.x interface available. |python_x|
qnx QNX version of Vim.
quickfix Compiled with |quickfix| support.
reltime Compiled with |reltime()| support.
@@ -10882,6 +11040,9 @@ New functions can be defined. These can be called just like builtin
functions. The function executes a sequence of Ex commands. Normal mode
commands can be executed with the |:normal| command.
This section is about the legacy functions. For the Vim9 functions, which
execute much faster, support type checking and more, see |vim9.txt|.
The function name must start with an uppercase letter, to avoid confusion with
builtin functions. To prevent from using the same name in different scripts
avoid obvious, short names. A good habit is to start the function name with
@@ -11076,8 +11237,8 @@ It is allowed to define another function inside a function body.
You can provide default values for positional named arguments. This makes
them optional for function calls. When a positional argument is not
specified at a call, the default expression is used to initialize it.
This only works for functions declared with `:function`, not for lambda
expressions |expr-lambda|.
This only works for functions declared with `:function` or `:def`, not for
lambda expressions |expr-lambda|.
Example: >
function Something(key, value = 10)
@@ -11115,9 +11276,10 @@ Example that does NOT work: >
:function NoGood(first = a:second, second = 10)
:endfunction
<
When not using "...", the number of arguments in a function call must be equal
to the number of mandatory named arguments. When using "...", the number of
arguments may be larger.
When not using "...", the number of arguments in a function call must be at
least equal to the number of mandatory named arguments. When using "...", the
number of arguments may be larger than the total of mandatory and optional
arguments.
*local-variables*
Inside a function local variables can be used. These will disappear when the
@@ -11474,7 +11636,7 @@ This does NOT work: >
Like above, but append/add/subtract the value for each
|List| item.
:let [{name}, ..., ; {lastname}] = {expr1}
:let [{name}, ..., ; {lastname}] = {expr1} *E452*
Like |:let-unpack| above, but the |List| may have more
items than there are names. A list of the remaining
items is assigned to {lastname}. If there are no
@@ -11794,11 +11956,11 @@ text...
":endtry" is reached thereafter, the next
(dynamically) surrounding ":try" is checked for
a corresponding ":finally" etc. Then the script
processing is terminated. (Whether a function
definition has an "abort" argument does not matter.)
processing is terminated. Whether a function
definition has an "abort" argument does not matter.
Example: >
:try | edit too much | finally | echo "cleanup" | endtry
:echo "impossible" " not reached, script terminated above
try | call Unknown() | finally | echomsg "cleanup" | endtry
echomsg "not reached"
<
Moreover, an error or interrupt (dynamically) inside
":try" and ":endtry" is converted to an exception. It
@@ -11815,8 +11977,8 @@ text...
error exception is not caught, always beginning with
the error number.
Examples: >
:try | sleep 100 | catch /^Vim:Interrupt$/ | endtry
:try | edit | catch /^Vim(edit):E\d\+/ | echo "error" | endtry
try | sleep 100 | catch /^Vim:Interrupt$/ | endtry
try | edit | catch /^Vim(edit):E\d\+/ | echo "error" | endtry
<
*:cat* *:catch* *E603* *E604* *E605*
:cat[ch] /{pattern}/ The following commands until the next |:catch|,
@@ -11971,6 +12133,9 @@ text...
these are hard to recognize and therefore not to be
used.
The command cannot be followed by "|" and another
command, since "|" is seen as part of the expression.
*:exe* *:execute*
:exe[cute] {expr1} .. Executes the string that results from the evaluation

0
runtime/doc/evim-it.1 Executable file → Normal file
View File

View File

@@ -307,13 +307,13 @@ all loaded. For example, if this command: >
produces this output:
runtimepath=/etc/vim,~/.vim,/usr/local/share/vim/vim60 ~
runtimepath=/etc/vim,~/.vim,/usr/local/share/vim/vim82 ~
then Vim will load all plugins in these directories and below:
/etc/vim/plugin/ ~
~/.vim/plugin/ ~
/usr/local/share/vim/vim60/plugin/ ~
/usr/local/share/vim/vim82/plugin/ ~
Note that the last one is the value of $VIMRUNTIME which has been expanded.

View File

@@ -1,4 +1,4 @@
*gui.txt* For Vim version 8.2. Last change: 2019 Nov 16
*gui.txt* For Vim version 8.2. Last change: 2020 Mar 16
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -99,6 +99,7 @@ Recommended place for your personal GUI initializations:
or $VIM/_gvimrc
Amiga s:.gvimrc, home:.gvimrc, home:vimfiles:gvimrc
or $VIM/.gvimrc
Haiku $HOME/config/settings/vim/gvimrc
The personal initialization files are searched in the order specified above
and only the first one that is found is read.
@@ -577,9 +578,11 @@ tooltips for menus. See |terminal-typing|.
Special characters in a menu name:
*menu-shortcut*
& The next character is the shortcut key. Make sure each
shortcut key is only used once in a (sub)menu. If you want to
insert a literal "&" in the menu name use "&&".
*menu-text*
<Tab> Separates the menu name from right-aligned text. This can be
used to show the equivalent typed command. The text "<Tab>"
can be used here for convenience. If you are using a real
@@ -852,6 +855,8 @@ Special characters in the list, just before the rhs:
* The menu was defined with "nore" to disallow remapping.
& The menu was defined with "<script>" to allow remapping script-local
mappings only.
s The menu was defined with "<silent>" to avoid showing what it is
mapped to when triggered.
- The menu was disabled.
Note that hitting <Tab> while entering a menu name after a menu command may
@@ -953,7 +958,7 @@ item for the keyword under the cursor. The register "z" is used. >
mappings, or put these lines in your gvimrc; "<C-R>" is CTRL-R, "<CR>" is
the <CR> key. |<>|)
*tooltips* *menu-tips*
5.8 Tooltips & Menu tips
See section |42.4| in the user manual.

View File

@@ -1,4 +1,4 @@
*gui_w32.txt* For Vim version 8.2. Last change: 2019 May 05
*gui_w32.txt* For Vim version 8.2. Last change: 2020 Mar 25
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -106,16 +106,15 @@ when you have got a new version):
You can also install Vim in the "Send To" menu:
1. Start a Windows Explorer
2. Navigate to your sendto directory:
Windows NT: %windir%\profiles\%user%\sendto (e.g.
"c:\winnt\profiles\mattha\sendto")
Windows XP: C:\Documents and Settings\%user%\SendTo
Windows Vista: C:\Users\%user%\AppData\Roaming\Microsoft\Windows\SendTo .
3. Right-click in the file pane and select New->Shortcut
4. Follow the shortcut wizard, using the full path to VIM/GVIM.
When you 'send a file to Vim', Vim changes to that file's directory. Note,
however, that any long directory names will appear in their short (MS-Windows)
form. This is a limitation of the Windows "Send To" mechanism.
however, that any long directory names will appear in their short (MS-DOS)
form on some Windows versions. This is a limitation of the Windows "Send To"
mechanism.
*notepad*
You could replace notepad.exe with gvim.exe, but that has a few side effects.
@@ -169,8 +168,8 @@ you can.
Vim Shell Extension
HKEY_LOCAL_MACHINE\Software\Vim\Gvim
path {path}\gvim.exe
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall\vim 5.6
DisplayName Vim 5.6: Edit with Vim popup menu entry
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall\vim 8.2
DisplayName Vim 8.2: Edit with Vim popup menu entry
UninstallString {path}\uninstall.exe
Replace {path} with the path that leads to the executable.
@@ -200,7 +199,7 @@ With..." menu. This means you can use Vim to edit many files. Not every file
One reason to add this is to be able to edit HTML files directly from Internet
Explorer. To enable this use the "Tools" menu, "Internet Options..." entry.
In the dialog select the "Programs" tab and select Vim in the "HTML editor"
choice. If it's not there than installing didn't work properly.
choice. If it's not there then installing didn't work properly.
Doing this manually can be done with this script:
@@ -214,7 +213,7 @@ REGEDIT4
[HKEY_CLASSES_ROOT\Applications\gvim.exe\shell\edit]
[HKEY_CLASSES_ROOT\Applications\gvim.exe\shell\edit\command]
@="c:\\vim\\vim62\\gvim.exe \"%1\""
@="c:\\vim\\vim82\\gvim.exe \"%1\""
[HKEY_CLASSES_ROOT\.htm\OpenWithList\gvim.exe]
@@ -222,7 +221,7 @@ REGEDIT4
----------------------------------------------------------
Change the "c:\\vim\\vim62" bit to where gvim.exe is actually located.
Change the "c:\\vim\\vim82" bit to where gvim.exe is actually located.
To uninstall this run the Vim uninstall program or manually delete the
registry entries with "regedit".
@@ -457,8 +456,12 @@ See the Make_mvc.mak file for instructions, search for XPM.
To try out if XPM support works do this: >
:help
:exe 'sign define vimxpm icon=' . $VIMRUNTIME . '\\vim16x16.xpm'
:exe 'sign place 1 line=1 name=vimxpm file=' . expand('%:p')
:let runtime = escape($VIMRUNTIME, ' \')
:exe 'sign define vimxpm icon=' .. runtime .. '\\vim16x16.xpm'
:exe 'sign place 1 line=1 name=vimxpm file=' .. expand('%:p')
<
You may need to get the vim16x16.xpm file from github:
https://github.com/vim/vim/blob/master/runtime/vim16x16.xpm
vim:tw=78:sw=4:ts=8:noet:ft=help:norl:

View File

@@ -1,4 +1,4 @@
*help.txt* For Vim version 8.2. Last change: 2019 Jul 21
*help.txt* For Vim version 8.2. Last change: 2020 Apr 05
VIM - main help file
k
@@ -31,7 +31,7 @@ Get specific help: It is possible to go directly to whatever you want help
help entries for "word".
Or use ":helpgrep word". |:helpgrep|
Getting started: Do the Vim tutor, a 20 minute interactive training for the
Getting started: Do the Vim tutor, a 30-minute interactive course for the
basic commands, see |vimtutor|.
Read the user manual from start to end: |usr_01.txt|
@@ -41,7 +41,7 @@ through the help of many others. See |credits|.
*doc-file-list* *Q_ct*
BASIC:
|quickref| Overview of the most common commands you will use
|tutor| 20 minutes training course for beginners
|tutor| 30-minute interactive course for beginners
|copying| About copyrights
|iccf| Helping poor children in Uganda
|sponsor| Sponsor Vim development, become a registered Vim user
@@ -144,7 +144,7 @@ Special issues ~
|remote.txt| using Vim as a server or client
|term.txt| using different terminals and mice
|terminal.txt| Terminal window support
|popup.txt| popop window support
|popup.txt| popup window support
Programming language support ~
|indent.txt| automatic indenting for C and other languages
@@ -197,16 +197,17 @@ Remarks about specific systems ~
|os_390.txt| OS/390 Unix
|os_amiga.txt| Amiga
|os_beos.txt| BeOS and BeBox
|os_dos.txt| MS-DOS and MS-Windows NT/95 common items
|os_dos.txt| MS-DOS and MS-Windows common items
|os_mac.txt| Macintosh
|os_mint.txt| Atari MiNT
|os_msdos.txt| MS-DOS (plain DOS and DOS box under Windows)
|os_os2.txt| OS/2
|os_qnx.txt| QNX
|os_risc.txt| RISC-OS
|os_haiku.txt| Haiku
|os_unix.txt| Unix
|os_vms.txt| VMS
|os_win32.txt| MS-Windows 95/98/NT
|os_win32.txt| MS-Windows
*standard-plugin-list*
Standard plugins ~
|pi_getscript.txt| Downloading latest version of Vim scripts

View File

@@ -1,4 +1,4 @@
*helphelp.txt* For Vim version 8.2. Last change: 2019 Oct 18
*helphelp.txt* For Vim version 8.2. Last change: 2020 Mar 01
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -368,4 +368,15 @@ highlighting. So do these:
You can find the details in $VIMRUNTIME/syntax/help.vim
*inclusion*
Some people make a big deal about using "his" when referring to the user,
thinking it means we assume the user is male. That is of course not the case,
it's just a habit of writing help text, which quite often is many years old.
Also, a lot of the text is written by contributors for who English is not
their first language. We do not make any assumptions about the gender of the
user, no matter how the text is phrased. And we do not want to waste time on
this discussion. The goal is that the reader understands how Vim works, the
exact wording is secondary.
vim:tw=78:ts=8:noet:ft=help:norl:

View File

@@ -32,7 +32,7 @@ Examples:
:lua local curbuf = vim.buffer() curbuf[7] = "line #7"
<
:[range]lua << [endmarker]
:[range]lua << [trim] [{endmarker}]
{script}
{endmarker}
Execute Lua script {script}.
@@ -40,10 +40,9 @@ Examples:
feature wasn't compiled in. To avoid errors, see
|script-here|.
The {endmarker} must NOT be preceded by any white space.
If [endmarker] is omitted from after the "<<", a dot '.' must be used after
{script}, like for the |:append| and |:insert| commands.
{script}, like for the |:append| and |:insert| commands. Refer to
|:let-heredoc| for more information.
This form of the |:lua| command is mainly useful for including Lua code
in Vim scripts.

View File

@@ -39,7 +39,7 @@ To speed up the process, you might also want to use --disable-gracket and
:[range]mz[scheme] {stmt}
Execute MzScheme statement {stmt}.
:[range]mz[scheme] << [endmarker]
:[range]mz[scheme] << [trim] [{endmarker}]
{script}
{endmarker}
Execute inlined MzScheme script {script}.
@@ -47,12 +47,11 @@ To speed up the process, you might also want to use --disable-gracket and
feature wasn't compiled in. To avoid errors, see
|script-here|.
The {endmarker} below the {script} must NOT be
preceded by any white space.
If [endmarker] is omitted from after the "<<", a dot
'.' must be used after {script}, like for the
|:append| and |:insert| commands.
|:append| and |:insert| commands. Refer to
|:let-heredoc| for more information.
*:mzfile* *:mzf*
:[range]mzf[ile] {file} Execute the MzScheme script in {file}.

View File

@@ -55,7 +55,7 @@ The ActiveState one should work, Strawberry Perl is a good alternative.
working: >
:perl VIM::Msg("Hello")
:pe[rl] << [endmarker]
:pe[rl] << [trim] [{endmarker}]
{script}
{endmarker}
Execute Perl script {script}.

View File

@@ -34,7 +34,7 @@ Both can be available at the same time, but read |python-2-and-3|.
the `:python` command is working: >
:python print "Hello"
:[range]py[thon] << [endmarker]
:[range]py[thon] << [trim] [{endmarker}]
{script}
{endmarker}
Execute Python script {script}.
@@ -42,10 +42,9 @@ Both can be available at the same time, but read |python-2-and-3|.
feature wasn't compiled in. To avoid errors, see
|script-here|.
The {endmarker} below the {script} must NOT be preceded by any white space.
If [endmarker] is omitted from after the "<<", a dot '.' must be used after
{script}, like for the |:append| and |:insert| commands.
{script}, like for the |:append| and |:insert| commands. Refer to
|:let-heredoc| for more information.
This form of the |:python| command is mainly useful for including python code
in Vim scripts.
@@ -768,12 +767,12 @@ match the Python 2.x or Python 3 version Vim was compiled with.
*:py3* *:python3*
:[range]py3 {stmt}
:[range]py3 << [endmarker]
:[range]py3 << [trim] [{endmarker}]
{script}
{endmarker}
:[range]python3 {stmt}
:[range]python3 << [endmarker]
:[range]python3 << [trim] [{endmarker}]
{script}
{endmarker}
The `:py3` and `:python3` commands work similar to `:python`. A

View File

@@ -28,15 +28,15 @@ downloading Ruby there.
:rub[y] {cmd} Execute Ruby command {cmd}. A command to try it out: >
:ruby print "Hello"
:rub[y] << [endmarker]
:rub[y] << [trim] [{endmarker}]
{script}
{endmarker}
Execute Ruby script {script}.
The {endmarker} after {script} must NOT be preceded by
any white space.
If [endmarker] is omitted, it defaults to a dot '.'
like for the |:append| and |:insert| commands.
like for the |:append| and |:insert| commands. Refer
to |:let-heredoc| for more information.
This form of the |:ruby| command is mainly useful for
including ruby code in vim scripts.

View File

@@ -30,7 +30,7 @@ comments, ideas etc to <Ingo.Wilken@informatik.uni-oldenburg.de>
is working: >
:tcl puts "Hello"
:[range]tc[l] << [endmarker]
:[range]tc[l] << [trim] [{endmarker}]
{script}
{endmarker}
Execute Tcl script {script}.
@@ -38,10 +38,9 @@ comments, ideas etc to <Ingo.Wilken@informatik.uni-oldenburg.de>
wasn't compiled in. To avoid errors, see
|script-here|.
The {endmarker} after {script} must NOT be preceded by any white space.
If [endmarker] is omitted from after the "<<", a dot '.' must be used after
{script}, like for the |:append| and |:insert| commands.
{script}, like for the |:append| and |:insert| commands. Refer to
|:let-heredoc| for more information.
This form of the |:tcl| command is mainly useful for including tcl code in Vim
scripts.

View File

@@ -1,4 +1,4 @@
*index.txt* For Vim version 8.2. Last change: 2019 Sep 27
*index.txt* For Vim version 8.2. Last change: 2020 Mar 27
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -73,6 +73,8 @@ tag char action in Insert mode ~
the cursor
|i_CTRL-Q| CTRL-Q same as CTRL-V, unless used for terminal
control flow
|i_CTRL-SHIFT-Q| CTRL-SHIFT-Q {char}
like CTRL-Q unless |modifyOtherKeys| is active
|i_CTRL-R| CTRL-R {register}
insert the contents of a register
|i_CTRL-R_CTRL-R| CTRL-R CTRL-R {register}
@@ -89,6 +91,8 @@ tag char action in Insert mode ~
|i_CTRL-U| CTRL-U delete all entered characters in the current
line
|i_CTRL-V| CTRL-V {char} insert next non-digit literally
|i_CTRL-SHIFT-V| CTRL-SHIFT-V {char}
like CTRL-V unless |modifyOtherKeys| is active
|i_CTRL-V_digit| CTRL-V {number} insert three digit decimal number as a single
byte.
|i_CTRL-W| CTRL-W delete word before the cursor
@@ -1256,11 +1260,12 @@ tag command action ~
|:cunmenu| :cunme[nu] remove menu for Command-line mode
|:cwindow| :cw[indow] open or close quickfix window
|:delete| :d[elete] delete lines
|:delmarks| :delm[arks] delete marks
|:debug| :deb[ug] run a command in debugging mode
|:debuggreedy| :debugg[reedy] read debug mode commands from normal input
|:def| :def define a Vim9 user function
|:delcommand| :delc[ommand] delete user-defined command
|:delfunction| :delf[unction] delete a user function
|:delmarks| :delm[arks] delete marks
|:diffupdate| :dif[fupdate] update 'diff' buffers
|:diffget| :diffg[et] remove differences in current buffer
|:diffoff| :diffo[ff] switch off diff mode
@@ -1270,9 +1275,9 @@ tag command action ~
|:diffthis| :diffthis make current window a diff window
|:digraphs| :dig[raphs] show or enter digraphs
|:display| :di[splay] display registers
|:disassemble| :disa[ssemble] disassemble Vim9 user function
|:djump| :dj[ump] jump to #define
|:dl| :dl short for |:delete| with the 'l' flag
|:del| :del[ete]l short for |:delete| with the 'l' flag
|:dlist| :dli[st] list #defines
|:doautocmd| :do[autocmd] apply autocommands to current buffer
|:doautoall| :doautoa[ll] apply autocommands for all loaded buffers
@@ -1291,15 +1296,17 @@ tag command action ~
|:else| :el[se] part of an :if command
|:elseif| :elsei[f] part of an :if command
|:emenu| :em[enu] execute a menu by name
|:enddef| :enddef end of a user function started with :def
|:endif| :en[dif] end previous :if
|:endfor| :endfo[r] end previous :for
|:endfunction| :endf[unction] end of a user function
|:endfunction| :endf[unction] end of a user function started with :function
|:endtry| :endt[ry] end previous :try
|:endwhile| :endw[hile] end previous :while
|:enew| :ene[w] edit a new, unnamed buffer
|:ex| :ex same as ":edit"
|:execute| :exe[cute] execute result of expressions
|:exit| :exi[t] same as ":xit"
|:export| :exp[ort] Vim9: export an item from a script
|:exusage| :exu[sage] overview of Ex commands
|:file| :f[ile] show or set the current file name
|:files| :files list all files in the buffer list
@@ -1341,6 +1348,7 @@ tag command action ~
|:imap| :im[ap] like ":map" but for Insert mode
|:imapclear| :imapc[lear] like ":mapclear" but for Insert mode
|:imenu| :ime[nu] add menu for Insert mode
|:import| :imp[ort] Vim9: import an item from another script
|:inoremap| :ino[remap] like ":noremap" but for Insert mode
|:inoreabbrev| :inorea[bbrev] like ":noreabbrev" but for Insert mode
|:inoremenu| :inoreme[nu] like ":noremenu" but for Insert mode
@@ -1682,6 +1690,7 @@ tag command action ~
|:version| :ve[rsion] print version number and other info
|:verbose| :verb[ose] execute command with 'verbose' set
|:vertical| :vert[ical] make following command split vertically
|:vim9script| :vim9[script] indicates Vim9 script file
|:vimgrep| :vim[grep] search for pattern in files
|:vimgrepadd| :vimgrepa[dd] like :vimgrep, but append to current list
|:visual| :vi[sual] same as ":edit", but turns off "Ex" mode

View File

@@ -1,4 +1,4 @@
*insert.txt* For Vim version 8.2. Last change: 2019 Nov 26
*insert.txt* For Vim version 8.2. Last change: 2020 Mar 25
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -154,6 +154,8 @@ CTRL-R CTRL-R {register} *i_CTRL-R_CTRL-R*
you also want to avoid these, use CTRL-R CTRL-O, see below.
The '.' register (last inserted text) is still inserted as
typed.
After this command, the '.' register contains the text from
the register as if it was inserted by typing it.
CTRL-R CTRL-O {register} *i_CTRL-R_CTRL-O*
Insert the contents of a register literally and don't
@@ -163,6 +165,9 @@ CTRL-R CTRL-O {register} *i_CTRL-R_CTRL-O*
Does not replace characters!
The '.' register (last inserted text) is still inserted as
typed.
After this command, the '.' register contains the command
typed and not the text. I.e., the literals "^R^O" and not the
text from the register.
CTRL-R CTRL-P {register} *i_CTRL-R_CTRL-P*
Insert the contents of a register literally and fix the
@@ -170,6 +175,9 @@ CTRL-R CTRL-P {register} *i_CTRL-R_CTRL-P*
Does not replace characters!
The '.' register (last inserted text) is still inserted as
typed.
After this command, the '.' register contains the command
typed and not the text. I.e., the literals "^R^P" and not the
text from the register.
*i_CTRL-T*
CTRL-T Insert one shiftwidth of indent at the start of the current
@@ -200,15 +208,15 @@ CTRL-V Insert next non-digit literally. For special keys, the
is converted back to what it was without |modifyOtherKeys|,
unless the Shift key is also pressed.
*i_CTRL-SHIFT-V*
CTRL-SHIFT-V Works just like CTRL-V, unless |modifyOtherKeys| is active,
then it inserts the Escape sequence for a key with modifiers.
*i_CTRL-Q*
CTRL-Q Same as CTRL-V.
Note: Some terminal connections may eat CTRL-Q, it doesn't
work then. It does work in the GUI.
CTRL-SHIFT-V *i_CTRL-SHIFT-V* *i_CTRL-SHIFT-Q*
CTRL-SHIFT-Q Works just like CTRL-V, unless |modifyOtherKeys| is active,
then it inserts the Escape sequence for a key with modifiers.
CTRL-X Enter CTRL-X mode. This is a sub-mode where commands can
be given to complete words or scroll the window. See
|i_CTRL-X| and |ins-completion|.
@@ -379,8 +387,8 @@ CTRL-\ CTRL-O like CTRL-O but don't move the cursor *i_CTRL-\_CTRL-O*
CTRL-L when 'insertmode' is set: go to Normal mode *i_CTRL-L*
CTRL-G u break undo sequence, start new change *i_CTRL-G_u*
CTRL-G U don't break undo with next left/right cursor *i_CTRL-G_U*
movement, if the cursor stays within
same the line
movement, if the cursor stays within the
same line
-----------------------------------------------------------------------
Note: If the cursor keys take you out of Insert mode, check the 'noesckeys'
@@ -658,8 +666,10 @@ Note: The keys that are valid in CTRL-X mode are not mapped. This allows for
ends CTRL-X mode (any key that is not a valid CTRL-X mode command) is mapped.
Also, when doing completion with 'complete' mappings apply as usual.
Note: While completion is active Insert mode can't be used recursively.
Mappings that somehow invoke ":normal i.." will generate an E523 error.
*E565*
Note: While completion is active Insert mode can't be used recursively and
buffer text cannot be changed. Mappings that somehow invoke ":normal i.."
will generate an E565 error.
The following mappings are suggested to make typing the completion commands
a bit easier (although they will hide other commands): >
@@ -1079,7 +1089,8 @@ If you want to suppress the warning message for an empty result, return
Other items are ignored.
For acting upon end of completion, see the |CompleteDone| autocommand event.
For acting upon end of completion, see the |CompleteDonePre| and
|CompleteDone| autocommand event.
For example, the function can contain this: >
let matches = ... list of words ...
@@ -1108,7 +1119,8 @@ items:
empty when non-zero this match will be added even when it is
an empty string
user_data custom data which is associated with the item and
available in |v:completed_item|
available in |v:completed_item|; it can be any type;
defaults to an empty string
All of these except "icase", "equal", "dup" and "empty" must be a string. If
an item does not meet these requirements then an error message is given and
@@ -2008,11 +2020,11 @@ If the 'fileformats' option is not empty Vim tries to recognize the type of
changed, the detected format is only used while reading the file.
A similar thing happens with 'fileencodings'.
The message "[dos format]" is shown if a file is read in DOS format, to remind
you that something unusual is done.
On non-Win32 systems the message "[dos format]" is shown if a file is read in
DOS format, to remind you that something unusual is done.
On Macintosh and Win32 the message "[unix format]" is shown if a file is read
in Unix format.
On non-Macintosh systems, the message "[Mac format]" is shown if a file is
On non-Macintosh systems, the message "[mac format]" is shown if a file is
read in Mac format.
An example on how to use ":r !": >

View File

@@ -845,8 +845,9 @@ Without modifyOtherKeys <C-[> and <C-S-{> are indistinguishable from Esc.
A known side effect effect is that in Insert mode the raw escape sequence is
inserted after the CTRL-V key. This can be used to check whether
modifyOtherKeys is enabled: In Insert mode type CTRL-V CTRL-V, if you get
one byte then modifyOtherKeys is off, if you get <1b>27;5;118~ then it is on.
modifyOtherKeys is enabled: In Insert mode type CTRL-SHIFT-V CTRL-V, if you
get one byte then modifyOtherKeys is off, if you get <1b>27;5;118~ then it is
on.
When the 'esckeys' option is off, then modifyOtherKeys will be disabled in
Insert mode to avoid every key with a modifier causing Insert mode to end.

View File

@@ -1,4 +1,4 @@
*message.txt* For Vim version 8.2. Last change: 2019 Oct 19
*message.txt* For Vim version 8.2. Last change: 2020 Jan 01
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -76,7 +76,7 @@ See `:messages` above.
LIST OF MESSAGES
*E222* *E228* *E232* *E256* *E293* *E298* *E304* *E317*
*E318* *E356* *E438* *E439* *E440* *E316* *E320* *E322*
*E323* *E341* *E473* *E570* *E685* *E950* >
*E323* *E341* *E473* *E570* *E685* *E292* >
Add to read buffer
makemap: Illegal mode
Cannot create BalloonEval with both message and callback

View File

@@ -1,4 +1,4 @@
*netbeans.txt* For Vim version 8.2. Last change: 2019 May 05
*netbeans.txt* For Vim version 8.2. Last change: 2020 Apr 19
VIM REFERENCE MANUAL by Gordon Prieur et al.
@@ -40,21 +40,26 @@ or environment providing a socket interface can control Vim using this
protocol. There are existing implementations in C, C++, Python and Java. The
name NetBeans is kept today for historical reasons.
Current projects using the NetBeans protocol of Vim are:
- VimIntegration, description of various projects doing Vim Integration:
Active project using the NetBeans protocol of Vim:
- Eclim, http://eclim.org/
VimIntegration, description of various projects doing Vim Integration:
http://www.freehackers.org/VimIntegration
- Agide, an IDE for the AAP project, written in Python:
http://www.a-a-p.org
Projects using the NetBeans protocol of Vim are or were:
- Agide, an IDE for the AAP project, written in Python (now replaced by
|:Termdebug|): http://www.a-a-p.org
- Clewn, a gdb integration into Vim, written in C:
http://clewn.sourceforge.net/
- Pyclewn, a gdb integration into Vim, written in Python:
http://pyclewn.sourceforge.net/
- VimWrapper, library to easy Vim integration into IDE:
http://www.freehackers.org/VimWrapper
Outdated projects (links don't work):
- VimPlugin, integration of Vim inside Eclipse:
http://vimplugin.sourceforge.net/wiki/pmwiki.php
- PIDA, IDE written in Python integrating Vim:
http://pida.co.uk/
- VimWrapper, library to easy Vim integration into IDE:
http://www.freehackers.org/VimWrapper
Check the specific project pages to see how to use Vim with these projects.
@@ -461,11 +466,13 @@ guard off len
initDone Mark the buffer as ready for use. Implicitly makes the buffer
the current buffer. Fires the BufReadPost autocommand event.
insertDone
insertDone starteol readonly
Sent by Vim Controller to tell Vim an initial file insert is
done. This triggers a read message being printed. Prior to
version 2.3, no read messages were displayed after opening a
file. New in version 2.3.
done. This triggers a read message being printed. If
"starteol" is "F" then the last line doesn't have a EOL. If
"readonly" is "T" then the file is marked as readonly. Prior
to version 2.3, no read messages were displayed after opening
a file. New in version 2.3.
moveAnnoToFront serNum
Not implemented.

View File

@@ -1,4 +1,4 @@
*options.txt* For Vim version 8.2. Last change: 2019 Dec 18
*options.txt* For Vim version 8.2. Last change: 2020 Apr 10
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -22,9 +22,13 @@ achieve special effects. These options come in three forms:
1. Setting options *set-option* *E764*
*:se* *:set*
:se[t] Show all options that differ from their default value.
:se[t][!] Show all options that differ from their default value.
When [!] is present every option is on a separate
line.
:se[t] all Show all but terminal options.
:se[t][!] all Show all but terminal options.
When [!] is present every option is on a separate
line.
:se[t] termcap Show all terminal options. Note that in the GUI the
key codes are not shown, because they are generated
@@ -287,7 +291,7 @@ happens when the buffer is not loaded, but they are lost when the buffer is
wiped out |:bwipe|.
*:setl* *:setlocal*
:setl[ocal] ... Like ":set" but set only the value local to the
:setl[ocal][!] ... Like ":set" but set only the value local to the
current buffer or window. Not all options have a
local value. If the option does not have a local
value the global value is set.
@@ -309,7 +313,7 @@ wiped out |:bwipe|.
{option}, so that the global value will be used.
*:setg* *:setglobal*
:setg[lobal] ... Like ":set" but set only the global value for a local
:setg[lobal][!] ... Like ":set" but set only the global value for a local
option without changing the local value.
When displaying an option, the global value is shown.
With the "all" argument: display global values for all
@@ -513,10 +517,11 @@ Examples:
The second form (this is compatible with some versions of Vi):
[text]{white}{vi:|vim:|Vim:|ex:}[white]se[t] {options}:[text]
[text{white}]{vi:|vim:|Vim:|ex:}[white]se[t] {options}:[text]
[text] any text or empty
{white} at least one blank character (<Space> or <Tab>)
[text{white}] empty or any text followed by at least one blank
character (<Space> or <Tab>); "ex:" always requires at
least one blank character
{vi:|vim:|Vim:|ex:} the string "vi:", "vim:", "Vim:" or "ex:"
[white] optional white space
se[t] the string "set " or "se " (note the space); When
@@ -709,9 +714,9 @@ A jump table for the options with a short description can be found at |Q_op|.
(or Vim is run inside an xterm invoked with "-cjkwidth" option.),
this option should be set to "double" to match the width perceived
by Vim with the width of glyphs in the font. Perhaps it also has
to be set to "double" under CJK MS-Windows 2k/XP
when the system locale is set to one of CJK locales. See Unicode
Standard Annex #11 (http://www.unicode.org/reports/tr11).
to be set to "double" under CJK MS-Windows when the system locale is
set to one of CJK locales. See Unicode Standard Annex #11
(http://www.unicode.org/reports/tr11).
Vim may set this option automatically at startup time when Vim is
compiled with the |+termresponse| feature and if |t_u7| is set to the
@@ -910,6 +915,8 @@ A jump table for the options with a short description can be found at |Q_op|.
eol allow backspacing over line breaks (join lines)
start allow backspacing over the start of insert; CTRL-W and CTRL-U
stop once at the start of insert.
nostop like start, except CTRL-W and CTRL-U do not stop at the start of
insert.
When the value is empty, Vi compatible backspacing is used.
@@ -918,6 +925,7 @@ A jump table for the options with a short description can be found at |Q_op|.
0 same as ":set backspace=" (Vi compatible)
1 same as ":set backspace=indent,eol"
2 same as ":set backspace=indent,eol,start"
3 same as ":set backspace=indent,eol,nostop"
See |:fixdel| if your <BS> or <Del> key does not do what you want.
NOTE: This option is set to "" when 'compatible' is set.
@@ -1018,9 +1026,9 @@ A jump table for the options with a short description can be found at |Q_op|.
impossible!). Writing may fail because of this.
- A directory "." means to put the backup file in the same directory
as the edited file.
- A directory starting with "./" (or ".\" for MS-Windows et al.) means
to put the backup file relative to where the edited file is. The
leading "." is replaced with the path name of the edited file.
- A directory starting with "./" (or ".\" for MS-Windows) means to put
the backup file relative to where the edited file is. The leading
"." is replaced with the path name of the edited file.
("." inside a directory name has no special meaning).
- Spaces after the comma are ignored, other spaces are considered part
of the directory name. To have a space at the start of a directory
@@ -1375,6 +1383,7 @@ A jump table for the options with a short description can be found at |Q_op|.
This option is used together with 'bufhidden' and 'swapfile' to
specify special kinds of buffers. See |special-buffers|.
Also see |win_gettype()|, which returns the type of the window.
Be careful with changing this option, it can have many side effects!
@@ -2712,9 +2721,9 @@ A jump table for the options with a short description can be found at |Q_op|.
the edited file. On Unix, a dot is prepended to the file name, so
it doesn't show in a directory listing. On MS-Windows the "hidden"
attribute is set and a dot prepended if possible.
- A directory starting with "./" (or ".\" for MS-Windows et al.) means
to put the swap file relative to where the edited file is. The
leading "." is replaced with the path name of the edited file.
- A directory starting with "./" (or ".\" for MS-Windows) means to put
the swap file relative to where the edited file is. The leading "."
is replaced with the path name of the edited file.
- For Unix and Win32, if a directory ends in two path separators "//",
the swap file name will be built from the complete path to the file
with all path separators substituted to percent '%' signs. This will
@@ -3593,7 +3602,7 @@ A jump table for the options with a short description can be found at |Q_op|.
{only available when compiled with GUI enabled, and
for Win32 console}
This option tells Vim what the cursor should look like in different
modes. It fully works in the GUI. In an Win32 console, only the
modes. It fully works in the GUI. In a Win32 console, only the
height of the cursor can be changed. This can be done by specifying a
block cursor, or a percentage for a vertical or horizontal cursor.
For a console the 't_SI', 't_SR', and 't_EI' escape sequences are
@@ -3763,7 +3772,7 @@ A jump table for the options with a short description can be found at |Q_op|.
'guitablabel' can be used to change the text in the labels.
When 'e' is missing a non-GUI tab pages line may be used.
The GUI tabs are only supported on some systems, currently
GTK, Motif, Mac OS/X and MS-Windows.
GTK, Motif, Mac OS/X, Haiku, and MS-Windows.
*'go-f'*
'f' Foreground: Don't use fork() to detach the GUI from the shell
where it was started. Use this for programs that wait for the
@@ -4640,8 +4649,8 @@ A jump table for the options with a short description can be found at |Q_op|.
be able to execute Normal mode commands.
This is the opposite of the 'keymap' option, where characters are
mapped in Insert mode.
Also consider resetting 'langremap' to avoid 'langmap' applies to
characters resulting from a mapping.
Also consider setting 'langremap' to off, to prevent 'langmap' from
applying to characters resulting from a mapping.
This option cannot be set from a |modeline| or in the |sandbox|, for
security reasons.
@@ -4706,7 +4715,7 @@ A jump table for the options with a short description can be found at |Q_op|.
'langnoremap' is set to the inverted value, and the other way around.
*'langremap'* *'lrm'* *'nolangremap'* *'nolrm'*
'langremap' 'lrm' boolean (default on, reset in |defaults.vim|)
'langremap' 'lrm' boolean (default on, set to off in |defaults.vim|)
global
{only available when compiled with the |+langmap|
feature}
@@ -5248,7 +5257,7 @@ A jump table for the options with a short description can be found at |Q_op|.
default because it makes using the pull down menus a little goofy, as
a pointer transit may activate a window unintentionally.
MS-Windows: Also see 'scrollfocus' for what window is scrolled when
using the mouse scroll whel.
using the mouse scroll wheel.
*'mousehide'* *'mh'* *'nomousehide'* *'nomh'*
'mousehide' 'mh' boolean (default on)
@@ -6075,7 +6084,7 @@ A jump table for the options with a short description can be found at |Q_op|.
*'restorescreen'* *'rs'* *'norestorescreen'* *'nors'*
'restorescreen' 'rs' boolean (default on)
global
{only in Windows 95/NT console version}
{only in MS-Windows console version}
When set, the screen contents is restored when exiting Vim. This also
happens when executing external commands.
@@ -6201,6 +6210,11 @@ A jump table for the options with a short description can be found at |Q_op|.
Macintosh: "$VIM:vimfiles,
$VIMRUNTIME,
$VIM:vimfiles:after"
Haiku: "$BE_USER_SETTINGS/vim,
$VIM/vimfiles,
$VIMRUNTIME,
$VIM/vimfiles/after,
$BE_USER_SETTINGS/vim/after")
VMS: "sys$login:vimfiles,
$VIM/vimfiles,
$VIMRUNTIME,
@@ -6216,6 +6230,7 @@ A jump table for the options with a short description can be found at |Q_op|.
compiler/ compiler files |:compiler|
doc/ documentation |write-local-help|
ftplugin/ filetype plugins |write-filetype-plugin|
import/ files that are found by `:import`
indent/ indent scripts |indent-expression|
keymap/ key mapping files |mbyte-keymap|
lang/ menu translations |:menutrans|
@@ -6497,9 +6512,9 @@ A jump table for the options with a short description can be found at |Q_op|.
somewhere: "/c")
global
Flag passed to the shell to execute "!" and ":!" commands; e.g.,
"bash.exe -c ls" or "command.com /c dir". For the MS-Windows-like
systems, the default is set according to the value of 'shell', to
reduce the need to set this option by the user.
"bash.exe -c ls" or "cmd.exe /c dir". For MS-Windows, the default is
set according to the value of 'shell', to reduce the need to set this
option by the user.
On Unix it can have more than one flag. Each white space separated
part is passed as an argument to the shell command.
See |option-backslash| about including spaces and backslashes.
@@ -6508,7 +6523,8 @@ A jump table for the options with a short description can be found at |Q_op|.
security reasons.
*'shellpipe'* *'sp'*
'shellpipe' 'sp' string (default ">", "| tee", "|& tee" or "2>&1| tee")
'shellpipe' 'sp' string (default ">", ">%s 2>&1", "| tee", "|& tee" or
"2>&1| tee")
global
{not available when compiled without the |+quickfix|
feature}
@@ -6518,8 +6534,9 @@ A jump table for the options with a short description can be found at |Q_op|.
The name of the temporary file can be represented by "%s" if necessary
(the file name is appended automatically if no %s appears in the value
of this option).
For the Amiga the default is ">". The output is directly saved in a
file and not echoed to the screen.
For the Amiga the default is ">". For MS-Windows the default is
">%s 2>&1". The output is directly saved in a file and not echoed to
the screen.
For Unix the default it "| tee". The stdout of the compiler is saved
in a file and echoed to the screen. If the 'shell' option is "csh" or
"tcsh" after initializations, the default becomes "|& tee". If the
@@ -6587,9 +6604,9 @@ A jump table for the options with a short description can be found at |Q_op|.
global
{only for MS-Windows}
When set, a forward slash is used when expanding file names. This is
useful when a Unix-like shell is used instead of command.com or
cmd.exe. Backward slashes can still be typed, but they are changed to
forward slashes by Vim.
useful when a Unix-like shell is used instead of cmd.exe. Backward
slashes can still be typed, but they are changed to forward slashes by
Vim.
Note that setting or resetting this option has no effect for some
existing file names, thus this option needs to be set before opening
any file for best results. This might change in the future.
@@ -6746,8 +6763,7 @@ A jump table for the options with a short description can be found at |Q_op|.
option is on, dots in file names are replaced with underscores when
adding an extension (".~" or ".swp"). This option is useful
when editing files on an MS-DOS compatible filesystem, e.g., messydos
or crossdos. When running the Win32 GUI version under Win32s, this
option is always on by default.
or crossdos.
*'showbreak'* *'sbr'* *E595*
'showbreak' 'sbr' string (default "")
@@ -7282,8 +7298,8 @@ A jump table for the options with a short description can be found at |Q_op|.
< Beware that an expression is evaluated each and every time the status
line is displayed.
*stl-%{* *g:actual_curbuf* *g:actual_curwin*
While evaluationg %{} the current buffer and current window will be
set temporarily to that of the window (and buffer) whose statusline is
While evaluating %{} the current buffer and current window will be set
temporarily to that of the window (and buffer) whose statusline is
currently being drawn. The expression will evaluate in this context.
The variable "g:actual_curbuf" is set to the `bufnr()` number of the
real current buffer and "g:actual_curwin" to the |window-ID| of the
@@ -7657,6 +7673,7 @@ A jump table for the options with a short description can be found at |Q_op|.
in the GUI: "builtin_gui"
on Amiga: "amiga"
on BeOS: "beos-ansi"
on Haiku: "xterm"
on Mac: "mac-ansi"
on MiNT: "vt52"
on Unix: "ansi"
@@ -7694,7 +7711,7 @@ A jump table for the options with a short description can be found at |Q_op|.
the GUI it only applies to the keyboard ('encoding' is used for the
display). Except for the Mac when 'macatsui' is off, then
'termencoding' should be "macroman".
*E617*
*E617* *E950*
Note: This does not apply to the GTK+ GUI. After the GUI has been
successfully initialized, 'termencoding' is forcibly set to "utf-8".
Any attempts to set a different value will be rejected, and an error
@@ -7943,7 +7960,7 @@ A jump table for the options with a short description can be found at |Q_op|.
- VIM the server name |v:servername| or "VIM"
Only works if the terminal supports setting window titles
(currently Amiga console, Win32 console, all GUI versions and
terminals with a non- empty 't_ts' option - these are Unix xterm and
terminals with a non-empty 't_ts' option - these are Unix xterm and
iris-ansi by default, where 't_ts' is taken from the builtin termcap).
*X11*
When Vim was compiled with HAVE_X11 defined, the original title will
@@ -8205,7 +8222,7 @@ A jump table for the options with a short description can be found at |Q_op|.
NOTE: This option is reset when 'compatible' is set.
*'undolevels'* *'ul'*
'undolevels' 'ul' number (default 100, 1000 for Unix, VMS, Win32)
'undolevels' 'ul' number (default 100, 1000 for Unix, VMS and Win32)
global or local to buffer |global-local|
Maximum number of changes that can be undone. Since undo information
is kept in memory, higher numbers will cause more memory to be used.

View File

@@ -138,7 +138,7 @@ and merge it back in.
6. The $VIM directory *beos-vimdir*
$VIM is the symbolic name for the place where Vims support files are stored.
$VIM is the symbolic name for the place where Vim's support files are stored.
The default value for $VIM is set at compile time and can be determined with >
:version

View File

@@ -39,7 +39,7 @@ If you move the executable to another location, you also need to set the $VIM
environment variable. The runtime files will be found in "$VIM/vim{version}".
Example: >
set VIM=E:\vim
Will find the version 5.4 runtime files in "e:\vim\vim54".
Will find the version 8.2 runtime files in "e:\vim\vim82".
Note: This is _not_ recommended. The preferred way is to keep the executable
in the runtime directory.
@@ -47,17 +47,23 @@ If you move your executable AND want to put your "_vimrc" and "_gvimrc" files
somewhere else, you must set $VIM to where you vimrc files are, and set
$VIMRUNTIME to the runtime files. Example: >
set VIM=C:\usr\piet
set VIMRUNTIME=E:\vim\vim54
Will find "c:\user\piet\_vimrc" and the runtime files in "e:\vim\vim54".
set VIMRUNTIME=E:\vim\vim82
Will find "c:\user\piet\_vimrc" and the runtime files in "e:\vim\vim82".
See |$VIM| and |$VIMRUNTIME| for more information.
Under Windows 95, you can set $VIM in your C:\autoexec.bat file. For
example: >
set VIM=D:\vim
Under Windows NT, you can set environment variables for each user separately
under "Start/Settings/Control Panel->System", or through the properties in the
menu of "My Computer", under the Environment Tab.
You can set environment variables for each user separately through the
System Properties dialog box. The steps to do that:
1. Type Windows Key + R to open the "Run" dialog box.
2. Enter "sysdm.cpl" and press the "OK" button. The "System Properties"
dialog box will open.
3. Select the "Advanced" tab and press the "Environment Variables..." button.
The "Environment Variables" dialog box will open.
4. Select an existing variable in the "User variables" list and press the
"Edit..." button to edit it. Or press the "New..." button to add a new
variable.
5. After you finished editing variables, press the "OK" button to save the
changes.
==============================================================================
2. Using backslashes *dos-backslash*

234
runtime/doc/os_haiku.txt Normal file
View File

@@ -0,0 +1,234 @@
*os_haiku.txt* For Vim version 8.2. Last change: 2020 Mar 19
VIM REFERENCE MANUAL by Bram Moolenaar
*Haiku*
This file contains the particularities for the Haiku version of Vim. For
matters not discussed in this file, Vim behaves very much like the Unix
|os_unix.txt| version.
Haiku is an open-source operating system inspired by BeOS, that specifically
targets personal computing.
1. General |haiku-general|
2. Compiling Vim |haiku-compiling|
3. The Haiku GUI |haiku-gui|
4. The $VIM directory |haiku-vimdir|
5. The $USER_SETTINGS_DIR
directory |haiku-user-settings-dir|
6. Drag & Drop |haiku-dragndrop|
7. Single Launch vs. Multiple
Launch |haiku-launch|
8. Fonts |haiku-fonts|
9. The meta key modifier |haiku-meta|
10. Mouse key mappings |haiku-mouse|
11. Color names |haiku-colors|
12. Credits |haiku-support-credits|
13. Bugs & to-do |haiku-bugs|
1. General *haiku-general*
The default syntax highlighting mostly works with different foreground colors
to highlight items. This works best if you set your Terminal window to a
darkish background and light letters. Some middle-grey background (for
instance (r,g,b)=(168,168,168)) with black letters also works nicely.
2. Compiling Vim *haiku-compiling*
Vim can be compiled using the standard configure/make approach. Running
./configure without any arguments or passing --enable-gui=haiku, will compile
vim with the Haiku GUI support. Run ./configure --help , to find out other
features you can enable/disable.
Haiku uses "ncurses6" as its terminal library, therefore you need to have
"ncurses6_devel" package installed from HaikuDepot in order to configure
the Haiku build. Just append "--with-tlib=ncurses6" to ./configure command
below for the initial build.
Now you should use "make" to compile Vim, then "make install" to install it.
For seamless integration into Haiku, the GUI-less vim binary should be
additionally installed over the GUI version. Typical build commands are: >
./configure --prefix=`finddir B_SYSTEM_NONPACKAGED_DIRECTORY` \
--datarootdir=`finddir B_SYSTEM_NONPACKAGED_DATA_DIRECTORY` \
--mandir=`finddir B_SYSTEM_NONPACKAGED_DIRECTORY`/documentation/man \
make clean
make install
./configure --prefix=`finddir B_SYSTEM_NONPACKAGED_DIRECTORY` \
--datarootdir=`finddir B_SYSTEM_NONPACKAGED_DATA_DIRECTORY` \
--mandir=`finddir B_SYSTEM_NONPACKAGED_DIRECTORY`/documentation/man \
--disable-gui
make clean
make install
3. The Haiku GUI *haiku-gui*
Normally Vim starts with the GUI if you start it as gvim or vim -g. The vim
version with GUI tries to determine if it was started from the Tracker instead
of the Terminal, and if so, uses the GUI anyway. However, the current detection
scheme is fooled if you use the command "vim - </dev/null".
Stuff that does not work yet:
- Mouse up events are not generated when outside the window. This may be a bug in
Haiku. You can notice this when selecting text and moving the cursor outside
the window, then letting go of the mouse button. Another way is when you
drag the scrollbar and do the same thing. Because Vim still thinks you are
still playing with the scrollbar it won't change it itself. I provided a
workaround which kicks in when the window is activated or deactivated (so it
works best with focus- follows-mouse turned on).
- The cursor does not flash.
4. The $VIM directory *haiku-vimdir*
$VIM is the symbolic name for the place where Vim's support files are stored.
The default value for $VIM is set at compile time and can be determined with >
:version
The normal value is /boot/system/data/vim for Haikuports version,
/boot/system/non-packaged/data/vim for manual builds. If you don't like it
you can set the VIM environment variable to override this, or set 'helpfile'
in your .vimrc: >
:if version >= 500
: set helpfile=~/vim/runtime/doc/help.txt
: syntax on
:endif
5. The $USER_SETTINGS_DIR directory *haiku-user-settings-dir*
$USER_SETTINGS_DIR is the symbolic name for the place where Haiku
configuration and settings files are stored.
The normal value is /boot/home/config/settings.
6. Drag & Drop *haiku-dragndrop*
You can drop files and directories on either the Vim icon (starts a new Vim
session, unless you use the File Types application to set Vim to be "Single
Launch") or on the Vim window (starts editing the files). Dropping a folder
sets Vim's current working directory. |:cd| |:pwd| If you drop files or
folders with either SHIFT key pressed, Vim changes directory to the folder
that contains the first item dropped. When starting Vim, there is no need to
press shift: Vim behaves as if you do.
Files dropped set the current argument list. |argument-list|
7. Single Launch vs. Multiple Launch *haiku-launch*
As distributed Vim's Application Flags (as seen in the FileTypes preference)
are set to Multiple Launch. If you prefer, you can set them to Single Launch
instead. Attempts to start a second copy of Vim will cause the first Vim to
open the files instead. This works from the Tracker but also from the command
line. In the latter case, non-file (option) arguments are not supported.
Another drawback of the Single Launch is silent ignore of "Open With ..."
requests by vim instance that running as non-GUI application even GUI support
was compiled in. Vim instance running with GUI has no such problems.
NB: Only the GUI version has a BApplication (and hence Application Flags).
This section does not apply to the GUI-less version, should you compile one.
8. Fonts *haiku-fonts*
Set fonts with >
:set guifont=DejaVu_Sans_Mono/Book/12
where the first part is the font family, the second part the style, and the
third part the size. You can use underscores instead of spaces in family and
style.
Best results are obtained with monospaced fonts. Vim attempts to use all
fonts in B_FIXED_SPACING mode but apparently this does not work for
proportional fonts (despite what the BeBook says).
To verify which encodings are supported by the current font give the >
:digraphs
command, which lists a bunch of characters with their ISO Latin 1 encoding.
If, for instance, there are "box" characters among them, or the last character
isn't a dotted-y, then for this font the encoding does not work.
If the font you specify is unavailable, you get the system fixed font.
GUI Font Selection Dialog is available at giving the >
:set guifont=*
command.
9. The meta key modifier *haiku-meta*
The META key modifier is obtained by the left or right OPTION keys. This is
because the ALT (aka COMMAND) keys are not passed to applications.
10. Mouse key mappings *haiku-mouse*
Vim calls the various mouse buttons LeftMouse, MiddleMouse and RightMouse. If
you use the default Mouse preference settings these names indeed correspond to
reality. Vim uses this mapping:
Button 1 -> LeftMouse,
Button 2 -> RightMouse,
Button 3 -> MiddleMouse.
If your mouse has fewer than 3 buttons you can provide your own mapping from
mouse clicks with modifier(s) to other mouse buttons. See the file
$VIM/macros/swapmous.vim for an example. |gui-mouse-mapping|
11. Color names *haiku-colors*
Vim has a number of color names built-in. Additional names are read from the
file $VIMRUNTIME/rgb.txt, if present. This file is basically the color
database from X. Names used from this file are cached for efficiency.
12. GUI Toolbar Images *haiku-toolbar-images*
Alternative set of toolbar images should be the PNG image of any height you
like. Image width is calculated to contain at least 32 buttons in one-row
cells.
The image should be stored under the name $VIRUNTIME/bitmaps/builtin-tools.png
More info about the buttons assignment are at |builtin-tools|.
13. Credits *haiku-support-credits*
Haiku port is based on work done for BeOS version by many people
- BeBox GUI support Copyright 1998 by Olaf Seibert;
- Ported to R4 by Richard Offer <richard@whitequeen.com> Jul 99;
- Those who contributed, not listed above but not forgotten;
- Haiku support by Siarzhuk Zharski <imker@gmx.li> Apr-Mai 2009.
All the changes and patches released under vim-license.
Thank you, all!
13. Bugs & to-do *haiku-bugs*
The port is under development now and far away from the perfect state. For bug
reports, patches and wishes, please use the Vim mailing list or Vim Github
repository.
Mailing list: https://www.vim.org/maillist.php
Vim Github repository: https://github.com/vim/vim
vim:tw=78:ts=8:ft=help:norl:

View File

@@ -171,7 +171,7 @@ you will need to get a version older than that.
*win32s* *windows-3.1* *gui-w32s* *win16*
There was a special version of gvim that runs under Windows 3.1 and 3.11.
Support was removed in patch 7.4.1363.
Support was removed in patch 7.4.1364.
==============================================================================
7. Win32 mini FAQ *win32-faq*

View File

@@ -2,8 +2,8 @@
>
GETSCRIPT REFERENCE MANUAL by Charles E. Campbell
<
Authors: Charles E. Campbell <NdrOchip@ScampbellPfamilyA.Mbiz>
(remove NOSPAM from the email address)
Author: Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
(remove NOSPAM from the email address)
*GetLatestVimScripts-copyright*
Copyright: (c) 2004-2012 by Charles E. Campbell *glvs-copyright*
The VIM LICENSE (see |copyright|) applies to the files in this

View File

@@ -1,7 +1,7 @@
*pi_logipat.txt* Logical Patterns Jun 22, 2015
*pi_logipat.txt* Logical Patterns May 01, 2019
Author: Charles E. Campbell <NdrOchip@ScampbellPfamily.AbizM>
Copyright: (c) 2004-2015 by Charles E. Campbell *logiPat-copyright*
Author: Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
Copyright: (c) 2004-2016 by Charles E. Campbell *logiPat-copyright*
The VIM LICENSE applies to LogiPat.vim and LogiPat.txt
(see |copyright|) except use "LogiPat" instead of "Vim"
No warranty, express or implied. Use At-Your-Own-Risk.
@@ -28,12 +28,14 @@ Copyright: (c) 2004-2015 by Charles E. Campbell *logiPat-copyright*
grouping ( ... )
patterns "pattern"
*logiPat-cmd*
:LogiPat {boolean-logic pattern} *:LogiPat*
:LogiPat is a command which takes a boolean-logic
argument (|logiPat-arg|).
:LP {boolean-logic pattern} *:LP*
:LP is a shorthand command version of :LogiPat
(|logiPat-cmd|).
:LPE {boolean-logic pattern} *:LPE*
No search is done, but the conversion from the
@@ -69,7 +71,7 @@ Copyright: (c) 2004-2015 by Charles E. Campbell *logiPat-copyright*
< will search for lines containing the string :abc:
>
:LogiPat "ab""cd"
< will search for lines containing the string :ab"c:
< will search for lines containing the string :ab"cd:
>
:LogiPat !"abc"
< will search for lines which don't contain the string :abc:

View File

@@ -1,9 +1,9 @@
*pi_netrw.txt* For Vim version 8.2. Last change: 2019 Dec 10
*pi_netrw.txt* For Vim version 8.2. Last change: 2020 Jan 14
------------------------------------------------
NETRW REFERENCE MANUAL by Charles E. Campbell
------------------------------------------------
Author: Charles E. Campbell <NdrOchip@ScampbellPfamily.AbizM>
Author: Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
(remove NOSPAM from Campbell's email first)
Copyright: Copyright (C) 2017 Charles E Campbell *netrw-copyright*
@@ -1565,8 +1565,8 @@ So, for example: >
file.rcs,v -> NFH_rcsCOMMAv()
<
If more such translations are necessary, please send me email: >
NdrOchip at ScampbellPfamily.AbizM - NOSPAM
with a request.
NcampObell@SdrPchip.AorgM-NOSPAM
with a request. (remove the embedded NOSPAM first)
Associated setting variable: |g:netrw_browsex_viewer|
@@ -3229,7 +3229,8 @@ If there are marked files: (see |netrw-mf|)
R [query: reply with s/^\(.*\)\.c$/\1.cpp/]
<
This example will mark all *.c files and then rename them to *.cpp
files.
files. Netrw will protect you from overwriting local files without
confirmation, but not remote ones.
The ctrl-X character has special meaning for renaming files: >
@@ -3512,7 +3513,7 @@ Example: Clear netrw's marked file list via a mapping on gu >
- Click "Add..."
- Set External Editor (adjust path as needed, include
the quotes and !.! at the end):
"c:\Program Files\Vim\vim81\gvim.exe" !.!
"c:\Program Files\Vim\vim82\gvim.exe" !.!
- Check that the filetype in the box below is
{asterisk}.{asterisk} (all files), or whatever types
you want (cec: change {asterisk} to * ; I had to
@@ -3836,12 +3837,18 @@ netrw:
Please send that information to <netrw.vim>'s maintainer along
with the o/s you're using and the vim version that you're using
(see |:version|) >
NdrOchip at ScampbellPfamily.AbizM - NOSPAM
(see |:version|) (remove the embedded NOSPAM first) >
NcampObell@SdrPchip.AorgM-NOSPAM
<
==============================================================================
12. History *netrw-history* {{{1
v169: Dec 20, 2019 * (reported by amkarthik) that netrw's x
(|netrw-x|) would throw an error when
attempting to open a local directory.
v168: Dec 12, 2019 * scp timeout error message not reported,
hopefully now fixed (Shane Xb Qian)
v167: Nov 29, 2019 * netrw does a save&restore on @* and @+.
That causes problems with the clipboard.
Now restores occurs only if @* or @+ have
@@ -4279,7 +4286,7 @@ netrw:
Vim editor by Bram Moolenaar (Thanks, Bram!)
dav support by C Campbell
fetch support by Bram Moolenaar and C Campbell
ftp support by C Campbell <NdrOchip@ScampbellPfamily.AbizM>
ftp support by C Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
http support by Bram Moolenaar <bram@moolenaar.net>
rcp
rsync support by C Campbell (suggested by Erik Warendorph)
@@ -4299,4 +4306,4 @@ netrw:
==============================================================================
Modelines: {{{1
vim:tw=78:ts=8:ft=help:norl:fdm=marker
vim:tw=78:ts=8:noet:ft=help:norl:fdm=marker

View File

@@ -1,12 +1,12 @@
*pi_tar.txt* For Vim version 8.2. Last change: 2013 Apr 17
*pi_tar.txt* For Vim version 8.2. Last change: 2020 Jan 07
+====================+
| Tar File Interface |
+====================+
Author: Charles E. Campbell <NdrOchip@ScampbellPfamily.AbizM>
Author: Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
(remove NOSPAM from Campbell's email first)
Copyright 2005-2012: *tar-copyright*
Copyright 2005-2017: *tar-copyright*
The VIM LICENSE (see |copyright|) applies to the files in this
package, including tarPlugin.vim, tar.vim, and pi_tar.txt. Like
anything else that's except use "tar.vim" instead of "VIM". Like
@@ -104,48 +104,67 @@ Copyright 2005-2012: *tar-copyright*
==============================================================================
4. History *tar-history*
v28 Jun 23, 2011 * a few more decompression options (tbz tb2 txz)
v27 May 31, 2011 * moved cygwin detection before g:tar_copycmd handling
* inserted additional |:keepj| modifiers
* changed silent to sil! (|:silent|)
v26 Aug 09, 2010 * uses buffer-local instead of window variables to hold
tarfile name
* inserted keepj before 0d to protect jump list
v25 Jun 19, 2010 * (Jan Steffens) added support for xz compression
v24 Apr 07, 2009 * :Untarvim command implemented
Sep 28, 2009 * Added lzma support
v22 Aug 08, 2008 * security fixes
v16 Jun 06, 2008 * tarfile:: used instead of tarfile: when editing files
inside tarballs. Fixes a problem with tarballs called
things like c:\abc.tar. (tnx to Bill McCarthy)
v14 May 09, 2008 * arno caught a security bug
May 28, 2008 * various security improvements. Now requires patch 299
which provides the fnameescape() function
May 30, 2008 * allows one to view *.gz and *.bz2 files that are in
*.tar files.
v12 Sep 07, 2007 * &shq now used if not the empty string for g:tar_shq
v10 May 02, 2006 * now using "redraw then echo" to show messages, instead
of "echo and prompt user"
v9 May 02, 2006 * improved detection of masquerading as tar file
v8 May 02, 2006 * allows editing of files that merely masquerade as tar
files
v7 Mar 22, 2006 * work on making tar plugin work across network
Mar 27, 2006 * g:tar_cmd now available for users to change the name
of the tar program to be used. By default, of course,
it's "tar".
v6 Dec 21, 2005 * writing to files not in directories caused problems -
fixed (pointed out by Christian Robinson)
v5 Nov 22, 2005 * report option workaround installed
v3 Sep 16, 2005 * handles writing files in an archive back to the
archive
Oct 18, 2005 * <amatch> used instead of <afile> in autocmds
Oct 18, 2005 * handles writing to compressed archives
Nov 03, 2005 * handles writing tarfiles across a network using
netrw#NetWrite()
v2 * converted to use Vim7's new autoload feature by
Bram Moolenaar
v1 (original) * Michael Toren (see http://michael.toren.net/code/)
v31 Apr 02, 2017 * (klartext) reported that browsing encrypted
files in a zip archive created unencrypted
swap files. I am applying a similar fix
used on zip.vim to tar.vim: new buffers
are opened with |:noswapfile|.
May 16, 2017 * When the mouse option isn't empty, the
leftmouse can be used to select a file
in the tar-file listing.
v30 Apr 22, 2014 * .tgz files are ambiguous: they may have been
compressed with either gzip or bzip2. Tar.vim
disambiguates by using unix's "file" command.
Feb 18, 2016 * Changed =~ to =~# where appropriate
Feb 18, 2017 * Now also permits xz decompression
v28 Jun 23, 2011 * a few more decompression options (tbz tb2 txz)
v27 May 31, 2011 * moved cygwin detection before g:tar_copycmd
handling
* inserted additional |:keepj| modifiers
* changed silent to sil! (|:silent|)
v26 Aug 09, 2010 * uses buffer-local instead of window variables
to hold tarfile name
* inserted keepj before 0d to protect jump list
v25 Jun 19, 2010 * (Jan Steffens) added support for xz
compression
v24 Apr 07, 2009 * :Untarvim command implemented
Sep 28, 2009 * Added lzma support
v22 Aug 08, 2008 * security fixes
v16 Jun 06, 2008 * tarfile:: used instead of tarfile: when
editing files inside tarballs. Fixes a
problem with tarballs called things like
c:\abc.tar. (tnx to Bill McCarthy)
v14 May 09, 2008 * arno caught a security bug
May 28, 2008 * various security improvements. Now requires
patch 299 which provides the fnameescape()
function
May 30, 2008 * allows one to view *.gz and *.bz2 files that
are in *.tar files.
v12 Sep 07, 2007 * &shq now used if not the empty string for
g:tar_shq
v10 May 02, 2006 * now using "redraw then echo" to show messages,
instead of "echo and prompt user"
v9 May 02, 2006 * improved detection of masquerading as tar file
v8 May 02, 2006 * allows editing of files that merely masquerade
as tar files
v7 Mar 22, 2006 * work on making tar plugin work across network
Mar 27, 2006 * g:tar_cmd now available for users to change
the name of the tar program to be used. By
default, of course, it's "tar".
v6 Dec 21, 2005 * writing to files not in directories caused
problems - fixed (pointed out by
Christian Robinson)
v5 Nov 22, 2005 * report option workaround installed
v3 Sep 16, 2005 * handles writing files in an archive back to
the archive
Oct 18, 2005 * <amatch> used instead of <afile> in autocmds
Oct 18, 2005 * handles writing to compressed archives
Nov 03, 2005 * handles writing tarfiles across a network
using netrw#NetWrite()
v2 * converted to use Vim7's new autoload feature
by Bram Moolenaar
v1 (original) * Michael Toren
(see http://michael.toren.net/code/)
==============================================================================
vim:tw=78:ts=8:noet:ft=help

View File

@@ -4,7 +4,7 @@
Vimball Archiver
----------------
Author: Charles E. Campbell <NdrOchip@ScampbellPfamily.AbizM>
Author: Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
(remove NOSPAM from Campbell's email first)
Copyright: (c) 2004-2015 by Charles E. Campbell *Vimball-copyright*
The VIM LICENSE (see |copyright|) applies to the files in this

View File

@@ -1,10 +1,10 @@
*pi_zip.txt* For Vim version 8.2. Last change: 2016 Sep 13
*pi_zip.txt* For Vim version 8.2. Last change: 2020 Jan 07
+====================+
| Zip File Interface |
+====================+
Author: Charles E. Campbell <NdrOchip@ScampbellPfamily.AbizM>
Author: Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
(remove NOSPAM from Campbell's email first)
Copyright: Copyright (C) 2005-2015 Charles E Campbell *zip-copyright*
The VIM LICENSE (see |copyright|) applies to the files in this
@@ -33,10 +33,11 @@ Copyright: Copyright (C) 2005-2015 Charles E Campbell *zip-copyright*
also write to the file. Currently, one may not make a new file in
zip archives via the plugin.
COMMANDS~
*zip-x*
x : may extract a listed file when the cursor is atop it
x : extract a listed file when the cursor is atop it
OPTIONS
OPTIONS~
*g:zip_nomax*
@@ -101,6 +102,10 @@ Copyright: Copyright (C) 2005-2015 Charles E Campbell *zip-copyright*
==============================================================================
4. History *zip-history* {{{1
v29 Apr 02, 2017 * (Klartext) reported that an encrypted zip file could
opened but the swapfile held unencrypted contents.
The solution is to edit the contents of a zip file
using the |:noswapfile| modifier.
v28 Oct 08, 2014 * changed the sanity checks for executables to reflect
the command actually to be attempted in zip#Read()
and zip#Write()

View File

@@ -1,4 +1,4 @@
*popup.txt* For Vim version 8.2. Last change: 2019 Nov 30
*popup.txt* For Vim version 8.2. Last change: 2020 Apr 13
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -11,6 +11,7 @@ Displaying text in a floating window. *popup* *popup-window* *popupwin*
Window position and size |popup-position|
Closing the popup window |popup-close|
Popup buffer and window |popup-buffer|
Terminal in popup window |popup-terminal|
2. Functions |popup-functions|
Details |popup-function-details|
3. Usage |popup-usage|
@@ -140,6 +141,30 @@ And options can be set on the buffer with `setbufvar()`, e.g.: >
You can also use `win_execute()` with a ":setlocal" command.
TERMINAL IN POPUP WINDOW *popup-terminal*
A special case is running a terminal in a popup window. Many rules are then
different: *E863*
- The popup window always has focus, it is not possible to switch to another
window.
- When the job ends, the popup window closes.
- The popup window can be closed with `popup_close()`, the terminal buffer
then becomes hidden.
- The default Pmenu color is only used for the border and padding. To change
the color of the terminal itself set the Terminal highlight group before
creating the terminal. Setting 'wincolor' later can work but requires the
program in the terminal to redraw everything.
- The default minimal size is 5 lines of 20 characters; Use the "minwidth" and
"minheight" parameters to set a different value.
- The terminal size will grow if the program running in the terminal writes
text. Set "maxheight" and "maxwidth" to restrict the size.
To run a terminal in a popup window, first create the terminal hidden. Then
pass the buffer number to popup_create(). Example: >
hi link Terminal Search
let buf = term_start(['picker', 'Something'], #{hidden: 1, term_finish: 'close'})
let winid = popup_create(buf, #{minwidth: 50, minheight: 20})
==============================================================================
2. Functions *popup-functions*
@@ -385,6 +410,7 @@ popup_hide({id}) *popup_hide()*
hidden.
If window {id} does not exist nothing happens. If window {id}
exists but is not a popup window an error is given. *E993*
If popup window {id} contains a terminal an error is given.
Can also be used as a |method|: >
GetPopup()->popup_hide()
@@ -509,6 +535,8 @@ popup_setoptions({id}, {options}) *popup_setoptions()*
wrap
zindex
The options from |popup_move()| can also be used.
Generally, setting an option to zero or an empty string resets
it to the default value, but there are exceptions.
For "hidden" use |popup_hide()| and |popup_show()|.
"tabpage" cannot be changed.
@@ -546,21 +574,22 @@ properties. It is in one of four forms:
If you want to create a new buffer yourself use |bufadd()| and pass the buffer
number to popup_create().
It is not possible to use the buffer of a terminal window. *E278*
It is not possible to use the buffer of a terminal window. *E278* You CAN
create a hidden terminal buffer and use that one in a popup window.
The second argument of |popup_create()| is a dictionary with options:
line Screen line where to position the popup. Can use a
number or "cursor", "cursor+1" or "cursor-1" to use
the line of the cursor and add or subtract a number of
lines. If omitted the popup is vertically centered.
The first line is 1.
lines. If omitted or zero the popup is vertically
centered. The first line is 1.
When using "textprop" the number is relative to the
text property and can be negative.
col Screen column where to position the popup. Can use a
number or "cursor" to use the column of the cursor,
"cursor+9" or "cursor-9" to add or subtract a number
of columns. If omitted the popup is horizontally
centered. The first column is 1.
of columns. If omitted or zero the popup is
horizontally centered. The first column is 1.
When using "textprop" the number is relative to the
text property and can be negative.
pos "topleft", "topright", "botleft" or "botright":

View File

@@ -627,16 +627,9 @@ MS-Windows
http://www.cs.wisc.edu/~ghost/gsview/
DOS
- ps_view. Obtainable from:
ftp://ftp.pg.gda.pl/pub/TeX/support/ps_view/
ftp://ftp.dante.de/tex-archive/support/ps_view/
Linux
- GSview. Linux version of the popular MS-Windows.
- GSview. Linux version of the popular MS-Windows previewer.
Obtainable from:
http://www.cs.wisc.edu/~ghost/gsview/

View File

@@ -1,4 +1,4 @@
*quickfix.txt* For Vim version 8.2. Last change: 2019 Dec 07
*quickfix.txt* For Vim version 8.2. Last change: 2020 Jan 06
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -229,8 +229,16 @@ processing a quickfix or location list command, it will be aborted.
current window is used instead of the quickfix list.
*:cq* *:cquit*
:cq[uit][!] Quit Vim with an error code, so that the compiler
will not compile the same file again.
:cq[uit][!]
:{N}cq[uit][!]
:cq[uit][!] {N} Quit Vim with error code {N}. {N} defaults to one.
Useful when Vim is called from another program:
e.g., a compiler will not compile the same file again,
`git commit` will abort the committing process, `fc`
(built-in for shells like bash and zsh) will not
execute the command, etc.
{N} can also be zero, in which case Vim exits
normally.
WARNING: All changes in files are lost! Also when the
[!] is not used. It works like ":qall!" |:qall|,
except that Vim returns a non-zero exit code.
@@ -935,11 +943,11 @@ or simpler >
"$*" can be given multiple times, for example: >
:set makeprg=gcc\ -o\ $*\ $*
The 'shellpipe' option defaults to ">" for the Amiga and Win32. This means
that the output of the compiler is saved in a file and not shown on the screen
directly. For Unix "| tee" is used. The compiler output is shown on the
screen and saved in a file the same time. Depending on the shell used "|&
tee" or "2>&1| tee" is the default, so stderr output will be included.
The 'shellpipe' option defaults to ">" for the Amiga and ">%s 2>&1" for Win32.
This means that the output of the compiler is saved in a file and not shown on
the screen directly. For Unix "| tee" is used. The compiler output is shown
on the screen and saved in a file the same time. Depending on the shell used
"|& tee" or "2>&1| tee" is the default, so stderr output will be included.
If 'shellpipe' is empty, the {errorfile} part will be omitted. This is useful
for compilers that write to an errorfile themselves (e.g., Manx's Amiga C).
@@ -1099,7 +1107,7 @@ id-utils) in a similar way to its compiler integration (see |:make| above).
allowed with |:bufdo|.
An example that uses the argument list and avoids
errors for files without matches: >
:silent argdo try
:silent argdo try
\ | grepadd! something %
\ | catch /E480:/
\ | endtry"
@@ -1302,7 +1310,7 @@ You can force the compiler to ignore makefiles by defining
b:tex_ignore_makefile or g:tex_ignore_makefile variable (they are checked for
existence only).
If the compiler chose not to use make, it need to choose a right program for
If the compiler chose not to use make, it needs to choose a right program for
processing your input. If b:tex_flavor or g:tex_flavor (in this precedence)
variable exists, it defines TeX flavor for :make (actually, this is the name
of executed command), and if both variables do not exist, it defaults to

View File

@@ -1,4 +1,4 @@
*quickref.txt* For Vim version 8.2. Last change: 2019 Dec 07
*quickref.txt* For Vim version 8.2. Last change: 2020 Jan 17
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -1057,8 +1057,7 @@ Short explanation of each option: *option-list*
search
|<Del>| <Del> while entering a count: delete last character
|:version| :ve[rsion] show version information
|:mode| :mode N MS-Windows: set screen mode to N (number, C80,
C4350, etc.)
|:mode| :mode N set screen mode to N (obsolete)
|:normal| :norm[al][!] {commands}
execute Normal mode commands
|Q| Q switch to "Ex" mode

View File

@@ -1,4 +1,4 @@
*recover.txt* For Vim version 8.2. Last change: 2019 May 07
*recover.txt* For Vim version 8.2. Last change: 2020 Mar 24
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -125,7 +125,7 @@ If you want to make sure that your changes are in the swap file use this
command:
*:pre* *:preserve* *E313* *E314*
:pre[serve] Write all text for all buffers into swap file. The
:pre[serve] Write all text for all buffers into swap files. The
original file is no longer needed for recovery.
This sets a flag in the current buffer. When the '&'
flag is present in 'cpoptions' the swap file will not

View File

@@ -326,25 +326,25 @@ Exceptions:
spell file is used.
For example, with these values:
'runtimepath' is "~/.vim,/usr/share/vim81,~/.vim/after"
'runtimepath' is "~/.vim,/usr/share/vim82,~/.vim/after"
'encoding' is "iso-8859-2"
'spelllang' is "pl"
Vim will look for:
1. ~/.vim/spell/pl.iso-8859-2.spl
2. /usr/share/vim81/spell/pl.iso-8859-2.spl
2. /usr/share/vim82/spell/pl.iso-8859-2.spl
3. ~/.vim/spell/pl.iso-8859-2.add.spl
4. /usr/share/vim81/spell/pl.iso-8859-2.add.spl
4. /usr/share/vim82/spell/pl.iso-8859-2.add.spl
5. ~/.vim/after/spell/pl.iso-8859-2.add.spl
This assumes 1. is not found and 2. is found.
If 'encoding' is "latin1" Vim will look for:
1. ~/.vim/spell/pl.latin1.spl
2. /usr/share/vim81/spell/pl.latin1.spl
2. /usr/share/vim82/spell/pl.latin1.spl
3. ~/.vim/after/spell/pl.latin1.spl
4. ~/.vim/spell/pl.ascii.spl
5. /usr/share/vim81/spell/pl.ascii.spl
5. /usr/share/vim82/spell/pl.ascii.spl
6. ~/.vim/after/spell/pl.ascii.spl
This assumes none of them are found (Polish doesn't make sense when leaving

View File

@@ -1,4 +1,4 @@
*starting.txt* For Vim version 8.2. Last change: 2019 Dec 11
*starting.txt* For Vim version 8.2. Last change: 2020 Feb 04
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -58,10 +58,12 @@ filename One or more file names. The first one will be the current
that is read from stdin. The commands that would normally be
read from stdin will now be read from stderr. Example: >
find . -name "*.c" -print | vim -
< The buffer will not be marked as modified, so that it's easy
to exit. Be careful to mark it as modified if you don't want
to accidentally lose it. Example: >
ls | view -
< The buffer will be marked as modified, so that you are
reminded to save the text when trying to exit. If you don't
like that, put this these lines in your vimrc: >
" Don't set 'modified' when reading from stdin
au StdinReadPost * set nomodified
<
Starting in Ex mode: >
ex -
@@ -108,7 +110,7 @@ vimdiff vim -d Start in diff mode |diff-mode|
gvimdiff vim -gd Start in diff mode |diff-mode|
Additional characters may follow, they are ignored. For example, you can have
"gvim-5" to start the GUI. You must have an executable by that name then, of
"gvim-8" to start the GUI. You must have an executable by that name then, of
course.
On Unix, you would normally have one executable called Vim, and links from the
@@ -788,6 +790,7 @@ accordingly. Vim proceeds in this order:
or $VIM/_vimrc
Amiga s:.vimrc, home:.vimrc, home:vimfiles:vimrc
or $VIM/.vimrc
Haiku $HOME/config/settings/vim/vimrc
The files are searched in the order specified above and only the first
one that is found is read.
@@ -833,6 +836,8 @@ accordingly. Vim proceeds in this order:
"$HOME/_vimrc" (for Win32) (*)
"$HOME/vimfiles/vimrc" (for Win32) (*)
"$VIM/_vimrc" (for Win32) (*)
"$HOME/config/settings/vim/vimrc" (for Haiku) (*)
Note: For Unix and Amiga, when ".vimrc" does not exist,
"_vimrc" is also tried, in case an MS-DOS compatible file
system is used. For MS-Windows ".vimrc" is checked after
@@ -948,6 +953,8 @@ sessions. Put it in a place so that it will be found by 3b:
~/.vimrc (Unix)
s:.vimrc (Amiga)
$VIM\_vimrc (Win32)
~/config/settings/vim/vimrc (Haiku)
Note that creating a vimrc file will cause the 'compatible' option to be off
by default. See |compatible-default|.
@@ -1140,12 +1147,12 @@ will try to get the value for $VIM in this order:
variable too (the default is "$VIMRUNTIME/doc/help.txt": chicken-egg
problem). The file name ("help.txt" or any other) is removed. Then
trailing directory names are removed, in this order: "doc", "runtime" and
"vim{version}" (e.g., "vim54").
"vim{version}" (e.g., "vim82").
3. For Win32 Vim tries to use the directory name of the executable. If it
ends in "/src", this is removed. This is useful if you unpacked the .zip
file in some directory, and adjusted the search path to find the vim
executable. Trailing directory names are removed, in this order: "runtime"
and "vim{version}" (e.g., "vim54").
and "vim{version}" (e.g., "vim82").
4. For Unix the compile-time defined installation directory is used (see the
output of ":version").
@@ -1163,7 +1170,7 @@ is the order used to find the value of $VIMRUNTIME:
1. If the environment variable $VIMRUNTIME is set, it is used. You can use
this when the runtime files are in an unusual location.
2. If "$VIM/vim{version}" exists, it is used. {version} is the version
number of Vim, without any '-' or '.'. For example: "$VIM/vim54". This is
number of Vim, without any '-' or '.'. For example: "$VIM/vim82". This is
the normal value for $VIMRUNTIME.
3. If "$VIM/runtime" exists, it is used.
4. The value of $VIM is used. This is for backwards compatibility with older
@@ -1175,11 +1182,11 @@ For Unix, when there is a compiled-in default for $VIMRUNTIME (check the
output of ":version"), steps 2, 3 and 4 are skipped, and the compiled-in
default is used after step 5. This means that the compiled-in default
overrules the value of $VIM. This is useful if $VIM is "/etc" and the runtime
files are in "/usr/share/vim/vim54".
files are in "/usr/share/vim/vim82".
Once Vim has done this once, it will set the $VIMRUNTIME environment variable.
To change it later, use a ":let" command like this: >
:let $VIMRUNTIME = "/home/piet/vim/vim54"
:let $VIMRUNTIME = "/home/piet/vim/vim82"
In case you need the value of $VIMRUNTIME in a shell (e.g., for a script that
greps in the help files) you might be able to use this: >
@@ -1208,8 +1215,8 @@ CTRL-Z Suspend Vim, like ":stop".
buffers are not written, don't forget to bring Vim
back to the foreground later!
In the GUI, suspending is implemented as iconising gvim. In Windows 95/NT,
gvim is minimized.
In the GUI, suspending is implemented as iconising gvim. In MS-Windows, gvim
is minimized.
On many Unix systems, it is possible to suspend Vim with CTRL-Z. This is only
possible in Normal and Visual mode (see next chapter, |vim-modes|). Vim will
@@ -1570,8 +1577,8 @@ remembered.
VIMINFO FILE NAME *viminfo-file-name*
- The default name of the viminfo file is "$HOME/.viminfo" for Unix,
"s:.viminfo" for Amiga, "$HOME\_viminfo" for Win32. For the last two, when
$HOME is not set, "$VIM\_viminfo" is used. When $VIM is also not set,
"s:.viminfo" for Amiga, "$HOME\_viminfo" for Win32. For Win32, when $HOME
is not set, "$VIM\_viminfo" is used. When $VIM is also not set,
"c:\_viminfo" is used.
- The 'n' flag in the 'viminfo' option can be used to specify another viminfo
file name |'viminfo'|.

View File

@@ -1,4 +1,4 @@
*syntax.txt* For Vim version 8.2. Last change: 2019 Dec 19
*syntax.txt* For Vim version 8.2. Last change: 2020 Feb 29
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -60,8 +60,8 @@ If the VIM environment variable is not set, Vim will try to find
the path in another way (see |$VIMRUNTIME|). Usually this works just
fine. If it doesn't, try setting the VIM environment variable to the
directory where the Vim stuff is located. For example, if your syntax files
are in the "/usr/vim/vim81/syntax" directory, set $VIMRUNTIME to
"/usr/vim/vim81". You must do this in the shell, before starting Vim.
are in the "/usr/vim/vim82/syntax" directory, set $VIMRUNTIME to
"/usr/vim/vim82". You must do this in the shell, before starting Vim.
This command also sources the |menu.vim| script when the GUI is running or
will start soon. See |'go-M'| about avoiding that.
@@ -217,7 +217,7 @@ The name for a highlight or syntax group must consist of ASCII letters, digits
and the underscore. As a regexp: "[a-zA-Z0-9_]*". However, Vim does not give
an error when using other characters.
To be able to allow each user to pick his favorite set of colors, there must
To be able to allow each user to pick their favorite set of colors, there must
be preferred names for highlight groups that are common for many languages.
These are the suggested group names (if syntax highlighting works properly
you can see the actual color, except for "Ignore"):
@@ -2315,7 +2315,7 @@ contain very long structures that Vim does not synchronize anymore.
PAPP *papp.vim* *ft-papp-syntax*
The PApp syntax file handles .papp files and, to a lesser extend, .pxml
The PApp syntax file handles .papp files and, to a lesser extent, .pxml
and .pxsl files which are all a mixture of perl/xml/html/other using xml
as the top-level file format. By default everything inside phtml or pxml
sections is treated as a string with embedded preprocessor commands. If
@@ -2687,12 +2687,12 @@ Note: only existence of these options matter, not their value. You can replace
QUAKE *quake.vim* *ft-quake-syntax*
The Quake syntax definition should work for most any FPS (First Person
Shooter) based on one of the Quake engines. However, the command names vary
a bit between the three games (Quake, Quake 2, and Quake 3 Arena) so the
syntax definition checks for the existence of three global variables to allow
users to specify what commands are legal in their files. The three variables
can be set for the following effects:
The Quake syntax definition should work for most FPS (First Person Shooter)
based on one of the Quake engines. However, the command names vary a bit
between the three games (Quake, Quake 2, and Quake 3 Arena) so the syntax
definition checks for the existence of three global variables to allow users
to specify what commands are legal in their files. The three variables can
be set for the following effects:
set to highlight commands only available in Quake: >
:let quake_is_quake1 = 1
@@ -3028,7 +3028,7 @@ variables in your <.vimrc>:
ksh: >
let g:is_kornshell = 1
< posix: (using this is the nearly the same as setting g:is_kornshell to 1) >
< posix: (using this is nearly the same as setting g:is_kornshell to 1) >
let g:is_posix = 1
< bash: >
let g:is_bash = 1
@@ -4512,8 +4512,8 @@ two different ways:
(e.g., "syntax/pod.vim") the file is searched for in 'runtimepath'.
All matching files are loaded. Using a relative path is
recommended, because it allows a user to replace the included file
with his own version, without replacing the file that does the ":syn
include".
with their own version, without replacing the file that does the
":syn include".
*E847*
The maximum number of includes is 999.

View File

@@ -1,4 +1,4 @@
*tabpage.txt* For Vim version 8.2. Last change: 2019 May 05
*tabpage.txt* For Vim version 8.2. Last change: 2020 Feb 06
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -138,7 +138,7 @@ something else.
:+tabclose " close the next tab page
:1tabclose " close the first tab page
:$tabclose " close the last tab page
:tabclose -2 " close the two previous tab page
:tabclose -2 " close the 2nd previous tab page
:tabclose + " close the next tab page
:tabclose 3 " close the third tab page
:tabclose $ " close the last tab page

View File

@@ -1267,6 +1267,7 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
+X11 various.txt /*+X11*
+acl various.txt /*+acl*
+arabic various.txt /*+arabic*
+autochdir various.txt /*+autochdir*
+autocmd various.txt /*+autocmd*
+autoservername various.txt /*+autoservername*
+balloon_eval various.txt /*+balloon_eval*
@@ -1314,6 +1315,7 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
+iconv various.txt /*+iconv*
+iconv/dyn various.txt /*+iconv\/dyn*
+insert_expand various.txt /*+insert_expand*
+ipv6 various.txt /*+ipv6*
+job various.txt /*+job*
+jumplist various.txt /*+jumplist*
+keymap various.txt /*+keymap*
@@ -2313,6 +2315,7 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
:debug-name repeat.txt /*:debug-name*
:debugg repeat.txt /*:debugg*
:debuggreedy repeat.txt /*:debuggreedy*
:def vim9.txt /*:def*
:del change.txt /*:del*
:delc map.txt /*:delc*
:delcommand map.txt /*:delcommand*
@@ -2340,6 +2343,8 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
:diffupdate diff.txt /*:diffupdate*
:dig digraph.txt /*:dig*
:digraphs digraph.txt /*:digraphs*
:disa vim9.txt /*:disa*
:disassemble vim9.txt /*:disassemble*
:display change.txt /*:display*
:dj tagsrch.txt /*:dj*
:djump tagsrch.txt /*:djump*
@@ -2384,6 +2389,7 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
:emenu gui.txt /*:emenu*
:en eval.txt /*:en*
:end eval.txt /*:end*
:enddef vim9.txt /*:enddef*
:endf eval.txt /*:endf*
:endfo eval.txt /*:endfo*
:endfor eval.txt /*:endfor*
@@ -2404,6 +2410,8 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
:execute eval.txt /*:execute*
:exi editing.txt /*:exi*
:exit editing.txt /*:exit*
:exp vim9.txt /*:exp*
:export vim9.txt /*:export*
:exu helphelp.txt /*:exu*
:exusage helphelp.txt /*:exusage*
:f editing.txt /*:f*
@@ -2506,6 +2514,9 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
:imapclear map.txt /*:imapclear*
:ime gui.txt /*:ime*
:imenu gui.txt /*:imenu*
:imp vim9.txt /*:imp*
:import vim9.txt /*:import*
:import-cycle vim9.txt /*:import-cycle*
:in insert.txt /*:in*
:index index.txt /*:index*
:ino map.txt /*:ino*
@@ -3354,6 +3365,8 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
:vie editing.txt /*:vie*
:view editing.txt /*:view*
:vim quickfix.txt /*:vim*
:vim9 vim9.txt /*:vim9*
:vim9script vim9.txt /*:vim9script*
:vimgrep quickfix.txt /*:vimgrep*
:vimgrepa quickfix.txt /*:vimgrepa*
:vimgrepadd quickfix.txt /*:vimgrepadd*
@@ -3834,6 +3847,7 @@ Command-line cmdline.txt /*Command-line*
Command-line-mode cmdline.txt /*Command-line-mode*
CompleteChanged autocmd.txt /*CompleteChanged*
CompleteDone autocmd.txt /*CompleteDone*
CompleteDonePre autocmd.txt /*CompleteDonePre*
ConPTY terminal.txt /*ConPTY*
Contents quickref.txt /*Contents*
Cscope if_cscop.txt /*Cscope*
@@ -4061,6 +4075,7 @@ E287 mbyte.txt /*E287*
E288 mbyte.txt /*E288*
E289 mbyte.txt /*E289*
E29 change.txt /*E29*
E292 message.txt /*E292*
E293 message.txt /*E293*
E294 message.txt /*E294*
E295 message.txt /*E295*
@@ -4230,6 +4245,7 @@ E447 editing.txt /*E447*
E448 various.txt /*E448*
E449 eval.txt /*E449*
E45 message.txt /*E45*
E452 eval.txt /*E452*
E455 print.txt /*E455*
E456 print.txt /*E456*
E457 print.txt /*E457*
@@ -4660,6 +4676,7 @@ E858 eval.txt /*E858*
E859 eval.txt /*E859*
E86 windows.txt /*E86*
E862 eval.txt /*E862*
E863 popup.txt /*E863*
E864 pattern.txt /*E864*
E865 pattern.txt /*E865*
E866 pattern.txt /*E866*
@@ -4753,7 +4770,7 @@ E947 terminal.txt /*E947*
E948 terminal.txt /*E948*
E949 editing.txt /*E949*
E95 message.txt /*E95*
E950 message.txt /*E950*
E950 options.txt /*E950*
E951 pattern.txt /*E951*
E952 autocmd.txt /*E952*
E953 terminal.txt /*E953*
@@ -4857,6 +4874,7 @@ GetLatestVimScripts-copyright pi_getscript.txt /*GetLatestVimScripts-copyright*
GetLatestVimScripts_dat pi_getscript.txt /*GetLatestVimScripts_dat*
Gnome gui_x11.txt /*Gnome*
H motion.txt /*H*
Haiku os_haiku.txt /*Haiku*
I insert.txt /*I*
ICCF uganda.txt /*ICCF*
IM-server mbyte.txt /*IM-server*
@@ -5808,6 +5826,7 @@ complete-item-kind insert.txt /*complete-item-kind*
complete-items insert.txt /*complete-items*
complete-popup insert.txt /*complete-popup*
complete-popuphidden insert.txt /*complete-popuphidden*
complete-script-local-functions cmdline.txt /*complete-script-local-functions*
complete_CTRL-E insert.txt /*complete_CTRL-E*
complete_CTRL-Y insert.txt /*complete_CTRL-Y*
complete_add() eval.txt /*complete_add()*
@@ -6096,6 +6115,7 @@ dtd2vim insert.txt /*dtd2vim*
dying-variable eval.txt /*dying-variable*
e motion.txt /*e*
easy starting.txt /*easy*
echoraw() eval.txt /*echoraw()*
echospace-variable eval.txt /*echospace-variable*
edit-a-file editing.txt /*edit-a-file*
edit-binary editing.txt /*edit-binary*
@@ -6275,6 +6295,7 @@ faq intro.txt /*faq*
farsi farsi.txt /*farsi*
farsi.txt farsi.txt /*farsi.txt*
fasm.vim syntax.txt /*fasm.vim*
fast-functions vim9.txt /*fast-functions*
fcs_choice-variable eval.txt /*fcs_choice-variable*
fcs_reason-variable eval.txt /*fcs_reason-variable*
feature-list eval.txt /*feature-list*
@@ -7037,6 +7058,20 @@ g~ change.txt /*g~*
g~g~ change.txt /*g~g~*
g~~ change.txt /*g~~*
h motion.txt /*h*
haiku-bugs os_haiku.txt /*haiku-bugs*
haiku-colors os_haiku.txt /*haiku-colors*
haiku-compiling os_haiku.txt /*haiku-compiling*
haiku-dragndrop os_haiku.txt /*haiku-dragndrop*
haiku-fonts os_haiku.txt /*haiku-fonts*
haiku-general os_haiku.txt /*haiku-general*
haiku-gui os_haiku.txt /*haiku-gui*
haiku-launch os_haiku.txt /*haiku-launch*
haiku-meta os_haiku.txt /*haiku-meta*
haiku-mouse os_haiku.txt /*haiku-mouse*
haiku-support-credits os_haiku.txt /*haiku-support-credits*
haiku-toolbar-images os_haiku.txt /*haiku-toolbar-images*
haiku-user-settings-dir os_haiku.txt /*haiku-user-settings-dir*
haiku-vimdir os_haiku.txt /*haiku-vimdir*
hangul hangulin.txt /*hangul*
hangulin.txt hangulin.txt /*hangulin.txt*
has() eval.txt /*has()*
@@ -7260,6 +7295,7 @@ i_CTRL-R_= insert.txt /*i_CTRL-R_=*
i_CTRL-R_CTRL-O insert.txt /*i_CTRL-R_CTRL-O*
i_CTRL-R_CTRL-P insert.txt /*i_CTRL-R_CTRL-P*
i_CTRL-R_CTRL-R insert.txt /*i_CTRL-R_CTRL-R*
i_CTRL-SHIFT-Q insert.txt /*i_CTRL-SHIFT-Q*
i_CTRL-SHIFT-V insert.txt /*i_CTRL-SHIFT-V*
i_CTRL-T insert.txt /*i_CTRL-T*
i_CTRL-U insert.txt /*i_CTRL-U*
@@ -7339,6 +7375,7 @@ in_name channel.txt /*in_name*
in_top channel.txt /*in_top*
inactive-buffer windows.txt /*inactive-buffer*
include-search tagsrch.txt /*include-search*
inclusion helphelp.txt /*inclusion*
inclusive motion.txt /*inclusive*
incomp-small-6 version6.txt /*incomp-small-6*
incompatible-5 version5.txt /*incompatible-5*
@@ -7556,6 +7593,7 @@ log10() eval.txt /*log10()*
logiPat pi_logipat.txt /*logiPat*
logiPat-arg pi_logipat.txt /*logiPat-arg*
logiPat-caveat pi_logipat.txt /*logiPat-caveat*
logiPat-cmd pi_logipat.txt /*logiPat-cmd*
logiPat-contents pi_logipat.txt /*logiPat-contents*
logiPat-copyright pi_logipat.txt /*logiPat-copyright*
logiPat-examples pi_logipat.txt /*logiPat-examples*
@@ -7699,7 +7737,11 @@ menu-changes-5.4 version5.txt /*menu-changes-5.4*
menu-examples gui.txt /*menu-examples*
menu-priority gui.txt /*menu-priority*
menu-separator gui.txt /*menu-separator*
menu-shortcut gui.txt /*menu-shortcut*
menu-text gui.txt /*menu-text*
menu-tips gui.txt /*menu-tips*
menu.vim gui.txt /*menu.vim*
menu_info() eval.txt /*menu_info()*
menus gui.txt /*menus*
merge diff.txt /*merge*
message-history message.txt /*message-history*
@@ -8142,6 +8184,7 @@ nroff.vim syntax.txt /*nroff.vim*
null-variable eval.txt /*null-variable*
number_relativenumber options.txt /*number_relativenumber*
numbered-function eval.txt /*numbered-function*
numbersize-variable eval.txt /*numbersize-variable*
o insert.txt /*o*
o_CTRL-V motion.txt /*o_CTRL-V*
o_V motion.txt /*o_V*
@@ -8192,6 +8235,7 @@ os_390.txt os_390.txt /*os_390.txt*
os_amiga.txt os_amiga.txt /*os_amiga.txt*
os_beos.txt os_beos.txt /*os_beos.txt*
os_dos.txt os_dos.txt /*os_dos.txt*
os_haiku.txt os_haiku.txt /*os_haiku.txt*
os_mac.txt os_mac.txt /*os_mac.txt*
os_mint.txt os_mint.txt /*os_mint.txt*
os_msdos.txt os_msdos.txt /*os_msdos.txt*
@@ -8229,6 +8273,7 @@ patches-8.2 version8.txt /*patches-8.2*
pathshorten() eval.txt /*pathshorten()*
pattern pattern.txt /*pattern*
pattern-atoms pattern.txt /*pattern-atoms*
pattern-delimiter change.txt /*pattern-delimiter*
pattern-multi-byte pattern.txt /*pattern-multi-byte*
pattern-multi-items pattern.txt /*pattern-multi-items*
pattern-overview pattern.txt /*pattern-overview*
@@ -8312,6 +8357,7 @@ popup-menu-added version5.txt /*popup-menu-added*
popup-position popup.txt /*popup-position*
popup-props popup.txt /*popup-props*
popup-scrollbar popup.txt /*popup-scrollbar*
popup-terminal popup.txt /*popup-terminal*
popup-textprop-pos popup.txt /*popup-textprop-pos*
popup-usage popup.txt /*popup-usage*
popup-window popup.txt /*popup-window*
@@ -8534,6 +8580,7 @@ quote~ change.txt /*quote~*
r change.txt /*r*
r.vim syntax.txt /*r.vim*
rand() eval.txt /*rand()*
random eval.txt /*random*
range() eval.txt /*range()*
raw-terminal-mode term.txt /*raw-terminal-mode*
rcp pi_netrw.txt /*rcp*
@@ -9304,6 +9351,7 @@ tags-file-format tagsrch.txt /*tags-file-format*
tags-option tagsrch.txt /*tags-option*
tagsrch.txt tagsrch.txt /*tagsrch.txt*
tagstack tagsrch.txt /*tagstack*
tagstack-examples tagsrch.txt /*tagstack-examples*
tan() eval.txt /*tan()*
tanh() eval.txt /*tanh()*
tar pi_tar.txt /*tar*
@@ -9459,6 +9507,7 @@ test_ignore_error() testing.txt /*test_ignore_error()*
test_null_blob() testing.txt /*test_null_blob()*
test_null_channel() testing.txt /*test_null_channel()*
test_null_dict() testing.txt /*test_null_dict()*
test_null_function() testing.txt /*test_null_function()*
test_null_job() testing.txt /*test_null_job()*
test_null_list() testing.txt /*test_null_list()*
test_null_partial() testing.txt /*test_null_partial()*
@@ -9469,6 +9518,9 @@ test_refcount() testing.txt /*test_refcount()*
test_scrollbar() testing.txt /*test_scrollbar()*
test_setmouse() testing.txt /*test_setmouse()*
test_settime() testing.txt /*test_settime()*
test_srand_seed() testing.txt /*test_srand_seed()*
test_unknown() testing.txt /*test_unknown()*
test_void() testing.txt /*test_void()*
testing testing.txt /*testing*
testing-support testing.txt /*testing-support*
testing-variable eval.txt /*testing-variable*
@@ -9526,6 +9578,7 @@ toggle options.txt /*toggle*
toggle-revins version4.txt /*toggle-revins*
tolower() eval.txt /*tolower()*
toolbar-icon gui.txt /*toolbar-icon*
tooltips gui.txt /*tooltips*
toupper() eval.txt /*toupper()*
tr() eval.txt /*tr()*
trim() eval.txt /*trim()*
@@ -9541,6 +9594,7 @@ tutor usr_01.txt /*tutor*
twice if_cscop.txt /*twice*
two-engines pattern.txt /*two-engines*
type() eval.txt /*type()*
type-inference vim9.txt /*type-inference*
type-mistakes tips.txt /*type-mistakes*
typecorr-settings usr_41.txt /*typecorr-settings*
typecorr.txt usr_41.txt /*typecorr.txt*
@@ -9668,6 +9722,7 @@ v:mouse_win eval.txt /*v:mouse_win*
v:mouse_winid eval.txt /*v:mouse_winid*
v:none eval.txt /*v:none*
v:null eval.txt /*v:null*
v:numbersize eval.txt /*v:numbersize*
v:oldfiles eval.txt /*v:oldfiles*
v:operator eval.txt /*v:operator*
v:option_command eval.txt /*v:option_command*
@@ -9904,6 +9959,14 @@ vim-variable eval.txt /*vim-variable*
vim.vim syntax.txt /*vim.vim*
vim7 version7.txt /*vim7*
vim8 version8.txt /*vim8*
vim9-differences vim9.txt /*vim9-differences*
vim9-export vim9.txt /*vim9-export*
vim9-import vim9.txt /*vim9-import*
vim9-rationale vim9.txt /*vim9-rationale*
vim9-script vim9.txt /*vim9-script*
vim9-types vim9.txt /*vim9-types*
vim9.txt vim9.txt /*vim9.txt*
vim9script vim9.txt /*vim9script*
vim: options.txt /*vim:*
vim_announce intro.txt /*vim_announce*
vim_dev intro.txt /*vim_dev*
@@ -10025,6 +10088,7 @@ win32s os_win32.txt /*win32s*
win_execute() eval.txt /*win_execute()*
win_findbuf() eval.txt /*win_findbuf()*
win_getid() eval.txt /*win_getid()*
win_gettype() eval.txt /*win_gettype()*
win_gotoid() eval.txt /*win_gotoid()*
win_id2tabwin() eval.txt /*win_id2tabwin()*
win_id2win() eval.txt /*win_id2win()*
@@ -10056,6 +10120,7 @@ windows.txt windows.txt /*windows.txt*
windows95 os_win32.txt /*windows95*
windows98 os_win32.txt /*windows98*
windowsme os_win32.txt /*windowsme*
windowsversion() eval.txt /*windowsversion()*
winheight() eval.txt /*winheight()*
winid windows.txt /*winid*
winlayout() eval.txt /*winlayout()*

View File

@@ -1,4 +1,4 @@
*tagsrch.txt* For Vim version 8.2. Last change: 2019 Nov 07
*tagsrch.txt* For Vim version 8.2. Last change: 2020 Apr 19
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -185,6 +185,29 @@ commands explained above the tag stack will look like this:
The |gettagstack()| function returns the tag stack of a specified window. The
|settagstack()| function modifies the tag stack of a window.
*tagstack-examples*
Write to the tag stack just like `:tag` but with a user-defined
jumper#jump_to_tag function: >
" Store where we're jumping from before we jump.
let tag = expand('<cword>')
let pos = [bufnr()] + getcurpos()[1:]
let item = {'bufnr': pos[0], 'from': pos, 'tagname': tag}
if jumper#jump_to_tag(tag)
" Jump was successful, write previous location to tag stack.
let winid = win_getid()
let stack = gettagstack(winid)
let stack['items'] = [item]
call settagstack(winid, stack, 't')
endif
<
Set current index of the tag stack to 4: >
call settagstack(1005, {'curidx' : 4})
<
Push a new item onto the tag stack: >
let pos = [bufnr('myfile.txt'), 10, 1, 0]
let newtag = [{'tagname' : 'mytag', 'from' : pos}]
call settagstack(2, {'items' : newtag}, 'a')
<
*E73*
When you try to use the tag stack while it doesn't contain anything you will
get an error message.
@@ -210,14 +233,14 @@ the same entry.
Example output:
>
nr pri kind tag file
# pri kind tag file
1 F f mch_delay os_amiga.c
mch_delay(msec, ignoreinput)
> 2 F f mch_delay os_msdos.c
mch_delay(msec, ignoreinput)
3 F f mch_delay os_unix.c
mch_delay(msec, ignoreinput)
Enter nr of choice (<CR> to abort):
Type number and <Enter> (empty cancels):
<
See |tag-priority| for the "pri" column. Note that
this depends on the current file, thus using
@@ -344,11 +367,11 @@ the same as above, with a "p" prepended.
A static tag is a tag that is defined for a specific file. In a C program
this could be a static function.
In Vi jumping to a tag sets the current search pattern. This means that
the "n" command after jumping to a tag does not search for the same pattern
that it did before jumping to the tag. Vim does not do this as we consider it
to be a bug. You can still find the tag search pattern in the search history.
If you really want the old Vi behavior, set the 't' flag in 'cpoptions'.
In Vi jumping to a tag sets the current search pattern. This means that the
"n" command after jumping to a tag does not search for the same pattern that
it did before jumping to the tag. Vim does not do this as we consider it to
be a bug. If you really want the old Vi behavior, set the 't' flag in
'cpoptions'.
*tag-binary-search*
Vim uses binary searching in the tags file to find the desired tag quickly
@@ -426,8 +449,7 @@ would otherwise go unnoticed. Example: >
In Vi the ":tag" command sets the last search pattern when the tag is searched
for. In Vim this is not done, the previous search pattern is still remembered,
unless the 't' flag is present in 'cpoptions'. The search pattern is always
put in the search history, so you can modify it if searching fails.
unless the 't' flag is present in 'cpoptions'.
*emacs-tags* *emacs_tags* *E430*
Emacs style tag files are only supported if Vim was compiled with the
@@ -505,10 +527,13 @@ a tag for each "#defined" macro, typedefs, enums, etc.
Some programs that generate tags files:
ctags As found on most Unix systems. Only supports C. Only
does the basic work.
universal ctags A maintained version of ctags based on exuberant
ctags. See https://ctags.io.
*Exuberant_ctags*
exuberant ctags This is a very good one. It works for C, C++, Java,
Fortran, Eiffel and others. It can generate tags for
many items. See http://ctags.sourceforge.net.
No new version since 2009.
etags Connected to Emacs. Supports many languages.
JTags For Java, in Java. It can be found at
http://www.fleiner.com/jtags/.
@@ -904,8 +929,8 @@ The following is a hypothetical example of a function used for 'tagfunc'. It
uses the output of |taglist()| to generate the result: a list of tags in the
inverse order of file names.
>
function! TagFunc(pattern, flags, info)
function! CompareFilenames(item1, item2)
function TagFunc(pattern, flags, info)
function CompareFilenames(item1, item2)
let f1 = a:item1['filename']
let f2 = a:item2['filename']
return f1 >=# f2 ?

View File

@@ -1,4 +1,4 @@
*term.txt* For Vim version 8.2. Last change: 2019 Dec 07
*term.txt* For Vim version 8.2. Last change: 2020 Apr 12
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -545,6 +545,7 @@ Note about colors: The 't_Co' option tells Vim the number of colors available.
When it is non-zero, the 't_AB' and 't_AF' options are used to set the color.
If one of these is not available, 't_Sb' and 't_Sf' are used. 't_me' is used
to reset to the default colors. Also see 'termguicolors'.
When the GUI is running 't_Co' is set to 16777216.
*termcap-cursor-shape* *termcap-cursor-color*
When Vim enters Insert mode the 't_SI' escape sequence is sent. When Vim
@@ -579,7 +580,7 @@ remove highlighting from a line. This is required for "hpterm". Setting the
versa.
*scroll-region*
Some termcaps do not include an entry for 'cs' (scroll region), although the
Some termcaps do not include an entry for "cs" (scroll region), although the
terminal does support it. For example: xterm on a Sun. You can use the
builtin_xterm or define t_cs yourself. For example: >
:set t_cs=^V^[[%i%d;%dr
@@ -596,11 +597,9 @@ cleared when scrolling).
Unfortunately it is not possible to deduce from the termcap how cursor
positioning should be done when using a scrolling region: Relative to the
beginning of the screen or relative to the beginning of the scrolling region.
Most terminals use the first method. A known exception is the MS-Windows
console (pcterm). The 't_CS' option should be set to any string when cursor
positioning is relative to the start of the scrolling region. It should be
set to an empty string otherwise. It defaults to "yes" when 'term' is
"pcterm".
Most terminals use the first method. The 't_CS' option should be set to any
string when cursor positioning is relative to the start of the scrolling
region. It should be set to an empty string otherwise.
Note for xterm users: The shifted cursor keys normally don't work. You can
make them work with the xmodmap command and some mappings in Vim.
@@ -652,15 +651,7 @@ One command can be used to set the screen size:
:mod[e] [mode]
Without argument this only detects the screen size and redraws the screen.
With MS-Windows it is possible to switch screen mode. [mode] can be one of
these values:
"bw40" 40 columns black&white
"c40" 40 columns color
"bw80" 80 columns black&white
"c80" 80 columns color (most people use this)
"mono" 80 columns monochrome
"c4350" 43 or 50 lines EGA/VGA mode
number mode number to use, depends on your video card
[mode] was used on MS-DOS, but it doesn't work anymore.
==============================================================================
4. Slow and fast terminals *slow-fast-terminal*
@@ -911,8 +902,8 @@ A double click on a word selects that word. 'iskeyword' is used to specify
which characters are included in a word. A double click on a character
that has a match selects until that match (like using "v%"). If the match is
an #if/#else/#endif block, the selection becomes linewise.
For xterm the time for double clicking can be set with the 'mousetime' option.
For the other systems this time is defined outside of Vim.
For MS-Windows and xterm the time for double clicking can be set with the
'mousetime' option. For the other systems this time is defined outside of Vim.
An example, for using a double click to jump to the tag under the cursor: >
:map <2-LeftMouse> :exe "tag ". expand("<cword>")<CR>

View File

@@ -1,4 +1,4 @@
*terminal.txt* For Vim version 8.2. Last change: 2019 Dec 07
*terminal.txt* For Vim version 8.2. Last change: 2020 Mar 26
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -148,7 +148,12 @@ terminal window will start with a white or black background.
To use a different color the Terminal highlight group can be used, for
example: >
hi Terminal ctermbg=lightgrey ctermfg=blue guibg=lightgrey guifg=blue
<
The highlight needs to be defined before the terminal is created. Doing it
later, or setting 'wincolor', will only have effect when the program running
in the terminal displays text or clears the terminal.
Instead of Terminal another group can be specified with the "term_highlight"
option for `term_start()`.
*g:terminal_ansi_colors*
In GUI mode or with 'termguicolors', the 16 ANSI colors used by default in new
terminal windows may be configured using the variable
@@ -641,8 +646,8 @@ term_getsize({buf}) *term_getsize()*
term_getstatus({buf}) *term_getstatus()*
Get the status of terminal {buf}. This returns a comma
separated list of these items:
Get the status of terminal {buf}. This returns a String with
a comma separated list of these items:
running job is running
finished job has finished
normal in Terminal-Normal mode
@@ -857,6 +862,8 @@ term_start({cmd} [, {options}]) *term_start()*
have "%d" where the buffer number goes,
e.g. "10split|buffer %d"; when not
specified "botright sbuf %d" is used
"term_highlight" highlight group to use instead of
"Terminal"
"eof_chars" Text to send after all buffer lines were
written to the terminal. When not set
CTRL-D is used on MS-Windows. For Python
@@ -953,7 +960,7 @@ Currently supported commands:
directory, thus it's best to use the full path.
[options] is only used when opening a new window. If present,
it must be a Dict. Similarly to |++opt|, These entries are
it must be a Dict. Similarly to |++opt|, these entries are
recognized:
"ff" file format: "dos", "mac" or "unix"
"fileformat" idem
@@ -1025,7 +1032,7 @@ Writing a screen dump test for Vim ~
For an example see the Test_syntax_c() function in
src/testdir/test_syntax.vim. The main parts are:
- Write a file you want to test with. This is useful for testing syntax
highlighting. You can also start Vim with en empty buffer.
highlighting. You can also start Vim with an empty buffer.
- Run Vim in a terminal with a specific size. The default is 20 lines of 75
characters. This makes sure the dump is always this size. The function
RunVimInTerminal() takes care of this. Pass it the arguments for the Vim

View File

@@ -1,4 +1,4 @@
*testing.txt* For Vim version 8.2. Last change: 2019 Sep 08
*testing.txt* For Vim version 8.2. Last change: 2020 Apr 10
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -106,6 +106,10 @@ test_null_dict() *test_null_dict()*
Return a |Dict| that is null. Only useful for testing.
test_null_function() *test_null_function()*
Return a |Funcref| that is null. Only useful for testing.
test_null_job() *test_null_job()*
Return a |Job| that is null. Only useful for testing.
{only available when compiled with the +job feature}
@@ -123,6 +127,13 @@ test_null_string() *test_null_string()*
Return a |String| that is null. Only useful for testing.
test_unknown() *test_unknown()*
Return a value with unknown type. Only useful for testing.
test_void() *test_void()*
Return a value with void type. Only useful for testing.
test_option_not_set({name}) *test_option_not_set()*
Reset the flag that indicates option {name} was set. Thus it
looks like it still has the default value. Use like this: >
@@ -205,7 +216,6 @@ test_setmouse({row}, {col}) *test_setmouse()*
call test_setmouse(4, 20)
call feedkeys("\<LeftMouse>", "xt")
test_settime({expr}) *test_settime()*
Set the time Vim uses internally. Currently only used for
timestamps in the history, as they are used in viminfo, and
@@ -218,6 +228,10 @@ test_settime({expr}) *test_settime()*
Can also be used as a |method|: >
GetTime()->test_settime()
test_srand_seed([seed]) *test_srand_seed()*
When [seed] is given this sets the seed value used by
`srand()`. When omitted the test seed is removed.
==============================================================================
3. Assert functions *assert-functions-details*

View File

@@ -1,4 +1,4 @@
*textprop.txt* For Vim version 8.2. Last change: 2019 Dec 07
*textprop.txt* For Vim version 8.2. Last change: 2020 Mar 05
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -133,8 +133,8 @@ prop_add({lnum}, {col}, {props})
to {lnum}, this is a zero-width text property
bufnr buffer to add the property to; when omitted
the current buffer is used
id user defined ID for the property; when omitted
zero is used
id user defined ID for the property; must be a
number; when omitted zero is used
type name of the text property type
All fields except "type" are optional.
@@ -143,8 +143,9 @@ prop_add({lnum}, {col}, {props})
within one line, or use "end_lnum" and "end_col" for a
property that spans more than one line.
When neither "length" nor "end_col" are given the property
will be zero-width. That means it will not be highlighted but
will move with the text, as a kind of mark.
will be zero-width. That means it will move with the text, as
a kind of mark. One character will be highlighted, if the
type specifies highlighting.
The property can end exactly at the last character of the
text, or just after it. In the last case, if text is appended
to the line, the text property size will increase, also when
@@ -154,8 +155,6 @@ prop_add({lnum}, {col}, {props})
added to. When not found, the global property types are used.
If not found an error is given.
See |text-properties| for information about text properties.
Can also be used as a |method|: >
GetLnum()->prop_add(col, props)
@@ -168,14 +167,11 @@ prop_clear({lnum} [, {lnum-end} [, {props}]]) *prop_clear()*
When {props} contains a "bufnr" item use this buffer,
otherwise use the current buffer.
See |text-properties| for information about text properties.
Can also be used as a |method|: >
GetLnum()->prop_clear()
<
*prop_find()*
prop_find({props} [, {direction}])
{not implemented yet}
Search for a text property as specified with {props}:
id property with this ID
type property with this type name
@@ -198,8 +194,6 @@ prop_find({props} [, {direction}])
as with prop_list(), and additionally an "lnum" entry.
If no match is found then an empty Dict is returned.
See |text-properties| for information about text properties.
prop_list({lnum} [, {props}]) *prop_list()*
Return a List with all text properties in line {lnum}.
@@ -223,8 +217,6 @@ prop_list({lnum} [, {props}]) *prop_list()*
When "end" is zero the property continues in the next line.
The line break after this line is included.
See |text-properties| for information about text properties.
Can also be used as a |method|: >
GetLnum()->prop_list()
<
@@ -239,6 +231,7 @@ prop_remove({props} [, {lnum} [, {lnum-end}]])
{props} is a dictionary with these fields:
id remove text properties with this ID
type remove text properties with this type name
both "id" and "type" must both match
bufnr use this buffer instead of the current one
all when TRUE remove all matching text properties,
not just the first one
@@ -248,8 +241,6 @@ prop_remove({props} [, {lnum} [, {lnum-end}]])
Returns the number of properties that were removed.
See |text-properties| for information about text properties.
Can also be used as a |method|: >
GetProps()->prop_remove()
@@ -275,8 +266,6 @@ prop_type_add({name}, {props}) *prop_type_add()* *E969* *E970*
end_incl when TRUE inserts at the end position will be
included in the text property
See |text-properties| for information about text properties.
Can also be used as a |method|: >
GetPropName()->prop_type_add(props)
@@ -285,8 +274,6 @@ prop_type_change({name}, {props}) *prop_type_change()*
property with this name does not exist an error is given.
The {props} argument is just like |prop_type_add()|.
See |text-properties| for information about text properties.
Can also be used as a |method|: >
GetPropName()->prop_type_change(props)
@@ -301,8 +288,6 @@ prop_type_delete({name} [, {props}]) *prop_type_delete()*
When text property type {name} is not found there is no error.
See |text-properties| for information about text properties.
Can also be used as a |method|: >
GetPropName()->prop_type_delete()
@@ -316,8 +301,6 @@ prop_type_get([{name} [, {props}]) *prop_type_get()*
{props} can contain a "bufnr" item. When it is given, use
this buffer instead of the global property types.
See |text-properties| for information about text properties.
Can also be used as a |method|: >
GetPropName()->prop_type_get()
@@ -327,8 +310,6 @@ prop_type_list([{props}]) *prop_type_list()*
{props} can contain a "bufnr" item. When it is given, use
this buffer instead of the global property types.
See |text-properties| for information about text properties.
==============================================================================
3. When text changes *text-prop-changes*
@@ -356,10 +337,11 @@ properties below the changed text, so that they still highlight the same text,
thus you don't need to update these.
Text property columns are not updated: ~
Text property columns are not updated or copied: ~
- When setting the line with |setline()| or through an interface, such as Lua,
Tcl or Python. Vim does not know what text got inserted or deleted.
- With a command like `:move`, which takes a line of text out of context.
vim:tw=78:ts=8:noet:ft=help:norl:

View File

@@ -1,4 +1,4 @@
*todo.txt* For Vim version 8.2. Last change: 2019 Dec 24
*todo.txt* For Vim version 8.2. Last change: 2020 Apr 20
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -38,28 +38,97 @@ browser use: https://github.com/vim/vim/issues/1234
*known-bugs*
-------------------- Known bugs and current work -----------------------
Include ipv6 syntax changes? (DJ Lucas, #5360)
Still have /* */ comments:
misc1.c
misc2.c
others?
Vim9 script:
more tests for # comments:
check all calls to ends_excmd() and test that space before # is needed.
next: ex_findpat()
func and partial types:
- Calling unknown user function does not give proper error message:
assert_equal('123text', RefDef2Arg()) typo for "RetDef2Arg"
- "func" inside "vim9script" doesn't work? (Ben Jackson, #5670)
- :func inside vim9script must still use a:arg
- define function and create funcref in one step:
let ref = def(arg: type): rettype
body
enddef
- Test that a script-local function in Vim9 script cannot be deleted.
- Test that a function defined inside a :def function is local to that
function, g: functions can be defined and script-local functions cannot be
defined.
Also:
- When wildcards are expanded, find `=expr` and evaluate it before invoking
the command. For example: :edit `=filename`
- "echo Func()" is an error if Func() does not return anything.
- Check all Ex commands, give error if they use an expression and should be
compiled.
- For range: make table of first ASCII character with flag to quickly check if
it can be a Vim9 command. E.g. "+" can, but "." can't.
- better implementation for partial and tests for that.
- Make "g:imported = Export.exported" work in Vim9 script.
- Make Foo.Bar() work to call the dict function. (#5676)
- Support type for ":let"/":const" at script level for Vim9 script.
(Ben Jackson, #5671)
Can we share the code for :let between direct execution and compiling?
- Disallow unlet for local/script/imported vars
- Make "++nr" work.
- Check that import in legacy script works and puts item in s:
- Error in any command in "vim9script" aborts sourcing.
- Find a way to test expressions in legacy and Vim9 script without duplication
- Fix memory leaks for test_vim9_disassemble, test_vim9_expr, test_vim9_script
- Test each level of expressions properly, with type checking
- Test try/catch and throw better, also nested.
Test return inside try/finally jumps to finally and then returns.
- call autoload function.
- Implement more expressions, e.g. [a:b]
- can use func as reference:
def SomeFunc() ...
map(list, SomeFunc)
- Test: Function declared inside a :def function is local, disappears at the
end of the function. Unless g: is used, just like with variables.
- implement :type
- import type declaration?
- implement class
- implement interface
- predefined class: Promise<T>
- Make accessing varargs faster: arg[expr]
EVAL expr
LOADVARARG (varags idx)
Popup windows:
- Make it possible to put a terminal window in a popup. Would always grab key
input? Sort-of possible by creating a hidden terminal and opening a popup
with that buffer: #4063.
- With some sequence get get hidden finished terminal buffer. (#5768)
Cannot close popup terminal (#5744)
Buffer can't be wiped, gets status "aF". (#5764)
Is buf->nwindows incorrect?
- popup_clear() and popup_close() should close the terminal popup, and
make the buffer hidden. #5745
- Cursor not updated before a redraw, making it jump. (#5943)
- With terminal in popup, allow for popup_hide() to temporarily hide it.?
- Fire some autocommand event after a new popup window was created and
positioned? PopupNew? Could be used to set some options or move it out of
the way. (#5737)
However, it may also cause trouble, changing the popup of another plugin.
- Use popup (or popup menu) for command line completion
- Implement flip option
- When using a popup for the info of a completion menu, and there is not
enough space, let the popup overlap with the menu. (#4544)
- Implement flip option.
- Make redrawing more efficient and avoid flicker:
- put popup menu also in popup_mask?
- Match does not have right BG color if line length equals popup width.
(#5658)
- Any other commands to disable in a popup window?
Use ERROR_IF_POPUP_WINDOW for these.
- Figure out the size and position better if wrapping inserts indent
Text properties:
- Implement prop_find() issue #4970
- Text properties spanning more than one line
- Patch to fix that split / join does not update properties properly (Axel
Forsman, #5839) Alternative: #5875.
- :goto does not go to the right place when test properties are present.
(#5930)
- "cc" does not call inserted_bytes(). (Axel Forsman, #5763)
- Get E685 with a sequence of commands. (#5674)
- Combining text property with 'cursorline' does not always work (Billie
Cleek, #5533)
- Text properties spanning more than one line. #5683
- See remarks at top of src/textprop.c
'incsearch' with :s:
@@ -94,6 +163,10 @@ Terminal debugger:
with another Vim instance.
Terminal emulator window:
- When started with ":terminal ++close" and the shell exits but there is a
background process, the window remains open, because the channel still
exists (and output still shows). Perhaps close the window when an explicit
++close was used? (#5931)
- When the job in the terminal doesn't use mouse events, let the scroll wheel
scroll the scrollback, like a terminal does at the shell prompt. #2490
And use modeless selection. #2962
@@ -125,13 +198,36 @@ Terminal emulator window:
conversions.
Error numbers available:
E292, E362, E366, E450, E451, E452,
E453, E454, E460, E489, E491, E565, E578, E610, E611, E653,
E654, E856, E857, E860, E861, E863, E889, E900
E856, E857, E861, E900
Patch to move duplicated code to a function. (Yegappan Lakshmanan, #5330)
Buffer autocommands are a bit inconsistent. Add a separate set of
autocommands for the buffer lifecycle:
BufIsCreated (after buffer ID exists)
BufIsLoaded (after buffer ID has content)
BufIsUnloaded (after buffer ID no longer has)
BufIsWiped (after buffer ID was wiped)
BufIsRenamed (after buffer ID gets another name)
The buffer list and windows are locked, no changes possible
Patch to use more FOR_ALL_ macros and use them. (Yegappan Lakshmanan, #5339)
Patch to fix drawing error with DirectX. (James Grant, #5688)
Causes flicker on resizing.
Patch to support ipv6 for channel. (Ozaki Kiichi, #5893)
Patch to explain use of "%" in :!. (David Briscoe, #5591)
Patch to improve Windows terminal support. (Nobuhiro Takasaki, #5546)
Ready to include.
Patch to add "-d" to xxd. (#5616)
Patch to add Turkish manual. (Emir Sarı, #5641)
Patch to support cindent option to handle pragmas differently.
(Max Rumpf, #5468)
File marks merging has duplicates since 7.4.1925. (Ingo Karkat, #5733)
Running test_gui and test_gui_init with Motif sometimes kills the window
manager. Problem with Motif? Now test_gui crashes in submenu_change().
@@ -146,13 +242,37 @@ Needs better docs. Is there a better name?
undo result wrong: Masato Nishihata, #4798
Patch for Template string: #4491. New pull: #4634
Ready to include? Review the code.
When 'lazyredraw' is set sometimes the title is not updated.
(Jason Franklin, 2020 Feb 3) Looks like a race condition.
Patch to delete BeOS code. (#5817)
Strange sequence of BufWipeout and BufNew events while doing omni-complete.
(Paul Jolly, #5656)
Get BufDelete without preceding BufNew. (Paul Jolly, #5694)
Later more requests for what to track.
Should we add new events that don't allow any buffer manipulation?
Really only for dealing with appearing and disappearing buffers, load and
unload.
BufWinenter event not fired when saving unnamed buffer. (Paul Jolly, #5655)
Another spurious BufDelete. (Dani Dickstein, #5701)
Patch to add function to return the text used in the quickfix window.
(Yegappan, #5465)
Patch to add readdirex() (Ken Takata, #5619)
Request to support <Cmd> in mappings, similar to how Neovim does this.
(Daniel Hahler, #4784)
Undo puts cursor in wrong line after "cG<Esc>" undo.
:unmap <c-n> gives error but does remove the mapping. (Antony Scriven, 2019
Dec 19)
Sound: support on Mac? Or does libcanberra work there?
Patch to fix session file when using multiple tab pages. (Jason Franklin, 2019
May 20)
Also put :argadd commands at the start for all buffers, so that their order
@@ -160,30 +280,54 @@ remains equal? Then %argdel to clean it up. Do try this with 'hidden' set.
Also #4994: window-local options not always restored, related to using :badd.
Also #5326: netrw buffers are not restored.
When 'backupdir' has a path ending in double slash (meaning: use full path of
the file) combined with 'patchmode' the file name is wrong. (#5791)
Patch to make ":verbose pwd" show the scope of the directory. (Takuya
Fujiwara, #5469)
Completion mixes results from the current buffer with tags and other files.
Happens when typing CTRL-N while still searching for results. E.g., type "b_"
in terminal.c and then CTRL-N twice.
Should do current file first and not split it up when more results are found.
(Also #1890)
Undo history wrong when ":next file" re-uses a buffer. (#5426)
ex_next() should pass flag to do_argfile(), then to do_ecmd().
Patch to add "note" type to quickfix. (#5527) Missing tests.
Adding "10" to 'spellsuggest' causes spell suggestions to become very slow.
(#4087)
Instead of using a syntax error, use #error to fail early when something is
wrong. E.g. in vim.h "Error:", and blowfish.c "error!". (#5299)
FR: add search_status(), the current values displayed for search (current
match, total matches). (#5631)
Patch to provide search stats in a variable, so that it can be used in the
statusline. (Fujiwara Takuya, #4446)
":helptags ALL" should skip directories where "tags" cannot be written.
(Matěj Cepl, #5026)
Patch for ambiguous width characters in libvterm on MS-Windows 10.
(Nobuhiro Takasaki, #4411)
behavior of i_CTRl-R_CTRL-R differs from documentation. (Paul Desmond Parker,
#5771)
":bnext" in a help buffer is supposed to go to the next help buffer, but it
goes to any buffer, and then :bnext skips help buffers, since they are
unlisted. (#4478)
Patch to include reduce() function. (#5481)
Statusline highlighting error, off by one. (#5599)
Enable 'termbidi' if $VTE_VERSION >= 5703 ?
Universal solution to detect if t_RS is working, using cursor position.
Koichi Iwamoto, #2126
Sound: support on Mac? Or does libcanberra work there?
Python 3.8 doesn't work. (Antonios Hadjigeorgalis, #5509)
The :syntax cchar value can only be a single character. It would be useful to
support combining characters. (Charles Campbell) Also #4687
@@ -192,8 +336,14 @@ It can replace the BeOS code, which is likely not used anymore.
Now on github: #1856. Updated Oct 2017
Got permission to include this under the Vim license.
"--cleanFOO" does not result in an error. (#5537)
Add "t" action to settagstack(): truncate and add new entries. (#5405)
Result of synID() sometimes wrong in help files. (#5252)
Status line is nut updated when splitting windows. (Marcin Szamotulski, #5496)
Problem showing a line if the number column width changes when using "o".
(Mateusz Morusiewicz, #4245)
@@ -204,6 +354,7 @@ When using :packadd files under "later" are not used, which is inconsistent
with packages under "start". (xtal8, #1994)
Patch to add new motion ]( and ]{. (Yasuhiro Matsumoto, #5320)
Or make "v" prefix work?
Modeless selection doesn't work in gvim. (#4783)
Caused by patch 8.1.1534.
@@ -217,16 +368,21 @@ Patch to add per-tabpage and per-window previous directory: "lcd -" and "tcd
Does not build with MinGW out of the box:
- _stat64 is not defined, need to use "struct stat" in vim.h
- WINVER conflict, should use 0x0600 by default?
- INT_MAX not defined: need to include <limits.h> in vim.h
Crash when mixing matchadd and substitute()? (Max Christian Pohle, 2018 May
13, #2910) Can't reproduce?
Display messed up with matchparen, wrapping and scrolling. (#5638)
Patch to configure BUILD_DATE for reproducible builds. (James McCoy, #513)
Patch to add MODIFIED_BY to MSVC build file. (Chen Lei, 2016 Nov 24, #1275)
Patch to support "0o" for octal numbers. (Ken Takata, #5304)
Patch to enable IXON, avoid that CTRL-S stops terminal output. (#5775)
When getting a focus event halfway a mapping this aborts the mapping. E.g.
when "qq" is mapped and after the first "q" the mouse is moved outside of the
gvim window (with focus follows mouse), then the K_FOCUSLOST key is put in the
@@ -240,6 +396,9 @@ Saito, 2013 Apr 24) Update 2016 Aug 12.
Also see issue #609.
We could add the enable/disable sequences to t_ti/t_te or t_ks/t_ke.
:buffer completion does not escape "+" properly and results in a regexp error.
(#5467)
Check_external_diff() is used too often. (Daniel Hahler, #4800)
Win32: after "[I" showing matches, scroll wheel messes up screen. (Tsakiridis,
@@ -249,9 +408,6 @@ Patch by Alex Dobrynin, 2007 Jun 3. Also fixes other scroll wheel problems.
Add a WindowScrolled event. Trigger around the same time as CursorMoved.
Can be used to update highlighting. #3127 #5181
Patch for Template string: #4491. New pull: #4634
Implementation is too inefficient, avoid using lambda.
Incorrect formatting with autoindent. (Sebastian Gniazdowski, #4909)
Patch to add the :bvimgrep command. (Christian Brabandt, 2014 Nov 12)
@@ -281,6 +437,10 @@ Patch to have text objects defined by arbitrary single characters. (Daniel
Thau, 2013 Nov 20, 2014 Jan 29, 2014 Jan 31)
Added tests (James McCoy, 2016 Aug 3, #958). Still needs more work.
":2resize +10" uses size of the current window, adds 10 and applies it to
window 2. User expects 10 to be added to size of window 2. (Daniel Steinberg,
#5443)
Patch for multi-byte characters in langmap and applying a mapping on them.
(Christian Brabandt, 2015 Jun 12, update July 25)
Is this the right solution? Need to cleanup langmap behavior:
@@ -337,9 +497,6 @@ with the first character (like what happens with a last line that doesn't
fit). Display "<<<" at the start of the first visible line (like "@@@" is
displayed in the last line). (Arseny Nasokin, #5154)
Patch for ambiguous width characters in libvterm on MS-Windows 10.
(Nobuhiro Takasaki, #4411)
Window size changes after closing a tab. (#4741)
Problem with colors in terminal window. (Jason Franklin, 2019 May 12)
@@ -402,9 +559,6 @@ similar to check_due_timer(). Also see #3809.
C syntax: {} inside () causes following {} to be highlighted as error.
(Michalis Giannakidis, 2006 Jun 1)
Support setting the character displayed below the last line? Neovim uses
"eob:X" in 'fillchars'.
Check: __attribute__((format(printf, on semsg() and siemsg(). Where was this
added?
@@ -512,19 +666,8 @@ Make ":interactive !cmd" stop termcap mode, also when used in an autocommand.
Add buffer argument to undotree(). (#4001)
Using uninitialized value in test_gn
Using uninitialized value in test_crypt.
memory leak in test_paste
Memory leak in test_terminal:
==23530== by 0x2640D7: alloc (misc2.c:874)
==23530== by 0x2646D6: vim_strsave (misc2.c:1315)
==23530== by 0x25841D: FullName_save (misc1.c:5443)
==23530== by 0x17CB4F: fix_fname (buffer.c:4794)
==23530== by 0x17CB9A: fname_expand (buffer.c:4838)
==23530== by 0x1759AB: buflist_new (buffer.c:1889)
==23530== by 0x35C923: term_start (terminal.c:421)
==23530== by 0x2AFF30: mch_call_shell_terminal (os_unix.c:4377)
==23530== by 0x2B16BE: mch_call_shell (os_unix.c:5383)
Using uninitialized value in test_crypt (can't explain why).
Memory leak in test_terminal_fail
TODO: be able to run all parts of test_alot with valgrind separately
Memory leak in test_alot with pyeval() (allocating partial)
Memory leak in test_alot with expand()
@@ -541,6 +684,8 @@ Add something like 'fillchars' local to window, but allow for specifying a
highlight name. Esp. for the statusline.
And "extends" and "precedes" are also useful without 'list' set. Also in
'fillchars' or another option?
Related: #3820 - Support setting the character displayed below the last line?
Neovim uses "eob:X" in 'fillchars'.
Sourceforge Vim pages still have content, redirect from empty page.
Check for PHP errors. (Wayne Davison, 2018 Oct 26)
@@ -789,9 +934,6 @@ option_save({list}) *option_save()*
directory (Paulo Marcel Coelho Arabic, 2017 Oct 30, #2266)
Also see #1689.
crash when removing an element while inside map(). (Nikolai Pavlov, 2018 Feb
17, #2652)
When 'virtualedit' is "all" and 'cursorcolumn' is set, the wrong column may be
highlighted. (van-de-bugger, 2018 Jan 23, #2576)
@@ -917,8 +1059,6 @@ Patch from Christian Brabandt to preserve upper case marks when wiping out a
buffer. (2013 Dec 9)
Also fixes #2166?
Patch to add argument to :cquit. (Thinca, 2014 Oct 12)
Python: After "import vim" error messages only show the first line of the
stack trace. (Yggdroot, 2017 Jul 28, #1887)
@@ -1051,11 +1191,9 @@ Make a function to check for function-like type?
Screen updated delayed when using CTRL-O u in Insert mode.
(Barlik, #1191) Perhaps because status message?
Implement optional arguments for functions.
Implement named arguments for functions:
func Foo(start, count = 1 all = 1)
call Foo(12)
call Foo(12, all = 0)
call Foo(12, 15, 0)
Add a command to take a range of lines, filter them and put the output
somewhere else. :{range}copy {dest} !cmd
@@ -1106,6 +1244,7 @@ Patch for 'cursorlinenr' option. (Ozaki Kiichi, 2016 Nov 30)
When 'completeopt' has "noselect" does not insert a newline. (Lifepillar, 2017
Apr 23, #1653)
Can 'completeopt' be made buffer-local? (#5487)
Window resizing with 'winfixheight': With a vertical split the height changes
anyway. (Tommy allen, 2017 Feb 21, #1502)
@@ -1275,10 +1414,6 @@ names, shell commands and the like. (Kikuchan, 2010 Oct 14)
Assume the system converts between the actual encoding of the filesystem to
the system encoding (usually utf-8).
Using ":tab drop file" does not trigger BufEnter or TabEnter events.
(Andy Stewart, 2017 Apr 27, #1660)
Autocommands blocked in do_arg_all(). Supposed to happen later?
'hlsearch' interferes with a Conceal match. (Rom Grk, 2016 Aug 9)
MS-Windows: use WS_HIDE instead of SW_SHOWMINNOACTIVE in os_win32.c?
@@ -2703,11 +2838,6 @@ argument list or opening each file in a separate tab.
Windows installer: licence text should not use indent, causes bad word wrap.
(Benjamin Fritz, 2010 Aug 16)
Dos uninstal may delete vim.bat from the wrong directory (e.g., when someone
makes his own wrapper). Add a magic string with the version number to the
.bat file and check for it in the uninstaller. E.g.
# uninstall key: vim8.1*
Changes for Win32 makefile. (Mike Williams, 2007 Jan 22, Alexei Alexandrov,
2007 Feb 8)
@@ -4436,8 +4566,6 @@ Vim script language:
8 Pass the command line arguments to Vim scripts in some way. As v:args
List? Or extra parameter to argv()?
8 Add command arguments with three dashes, passed on to Vim scripts.
9 Add optional arguments to user functions:
:func myFunc(arg1, arg2, arg3 = "blah", arg4 = 17)
6 User functions: Functions local to buffer "b:func()"?
8 For Strings add ":let var[{expr}] = {expr}". When past the end of "var"
just ignore.

View File

@@ -1,4 +1,4 @@
*uganda.txt* For Vim version 8.2. Last change: 2019 Dec 07
*uganda.txt* For Vim version 8.2. Last change: 2020 Jan 08
VIM REFERENCE MANUAL by Bram Moolenaar

View File

@@ -509,14 +509,14 @@ Summary: *help-summary* >
1) Use Ctrl-D after typing a topic and let Vim show all available topics.
Or press Tab to complete: >
:help some<Tab>
:help some<Tab>
< More information on how to use the help: >
:help helphelp
2) Follow the links in bars to related help. You can go from the detailed
help to the user documentation, which describes certain commands more from
a user perspective and less detailed. E.g. after: >
:help pattern.txt
:help pattern.txt
< You can see the user guide topics |03.9| and |usr_27.txt| in the
introduction.
@@ -528,27 +528,27 @@ Summary: *help-summary* >
< to open the help page which describes all option handling and then search
using regular expressions, e.g. textwidth.
Certain options have their own namespace, e.g.: >
:help cpo-<letter>
:help cpo-<letter>
< for the corresponding flag of the 'cpoptions' settings, substitute <letter>
by a specific flag, e.g.: >
:help cpo-;
:help cpo-;
< And for the guioption flags: >
:help go-<letter>
:help go-<letter>
4) Normal mode commands do not have a prefix. To go to the help page for the
"gt" command: >
:help gt
:help gt
5) Insert mode commands start with i_. Help for deleting a word: >
:help i_CTRL-W
:help i_CTRL-W
6) Visual mode commands start with v_. Help for jumping to the other side of
the Visual area: >
:help v_o
:help v_o
7) Command line editing and arguments start with c_. Help for using the
command argument %: >
:help c_%
:help c_%
8) Ex-commands always start with ":", so to go to the ":s" command help: >
:help :s
@@ -559,56 +559,56 @@ Summary: *help-summary* >
10) Key combinations. They usually start with a single letter indicating
the mode for which they can be used. E.g.: >
:help i_CTRL-X
:help i_CTRL-X
< takes you to the family of CTRL-X commands for insert mode which can be
used to auto-complete different things. Note, that certain keys will
always be written the same, e.g. Control will always be CTRL.
For normal mode commands there is no prefix and the topic is available at
:h CTRL-<Letter>. E.g. >
:help CTRL-W
:help CTRL-W
< In contrast >
:help c_CTRL-R
< will describe what the CTRL-R does when entering commands in the Command
line and >
:help v_CTRL-A
:help v_CTRL-A
< talks about incrementing numbers in visual mode and >
:help g_CTRL-A
< talks about the "g<C-A>" command (e.g. you have to press "g" then
<CTRL-A>). Here the "g" stand for the normal command "g" which always
<CTRL-A>). Here the "g" stands for the normal command "g" which always
expects a second key before doing something similar to the commands
starting with "z"
starting with "z".
11) Regexp items always start with /. So to get help for the "\+" quantifier
in Vim regexes: >
:help /\+
:help /\+
< If you need to know everything about regular expressions, start reading
at: >
:help pattern.txt
:help pattern.txt
12) Registers always start with "quote". To find out about the special ":"
register: >
:help quote:
:help quote:
13) Vim script is available at >
:help eval.txt
< Certain aspects of the language are available at :h expr-X where "X" is a
single letter. E.g. >
:help expr-!
< will take you to the topic describing the "!" (Not) operator for
VimScript.
Also important is >
:help function-list
< to find a short description of all functions available. Help topics for
Vim script functions always include the "()", so: >
:help append()
< talks about the append Vim script function rather than how to append text
in the current buffer.
< Certain aspects of the language are available at :h expr-X where "X" is a
single letter. E.g. >
:help expr-!
< will take you to the topic describing the "!" (Not) operator for Vim
script.
Also important is >
:help function-list
< to find a short description of all functions available. Help topics for
Vim script functions always include the "()", so: >
:help append()
< talks about the append Vim script function rather than how to append text
in the current buffer.
14) Mappings are talked about in the help page :h |map.txt|. Use >
:help mapmode-i
:help mapmode-i
< to find out about the |:imap| command. Also use :map-topic
to find out about certain subtopics particular for mappings. e.g: >
:help :map-local
:help :map-local
< for buffer-local mappings or >
:help map-bar
< for how the '|' is handled in mappings.
@@ -619,7 +619,7 @@ Summary: *help-summary* >
16) Window management commands always start with CTRL-W, so you find the
corresponding help at :h CTRL-W_letter. E.g. >
:help CTRL-W_p
:help CTRL-W_p
< for moving the previous accessed window. You can also access >
:help windows.txt
< and read your way through if you are looking for window handling
@@ -628,30 +628,30 @@ Summary: *help-summary* >
17) Use |:helpgrep| to search in all help pages (and also of any installed
plugins). See |:helpgrep| for how to use it.
To search for a topic: >
:helpgrep topic
:helpgrep topic
< This takes you to the first match. To go to the next one: >
:cnext
< All matches are available in the quickfix window which can be opened
with: >
:copen
:copen
< Move around to the match you like and press Enter to jump to that help.
18) The user manual. This describes help topics for beginners in a rather
friendly way. Start at |usr_toc.txt| to find the table of content (as you
might have guessed): >
:help usr_toc.txt
:help usr_toc.txt
< Skim over the contents to find interesting topics. The "Digraphs" and
"Entering special characters" items are in chapter 24, so to go to that
particular help page: >
:help usr_24.txt
:help usr_24.txt
< Also if you want to access a certain chapter in the help, the chapter
number can be accessed directly like this: >
:help 10.1
:help 10.1
< which goes to chapter 10.1 in |usr_10.txt| and talks about recording
macros.
19) Highlighting groups. Always start with hl-groupname. E.g. >
:help hl-WarningMsg
:help hl-WarningMsg
< talks about the WarningMsg highlighting group.
20) Syntax highlighting is namespaced to :syn-topic. E.g. >
@@ -662,24 +662,24 @@ Summary: *help-summary* >
usually start with :l
22) Autocommand events can be found by their name: >
:help BufWinLeave
:help BufWinLeave
< To see all possible events: >
:help autocommand-events
23) Command-line switches always start with "-". So for the help of the -f
command switch of Vim use: >
:help -f
:help -f
24) Optional features always start with "+". To find out about the
conceal feature use: >
:help +conceal
:help +conceal
25) Documentation for included filetype specific functionality is usually
available in the form ft-<filetype>-<functionality>. So >
:help ft-c-syntax
available in the form ft-<filetype>-<functionality>. So >
:help ft-c-syntax
< talks about the C syntax file and the option it provides. Sometimes,
additional sections for omni completion >
:help ft-php-omni
:help ft-php-omni
< or filetype plugins >
:help ft-tex-plugin
< are available.
@@ -691,7 +691,7 @@ Summary: *help-summary* >
< talks about the warning "Changing a readonly file".
Sometimes, however, those error codes are not described, but rather are
listed at the Vim command that usually causes this. So: >
:help E128
:help E128
< takes you to the |:function| command

View File

@@ -1,4 +1,4 @@
*usr_03.txt* For Vim version 8.2. Last change: 2019 Nov 21
*usr_03.txt* For Vim version 8.2. Last change: 2020 Feb 29
VIM USER MANUAL - by Bram Moolenaar
@@ -346,7 +346,8 @@ to find the first #include after the cursor: >
And then type "n" several times. You will move to each #include in the text.
You can also use a count if you know which match you want. Thus "3n" finds
the third match. Using a count with "/" doesn't work.
the third match. You can also use a count with "/": "4/the" goes to the
fourth match of "the".
The "?" command works like "/" but searches backwards: >

View File

@@ -1,4 +1,4 @@
*usr_07.txt* For Vim version 8.2. Last change: 2017 Sep 18
*usr_07.txt* For Vim version 8.2. Last change: 2020 Mar 23
VIM USER MANUAL - by Bram Moolenaar
@@ -227,8 +227,8 @@ the file.
FILE MARKS
In chapter 4 was explained how you can place a mark in a file with "mx" and
jump to that position with "`x". That works within one file. If you edit
In section |03.10| was explained how you can place a mark in a file with "mx"
and jump to that position with "`x". That works within one file. If you edit
another file and place marks there, these are specific for that file. Thus
each file has its own set of marks, they are local to the file.
So far we were using marks with a lowercase letter. There are also marks

View File

@@ -1,4 +1,4 @@
*usr_11.txt* For Vim version 8.2. Last change: 2019 Apr 28
*usr_11.txt* For Vim version 8.2. Last change: 2020 Jan 17
VIM USER MANUAL - by Bram Moolenaar
@@ -211,8 +211,11 @@ will automatically delete it:
- The flag that the file was modified is not set.
- The process is not running.
You can programatically deal with this situation with the |FileChangedShell|
autocommand event.
UNREADABLE SWAP FILE
UNREADABLE SWAP FILE ~
Sometimes the line

View File

@@ -1,4 +1,4 @@
*usr_22.txt* For Vim version 8.2. Last change: 2019 Dec 07
*usr_22.txt* For Vim version 8.2. Last change: 2020 Mar 28
VIM USER MANUAL - by Bram Moolenaar
@@ -84,7 +84,7 @@ browser. This is what you get: >
a................Hiding Files or Directories................|netrw-a|
mb...............Bookmarking a Directory....................|netrw-mb|
gb...............Changing to a Bookmarked Directory.........|netrw-gb|
c................Make Browsing Directory The Current Dir....|netrw-c|
cd...............Make Browsing Directory The Current Dir....|netrw-c|
d................Make A New Directory.......................|netrw-d|
D................Deleting Files or Directories..............|netrw-D|
<c-h>............Edit File/Directory Hiding List............|netrw-ctrl-h|
@@ -121,7 +121,7 @@ The following normal-mode commands may be used to control the browser display:
As a sampling of extra normal-mode commands:
c Change Vim's notion of the current directory to be
cd Change Vim's notion of the current directory to be
the same as the browser directory. (see
|g:netrw_keepdir| to control this, too)
R Rename the file or directory under the cursor; a

View File

@@ -1,4 +1,4 @@
*usr_41.txt* For Vim version 8.2. Last change: 2019 Dec 17
*usr_41.txt* For Vim version 8.2. Last change: 2020 Mar 15
VIM USER MANUAL - by Bram Moolenaar
@@ -942,10 +942,11 @@ Window size and position: *window-size-functions*
winsaveview() get view of current window
winrestview() restore saved view of current window
Mappings: *mapping-functions*
Mappings and Menus: *mapping-functions*
hasmapto() check if a mapping exists
mapcheck() check if a matching mapping exists
maparg() get rhs of a mapping
menu_info() get information about a menu item
wildmenumode() check if the wildmode is active
Testing: *test-functions*

View File

@@ -673,21 +673,10 @@ syntax file, earlier in 'runtimepath' was already loaded: >
finish
endif
To be compatible with Vim 5.8 use: >
if version < 600
syntax clear
elseif exists("b:current_syntax")
finish
endif
Set "b:current_syntax" to the name of the syntax at the end. Don't forget
that included files do this too, you might have to reset "b:current_syntax" if
you include two files.
If you want your syntax file to work with Vim 5.x, add a check for v:version.
Find an syntax file in the Vim 7.2 distribution for an example.
Do not include anything that is a user preference. Don't set 'tabstop',
'expandtab', etc. These belong in a filetype plugin.

View File

@@ -64,20 +64,11 @@ provide the fastest download:
Or use the home site ftp.vim.org, if you think it's fast enough. Go to the
"unix" directory and you'll find a list of files there. The version number is
embedded in the file name. You will want to get the most recent version.
You can get the files for Unix in two ways: One big archive that contains
everything, or four smaller ones that each fit on a floppy disk. For version
6.1 the single big one is called:
You can get the files for Unix in one big archive that contains everything:
vim-6.1.tar.bz2 ~
vim-8.2.tar.bz2 ~
You need the bzip2 program to uncompress it. If you don't have it, get the
four smaller files, which can be uncompressed with gzip. For Vim 6.1 they are
called:
vim-6.1-src1.tar.gz ~
vim-6.1-src2.tar.gz ~
vim-6.1-rt1.tar.gz ~
vim-6.1-rt2.tar.gz ~
You need the bzip2 program to uncompress it.
COMPILING
@@ -87,22 +78,19 @@ First create a top directory to work in, for example: >
mkdir ~/vim
cd ~/vim
Then unpack the archives there. If you have the one big archive, you unpack
it like this: >
Then unpack the archives there. You can unpack it like this: >
bzip2 -d -c path/vim-6.1.tar.bz2 | tar xf -
tar xf path/vim-8.2.tar.bz2
Change "path" to where you have downloaded the file. >
If your tar command doesn't support bz2 directly: >
gzip -d -c path/vim-6.1-src1.tar.gz | tar xf -
gzip -d -c path/vim-6.1-src2.tar.gz | tar xf -
gzip -d -c path/vim-6.1-rt1.tar.gz | tar xf -
gzip -d -c path/vim-6.1-rt2.tar.gz | tar xf -
bzip2 -d -c path/vim-8.2.tar.bz2 | tar xf -
Change "path" to where you have downloaded the file.
If you are satisfied with getting the default features, and your environment
is setup properly, you should be able to compile Vim with just this: >
cd vim61/src
cd vim82/src
make
The make program will run configure and compile everything. Further on we
@@ -231,9 +219,9 @@ provide the fastest download:
Or use the home site ftp.vim.org, if you think it's fast enough. Go to the
"pc" directory and you'll find a list of files there. The version number is
embedded in the file name. You will want to get the most recent version.
We will use "61" here, which is version 6.1.
We will use "82" here, which is version 8.2.
gvim61.exe The self-installing archive.
gvim82.exe The self-installing archive.
This is all you need for the second method. Just launch the executable, and
follow the prompts.
@@ -241,30 +229,28 @@ follow the prompts.
For the first method you must chose one of the binary archives. These are
available:
gvim61.zip The normal MS-Windows GUI version.
gvim61ole.zip The MS-Windows GUI version with OLE support.
gvim82.zip The normal MS-Windows GUI version.
gvim82ole.zip The MS-Windows GUI version with OLE support.
Uses more memory, supports interfacing with
other OLE applications.
vim61w32.zip 32 bit MS-Windows console version. For use in
a Win NT/2000/XP console. Does not work well
on Win 95/98.
vim82w32.zip 32 bit MS-Windows console version.
You only need one of them. Although you could install both a GUI and a
console version. You always need to get the archive with runtime files.
vim61rt.zip The runtime files.
vim82rt.zip The runtime files.
Use your un-zip program to unpack the files. For example, using the "unzip"
program: >
cd c:\
unzip path\gvim61.zip
unzip path\vim61rt.zip
unzip path\gvim82.zip
unzip path\vim82rt.zip
This will unpack the files in the directory "c:\vim\vim61". If you already
This will unpack the files in the directory "c:\vim\vim82". If you already
have a "vim" directory somewhere, you will want to move to the directory just
above it.
Now change to the "vim\vim61" directory and run the install program: >
Now change to the "vim\vim82" directory and run the install program: >
install
@@ -277,8 +263,8 @@ unpacked them.
In case you are not satisfied with the features included in the supplied
binaries, you could try compiling Vim yourself. Get the source archive from
the same location as where the binaries are. You need a compiler for which a
makefile exists. Microsoft Visual C works, but is expensive. The free MinGW
and Cygwin compilers can be used. Check the file src/INSTALLpc.txt for hints.
makefile exists. Microsoft Visual C, MinGW and Cygwin compilers can be used.
Check the file src/INSTALLpc.txt for hints.
==============================================================================
*90.3* Upgrading
@@ -298,7 +284,7 @@ about keeping the old version, running "make install" will work fine. You can
delete the old runtime files manually. Just delete the directory with the
version number in it and all files below it. Example: >
rm -rf /usr/local/share/vim/vim58
rm -rf /usr/local/share/vim/vim74
There are normally no changed files below this directory. If you did change
the "filetype.vim" file, for example, you better merge the changes into the
@@ -308,21 +294,21 @@ If you are careful and want to try out the new version for a while before
switching to it, install the new version under another name. You need to
specify a configure argument. For example: >
./configure --with-vim-name=vim6
./configure --with-vim-name=vim8
Before running "make install", you could use "make -n install" to check that
no valuable existing files are overwritten.
When you finally decide to switch to the new version, all you need to do is
to rename the binary to "vim". For example: >
mv /usr/local/bin/vim6 /usr/local/bin/vim
mv /usr/local/bin/vim8 /usr/local/bin/vim
MS-WINDOWS
Upgrading is mostly equal to installing a new version. Just unpack the files
in the same place as the previous version. A new directory will be created,
e.g., "vim61", for the files of the new version. Your runtime files, vimrc
e.g., "vim82", for the files of the new version. Your runtime files, vimrc
file, viminfo, etc. will be left alone.
If you want to run the new version next to the old one, you will have to do
some handwork. Don't run the install program, it will overwrite a few files
@@ -428,7 +414,7 @@ However, if you have deleted the original files or you used an archive that
someone supplied, you can't do this. Do delete the files manually, here is an
example for when "/usr/local" was used as the root: >
rm -rf /usr/local/share/vim/vim61
rm -rf /usr/local/share/vim/vim82
rm /usr/local/bin/eview
rm /usr/local/bin/evim
rm /usr/local/bin/ex
@@ -467,7 +453,7 @@ MS-WINDOWS
If you installed Vim with the self-installing archive you can run
the "uninstall-gui" program located in the same directory as the other Vim
programs, e.g. "c:\vim\vim61". You can also launch it from the Start menu if
programs, e.g. "c:\vim\vim82". You can also launch it from the Start menu if
installed the Vim entries there. This will remove most of the files, menu
entries and desktop shortcuts. Some files may remain however, as they need a
Windows restart before being deleted.
@@ -477,10 +463,10 @@ be careful.
Else, if you installed Vim with the zip archives, the preferred way is to use
the "uninstall" program. You can find it in the same directory as the
"install" program, e.g., "c:\vim\vim61". This should also work from the usual
"install" program, e.g., "c:\vim\vim82". This should also work from the usual
"install/remove software" page.
However, this only removes the registry entries for Vim. You have to
delete the files yourself. Simply select the directory "vim\vim61" and delete
delete the files yourself. Simply select the directory "vim\vim82" and delete
it recursively. There should be no files there that you changed, but you
might want to check that first.
The "vim" directory probably contains your vimrc file and other runtime

View File

@@ -1,4 +1,4 @@
*various.txt* For Vim version 8.2. Last change: 2019 Dec 07
*various.txt* For Vim version 8.2. Last change: 2020 Apr 13
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -317,6 +317,7 @@ g8 Print the hex values of the bytes used in the
*+acl* |ACL| support included
*+ARP* Amiga only: ARP support included
B *+arabic* |Arabic| language support
B *+autochdir* support 'autochdir' option
T *+autocmd* |:autocmd|, automatic commands
H *+autoservername* Automatically enable |clientserver|
m *+balloon_eval* |balloon-eval| support in the GUI. Included when
@@ -374,6 +375,7 @@ m *+hangul_input* Hangul input support |hangul|
*+iconv* Compiled with the |iconv()| function
*+iconv/dyn* Likewise |iconv-dynamic| |/dyn|
T *+insert_expand* |insert_expand| Insert mode completion
m *+ipv6* Support for IPv6 networking |channel|
m *+job* starting and stopping jobs |job|
S *+jumplist* |jumplist|
B *+keymap* |'keymap'|
@@ -407,7 +409,9 @@ N *+multi_lang* non-English language support |multi-lang|
m *+mzscheme* Mzscheme interface |mzscheme|
m *+mzscheme/dyn* Mzscheme interface |mzscheme-dynamic| |/dyn|
m *+netbeans_intg* |netbeans|
*+num64* 64-bit Number support |Number|
*+num64* 64-bit Number support |Number|
Always enabled since 8.2.0271, use v:numbersize to
check the actual size of a Number.
m *+ole* Win32 GUI only: |ole-interface|
N *+packages* Loading |packages|
N *+path_extra* Up/downwards search in 'path' and 'tags'
@@ -539,7 +543,7 @@ N *+X11* Unix only: can restore window title |X11|
locked or the variable type is changed, then further
command output messages will cause errors.
To get the output of one command the |execute()|
function can be used.
function can be used instead of redirection.
:redi[r] =>> {var} Append messages to an existing variable. Only string
variables can be used.

View File

@@ -1,4 +1,4 @@
*version8.txt* For Vim version 8.2. Last change: 2019 Dec 21
*version8.txt* For Vim version 8.2. Last change: 2020 Feb 04
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -306,7 +306,6 @@ New and extended functions: ~
|systemlist()| get the result of a shell command as a list
|test_alloc_fail()| make memory allocation fail
|test_autochdir()| test 'autochdir' functionality
test_disable_char_avail() test without typeahead (removed later)
|test_garbagecollect_now()| free memory right now
|test_null_channel()| return a null Channel
|test_null_dict()| return a null Dict
@@ -26004,7 +26003,6 @@ Added commands:
`:tlmenu`
`:tlnoremenu`
`:tlunmenu`
`:wsverb`
`:xrestore`
Added options:

View File

@@ -133,14 +133,10 @@ Support for different systems.
- All Unix systems (it works on all systems it was tested on, although
the GUI and Perl interface may not work everywhere).
- Amiga (500, 1000, 1200, 2000, 3000, 4000, ...).
- MS-DOS in real-mode (no additional drivers required).
- In protected mode on Windows 3.1 and MS-DOS (DPMI driver required).
- Windows 95 and Windows NT, with support for long file names.
- OS/2 (needs emx.dll)
- MS-Windows
- VMS
- BeOS
- Macintosh
- Risc OS
- IBM OS/390
Note that on some systems features need to be disabled to reduce
resource usage. For some outdated systems you need to use an older

0
runtime/doc/vim-it.1 Executable file → Normal file
View File

724
runtime/doc/vim9.txt Normal file
View File

@@ -0,0 +1,724 @@
*vim9.txt* For Vim version 8.2. Last change: 2020 Apr 19
VIM REFERENCE MANUAL by Bram Moolenaar
THIS IS STILL UNDER DEVELOPMENT - ANYTHING CAN BREAK - ANYTHING CAN CHANGE
Vim9 script commands and expressions.
Most expression help is in |eval.txt|. This file is about the new syntax and
features in Vim9 script.
THIS IS STILL UNDER DEVELOPMENT - ANYTHING CAN BREAK - ANYTHING CAN CHANGE
1 What is Vim9 script? |vim9-script|
2. Differences |vim9-differences|
3. New style functions |fast-functions|
4. Types |vim9-types|
5. Namespace, Import and Export |vim9script|
9. Rationale |vim9-rationale|
==============================================================================
1. What is Vim9 script? *vim9-script*
THIS IS STILL UNDER DEVELOPMENT - ANYTHING CAN BREAK - ANYTHING CAN CHANGE
Vim script has been growing over time, while keeping backwards compatibility.
That means bad choices from the past often can't be changed. Execution is
quite slow, every line is parsed every time it is executed.
The main goal of Vim9 script is to drastically improve performance. An
increase in execution speed of 10 to 100 times can be expected. A secondary
goal is to avoid Vim-specific constructs and get closer to commonly used
programming languages, such as JavaScript, TypeScript and Java.
The performance improvements can only be achieved by not being 100% backwards
compatible. For example, in a function the arguments are not available in the
"a:" dictionary, as creating that dictionary adds quite a lot of overhead.
Other differences are more subtle, such as how errors are handled.
The Vim9 script syntax and semantics are used in:
- a function defined with the `:def` command
- a script file where the first command is `vim9script`
When using `:function` in a Vim9 script file the legacy syntax is used.
However, this is discouraged.
Vim9 script and legacy Vim script can be mixed. There is no need to rewrite
old scripts, they keep working as before.
==============================================================================
2. Differences from legacy Vim script *vim9-differences*
THIS IS STILL UNDER DEVELOPMENT - ANYTHING CAN BREAK - ANYTHING CAN CHANGE
Comments starting with # ~
In Vim script comments normally start with double quote. That can also be the
start of a string, thus in many places it cannot be used. In Vim9 script a
comment can also start with #. Normally this is a command to list text with
numbers, but you can also use `:number` for that. >
let count = 0 # number of occurences of Ni!
To improve readability there must be a space between the command and the #
that starts a comment. Note that #{ is the start of a dictionary, therefore
it cannot start a comment.
Vim9 functions ~
`:def` has no extra arguments like `:function` does: "range", "abort", "dict"
or "closure". A `:def` function always aborts on an error, does not get a
range passed and cannot be a "dict" function.
In the function body:
- Arguments are accessed by name, without "a:".
- There is no "a:" dictionary or "a:000" list. Variable arguments are defined
with a name and have a list type: >
def MyFunc(...itemlist: list<type>)
for item in itemlist
...
Functions are script-local by default ~
When using `:function` or `:def` to specify a new function at the script level
in a Vim9 script, the function is local to the script, as if "s:" was
prefixed. To define a global function the "g:" prefix must be used.
When using `:function` or `:def` to specify a new function inside a function,
the function is local to the function. It is not possible to define a
script-local function inside a function. To define a global function the "g:"
prefix must be used.
When referring to a function and no "s:" or "g:" prefix is used, Vim will
search for the function in this order:
- Local to the current function scope.
- Local to the current script file.
- Imported functions, see `:import`.
- Global.
Global functions can be defined and deleted at nearly any time. In Vim9
script script-local functions are defined once when the script is sourced and
cannot be deleted.
Variable declarations with :let and :const ~
Local variables need to be declared with `:let`. Local constants need to be
declared with `:const`. We refer to both as "variables".
Variables can be local to a script, function or code block: >
vim9script
let script_var = 123
def SomeFunc()
let func_var = script_var
if cond
let block_var = func_var
...
The variables are only visible in the block where they are defined and nested
blocks. Once the block ends the variable is no longer accessible: >
if cond
let inner = 5
else
let inner = 0
endif
echo inner " Error!
The declaration must be done earlier: >
let inner: number
if cond
inner = 5
else
inner = 0
endif
echo inner
To intentionally use a variable that won't be available later, a block can be
used: >
{
let temp = 'temp'
...
}
echo temp " Error!
An existing variable cannot be assigned to with `:let`, since that implies a
declaration. An exception is global variables: these can be both used with
and without `:let`, because there is no rule about where they are declared.
Variables cannot shadow previously defined variables.
Variables may shadow Ex commands, rename the variable if needed.
Global variables must be prefixed with "g:", also at the script level.
However, global user defined functions are used without "g:". >
vim9script
let script_local = 'text'
let g:global = 'value'
let Funcref = ThatFunction
Since "&opt = value" is now assigning a value to option "opt", ":&" cannot be
used to repeat a `:substitute` command.
Omitting :call and :eval ~
Functions can be called without `:call`: >
writefile(lines, 'file')
Using `:call` is still possible, but this is discouraged.
A method call without `eval` is possible, so long as the start is an
identifier or can't be an Ex command. It does NOT work for string constants: >
myList->add(123) " works
g:myList->add(123) " works
[1, 2, 3]->Process() " works
#{a: 1, b: 2}->Process() " works
{'a': 1, 'b': 2}->Process() " works
"foobar"->Process() " does NOT work
("foobar")->Process() " works
'foobar'->Process() " does NOT work
('foobar')->Process() " works
In case there is ambiguity between a function name and an Ex command, use ":"
to make clear you want to use the Ex command. For example, there is both the
`:substitute` command and the `substitute()` function. When the line starts
with `substitute(` this will use the function, prepend a colon to use the
command instead: >
:substitute(pattern (replacement (
Note that while variables need to be defined before they can be used,
functions can be called before being defined. This is required to be able
have cyclic dependencies between functions. It is slightly less efficient,
since the function has to be looked up by name. And a typo in the function
name will only be found when the call is executed.
Omitting function() ~
A user defined function can be used as a function reference in an expression
without `function()`. The argument types and return type will then be checked.
The function must already have been defined. >
let Funcref = MyFunction
When using `function()` the resulting type is "func", a function with any
number of arguments and any return type. The function can be defined later.
Automatic line continuation ~
In many cases it is obvious that an expression continues on the next line. In
those cases there is no need to prefix the line with a backslash. For
example, when a list spans multiple lines: >
let mylist = [
'one',
'two',
]
And when a dict spans multiple lines: >
let mydict = #{
one: 1,
two: 2,
}
Function call: >
let result = Func(
arg1,
arg2
)
For binary operators iin expressions not in [], {} or () a line break is
possible AFTER the operators. For example: >
let text = lead ..
middle ..
end
let total = start +
end -
correction
let result = positive ?
PosFunc(arg) :
NegFunc(arg)
Note that "enddef" cannot be used at the start of a continuation line, it ends
the current function.
It is also possible to split a function header over multiple lines, in between
arguments: >
def MyFunc(
text: string,
separator = '-'
): string
No curly braces expansion ~
|curly-braces-names| cannot be used.
No :append, :change or :insert ~
These commands are too quickly confused with local variable names.
Comparators ~
The 'ignorecase' option is not used for comparators that use strings.
White space ~
Vim9 script enforces proper use of white space. This is no longer allowed: >
let var=234 " Error!
let var= 234 " Error!
let var =234 " Error!
There must be white space before and after the "=": >
let var = 234 " OK
White space must also be put before the # that starts a comment: >
let var = 234# Error!
let var = 234 # OK
White space is required around most operators.
White space is not allowed:
- Between a function name and the "(": >
call Func (arg) " Error!
call Func
\ (arg) " Error!
call Func(arg) " OK
call Func(
\ arg) " OK
call Func(
\ arg " OK
\ )
Conditions and expressions ~
Conditions and expression are mostly working like they do in JavaScript. A
difference is made where JavaScript does not work like most people expect.
Specifically, an empty list is falsey.
Any type of variable can be used as a condition, there is no error, not even
for using a list or job. This is very much like JavaScript, but there are a
few exceptions.
type TRUE when ~
bool v:true
number non-zero
float non-zero
string non-empty
blob non-empty
list non-empty (different from JavaScript)
dictionary non-empty (different from JavaScript)
func when there is a function name
special v:true
job when not NULL
channel when not NULL
class when not NULL
object when not NULL (TODO: when isTrue() returns v:true)
The boolean operators "||" and "&&" do not change the value: >
8 || 2 == 8
0 || 2 == 2
0 || '' == ''
8 && 2 == 2
0 && 2 == 0
[] && 2 == []
When using `..` for string concatenation the arguments are always converted to
string. >
'hello ' .. 123 == 'hello 123'
'hello ' .. v:true == 'hello true'
In Vim9 script one can use "true" for v:true and "false" for v:false.
==============================================================================
3. New style functions *fast-functions*
THIS IS STILL UNDER DEVELOPMENT - ANYTHING CAN BREAK - ANYTHING CAN CHANGE
*:def*
:def[!] {name}([arguments])[: {return-type}
Define a new function by the name {name}. The body of
the function follows in the next lines, until the
matching `:enddef`.
When {return-type} is omitted or is "void" the
function is not expected to return anything.
{arguments} is a sequence of zero or more argument
declarations. There are three forms:
{name}: {type}
{name} = {value}
{name}: {type} = {value}
The first form is a mandatory argument, the caller
must always provide them.
The second and third form are optional arguments.
When the caller omits an argument the {value} is used.
NOTE: It is possible to nest `:def` inside another
`:def`, but it is not possible to nest `:def` inside
`:function`, for backwards compatibility.
[!] is used as with `:function`.
*:enddef*
:enddef End of a function defined with `:def`.
If the script the function is defined in is Vim9 script, then script-local
variables can be accessed without the "s:" prefix. They must be defined
before the function. If the script the function is defined in is legacy
script, then script-local variables must be accessed with the "s:" prefix.
*:disa* *:disassemble*
:disa[ssemble] {func} Show the instructions generated for {func}.
This is for debugging and testing.
Note that for command line completion of {func} you
can prepend "s:" to find script-local functions.
==============================================================================
4. Types *vim9-types*
THIS IS STILL UNDER DEVELOPMENT - ANYTHING CAN BREAK - ANYTHING CAN CHANGE
The following builtin types are supported:
bool
number
float
string
blob
list<{type}>
dict<{type}>
job
channel
func
func: {type}
func({type}, ...)
func({type}, ...): {type}
Not supported yet:
tuple<a: {type}, b: {type}, ...>
These types can be used in declarations, but no value will have this type:
{type}|{type}
void
any
There is no array type, use list<{type}> instead. For a list constant an
efficient implementation is used that avoids allocating lot of small pieces of
memory.
A partial and function can be declared in more or less specific ways:
func any kind of function reference, no type
checking for arguments or return value
func: {type} any number and type of arguments with specific
return type
func({type}) function with argument type, does not return
a value
func({type}): {type} function with argument type and return type
func(?{type}) function with type of optional argument, does
not return a value
func(...{type}) function with type of variable number of
arguments, does not return a value
func({type}, ?{type}, ...{type}): {type}
function with:
- type of mandatory argument
- type of optional argument
- type of variable number of arguments
- return type
If the return type is "void" the function does not return a value.
The reference can also be a |Partial|, in which case it stores extra arguments
and/or a dictionary, which are not visible to the caller. Since they are
called in the same way the declaration is the same.
Custom types can be defined with `:type`: >
:type MyList list<string>
{not implemented yet}
And classes and interfaces can be used as types: >
:class MyClass
:let mine: MyClass
:interface MyInterface
:let mine: MyInterface
:class MyTemplate<Targ>
:let mine: MyTemplate<number>
:let mine: MyTemplate<string>
:class MyInterface<Targ>
:let mine: MyInterface<number>
:let mine: MyInterface<string>
{not implemented yet}
Type inference *type-inference*
In general: Whenever the type is clear it can be omitted. For example, when
declaring a variable and giving it a value: >
let var = 0 " infers number type
let var = 'hello' " infers string type
==============================================================================
5. Namespace, Import and Export
*vim9script* *vim9-export* *vim9-import*
THIS IS STILL UNDER DEVELOPMENT - ANYTHING CAN BREAK - ANYTHING CAN CHANGE
A Vim9 script can be written to be imported. This means that everything in
the script is local, unless exported. Those exported items, and only those
items, can then be imported in another script.
Namespace ~
*:vim9script* *:vim9*
To recognize a file that can be imported the `vim9script` statement must
appear as the first statement in the file. It tells Vim to interpret the
script in its own namespace, instead of the global namespace. If a file
starts with: >
vim9script
let myvar = 'yes'
Then "myvar" will only exist in this file. While without `vim9script` it would
be available as `g:myvar` from any other script and function.
The variables at the file level are very much like the script-local "s:"
variables in legacy Vim script, but the "s:" is omitted. And they cannot be
deleted.
In Vim9 script the global "g:" namespace can still be used as before. And the
"w:", "b:" and "t:" namespaces. These have in common that variables are not
declared and they can be deleted.
A side effect of `:vim9script` is that the 'cpoptions' option is set to the
Vim default value, like with: >
:set cpo&vim
One of the effects is that |line-continuation| is always enabled.
The original value of 'cpoptions' is restored at the end of the script.
Export ~
*:export* *:exp*
Exporting one item can be written as: >
export const EXPORTED_CONST = 1234
export let someValue = ...
export def MyFunc() ...
export class MyClass ...
As this suggests, only constants, variables, `:def` functions and classes can
be exported.
Alternatively, an export statement can be used to export several already
defined (otherwise script-local) items: >
export {EXPORTED_CONST, someValue, MyFunc, MyClass}
Import ~
*:import* *:imp*
The exported items can be imported individually in another Vim9 script: >
import EXPORTED_CONST from "thatscript.vim"
import MyClass from "myclass.vim"
To import multiple items at the same time: >
import {someValue, MyClass} from "thatscript.vim"
In case the name is ambiguous, another name can be specified: >
import MyClass as ThatClass from "myclass.vim"
import {someValue, MyClass as ThatClass} from "myclass.vim"
To import all exported items under a specific identifier: >
import * as That from 'thatscript.vim'
Then you can use "That.EXPORTED_CONST", "That.someValue", etc. You are free
to choose the name "That", but it is highly recommended to use the name of the
script file to avoid confusion.
The script name after `import` can be:
- A relative path, starting "." or "..". This finds a file relative to the
location of the script file itself. This is useful to split up a large
plugin into several files.
- An absolute path, starting with "/" on Unix or "D:/" on MS-Windows. This
will be rarely used.
- A path not being relative or absolute. This will be found in the
"import" subdirectories of 'runtimepath' entries. The name will usually be
longer and unique, to avoid loading the wrong file.
Once a vim9 script file has been imported, the result is cached and used the
next time the same script is imported. It will not be read again.
*:import-cycle*
The `import` commands are executed when encountered. If that script (directly
or indirectly) imports the current script, then items defined after the
`import` won't be processed yet. Therefore cyclic imports can exist, but may
result in undefined items.
Import in an autoload script ~
For optimal startup speed, loading scripts should be postponed until they are
actually needed. A recommended mechanism:
1. In the plugin define user commands, functions and/or mappings that refer to
an autoload script. >
command -nargs=1 SearchForStuff call searchfor#Stuff(<f-args>)
< This goes in .../plugin/anyname.vim. "anyname.vim" can be freely chosen.
2. In the autocommand script do the actual work. You can import items from
other files to split up functionality in appropriate pieces. >
vim9script
import FilterFunc from "../import/someother.vim"
def searchfor#Stuff(arg: string)
let filtered = FilterFunc(arg)
...
< This goes in .../autoload/searchfor.vim. "searchfor" in the file name
must be exactly the same as the prefix for the function name, that is how
Vim finds the file.
3. Other functionality, possibly shared between plugins, contains the exported
items and any private items. >
vim9script
let localVar = 'local'
export def FilterFunc(arg: string): string
...
< This goes in .../import/someother.vim.
Import in legacy Vim script ~
If an `import` statement is used in legacy Vim script, for identifier the
script-local "s:" namespace will be used, even when "s:" is not specified.
==============================================================================
9. Rationale *vim9-rationale*
The :def command ~
Plugin writers have asked for a much faster Vim script. Investigation have
shown that keeping the existing semantics of function calls make this close to
impossible, because of the overhead involved with calling a function, setting
up the local function scope and executing lines. There are many details that
need to be handled, such as error messages and exceptions. The need to create
a dictionary for a: and l: scopes, the a:000 list and several others add too
much overhead that cannot be avoided.
Therefore the `:def` method to define a new-style function had to be added,
which allows for a function with different semantics. Most things still work
as before, but some parts do not. A new way to define a function was
considered the best way to separate the old-style code from Vim9 script code.
Using "def" to define a function comes from Python. Other languages use
"function" which clashes with legacy Vim script.
Type checking ~
When compiling lines of Vim commands into instructions as much as possible
should be done at compile time. Postponing it to runtime makes the execution
slower and means mistakes are found only later. For example, when
encountering the "+" character and compiling this into a generic add
instruction, at execution time the instruction would have to inspect the type
of the arguments and decide what kind of addition to do. And when the
type is dictionary throw an error. If the types are known to be numbers then
an "add number" instruction can be used, which is faster. The error can be
given at compile time, no error handling is needed at runtime.
The syntax for types is similar to Java, since it is easy to understand and
widely used. The type names are what was used in Vim before, with some
additions such as "void" and "bool".
JavaScript/TypeScript syntax and semantics ~
Script writers have complained that the Vim script syntax is unexpectedly
different from what they are used to. To reduce this complaint popular
languages will be used as an example. At the same time, we do not want to
abandon the well-known parts of legacy Vim script.
Since Vim already uses `:let` and `:const` and optional type checking is
desirable, the JavaScript/TypeScript syntax fits best for variable
declarations. >
const greeting = 'hello' " string type is inferred
let name: string
...
name = 'John'
Expression evaluation was already close to what JavaScript and other languages
are doing. Some details are unexpected and can be fixed. For example how the
|| and && operators work. Legacy Vim script: >
let result = 44
...
return result || 0 " returns 1
Vim9 script works like JavaScript, keep the value: >
let result = 44
...
return result || 0 " returns 44
On the other hand, overloading "+" to use both for addition and string
concatenation goes against legacy Vim script and often leads to mistakes.
For that reason we will keep using ".." for string concatenation. Lua also
uses ".." this way.
Import and Export ~
A problem of legacy Vim script is that by default all functions and variables
are global. It is possible to make them script-local, but then they are not
available in other scripts.
In Vim9 script a mechanism very similar to the Javascript import and export
mechanism is supported. It is a variant to the existing `:source` command
that works like one would expect:
- Instead of making everything global by default, everything is script-local,
unless exported.
- When importing a script the symbols that are imported are listed, avoiding
name conflicts and failures if later functionality is added.
- The mechanism allows for writing a big, long script with a very clear API:
the exported function(s) and class(es).
- By using relative paths loading can be much faster for an import inside of a
package, no need to search many directories.
- Once an import has been used, it can be cached and loading it again can be
avoided.
- The Vim-specific use of "s:" to make things script-local can be dropped.
Classes ~
Vim supports interfaces to Perl, Python, Lua, Tcl and a few others. But
these have never become widespread. When Vim 9 was designed a decision was
made to phase out these interfaces and concentrate on Vim script, while
encouraging plugin authors to write code in any language and run it as an
external tool, using jobs and channels.
Still, using an external tool has disadvantages. An alternative is to convert
the tool into Vim script. For that to be possible without too much
translation, and keeping the code fast at the same time, the constructs of the
tool need to be supported. Since most languages support classes the lack of
class support in Vim is then a problem.
Previously Vim supported a kind-of object oriented programming by adding
methods to a dictionary. With some care this could be made to work, but it
does not look like real classes. On top of that, it's very slow, because of
the use of dictionaries.
The support of classes in Vim9 script is a "minimal common functionality" of
class support in most languages. It works mostly like Java, which is the most
popular programming language.
vim:tw=78:ts=8:noet:ft=help:norl:

0
runtime/doc/vimdiff-it.1 Executable file → Normal file
View File

0
runtime/doc/vimtutor-it.1 Executable file → Normal file
View File

Some files were not shown because too many files have changed in this diff Show More