Compare commits

...

676 Commits

Author SHA1 Message Date
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
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
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
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
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
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
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
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
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
560979ed4f Update runtime files. 2020-02-04 22:53:05 +01:00
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
1d9215b9aa Update runtime files. 2020-01-25 13:27:42 +01:00
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
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
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
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
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
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
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
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
ade0d39468 Update runtime files. 2020-01-21 22:33:58 +01:00
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
8024f93636 Update runtime files. 2020-01-14 19:29:13 +01:00
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
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
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
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
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
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
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
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
2963456ff2 Update runtime files. 2020-01-09 21:46:04 +01:00
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
d7df279808 Update a few runtime files. 2020-01-02 21:34:42 +01:00
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
eb698d0b32 patch 8.2.0058: running tests changes ~/.viminfo
Problem:    Running tests changes ~/.viminfo.
Solution:   Make 'viminfo' empty when summarizing tests results. (closes #5414)
2019-12-30 00:07:57 +01:00
09d4640f6c patch 8.2.0057: cannot build with small features
Problem:    Cannot build with small features.
Solution:   Add #ifdefs.
2019-12-29 23:53:01 +01:00
1a47ae32cd patch 8.2.0056: execution stack is incomplete and inefficient
Problem:    Execution stack is incomplete and inefficient.
Solution:   Introduce a proper execution stack and use it instead of
            sourcing_name/sourcing_lnum.  Create a string only when used.
2019-12-29 23:04:25 +01:00
257a396879 patch 8.2.0055: cannot use ":gui" in vimrc with VIMDLL enabled
Problem:    Cannot use ":gui" in vimrc with VIMDLL enabled.
Solution:   Change the logic, check "gui.starting". (Ken Takata, closes #5408)
2019-12-29 15:19:03 +01:00
ae7dba8969 patch 8.2.0054: :diffget and :diffput don't have good completion
Problem:    :diffget and :diffput don't have good completion.
Solution:   Add proper completion. (Dominique Pelle, closes #5409)
2019-12-29 13:56:33 +01:00
e20e68b40d patch 8.2.0053: windowsversion() does not always return the right value
Problem:    windowsversion() does not always return the right value.
Solution:   Add a compatibility section in the manifest. (Ken Takata,
            closes #5407)
2019-12-29 13:43:54 +01:00
c6d539b671 patch 8.2.0052: more-prompt not properly tested
Problem:    More-prompt not properly tested.
Solution:   Add a test case. (Dominique Pelle, closes #5404)
2019-12-28 17:10:46 +01:00
731a799bb9 patch 8.2.0051: command line completion test skipped
Problem:    Command line completion test skipped. (Christian Brabandt)
Solution:   Invert condition.
2019-12-28 14:06:50 +01:00
8cd6cd8087 patch 8.2.0050: after deleting a file mark it is still in viminfo
Problem:    After deleting a file mark it is still in viminfo.
Solution:   When a file mark was deleted more recently than the mark in the
            merged viminfo file was updated, do not store the mark. (Pavol
            Juhas, closes #5401, closes #1339)
2019-12-27 17:33:26 +01:00
297610ba4b patch 8.2.0049: command line completion not fully tested
Problem:    Command line completion not fully tested.
Solution:   Add more test cases.  Make help sorting stable. (Dominique Pelle,
            closes #5402)
2019-12-27 17:20:55 +01:00
5c463a28ff patch 8.2.0048: another timers test is flaky on Travis for Mac
Problem:    Another timers test is flaky on Travis for Mac.
Solution:   Increase maximum expected time.
2019-12-27 17:14:33 +01:00
0c1e3744ff patch 8.2.0047: cannot skip tests for specific MS-Windows platform
Problem:    Cannot skip tests for specific MS-Windows platform.
Solution:   Add windowsversion().
2019-12-27 13:49:24 +01:00
5666fcd0bd Update runtime files. 2019-12-26 14:35:26 +01:00
767340574b patch 8.2.0046: tests for spell suggestions are slow
Problem:    Tests for spell suggestions are slow.
Solution:   Use shorter words. Test with latin1 and utf-8 to cover more code.
            (Dominique Pelle, closes #5399)
2019-12-26 14:30:15 +01:00
ec57ec692e patch 8.2.0045: script test fails
Problem:    Script test fails.
Solution:   For numbers "is" and "isnot" work like "==" and "!=".
2019-12-25 19:33:22 +01:00
07a3db89b8 patch 8.2.0044: expression type is used inconsistently
Problem:    Expression type is used inconsistently.
Solution:   Add "ETYPE_IS" and "ETYPE_ISNOT" as separate enum values.  Rename
            "TYPE_" to "ETYPE_" to avoid confusion.
2019-12-25 18:14:14 +01:00
818fed7a5e patch 8.2.0043: timers test is still flaky on Travis for Mac
Problem:    Timers test is still flaky on Travis for Mac.
Solution:   Increase maximum expected time.
2019-12-25 15:47:14 +01:00
eac7ce01e9 patch 8.2.0042: clearing funccal values twice
Problem:    Clearing funccal values twice.
Solution:   Remove clearing individual fields.
2019-12-25 15:04:03 +01:00
6c52f82371 patch 8.2.0041: leaking memory when selecting spell suggestion
Problem:    Leaking memory when selecting spell suggestion.
Solution:   Free previous value at the right time.
2019-12-25 14:13:03 +01:00
03af01f1cb patch 8.2.0040: timers test is still flaky on Travis for Mac
Problem:    Timers test is still flaky on Travis for Mac.
Solution:   Run separately instead of as part of test_alot.
2019-12-25 13:59:51 +01:00
569fea2c31 patch 8.2.0039: memory access error when "z=" has no suggestions
Problem:    Memory access error when "z=" has no suggestions.
Solution:   Check for negative index.
2019-12-25 13:55:24 +01:00
e9a8d1f9ad patch 8.2.0038: spell suggestions insufficiently tested
Problem:    Spell suggestions insufficiently tested.
Solution:   Add spell suggestion tests. (Dominique Pelle, closes #5398)
2019-12-25 13:36:36 +01:00
1500a42c42 patch 8.2.0037: missing renamed message
Problem:    Missing renamed message.
Solution:   Now really add the error number.
2019-12-24 15:38:21 +01:00
49d68bf5e4 patch 8.2.0036: not enough test coverage for match functions
Problem:    Not enough test coverage for match functions.
Solution:   Add a few more test cases.  (Dominique Pelle, closes #5394)
            Add error number.
2019-12-24 15:17:00 +01:00
53989554a4 patch 8.2.0035: saving and restoring called_emsg is clumsy
Problem:    Saving and restoring called_emsg is clumsy.
Solution:   Count the number of error messages.
2019-12-23 22:59:18 +01:00
70188f5b23 patch 8.2.0034: missing check for out of memory
Problem:    Missing check for out of memory.
Solution:   Check for NULL after vim_strsave(). (Dominique Pelle,
            closes #5393)
2019-12-23 18:18:52 +01:00
7c77b34967 patch 8.2.0033: crash when make_extmatch() runs out of memory
Problem:    Crash when make_extmatch() runs out of memory.
Solution:   Check for NULL. (Dominique Pelle, closs #5392)
2019-12-22 19:40:40 +01:00
7c2a2f869b patch 8.2.0032: MS-Windows: test for blank job fails
Problem:    MS-Windows: test for blank job fails
Solution:   Check before escaping.
2019-12-22 18:28:51 +01:00
ba0a7475c5 patch 8.2.0031: MS-Windows: test for empty job fails
Problem:    MS-Windows: test for empty job fails
Solution:   Check for error message, make it also fail on Unix.
2019-12-22 16:09:06 +01:00
64e74c9cc7 patch 8.2.0030: "gF" does not work on output of "verbose command"
Problem:    "gF" does not work on output of "verbose command".
Solution:   Recognize " line " and translations. (closes #5391)
2019-12-22 15:38:06 +01:00
a27655ef6d patch 8.2.0029: MS-Windows: crash with empty job command
Problem:    MS-Windows: crash with empty job command.
Solution:   Check for NULL result. (Yasuhiro Matsumoto, closes #5390)
2019-12-21 22:22:01 +01:00
3ba35409a6 patch 8.2.0028: searchpairpos() is not tested
Problem:    Searchpairpos() is not tested.
Solution:   Add tests.  Also improve searchpair() testing. (Dominique Pelle,
            closes #5388)
2019-12-21 22:00:50 +01:00
aa2f0ee639 patch 8.2.0027: still some /* */ comments
Problem:    Still some /* */ comments.
Solution:   Convert to // comments.
2019-12-21 18:47:26 +01:00
85a2002adb patch 8.2.0026: still some /* */ comments
Problem:    Still some /* */ comments.
Solution:   Convert to // comments.
2019-12-21 18:25:54 +01:00
fe72d08400 patch 8.2.0025: repeated word in comment
Problem:    Repeated word in comment.
Solution:   Remove one. (Rene Nyffenegger, closes #5384)
2019-12-20 19:07:00 +01:00
95a9dd1efc Update runtime files. 2019-12-19 22:12:03 +01:00
a4ce82fe2e patch 8.2.0024: filetype Rego not recognized
Problem:    Filetype Rego not recognized.
Solution:   Add *.rego. (Matt Dunford, closes #5376)
2019-12-19 15:57:42 +01:00
59cb041d0a patch 8.2.0023: command line editing not sufficiently tested
Problem:    Command line editing not sufficiently tested.
Solution:   Add more tests. (Dominique Pelle, closes #5374)
2019-12-18 22:26:31 +01:00
0ce3733f78 patch 8.2.0022: click in popup window doesn't close it in the GUI
Problem:    Click in popup window doesn't close it in the GUI. (Sergey Vlasov)
Solution:   When processing the selection also send a button release event.
            (closes #5367)
2019-12-18 21:33:22 +01:00
bc28e9f15b patch 8.2.0021: timer test fails too often on Travis with MacOS
Problem:    Timer test fails too often on Travis with MacOS.
Solution:   Be less strict with the time.
2019-12-18 20:10:23 +01:00
f19f8d1a4b patch 8.2.0020: mouse clicks in the command line not tested
Problem:    Mouse clicks in the command line not tested.
Solution:   Add tests. (Dominique Pelle, closes #5366)
2019-12-18 19:36:23 +01:00
a9e9679de3 patch 8.2.0019: cannot number of lines of another buffer
Problem:    Cannot number of lines of another buffer.
Solution:   Add "linecount" to getbufinfo(). (Yasuhiro Matsumoto,
            closes #5370)
2019-12-17 22:40:15 +01:00
91b65e4944 patch 8.2.0018: :join does not add white space where it should
Problem:    :join does not add white space where it should. (Zdenek Dohnal)
Solution:   Handle joining multiple lines propely.
2019-12-17 22:10:58 +01:00
6f345a1458 patch 8.2.0017: OS/2 and MS-DOS are still mentioned
Problem:    OS/2 and MS-DOS are still mentioned, even though support was
            removed long ago.
Solution:   Update documentation. (Yegappan Lakshmanan, closes #5368)
2019-12-17 21:27:18 +01:00
a48e78e11f patch 8.2.0016: test name used twice, option not restored properly
Problem:    Test name used twice, option not restored properly.
Solution:   Rename function, restore option with "&".
2019-12-17 20:29:26 +01:00
e74331db4b patch 8.2.0015: not all modeline variants are tested
Problem:    Not all modeline variants are tested.
Solution:   Add modeline tests. (Dominique Pelle, closes #5369)
2019-12-17 19:22:40 +01:00
afc13bd827 patch 8.2.0014: test69 and test95 are old style
Problem:    Test69 and test95 are old style.
Solution:   Convert to new style tests. (Yegappan Lakshmanan, closes #5365)
2019-12-16 22:43:31 +01:00
ddef129160 patch 8.2.0013: not using a typedef for condstack
Problem:    Not using a typedef for condstack.
Solution:   Add a typedef.
2019-12-16 17:10:33 +01:00
559b9c68fe patch 8.2.0012: some undo functionality is not tested
Problem:    Some undo functionality is not tested.
Solution:   Add a few more test cases. (Dominique Pelle, closes #5364)
2019-12-15 18:09:19 +01:00
5e5a98d7de patch 8.2.0011: screen updating wrong when opeing preview window
Problem:    Screen updating wrong when opeing preview window.
Solution:   Redraw the window when the preview window opens.
2019-12-15 14:55:33 +01:00
f9cb05c147 patch 8.2.0010: test64 is old style
Problem:    Test64 is old style.
Solution:   Convert to new style test. (Yegappan Lakshmanan, closes #5363)
2019-12-15 13:39:22 +01:00
95f0b6e5a5 patch 8.2.0009: VMS: terminal version doesn't build
Problem:    VMS: terminal version doesn't build.
Solution:   Move MIN definition.  Adjust #ifdefs. (Zoltan Arpadffy)
2019-12-15 12:54:18 +01:00
3e2d1c8cd6 patch 8.2.0008: test72 is old style
Problem:    Test72 is old style.
Solution:   Convert to new style test. (Yegappan Lakshmanan, closes #5362)
2019-12-14 20:35:01 +01:00
09dd2bb336 patch 8.2.0007: popup menu positioned wrong with folding in two tabs
Problem:    Popup menu positioned wrong with folding in two tabs.
Solution:   Update the cursor line height. (closes #5353)
2019-12-14 18:42:15 +01:00
6e43b30a85 patch 8.2.0006: test using long file name may fail
Problem:    Test using long file name may fail. (Vladimir Lomov)
Solution:   Limit the name length. (Christian Brabandt, closes #5358)
2019-12-14 17:53:27 +01:00
5021225656 patch 8.2.0005: duplication in version info
Problem:    Duplication in version info.
Solution:   Use preprocessor string concatenation. (Ken Takata, closes #5357)
2019-12-14 17:24:53 +01:00
a6e8f888e7 patch 8.2.0004: get E685 and E931 if buffer reload is interrupted
Problem:    Get E685 and E931 if buffer reload is interrupted.
Solution:   Do not abort deleting a dummy buffer. (closes #5361)
2019-12-14 16:18:15 +01:00
f5f4b6cb5f patch 8.2.0003: Build file dependencies are incomplete
Problem:    Build file dependencies are incomplete.
Solution:   Fix the dependencies. (Ken Takata, closes #5356)
2019-12-14 13:17:11 +01:00
3b68123cd2 patch 8.2.0002: "dj" only deletes first line of closed fold
Problem:    "dj" only deletes first line of closed fold.
Solution:   Adjust last line of operator for linewise motion. (closes #5354)
2019-12-13 19:35:55 +01:00
74ee5e2384 patch 8.2.0001: #endif comments do reflect corresponding #ifdef
Problem:    #endif comments do reflect corresponding #ifdef.
Solution:   Update the comments. (Rene Nyffenegger, closes #5351)
2019-12-13 18:13:22 +01:00
98056533b9 Vim 8.2 release 2019-12-12 14:18:35 +01:00
469bdbde1e Minor runtime file updates. 2019-12-11 23:05:48 +01:00
36698e34aa patch 8.1.2424: MS-Windows: console buffer is resized unnecessarily
Problem:    MS-Windows: console buffer is resized unnecessarily.
Solution:   Only call ResizeConBuf() when the size differs. (Nobuhiro
            Takasaki, closes #5343)
2019-12-11 22:57:40 +01:00
e24437b643 patch 8.1.2423: MS-Windows properties shows version as "8, 1, 0"
Problem:    MS-Windows properties shows version as "8, 1, 0".
Solution:   Use "8.1.0". (Ken Takata, closes #5342)
2019-12-11 22:41:29 +01:00
9810cfbe55 patch 8.1.2422: "make depend" does not work correctly for libvterm
Problem:    "make depend" does not work correctly for libvterm.
Solution:   Fix build dependencies. And a few minor improvements.
2019-12-11 21:23:00 +01:00
213ed008bb patch 8.1.2421: test88 is old style
Problem:    Test88 is old style.
Solution:   Turn into a new style test. (Yegappan Lakshmanan, closes #5347)
2019-12-11 20:12:26 +01:00
4954019c93 patch 8.1.2420: crash when calling popup_close() in win_execute()
Problem:    Crash when calling popup_close() in win_execute().
Solution:   Disallow popup_close() in popup window. (Yasuhiro Matsumoto,
            closes #5345)
2019-12-11 19:34:54 +01:00
0efd1bdcf4 patch 8.1.2419: with a long file name the hit-enter prompt appears
Problem:    With a long file name the hit-enter prompt appears. (J. Lewis
            Muir)
Solution:   When checking for text to wrap don't do this when outputing a CR.
2019-12-11 19:00:04 +01:00
99ebf22c52 patch 8.1.2418: bufnr('$') is wrong after recycling popup buffer
Problem:    bufnr('$') is wrong after recycling popup buffer.
Solution:   Sort the buffer list by buffer number. (closes #5335)
2019-12-10 23:44:48 +01:00
1e46705a83 patch 8.1.2417: MinGW/Cygwin build does not clean up all files
Problem:    MinGW/Cygwin build does not clean up all files.
Solution:   Delete *.map files. (Michael Soyka)
2019-12-10 22:48:15 +01:00
e24c5b3332 patch 8.1.2416: loading menus sets v:errmsg
Problem:    Loading menus sets v:errmsg.
Solution:   Avoid setting v:errmsg and add a test for that. (Jason Franklin)
2019-12-10 22:11:53 +01:00
04357fbb87 patch 8.1.2415: popup menu flickers if an info popup is used
Problem:    Popup menu flickers if an info popup is used. (Nick Spoons)
Solution:   Set the pum_skip_redraw flag.
2019-12-10 21:50:56 +01:00
2ed639abdc Update a few runtime files. 2019-12-09 23:11:18 +01:00
661ed8b4b6 patch 8.1.2414: MS-Windows: properties dialog box shows wrong character
Problem:    MS-Windows: properties dialog box shows wrong character.
Solution:   Explicitly specify encoding. (Ken Takata, closes #5338)
2019-12-09 22:22:49 +01:00
0ba89ec47c patch 8.1.2413: cannot update ex_cmdidxs.h on MS-Windows
Problem:    Cannot update ex_cmdidxs.h on MS-Windows.
Solution:   Add build rules and dependencies. (Ken Takata, closes #5337)
2019-12-09 21:48:11 +01:00
0ff822d2eb patch 8.1.2412: crash when evaluating expression with error
Problem:    Crash when evaluating expression with error. (Dhiraj Mishra)
Solution:   Check parsing failed. (closes #5329)
2019-12-08 18:41:34 +01:00
1b03a193b3 patch 8.1.2411: function argument copied unnecessarily
Problem:    Function argument copied unnecessarily.
Solution:   Use the argument directly.
2019-12-08 17:08:29 +01:00
32b364fcc0 Runtime file updates. 2019-12-08 15:07:48 +01:00
e2a3f36bf2 patch 8.1.2410: MS-Windows: test_iminsert fails without IME support
Problem:    MS-Windows: test_iminsert fails without IME support.
Solution:   Skip the test when imgetstatus() doesn't work.
2019-12-07 21:40:48 +01:00
5f1920ada2 patch 8.1.2409: creating the distribution doesn't work as documented
Problem:    Creating the distribution doesn't work as documented.
Solution:   Adjust name of uninstall binary. Create src/auto directory if
            needed.
2019-12-07 21:01:43 +01:00
bfd3433330 patch 8.1.2408: syntax menu and build instructions outdated
Problem:    Syntax menu and build instructions outdated.
Solution:   Update build instructions and syntax menu.
2019-12-07 19:24:34 +01:00
d283e89138 patch 8.1.2407: proto files, dependencies and build instructions outdated
Problem:    proto file, dependenciess and Build instructions outdated.
Solution:   Update proto files, dependencies and build instructions.
2019-12-07 18:50:29 +01:00
6b649ac4fd patch 8.1.2406: leaking memory in test_paste and test_registers
Problem:    Leaking memory in test_paste and test_registers.
Solution:   Free the old title.  Don't copy expr_line.
2019-12-07 17:47:22 +01:00
1f9a028def patch 8.1.2405: matchadd_conceal test fails under valgrind
Problem:    matchadd_conceal test fails under valgrind.
Solution:   Use WaitForAssert() and wait a bit longer.
2019-12-07 17:22:04 +01:00
08d2e795e7 patch 8.1.2404: channel test fails under valgrind
Problem:    Channel test fails under valgrind.
Solution:   Sleep a bit longer.
2019-12-07 17:10:25 +01:00
3c47e8384d patch 8.1.2403: autocmd test fails under valgrind
Problem:    Autocmd test fails under valgrind.
Solution:   Wait a bit longer.
2019-12-07 17:05:31 +01:00
664f3cf3f2 Runtime file updates. 2019-12-07 16:03:51 +01:00
f48ee3c284 patch 8.1.2402: typos and other small things
Problem:    Typos and other small things.
Solution:   Small fixes.
2019-12-06 22:18:20 +01:00
88a3e2b2ac patch 8.1.2401: :cexpr does not handle | in expression
Problem:    :cexpr does not handle | in expression.
Solution:   Remove EX_TRLBAR and set nextcmd pointer.
2019-12-06 21:11:39 +01:00
1f3e7d3bf0 patch 8.1.2400: test39 is old style
Problem:    Test39 is old style.
Solution:   Convert the test cases into new style. (Yegappan Lakshmanan,
            closes #5324)
2019-12-06 20:43:36 +01:00
bef93ac9db patch 8.1.2399: info popup on top of cursor if it doesn't fit
Problem:    Info popup on top of cursor if it doesn't fit.
Solution:   Hide the popup if it doesn't fit.
2019-12-06 20:17:35 +01:00
9a838fe543 patch 8.1.2398: strptime() test fails on Japanese Mac
Problem:    strptime() test fails on Japanese Mac.
Solution:   Use %T instead of %X.
2019-12-06 12:45:01 +01:00
e7dd0deb3c patch 8.1.2397: should not define __USE_XOPEN
Problem:    Should not define __USE_XOPEN. _XOPEN_SOURCE is not needed for
            Android.
Solution:   Remove __USE_XOPEN and adjust #ifdefs. (Ozaki Kiichi,
            closes #5322)
2019-12-05 23:07:06 +01:00
c08ee7476b Update runtime files. 2019-12-05 22:47:25 +01:00
e38eab22c1 patch 8.1.2396: using old C style comments
Problem:    Using old C style comments.
Solution:   Use // comments where appropriate.
2019-12-05 21:50:01 +01:00
0d6f5d9740 patch 8.1.2395: using old C style comments
Problem:    Using old C style comments.
Solution:   Use // comments where appropriate.
2019-12-05 21:33:15 +01:00
63d9e730f7 patch 8.1.2394: using old C style comments
Problem:    Using old C style comments.
Solution:   Use // comments where appropriate.
2019-12-05 21:10:38 +01:00
0f8737355d patch 8.1.2393: using old C style comments
Problem:    Using old C style comments.
Solution:   Use // comments where appropriate.
2019-12-05 20:28:46 +01:00
6e0ce171e1 patch 8.1.2392: using old C style comments
Problem:    Using old C style comments.
Solution:   Use // comments where appropriate.
2019-12-05 20:12:41 +01:00
c95e8d6490 patch 8.1.2391: cannot build when __QNXNTO__ is defined
Problem:    Cannot build when __QNXNTO__ is defined. (Ian Wayne Larson)
Solution:   Move the check for "qansi". (Ken Takata, closes #5317)
2019-12-05 18:35:44 +01:00
309976ec1f patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Problem:    Test94 is old style, fix 7.4.441 not tested.
Solution:   Turn test94 into a new style test.  Add tests for the fix in patch
            7.4.441. (Yegappan Lakshmanan, closes #5316)
2019-12-05 18:16:33 +01:00
707d226ac5 patch 8.1.2389: using old C style comments
Problem:    Using old C style comments.
Solution:   Use // comments where appropriate.
2019-12-04 22:16:54 +01:00
4ba37b5833 patch 8.1.2388: using old C style comments
Problem:    Using old C style comments.
Solution:   Use // comments where appropriate.
2019-12-04 21:57:43 +01:00
2ab2e8608f patch 8.1.2387: using old C style comments
Problem:    Using old C style comments.
Solution:   Use // comments where appropriate.
2019-12-04 21:24:53 +01:00
9834b96820 Update version 8.2 notes and make syntax. 2019-12-04 20:43:03 +01:00
42e931b0f5 patch 8.1.2386: 'wincolor' is not used for 'listchars'
Problem:    'wincolor' is not used for 'listchars'.
Solution:   Combine the colors. (closes #5308)
2019-12-04 19:08:50 +01:00
85db547598 patch 8.1.2385: opening cmdline window with feedkeys() does not work
Problem:    Opening cmdline window with feedkeys() does not work. (Yegappan
            Lakshmanan)
Solution:   Recognize K_CMDWIN also when ex_normal_busy is set.
2019-12-04 15:11:08 +01:00
079119babe patch 8.1.2384: test 48 is old style
Problem:    Test 48 is old style.
Solution:   Merge test cases into new style test. (Yegappan Lakshmanan,
            closes #5307)
2019-12-03 22:59:23 +01:00
4ceaa3a6e0 Update a few runtime files 2019-12-03 22:49:09 +01:00
734a867ffe patch 8.1.2383: using old C style comments
Problem:    Using old C style comments.
Solution:   Use // comments where appropriate.
2019-12-02 22:49:38 +01:00
a050b9471c patch 8.1.2382: MS-Windows: When using VTP bold+inverse doesn't work
Problem:    MS-Windows: When using VTP bold+inverse doesn't work.
Solution:   Compare with the default colors. (Nobuhiro Takasaki, closes #5303)
2019-12-02 21:35:31 +01:00
54c8d229f5 patch 8.1.2381: not all register related code is covered by tests
Problem:    Not all register related code is covered by tests.
Solution:   Add more test cases. (Yegappan Lakshmanan, closes #5301)
2019-12-02 20:41:39 +01:00
306139005c patch 8.1.2380: using old C style comments
Problem:    Using old C style comments.
Solution:   Use // comments where appropriate.
2019-12-01 22:11:18 +01:00
217e1b8359 patch 8.1.2379: using old C style comments
Problem:    Using old C style comments.
Solution:   Use // comments where appropriate.
2019-12-01 21:41:28 +01:00
5d18efecfd patch 8.1.2378: using old C style comments
Problem:    Using old C style comments.
Solution:   Use // comments where appropriate.
2019-12-01 21:11:22 +01:00
fa5612c7d8 patch 8.1.2377: GUI: when losing focus a pending operator is executed
Problem:    GUI: when losing focus a pending operator is executed.
Solution:   Do not execute an operator when getting K_IGNORE. (closes #5300)
2019-12-01 19:37:07 +01:00
912bc4a51a patch 8.1.2376: preprocessor indents are incorrect
Problem:    Preprocessor indents are incorrect.
Solution:   Fix the indents. (Ken Takata, closes #5298)
2019-12-01 18:58:11 +01:00
6f1f0ca3ed patch 8.1.2375: no suffucient testing for registers
Problem:    No suffucient testing for registers.
Solution:   Add more test cases. (Yegappan Lakshmanan, closes #5296)
            Fix that "p" on last virtual column of tab inserts spaces.
2019-12-01 18:16:18 +01:00
269e4bd9d2 patch 8.1.2374: unused parts of libvterm are included
Problem:    Unused parts of libvterm are included.
Solution:   Delete the unused files.
2019-12-01 15:31:12 +01:00
5a4c3082d7 patch 8.1.2373: cannot build with +popupwin but without +quickfix
Problem:    Cannot build with +popupwin but without +quickfix. (John Marriott)
Solution:   Adjust #ifdefs.
2019-12-01 15:23:11 +01:00
9625d3d92d patch 8.1.2372: VMS: failing realloc leaks memory
Problem:    VMS: failing realloc leaks memory. (Chakshu Gupta)
Solution:   Free the memory. (partly fixes #5292)
2019-11-30 22:57:53 +01:00
05ad5ff0ab patch 8.1.2371: FEAT_TEXT_PROP is a confusing name
Problem:    FEAT_TEXT_PROP is a confusing name.
Solution:   Use FEAT_PROP_POPUP. (Naruhiko Nishino, closes #5291)
2019-11-30 22:48:27 +01:00
0c5c3faef2 patch 8.1.2370: build problems on VMS
Problem:    Build problems on VMS.
Solution:   Adjust the build file. (Zoltan Arpadffy)
2019-11-30 22:38:16 +01:00
a2c2ae473a patch 8.1.2369: cannot build with quickfix and without text properties
Problem:    Cannot build with quickfix and without text properties.
Solution:   Fix typo. (Naruhiko Nishino)
2019-11-30 20:58:46 +01:00
c667da5185 patch 8.1.2368: using old C style comments
Problem:    Using old C style comments.
Solution:   Use // comments where appropriate.
2019-11-30 20:52:27 +01:00
71136db1bf patch 8.1.2367: registers are not sufficiently tested
Problem:    Registers are not sufficiently tested.
Solution:   Add a few more test cases. (Yegappan Lakshmanan, closes #5288)
2019-11-30 19:48:46 +01:00
9bf703d46a patch 8.1.2366: using old C style comments
Problem:    Using old C style comments.
Solution:   Use // comments where appropriate.
2019-11-30 19:44:38 +01:00
20ebbeac46 patch 8.1.2365: missing tests for recent popupwin changes
Problem:    Missing tests for recent popupwin changes.
Solution:   Add test cases.
2019-11-30 17:58:27 +01:00
91359014b3 Update runtime files. 2019-11-30 17:57:03 +01:00
e219f73ed5 patch 8.1.2364: termwinscroll test is flaky on FreeBSD
Problem:    Termwinscroll test is flaky on FreeBSD.
Solution:   Add to list of flaky tests.  Rename function.
2019-11-30 15:34:08 +01:00
dee50a5180 patch 8.1.2363: ml_get error when accessing Visual area in 'statusline'
Problem:    ml_get error when accessing Visual area in 'statusline'.
Solution:   Disable Visual mode when using another window. (closes #5278)
2019-11-30 15:05:22 +01:00
7257073043 patch 8.1.2362: cannot place signs in a popup window
Problem:    Cannot place signs in a popup window. (Maxim Kim)
Solution:   Use the group prefix "PopUp" to specify which signs should show up
            in a popup window. (closes #5277)
2019-11-30 14:21:53 +01:00
310c32e892 patch 8.1.2361: MS-Windows: test failures related to VIMDLL
Problem:    MS-Windows: test failures related to VIMDLL.
Solution:   Adjust code and tests. (Ken Takata, closes #5283)
2019-11-29 23:15:25 +01:00
15a7bdcb77 patch 8.1.2360: quickfix test coverage can still be improved
Problem:    Quickfix test coverage can still be improved.
Solution:   Add more test cases. (Yegappan Lakshmanan, closes #5276)
2019-11-29 22:06:47 +01:00
0387cae15c patch 8.1.2359: cannot build without FEAT_FLOAT
Problem:    Cannot build without FEAT_FLOAT. (John Marriott)
Solution:   Fix #ifdefs around f_srand().
2019-11-29 21:07:58 +01:00
9134f1ecd4 patch 8.1.2358: tests fail on Cirrus CI for FreeBSD
Problem:    Tests fail on Cirrus CI for FreeBSD.
Solution:   Fix a test and skip some. (Christian Brabandt, closes #5281)
2019-11-29 20:26:13 +01:00
68e9e5f7fc patch 8.1.2357: no test with wrong argument for rand()
Problem:    No test with wrong argument for rand().
Solution:   Add a test case.
2019-11-28 22:55:43 +01:00
f8c1f9200c patch 8.1.2356: rand() does not use the best algorithm
Problem:    rand() does not use the best algorithm.
Solution:   use xoshiro128** instead of xorshift. (Kaito Udagawa,
            closes #5279)
2019-11-28 22:13:14 +01:00
c7d2a57b3a patch 8.1.2355: test with "man" fails on FreeBSD
Problem:    Test with "man" fails on FreeBSD.
Solution:   Use "-P" instead of "--pager".
2019-11-28 21:16:06 +01:00
31ff2e1b43 patch 8.1.2354: Cirrus CI runs on another repository
Problem:    Cirrus CI runs on another repository.
Solution:   Run Cirrus CI on vim/vim.
2019-11-28 20:53:08 +01:00
5708079a6b patch 8.1.2353: build failure on FreeBSD
Problem:    Build failure on FreeBSD.
Solution:   Change #ifdef to only check for Linux-like systems.
2019-11-28 20:09:58 +01:00
424e98baab Merge branch 'master' of github.com:vim/vim 2019-11-27 21:57:45 +01:00
7a212c6253 Merge pull request #5275 from vim/revert-5273-cirrus_ci
Revert "Cirrus CI: add a simple CI using BSD"
2019-11-27 21:57:06 +01:00
d52986e7be Revert "Cirrus CI: add a simple CI using BSD" 2019-11-27 21:56:28 +01:00
ea599a65ee patch 8.1.2352: CI doesn't cover FreeBSD
Problem:    CI doesn't cover FreeBSD.
Solution:   Configure Cirrus-CI. (Christian Brabandt, closes #5273)
2019-11-27 21:55:41 +01:00
8fbd6723af Merge pull request #5273 from chrisbra/cirrus_ci
Cirrus CI: add a simple CI using BSD
2019-11-27 16:08:29 +01:00
e307073680 Cirrus CI: add a simple CI using BSD
Cirrus CI allows to run CI tests in a wide variety of systems, such as
Mac, Windows and FreeBSD. For a starter, add a Cirrus-CI test just for
FreeBSD using version 12, assuming Windows and Linux are already tested
using appveyor and Travis CI
2019-11-27 15:59:06 +01:00
92e25ab2df patch 8.1.2351: 'wincolor' not used for > for not fitting double width char
Problem:    'wincolor' not used for > for not fitting double width char.
            Also: popup drawn on right half of double width character looks
            wrong.
Solution:   Adjust color for > character.  Clear left half of double width
            character if right half is being overwritten.
2019-11-26 22:39:10 +01:00
0c0734d527 Update runtime files 2019-11-26 21:44:46 +01:00
fc4ea2a72d patch 8.1.2350: other text for CTRL-V in Insert mode with modifyOtherKeys
Problem:    Other text for CTRL-V in Insert mode with modifyOtherKeys.
Solution:   Convert the Escape sequence back to key as if modifyOtherKeys is
            not set, and use CTRL-SHIFT-V to get the Escape sequence itself.
            (closes #5254)
2019-11-26 19:33:22 +01:00
cc4423ae13 patch 8.1.2349: :lockvar and :unlockvar cannot be followed by "| endif"
Problem:    :lockvar and :unlockvar cannot be followed by "| endif".
Solution:   Check for following commands. (closes #5269)
2019-11-26 17:05:00 +01:00
8f76e6b12b patch 8.1.2348: :const cannot be followed by "| endif"
Problem:    :const cannot be followed by "| endif".
Solution:   Check following command for :const. (closes #5269)
            Also fix completion after :const.
2019-11-26 16:50:30 +01:00
84f903326d patch 8.1.2347: MacOS: build fails
Problem:    MacOS: build fails.
Solution:   Don't define _XOPEN_SOURCE for Mac.
2019-11-26 14:48:00 +01:00
38571a04b4 patch 8.1.2346: CTRL-R CTRL-R doesn't work with modifyOtherKeys
Problem:    CTRL-R CTRL-R doesn't work with modifyOtherKeys.
Solution:   Allow key codes when fetching argument for CTRL-R. (closes #5266)
            Also fix CTRL-G in Insert mode.
2019-11-26 14:28:15 +01:00
c1faf3dc38 patch 8.1.2345: .cjs files are not recognized as Javascript
Problem:    .cjs files are not recognized as Javascript.
Solution:   Add the *.cjs pattern. (closes #5268)
2019-11-26 13:43:40 +01:00
6a228c6463 patch 8.1.2344: Cygwin: warning for using strptime()
Problem:    Cygwin: warning for using strptime().
Solution:   Move defining _XOPEN_SOURCE and __USE_XOPEN to vim.h. (Ken Takata,
            closes #5265)  Use 700 for _XOPEN_SOURCE for mkdtemp().
2019-11-26 13:29:01 +01:00
07e4a19795 patch 8.1.2343: using time() for srand() is not very random
Problem:    Using time() for srand() is not very random.
Solution:   use /dev/urandom if available
2019-11-26 12:23:30 +01:00
06b0b4bc27 patch 8.1.2342: random number generator in Vim script is slow
Problem:    Random number generator in Vim script is slow.
Solution:   Add rand() and srand(). (Yasuhiro Matsumoto, closes #1277)
2019-11-25 15:40:55 +01:00
67a2deb9cb patch 8.1.2341: not so easy to interrupt a script programatically
Problem:    Not so easy to interrupt a script programatically.
Solution:   Add the interrupt() function. (Yasuhiro Matsumoto, closes #2834)
2019-11-25 00:05:32 +01:00
a106e6cde6 patch 8.1.2340: quickfix test fails under valgrind and asan
Problem:    Quickfix test fails under valgrind and asan.
Solution:   Make sure long line does not overflow IObuff. (Dominique Pelle,
            closes #5263)  Put back fix for large terminals. (Yegappan
            Lakshmanan, closes #5264)
2019-11-24 22:13:58 +01:00
70077dd1ca patch 8.1.2339: insufficient testing for quickfix
Problem:    Insufficient testing for quickfix.
Solution:   Add a few more tests. (Yegappan Lakshmanan, closes #5261)
2019-11-24 12:12:42 +01:00
c672525b48 patch 8.1.2338: using Visual mark sith :s gives E20 if not set
Problem:    Using Visual mark sith :s gives E20 if not set.
Solution:   Ignore errors when handling 'incsearch'. (closes #3837)
2019-11-23 21:56:46 +01:00
85c3502ef5 patch 8.1.2337: double-click time sometimes miscomputed
Problem:    Double-click time sometimes miscomputed.
Solution:   Correct time computation. (Dominique Pelle, closes #5259)
2019-11-22 22:21:59 +01:00
4ebe0e62d0 patch 8.1.2336: when an expr mapping moves the cursor it is not restored
Problem:    When an expr mapping moves the cursor it is not restored.
Solution:   Position the cursor after an expr mapping. (closes #5256)
2019-11-22 20:55:40 +01:00
2118a30295 patch 8.1.2335: error message for function arguments may use NULL pointer
Problem:    Error message for function arguments may use NULL pointer.
            (Coverity)
Solution:   Use the original function name.
2019-11-22 19:29:45 +01:00
fd318115a5 patch 8.1.2334: possible NULL pointer dereference in popup_locate()
Problem:    Possible NULL pointer dereference in popup_locate(). (Coverity)
Solution:   Check for NULL pointer.
2019-11-22 19:22:08 +01:00
828ffd5963 patch 8.1.2333: with modifyOtherKeys CTRL-^ doesn't work
Problem:    With modifyOtherKeys CTRL-^ doesn't work.
Solution:   Handle the exception.
2019-11-21 23:24:00 +01:00
556ae8ea28 patch 8.1.2332: missing file in refactoring
Problem:    Missing file in refactoring.
Solution:   Update missing file.
2019-11-21 22:27:22 +01:00
7bae0b1bc8 patch 8.1.2331: the option.c file is still very big
Problem:    The option.c file is still very big.
Solution:   Move a few functions to where they fit better. (Yegappan
            Lakshmanan, closes #4895)
2019-11-21 22:14:18 +01:00
94d9f4fa65 patch 8.1.2330: vi' does not always work when 'selection' is exclusive
Problem:    vi' does not always work when 'selection' is exclusive.
Solution:   Adjust start position.
2019-11-21 20:55:26 +01:00
44f0bd878a patch 8.1.2329: mouse multiple click test is a bit flaky
Problem:    Mouse multiple click test is a bit flaky.
Solution:   Add it to the list of flaky tests.
2019-11-21 18:27:01 +01:00
bd3bc0314e patch 8.1.2328: a few hangul input pieces remain
Problem:    A few hangul input pieces remain.
Solution:   Update VMS makefile.
2019-11-21 17:34:51 +01:00
546125869f patch 8.1.2327: cannot build with Hangul input
Problem:    Cannot build with Hangul input.
Solution:   Remove Hangul input support.
2019-11-21 17:13:31 +01:00
10455d43fe patch 8.1.2326: cannot parse a date/time string
Problem:    Cannot parse a date/time string.
Solution:   Add strptime(). (Stephen Wall, closes #)
2019-11-21 15:36:18 +01:00
9ae862ebba patch 8.1.2325: crash when using balloon with empty line
Problem:    Crash when using balloon with empty line.
Solution:   Handle empty lines. (Markus Braun)
2019-11-21 13:27:06 +01:00
202c3f7e3e patch 8.1.2324: with of scrollbar in popup menu not taken into account
Problem:    With of scrollbar in popup menu not taken into account.
Solution:   Add the width of the scrollbar.
2019-11-21 12:12:35 +01:00
403f3eb4c1 Update runtime files. 2019-11-20 22:31:13 +01:00
a075490082 patch 8.1.2323: Old MSVC version no longer tested.
Problem:    Old MSVC version no longer tested.
Solution:   Drop support for MSCV 2008 and older. (Ken Takata, closes #5248)
2019-11-19 23:01:28 +01:00
ffc4fb8fee patch 8.1.2322: quickfix test fails in very big terminal
Problem:    Quickfix test fails in very big terminal.
Solution:   Adjust the expected result for the width. (Masato Nishihata,
            closes #5244)
2019-11-19 22:38:48 +01:00
0a5aa7b28a patch 8.1.2321: cannot select all text with the mouse
Problem:    Cannot select all text with the mouse. (John Marriott)
Solution:   Move limiting the mouse column to f_getmousepos(). (closes #5242)
2019-11-18 23:31:48 +01:00
f9ae154c51 patch 8.1.2320: insufficient test coverage for quickfix
Problem:    Insufficient test coverage for quickfix.
Solution:   Add more tests.  Fix uncovered problem. (Yegappan Lakshmanan,
            closes #5238)
2019-11-18 22:02:16 +01:00
07a63d8633 patch 8.1.2319: compiler warning for int size
Problem:    Compiler warning for int size.
Solution:   Add typecast. (Mike Williams)
2019-11-18 21:38:37 +01:00
5f76334818 patch 8.1.2318: MS-Windows GUI: main background shows in toolbar
Problem:    MS-Windows GUI: main background shows in toolbar.
Solution:   Remove transparency from the toolbar. (Simon Sadler)
2019-11-17 22:54:10 +01:00
37ff4cf870 patch 8.1.2317: no test for spell affix file with flag on suffix
Problem:    No test for spell affix file with flag on suffix.
Solution:   Add a test case.
2019-11-17 20:10:20 +01:00
91b992c387 patch 8.1.2316: FORTIFY_SOURCE can also be present in CPPFLAGS
Problem:    FORTIFY_SOURCE can also be present in CPPFLAGS.
Solution:   Remove it in configure. (Benedikt Morbach, closes #2786)
2019-11-17 19:07:42 +01:00
539aa6b25e patch 8.1.2315: not always using the right window when jumping to an error
Problem:    Not always using the right window when jumping to an error.
Solution:   Add the "uselast" flag in 'switchbuf'. (closes #1652)
2019-11-17 18:09:38 +01:00
7170b295b0 patch 8.1.2314: vi' sometimes does not select anything
Problem:    vi' sometimes does not select anything.
Solution:   Recognize an empty selection. (Christian Brabandt, closes #5183)
2019-11-17 17:32:28 +01:00
eda1da0c9a patch 8.1.2313: debugging where a delay comes from is not easy
Problem:    Debugging where a delay comes from is not easy.
Solution:   Use different values when calling ui_delay().
2019-11-17 17:06:33 +01:00
077b9dd354 patch 8.1.2312: "line:" field in tags file not used
Problem:    "line:" field in tags file not used.
Solution:   Recognize the field and use the value. (Andy Massimino, Daniel
            Hahler, closes #5232, closes #2546, closes #1057)
2019-11-17 16:18:31 +01:00
09c6f265b2 Update runtime files. 2019-11-17 15:55:14 +01:00
0324f9ea0a patch 8.1.2311: warning for missing function prototype
Problem:    Warning for missing function prototype.
Solution:   Add the proto. (Dominique Pelle, closes #5233)
2019-11-16 22:49:40 +01:00
d8a8c4ca08 patch 8.1.2310: no proper test for directory changes in quickfix
Problem:    No proper test for directory changes in quickfix.
Solution:   Add a test that uses multiple directories. (Yegappan Lakshmanan,
            closes #5230)
2019-11-16 21:04:57 +01:00
abe12a1a4f patch 8.1.2309: compiler warning for argument type
Problem:    Compiler warning for argument type.
Solution:   Use linenr_T and cast to varnumber_T. (John Marriott)
2019-11-16 20:49:18 +01:00
ecafcc15ca patch 8.1.2308: deleting text before zero-width textprop removes it
Problem:    Deleting text before zero-width textprop removes it.
Solution:   Keep zero-width textprop when deleting text.
2019-11-16 20:41:51 +01:00
a37cb55da6 patch 8.1.2307: positioning popup doesn't work for buffer-local textprop
Problem:    Positioning popup doesn't work for buffer-local textprop.
Solution:   Make it work. (closes #5225)
2019-11-16 20:03:31 +01:00
f36a2c7e60 patch 8.1.2306: double and triple clicks are not tested
Problem:    Double and triple clicks are not tested.
Solution:   Test mouse clicks to select text. (closes #5226)
2019-11-16 18:57:16 +01:00
e53ec39270 patch 8.1.2305: no warning for wrong entry in translations
Problem:    No warning for wrong entry in translations.
Solution:   Check semicolons in keywords entry of desktop file.
2019-11-16 18:49:50 +01:00
db3a205147 patch 8.1.2304: cannot get the mouse position when getting a mouse click
Problem:    Cannot get the mouse position when getting a mouse click.
Solution:   Add getmousepos().
2019-11-16 18:22:41 +01:00
08f23636ae patch 8.1.2303: cursor in wrong position after horizontal scroll
Problem:    Cursor in wrong position after horizontal scroll.
Solution:   Set w_valid_leftcol.  (closes #5214, closes #5224)
2019-11-16 14:19:33 +01:00
f4a1d1c054 patch 8.1.2302: :lockmarks does not work for '[ and ']
Problem:    :lockmarks does not work for '[ and '].
Solution:   save and restore '[ and '] marks. (James McCoy, closes #5222)
2019-11-16 13:50:25 +01:00
ab85ca4e6a patch 8.1.2301: MS-Windows GUI: drawing error when background color changes
Problem:    MS-Windows GUI: drawing error when background color changes.
Solution:   Implement gui_mch_new_colors(). (Simon Sadler)
2019-11-15 22:41:14 +01:00
1ebbb6ee45 Fix vim.desktop generation. 2019-11-14 21:39:32 +01:00
574ee7bc12 Update runtime files 2019-11-13 23:04:29 +01:00
afe45b68a6 patch 8.1.2300: redraw breaks going through list of popup windows
Problem:    Redraw breaks going through list of popup windows.
Solution:   Use different flags for popup_reset_handled(). (closes #5216)
2019-11-13 22:35:19 +01:00
36e7a823c6 patch 8.1.2299: ConPTY in MS-Windows 1909 is still wrong
Problem:    ConPTY in MS-Windows 1909 is still wrong.
Solution:   Use same solution as for 1903. (Nobuhiro Takasaki, closes #5217)
2019-11-13 21:49:24 +01:00
0743ef9f8a patch 8.1.2298: missing part of 8.1.2296
Problem:    Missing part of 8.1.2296.
Solution:   s/test/text/
2019-11-13 16:37:31 +01:00
d6a98a3a97 patch 8.1.2297: the ex_vimgrep() function is too long
Problem:    The ex_vimgrep() function is too long.
Solution:   Split it in three parts. (Yegappan Lakshmanan, closes #5211)
2019-11-12 22:59:51 +01:00
58e32ab503 patch 8.1.2296: text properties are not combined with syntax by default
Problem:    Text properties are not combined with syntax by default.
Solution:   Make it work as documented. (closes #5190)
2019-11-12 22:44:22 +01:00
4eb7dae255 patch 8.1.2295: if buffer of popup is in another window cursorline sign shows
Problem:    If buffer of popup is in another window cursorline sign shows.
Solution:   Check the group of the sign.
2019-11-12 22:33:45 +01:00
cbee635eee patch 8.1.2294: cursor pos wrong with concealing and search causes a scroll
Problem:    Cursor position wrong when characters are concealed and asearch
            causes a scroll.
Solution:   Fix the cursor column in a concealed line after window scroll.
            (closes #5215, closes #5012)
2019-11-12 20:49:15 +01:00
cc184cfb09 patch 8.1.2293: join adds trailing space when second line is empty
Problem:    Join adds trailing space when second line is empty. (Brennan
            Vincent)
Solution:   Do not add a trailing space.
2019-11-12 20:31:20 +01:00
d002e411c6 patch 8.1.2292: v:mouse_winid not set on click in popup window
Problem:    v:mouse_winid not set on click in popup window.
Solution:   Set v:mouse_winid. (closes #5171)
2019-11-11 21:45:05 +01:00
adf4aa200b patch 8.1.2291: memory leak when executing command in a terminal
Problem:    Memory leak when executing command in a terminal.
Solution:   Free "argv". (Dominique Pelle, closes #5208)
2019-11-10 22:36:44 +01:00
5ef1c6a483 Update runtime files 2019-11-10 22:09:11 +01:00
a9aa86ff95 patch 8.1.2290: autocommand test fails
Problem:    Autocommand test fails.
Solution:   Remove 'closeoff' from 'diffopt'.
2019-11-10 21:25:45 +01:00
c823477979 patch 8.1.2289: after :diffsplit closing the window does not disable diff
Problem:    After :diffsplit closing the window does not disable diff.
Solution:   Add "closeoff" to 'diffopt' and add it to the default.
2019-11-10 21:00:27 +01:00
5c6b6187ac patch 8.1.2288: not using all space when popup with "topleft" flips to above
Problem:    Not using all space when popup with "topleft" flips to above.
Solution:   Recompute the height when a popup flips from below to above.
            (closes #5151)
2019-11-10 17:51:38 +01:00
1666ac9c56 patch 8.1.2287: using EndOfBuffer highlight in popup does not look good
Problem:    Using EndOfBuffer highlight in popup does not look good.
Solution:   Do not EndOfBuffer highlight. (closes #5204)
2019-11-10 17:22:31 +01:00
622b646037 patch 8.1.2286: using border highlight in popup window leaks memory
Problem:    Using border highlight in popup window leaks memory.
Solution:   Free memory before overwriting. (Dominique Pelle, closes #5203)
2019-11-10 15:16:54 +01:00
d6beab0248 patch 8.1.2285: padding in structures wastes memory
Problem:    Padding in structures wastes memory.
Solution:   Move fields to avoid padding. (Dominique Pelle, closes #5202)
2019-11-10 15:07:19 +01:00
439b3aca37 patch 8.1.2284: compiler warning for unused variable
Problem:    Compiler warning for unused variable. (Tony Mechelynck)
Solution:   Add #ifdef.
2019-11-10 01:32:12 +01:00
91e22eb6e0 patch 8.1.2283: missed on use of p_sbr
Problem:    Missed on use of p_sbr.
Solution:   Add missing p_sbr change.
2019-11-10 00:19:12 +01:00
4c054e9fb2 patch 8.1.2282: crash when passing many arguments through a partial
Problem:    Crash when passing many arguments through a partial. (Andy
            Massimino)
Solution:   Check the number of arguments. (closes #5186)
2019-11-10 00:13:50 +01:00
ee85702c10 patch 8.1.2281: 'showbreak' cannot be set for one window
Problem:    'showbreak' cannot be set for one window.
Solution:   Make 'showbreak' global-local.
2019-11-09 23:26:40 +01:00
b0745b221d patch 8.1.2280: crash when passing partial to substitute()
Problem:    Crash when passing partial to substitute().
Solution:   Take extra arguments into account. (closes #5186)
2019-11-09 22:28:11 +01:00
dbd4316806 patch 8.1.2279: computation of highlight attributes is too complicated
Problem:    Computation of highlight attributes is too complicated.
Solution:   Simplify the attribute computation and make it more consistent.
            (closes #5190)  Fix that 'combine' set to zero doesn't work.
2019-11-09 21:28:14 +01:00
3503d7c94a patch 8.1.2278: using "cd" with "exe" may fail
Problem:    Using "cd" with "exe" may fail.
Solution:   Use chdir() instead.
2019-11-09 20:10:17 +01:00
b73e439606 patch 8.1.2277: terminal window is not updated when info popup changes
Problem:    Terminal window is not updated when info popup changes.
Solution:   Redraw windows when re-using an info popup. (closes #5192)
2019-11-09 20:00:35 +01:00
5bf46e9786 patch 8.1.2276: MS-Windows: session test leaves files behind
Problem:    MS-Windows: session test leaves files behind.
Solution:   Wipe out buffers before deleting the directory. (closes #5187)
2019-11-09 18:06:04 +01:00
1e15e61188 patch 8.1.2275: using "seesion" looks like a mistake
Problem:    Using "seesion" looks like a mistake.
Solution:   Use an underscore to make the function sort first.
2019-11-09 17:18:52 +01:00
d1c1c82389 patch 8.1.2274: newlines in 'balloonexpr' result only work in the GUI
Problem:    Newlines in 'balloonexpr' result only work in the GUI.
Solution:   Also recognize newlines in the terminal. (closes #5193)
2019-11-09 16:59:14 +01:00
4dd8fe0b4f patch 8.1.2273: wrong default when "pos" is changed with popup_atcursor()
Problem:    Wrong default when "pos" is changed with popup_atcursor().
Solution:   Adjust the default line and col when "pos" is not the default
            value. (#5151)
2019-11-09 15:33:31 +01:00
34059e7b67 patch 8.1.2272: test may hang at more prompt
Problem:    Test may hang at more prompt.
Solution:   Reset 'more' after resetting 'compatible'. (Michael Soyka)
2019-11-08 23:00:25 +01:00
398a59b6a5 patch 8.1.2271: build error if FEAT_TAG_BINS is not defined
Problem:    Build error if FEAT_TAG_BINS is not defined. (John Marriott)
Solution:   Add #ifdef.
2019-11-08 21:56:57 +01:00
0208b6b771 patch 8.1.2270: "gf" is not tested in Visual mode
Problem:    "gf" is not tested in Visual mode.
Solution:   Add Visual mode test and test errors. (Dominique Pelle,
            closes #5197)
2019-11-08 21:49:48 +01:00
dc9ef26845 patch 8.1.2269: tags file with very long line stops using binary search
Problem:    Tags file with very long line stops using binary search.
Solution:   Reallocate the buffer if needed.
2019-11-07 23:08:42 +01:00
3d2a47c782 patch 8.1.2268: spell file flag zero is not recognized
Problem:    Spell file flag zero is not recognized.
Solution:   Use -1 as an error value, so that zero can be used as a valid flag
            number.
2019-11-07 20:48:42 +01:00
3b991527e8 patch 8.1.2267: compiler warning for uninitialized variable
Problem:    Compiler warning for uninitialized variable. (Tony Mechelynck)
Solution:   Rearrange the code.
2019-11-06 23:26:20 +01:00
f8b036bcae patch 8.1.2266: position unknown for a mouse click in a popup window
Problem:    Position unknown for a mouse click in a popup window.
Solution:   Set v:mouse_col and v:mouse_lnum. (closes #5171)
2019-11-06 21:09:17 +01:00
638a4a7508 patch 8.1.2265: when popup with "botleft" does not fit it flips incorrectly
Problem:    When popup with "botleft" does not fit it flips incorrectly.
Solution:   Only flip when there is more space on the other side.  Add the
            "posinvert" option to disable flipping and do it in both
            directions if enabled.  (closes #5151)
2019-11-06 19:25:22 +01:00
fcf8a8743b patch 8.1.2264: there are two test files for :let
Problem:    There are two test files for :let.
Solution:   Merge the two files.
2019-11-06 15:22:00 +01:00
215ba3b636 patch 8.1.2263: 'noesckeys' test fails in GUI
Problem:    'noesckeys' test fails in GUI.
Solution:   Skip the test in the GUI.
2019-11-06 15:07:07 +01:00
1e673b9eb6 patch 8.1.2262: unpack assignment in function not recognized
Problem:    Unpack assignment in function not recognized.
Solution:   Skip over "[a, b]". (closes #5051)
2019-11-06 15:02:50 +01:00
177c9f2f06 patch 8.1.2261: with modifyOtherKeys set 'noesckeys' doesn't work
Problem:    With modifyOtherKeys set 'noesckeys' doesn't work. (James McCoy)
Solution:   Disable modifyOtherKeys while in Insert mode when 'noesckeys' is
            set. (closes #5180)
2019-11-06 13:59:16 +01:00
36ec6f6953 patch 8.1.2260: terminal test may fail on MS-Windows
Problem:    Terminal test may fail on MS-Windows.
Solution:   Catch the situation that "term dir" fails with a CreateProcess
            error.
2019-11-05 22:38:47 +01:00
7d2320414f patch 8.1.2259: running tests may leave XfakeHOME behind
Problem:    Running tests may leave XfakeHOME behind.
Solution:   Source summarize.vim without using setup.vim. (closes #5177)
            Also fix that on MS-Windows the test log isn't echoed.
2019-11-05 22:37:20 +01:00
dc968e7a45 patch 8.1.2258: may get hit-enter prompt after entering a number
Problem:    May get hit-enter prompt after entering a number. (Malcolm Rowe)
Solution:   Put back accidentally deleted lines. (closes #5176)
2019-11-05 21:53:20 +01:00
ae20f340ad patch 8.1.2257: MS-Windows GUI: scroll wheel always uses current window
Problem:    MS-Windows GUI: scroll wheel always uses current window.
Solution:   Add the 'scrollfocus' option for MS-Windows.
2019-11-05 21:09:23 +01:00
e5a3272d32 patch 8.1.2256: test for ":term ++shell" fails on MS-Windows
Problem:    Test for ":term ++shell" fails on MS-Windows.
Solution:   Accept failure of "dir" executable.
2019-11-04 23:36:29 +01:00
2d6d76f9cd patch 8.1.2255: ":term ++shell" does not work on MS-Windows
Problem:    ":term ++shell" does not work on MS-Windows.
Solution:   Add MS-Windows support.
2019-11-04 23:18:35 +01:00
0630bb6580 patch 8.1.2254: MS-Windows: mouse scroll wheel doesn't work in popup
Problem:    MS-Windows: mouse scroll wheel doesn't work in popup.
Solution:   Handle mouse wheel events separately. (closes #5138)
2019-11-04 22:52:12 +01:00
ad4de52510 patch 8.1.2253: using "which" to check for an executable is not reliable
Problem:    Using "which" to check for an executable is not reliable.
Solution:   Use "command -v" instead.  Also exit with error code when
            generating tags has an error. (closes #5174)
2019-11-04 21:24:48 +01:00
2ade714728 patch 8.1.2252: compiler warning for int size
Problem:    Compiler warning for int size.
Solution:   Add type cast. (Mike Williams)
2019-11-04 20:36:50 +01:00
197c6b7da3 patch 8.1.2251: ":term command" may not work without a shell
Problem:    ":term command" may not work without a shell.
Solution:   Add the ++shell option to :term. (closes #3340)
2019-11-03 23:37:12 +01:00
30efcf3d26 patch 8.1.2250: CTRL-U and CTRL-D don't work in popup window
Problem:    CTRL-U and CTRL-D don't work in popup window.
Solution:   Initialize 'scroll'.  Add "lastline" in popup_getpos().
            (closes #5170)
2019-11-03 22:29:38 +01:00
d047840ce4 patch 8.1.2249: "make vimtags" does not print any message
Problem:    "make vimtags" does not print any message.
Solution:   Add a message that the tags have been updated.
2019-11-03 21:46:19 +01:00
1e814bc017 patch 8.1.2248: CTRL-W dot does not work when modifyOtherKeys is enabled
Problem:    CTRL-W dot does not work in a terminal when modifyOtherKeys is
            enabled.
Solution:   Use the modifier when needed.  Pass the modifier along with the
            key to avoid mistakes.
2019-11-03 21:19:41 +01:00
e890b9f5dd patch 8.1.2247: "make vimtags" does not work in runtime/doc
Problem:    "make vimtags" does not work in runtime/doc.
Solution:   Test existence with "which" instead of "test -x". (Ken Takata)
2019-11-03 18:38:47 +01:00
1f068233c1 patch 8.1.2246: some tests are still in old style
Problem:    Some tests are still in old style.
Solution:   Change a few tests to new style. (Yegappan Lakshmanan)
2019-11-03 16:17:26 +01:00
2f7b7b1e12 patch 8.1.2245: third character of 'listchars' tab shows in wrong place
Problem:    Third character of 'listchars' tab shows in wrong place when
            'breakindent' is set.
Solution:   Set c_final to NUL. (Naruhiko Nishino, closes #5165)
2019-11-03 15:46:48 +01:00
82cf7f6df7 patch 8.1.2244: 'wrapscan' is not used for "gn"
Problem:    'wrapscan' is not used for "gn".
Solution:   Only reset 'wrapscan' for the first search round. (closes #5164)
2019-11-02 23:22:47 +01:00
32aa10203b patch 8.1.2243: typos in comments
Problem:    Typos in comments.
Solution:   Fix the typos. (Dominique Pelle, closes #5160)  Also adjust
            formatting a bit.
2019-11-02 22:54:41 +01:00
70def98a95 patch 8.1.2242: creating docs tags uses user preferences
Problem:    Creating docs tags uses user preferences. (Tony Mechelynck)
Solution:   Add "--clean".
2019-11-02 22:45:31 +01:00
024dbd229f patch 8.1.2241: match highlight does not combine with 'wincolor'
Problem:    Match highlight does not combine with 'wincolor'.
Solution:   Apply 'wincolor' last on top of any other attribute. (closes #5159)
2019-11-02 22:00:15 +01:00
f2885d3fb7 patch 8.1.2240: popup window width changes when scrolling
Problem:    Popup window width changes when scrolling.
Solution:   Also adjust maxwidth when applying minwidth and there is a
            scrollbar.  Fix off-by-one error. (closes #5162)
2019-11-02 20:21:25 +01:00
1a577433ac patch 8.1.2239: CI fails when running tests without building Vim
Problem:    CI fails when running tests without building Vim.
Solution:   Skip creating doc tags if the execute does not exist.
2019-11-02 18:22:08 +01:00
1ff14ba24c Update runtime files. 2019-11-02 14:09:23 +01:00
757bd2ea49 patch 8.1.2238: error in docs tags goes unnoticed
Problem:    Error in docs tags goes unnoticed.
Solution:   Adjust tags build command. (Ken Takata, closes #5158)
2019-11-01 19:46:22 +01:00
7a641ca1e1 patch 8.1.2237: mode() result depends on whether CURSOR_SHAPE is defined
Problem:    Mode() result after usign "r" depends on whether CURSOR_SHAPE is
            defined. (Christian Brabandt)
Solution:   Move the #ifdef to only skip ui_cursor_shape().
2019-10-31 19:55:55 +01:00
bb26596242 patch 8.1.2236: ml_get error if pattern matches beyond last line
Problem:    Ml_get error if pattern matches beyond last line.
Solution:   Adjust position if needed. (Christian Brabandt, closes #5139)
2019-10-31 04:38:36 +01:00
77ccc00340 patch 8.1.2235: "C" with 'virtualedit' set does not include multi-byte char
Problem:    "C" with 'virtualedit' set does not include multi-byte char.
Solution:   Include the whole multi-byte char. (Nobuhiro Takasaki,
            closes #5152)
2019-10-31 03:21:25 +01:00
3f39697b73 patch 8.1.2234: get_short_pathname() fails depending on encoding
Problem:    get_short_pathname() fails depending on encoding.
Solution:   Use the wide version of the library function. (closes #5129)
2019-10-30 04:10:06 +01:00
69bf634858 patch 8.1.2233: cannot get the Vim command line arguments
Problem:    Cannot get the Vim command line arguments.
Solution:   Add v:argv. (Dmitri Vereshchagin, closes #1322)
2019-10-29 04:16:57 +01:00
8b530c1ff9 patch 8.1.2231: not easy to move to the middle of a text line
Problem:    Not easy to move to the middle of a text line.
Solution:   Add the gM command. (Yasuhiro Matsumoto, closes #2070)
2019-10-28 02:13:05 +01:00
077ff436a7 patch 8.1.2230: MS-Windows: testing external commands can be improved
Problem:    MS-Windows: testing external commands can be improved.
Solution:   Adjust tests, remove duplicate test. (closes #4928)
2019-10-28 00:42:21 +01:00
efae76ab1a patch 8.1.2229: cannot color number column above/below cursor differently
Problem:    Cannot color number column above/below cursor differently.
Solution:   Add LineNrAbove and LineNrBelow. (Shaun Brady, closes #624)
2019-10-27 22:54:58 +01:00
38ba4dce4a patch 8.1.2228: screenpos() returns wrong values when 'number' is set
Problem:    screenpos() returns wrong values when 'number' is set. (Ben
            Jackson)
Solution:   Compare the column with the window width. (closes #5133)
2019-10-27 21:39:09 +01:00
1c329c04be patch 8.1.2227: layout wrong if 'lines' changes while cmdline window is open
Problem:    Layout wrong if 'lines' changes while cmdline window is open.
Solution:   Do not restore the window layout if 'lines' changed.
            (closes #5130)
2019-10-27 20:37:35 +01:00
5b418992cf patch 8.1.2226: cannot use system copy/paste in non-xterm terminals
Problem:    Cannot use system copy/paste in non-xterm terminals.
Solution:   Instead of setting 'mouse' to "a" set it to "nvi" in defaults.vim.
2019-10-27 18:50:25 +01:00
52410575be patch 8.1.2225: the "last used" info of a buffer is under used
Problem:    The "last used" info of a buffer is under used.
Solution:   Add "lastused" to getbufinfo(). List buffers sorted by last-used
            field. (Andi Massimino, closes #4722)
2019-10-27 05:12:45 +01:00
dfded98f87 patch 8.1.2224: cannot build Amiga version
Problem:    Cannot build Amiga version.
Solution:   Add dummy mch_setmouse(). (Ola Söder, closes #5126)
2019-10-26 21:33:19 +02:00
cb86893114 patch 8.1.2223: cannot see what buffer an ml_get error is for
Problem:    Cannot see what buffer an ml_get error is for.
Solution:   Add the buffer number and name in the message
2019-10-26 20:56:21 +02:00
7ab5d77666 patch 8.1.2222: accessing invalid memory
Problem:    Accessing invalid memory. (Dominique Pelle)
Solution:   Reset highlight_match every time.  (closes #5125)
2019-10-26 20:45:24 +02:00
96f45c0b6f Update runtime files 2019-10-26 19:53:45 +02:00
8fc4296436 patch 8.1.2221: cannot filter :disp output
Problem:    Cannot filter :disp output.
Solution:   Support filtereing :disp output. (Andi Massimino, closes #5117)
2019-10-26 17:33:13 +02:00
6a0cc916bd patch 8.1.2220: :cfile does not abort like other quickfix commands
Problem:    :cfile does not abort like other quickfix commands.
Solution:   Abort when desired. Add tests for aborting. (Yegappan Lakshmanan,
            closes #5121)
2019-10-26 16:48:44 +02:00
28ed4dfe1f patch 8.1.2219: no autocommand for open window with terminal
Problem:    No autocommand for open window with terminal.
Solution:   Add TerminalWinOpen. (Christian Brabandt)
2019-10-26 16:21:40 +02:00
453c19257f patch 8.1.2218: "gN" is off by one in Visual mode
Problem:    "gN" is off by one in Visual mode.
Solution:   Check moving forward. (Christian Brabandt, #5075)
2019-10-26 14:42:09 +02:00
c7488a7fc8 patch 8.1.2217: compiler warning for unused variable
Problem:    Compiler warning for unused variable.
Solution:   Move variable inside #ifdef. (John Marriott)
2019-10-26 12:23:04 +02:00
1fd30d7bae patch 8.1.2216: text property in wrong place after :substitute
Problem:    Text property in wrong place after :substitute.
Solution:   Pass the new column instead of the old one. (Christian Brabandt,
            closes #4427)
2019-10-25 22:13:29 +02:00
7aee6876eb patch 8.1.2215: unreachable code in adjusting text prop columns
Problem:    Unreachable code in adjusting text prop columns.
Solution:   Remove the code. (Christian Brabandt)
2019-10-25 21:49:38 +02:00
11a58af66f patch 8.1.2214: too much is redrawn when 'cursorline' is set
Problem:    Too much is redrawn when 'cursorline' is set.
Solution:   Don't do a complete redraw. (closes #5079)
2019-10-24 22:32:31 +02:00
aa1f04d092 patch 8.1.2213: popup_textprop tests fail
Problem:    Popup_textprop tests fail.
Solution:   Adjust the column and line positioning.
2019-10-24 22:12:54 +02:00
3691f1ee72 patch 8.1.2212: cannot see the selection type in :reg output
Problem:    Cannot see the selection type in :reg output. (Ayberk Aydın)
Solution:   Add c/l/b. (Christian Brabandt, closes #5110, closes #4546)
2019-10-24 20:17:00 +02:00
336bf2b8b2 patch 8.1.2211: listener callback "added" argument is not the total
Problem:    Listener callback "added" argument is not the total. (Andy
            Massimino)
Solution:   Compute the total. (closes #5105)
2019-10-24 20:07:07 +02:00
b754b5bf6d patch 8.1.2210: using negative offset for popup_create() does not work
Problem:    Using negative offset for popup_create() does not work.
Solution:   Use -1 instead of zero. (closes #5111)
2019-10-24 19:25:00 +02:00
ec6f735012 patch 8.1.2209: LF in escape codes may be expanded to CR-LF
Problem:    LF in escape codes may be expanded to CR-LF.
Solution:   Do not expand LF in escape codes to CR-LF. (closes #5107)
2019-10-24 17:49:27 +02:00
faf626e5d1 patch 8.1.2208: Unix: Tabs in output might be expanded to spaces
Problem:    Unix: Tabs in output might be expanded to spaces.
Solution:   Reset the XTABS flag. (closes #5108)
2019-10-24 17:43:25 +02:00
edaad6e0a0 patch 8.1.2207: "gn" doesn't work quite right
Problem:    "gn" doesn't work quite right. (Jaehwang Jerry Jung)
Solution:   Improve and simplify the search logic. (Christian Brabandt,
            closes #5103, closes #5075)
2019-10-24 15:23:37 +02:00
28686682e7 patch 8.1.2206: no test for fixed issue #3893
Problem:    No test for fixed issue #3893.
Solution:   Add a test. (Christian Brabandt, #3893)
2019-10-24 15:12:37 +02:00
6656c2ec4c patch 8.1.2205: sign entry structure has confusing name
Problem:    Sign entry structure has confusing name.
Solution:   Rename signlist_T to sign_entry_T and prefix se_ to the fields.
2019-10-24 15:00:04 +02:00
8f7ab4bd1e patch 8.1.2204: crash on exit when closing terminals
Problem:    Crash on exit when closing terminals. (Corey Hickey)
Solution:   Actually wait for the job to stop. (closes #5100)
2019-10-23 23:16:45 +02:00
823edd1eed patch 8.1.2203: running libvterm tests without the +terminal feature
Problem:    Running libvterm tests without the +terminal feature.
Solution:   Only add the libvterm test target when building libvterm.
2019-10-23 22:35:36 +02:00
93bbf33ceb patch 8.1.2202: MS-Windows: build failure with GUI and small features
Problem:    MS-Windows: build failure with GUI and small features.
Solution:   Add #ifdef. (Michael Soyka, closes #5097)
2019-10-23 21:43:16 +02:00
13a1f3fb0c patch 8.1.2201: cannot build with dynamically linked Python 3.8
Problem:    Cannot build with dynamically linked Python 3.8.
Solution:   Implement py3__Py_DECREF() and py3__Py_XDECREF(). (Ken Takata,
            closes #4080)
2019-10-23 21:37:25 +02:00
1cac70953d patch 8.1.2200: crash when memory allocation fails
Problem:    Crash when memory allocation fails.
Solution:   Check for NULL curwin and curbuf. (Christian Brabandt,
            closes #4839)
2019-10-22 21:54:31 +02:00
a720be78d7 patch 8.1.2199: build failure when using normal features without GUI
Problem:    Build failure when using normal features without GUI and EXITFREE
            defined.
Solution:   Add #ifdef. (Dominique Pelle, closes #5106)
2019-10-22 21:45:19 +02:00
396b7c78c0 patch 8.1.2198: crash when using :center in autocommand
Problem:    Crash when using :center in autocommand.
Solution:   Bail out early for an empty line. (Dominique pelle, closes #5095)
2019-10-21 23:08:59 +02:00
34ba06b6e6 patch 8.1.2197: ExitPre autocommand may cause accessing freed memory
Problem:    ExitPre autocommand may cause accessing freed memory.
Solution:   Check the window pointer is still valid. (closes #5093)
2019-10-20 22:27:10 +02:00
d53ebfc624 patch 8.1.2196: MS-Windows: running tests with MSVC lacks updates
Problem:    MS-Windows: running tests with MSVC lacks updates.
Solution:   Improve running individual tests on MS-Windows. (closes #4922)
2019-10-20 21:47:20 +02:00
4d14bac8e7 patch 8.1.2195: Vim does not exit when the terminal window is last window
Problem:    Vim does not exit when closing a terminal window and it is the
            last window.
Solution:   Exit Vim if the closed terminal window is the last one.
            (closes #4539)
2019-10-20 21:15:15 +02:00
4b57018ee4 patch 8.1.2194: modifyOtherKeys is not enabled by default
Problem:    ModifyOtherKeys is not enabled by default.
Solution:   Add t_TI and t_TE to the builtin xterm termcap.
2019-10-20 19:53:22 +02:00
a13961536e patch 8.1.2193: popup_setoptions(popup_getoptions()) does not work
Problem:    Popup_setoptions(popup_getoptions()) does not work.
Solution:   Also accept a list with three entries for "moved" and
            "mousemoved". (closes #5081)
2019-10-20 18:46:05 +02:00
dca7abe79c patch 8.1.2192: cannot easily fill the info popup asynchronously
Problem:    Cannot easily fill the info popup asynchronously.
Solution:   Add the "popuphidden" value to 'completeopt'. (closes #4924)
2019-10-20 18:17:57 +02:00
88d3d09e07 patch 8.1.2191: when using modifyOtherKeys CTRL-X mode may not work
Problem:    When using modifyOtherKeys CTRL-X mode may not work.
Solution:   Recognize a control character also in the form with a modifier.
2019-10-20 16:00:47 +02:00
83e9a1ce75 patch 8.1.2190: syntax test fails on Mac
Problem:    Syntax test fails on Mac.
Solution:   Limit the window size to 20 rows.
2019-10-20 14:51:23 +02:00
82260afb0e patch 8.1.2189: syntax highlighting wrong for tab
Problem:    Syntax highlighting wrong for tab.
Solution:   Don't clear syntax attribute n_extra is non-zero.
2019-10-20 13:16:22 +02:00
2b78ab5d0c patch 8.1.2188: build error for missing define
Problem:    Build error for missing define.
Solution:   Add missing change.
2019-10-19 22:50:20 +02:00
b40c2576d4 patch 8.1.2187: error for bad regexp even though regexp is not used
Problem:    Error for bad regexp even though regexp is not used when writing
            a file. (Arseny Nasokin)
Solution:   Ignore regexp errors. (closes #5059)
2019-10-19 21:01:05 +02:00
7eed964b41 patch 8.1.2186: error for bad regexp even though regexp is not used
Problem:    Error for bad regexp even though regexp is not used, when writing
            a file. (Arseny Nasokin)
Solution:   Ignore regexp errors. (closes #5059)
2019-10-19 20:57:28 +02:00
bbfd1562ae patch 8.1.2185: syntax test fails
Problem:    Syntax test fails.
Solution:   Add missing file patch.
2019-10-19 20:38:15 +02:00
cfb381421f patch 8.1.2184: option context is not copied when splitting a window
Problem:    Option context is not copied when splitting a window. (Daniel
            Hahler)
Solution:   Copy the option context, so that ":verbose set" works.
            (closes #5066)
2019-10-19 20:18:47 +02:00
ba089307bb patch 8.1.2183: running a test is a bit verbose
Problem:    Running a test is a bit verbose.
Solution:   Silence some messages. (Daniel Hahler, closes #5070)
2019-10-19 18:56:58 +02:00
5b39d7adb0 patch 8.1.2182: test42 seen as binary by git diff
Problem:    Test42 seen as binary by git diff.
Solution:   Add .gitattributes file.  Make explicit that 'cpo' does not
            contain 'S'. (Daniel Hahler, closes #5072)
2019-10-19 18:37:53 +02:00
a74fda6f4d patch 8.1.2181: highlighting wrong when item follows tab
Problem:    Highlighting wrong when item follows tab.
Solution:   Don't use syntax attribute when n_extra is non-zero.
            (Christian Brabandt, closes #5076)
2019-10-19 17:38:03 +02:00
00e192becd patch 8.1.2180: Error E303 is not useful when 'directory' is empty
Problem:    Error E303 is not useful when 'directory' is empty.
Solution:   Skip the error message. (Daniel Hahler, #5067)
2019-10-19 17:01:28 +02:00
b98678a974 patch 8.1.2179: pressing "q" at the more prompt doesn't stop Python output
Problem:    Pressing "q" at the more prompt doesn't stop Python output. (Daniel
            Hahler)
Solution:   Check for got_int in writer(). (closes #5053)
            Also do this for Lua.
2019-10-19 15:18:44 +02:00
15ee567809 patch 8.1.2178: accessing uninitialized memory in test
Problem:    Accessing uninitialized memory in test.
Solution:   Check if there was a match before using the match position.
            (Dominique Pelle, closes #5088)
2019-10-19 14:35:02 +02:00
afbdb905c3 patch 8.1.2177: Dart files are not recognized
Problem:    Dart files are not recognized.
Solution:   Add a filetype rule. (Eugene Ciurana, closes #5087)
2019-10-19 14:10:21 +02:00
8459006af5 patch 8.1.2176: syntax attributes not combined with Visual highlighting
Problem:    Syntax attributes not combined with Visual highlighting. (Arseny
            Nasokin)
Solution:   Combine the attributes. (closes #5083)
2019-10-18 23:12:20 +02:00
c3bf7b56f2 patch 8.1.2175: meson files are not recognized
Problem:    Meson files are not recognized.
Solution:   Add the meson filetype. (Liam Beguin , Nirbheek Chauhan,
            closes #5056)  Also recognize hollywood.
2019-10-18 22:09:34 +02:00
89577b3b3e patch 8.1.2174: screen not recognized as supporting "sgr" mouse codes
Problem:    Screen not recognized as supporting "sgr" mouse codes.
Solution:   Recognize screen 4.7. (Jordan Christiansen, closes #5042)
2019-10-18 21:26:05 +02:00
92ea26b925 patch 8.1.2173: searchit() has too many arguments
Problem:    Searchit() has too many arguments.
Solution:   Move optional arguments to a struct.  Add the "wrapped" argument.
2019-10-18 20:53:34 +02:00
7751d1d1a3 patch 8.1.2172: spell highlight is wrong at start of the line
Problem:    Spell highlight is wrong at start of the line.
Solution:   Fix setting the "v" variable. (closes #5078)
2019-10-18 20:37:08 +02:00
a1cb1d1dce patch 8.1.2171: mouse support not always available
Problem:    Mouse support not always available.
Solution:   Enable mouse support also in tiny version.  Do not define
            FEAT_MOUSE_XTERM on MS-Windows (didn't really work).
2019-10-17 23:00:07 +02:00
0d2c4bf171 patch 8.1.2170: cannot build without the +termresponse feature
Problem:    Cannot build without the +termresponse feature.
Solution:   Add #ifdef.
2019-10-17 22:17:02 +02:00
3cea8a9a51 patch 8.1.2169: terminal flags are never reset
Problem:    Terminal flags are never reset.
Solution:   Reset the flags when setting 'term'.
2019-10-17 21:55:24 +02:00
b1ba9abcb3 patch 8.1.2168: heredoc assignment not skipped in if block
Problem:    Heredoc assignment not skipped in if block.
Solution:   Check if "skip" is set. (closes #5063)
2019-10-16 23:34:42 +02:00
2559a47823 patch 8.1.2167: mapping test fails on MS-Windows
Problem:    Mapping test fails on MS-Windows.
Solution:   Remove all the existing Insert-mode mappings.
2019-10-16 23:33:12 +02:00
4a4981b7cd patch 8.1.2166: rubyeval() not tested as a method
Problem:    Rubyeval() not tested as a method.
Solution:   Change a test case.
2019-10-16 22:36:11 +02:00
2e693a88b2 Update runtime files. 2019-10-16 22:35:02 +02:00
4f2f61a014 patch 8.1.2165: mapping test fails on Mac
Problem:    Mapping test fails on Mac.
Solution:   Remove the default Mac mapping.
2019-10-16 22:27:49 +02:00
7b3d939667 patch 8.1.2164: stuck when using "j" in a popupwin with popup_filter_menu
Problem:    Stuck when using "j" in a popupwin with popup_filter_menu if a
            line wraps.
Solution:   Check the cursor line is visible. (closes #4577)
2019-10-16 22:17:07 +02:00
b2fe1d676f patch 8.1.2163: cannot build with +spell but without +syntax
Problem:    Cannot build with +spell but without +syntax.
Solution:   Add #ifdef. (John Marriott)
2019-10-16 21:33:40 +02:00
4e03933726 patch 8.1.2162: popup resize test is flaky
Problem:    Popup resize test is flaky. (Christian Brabandt)
Solution:   Add the function to the list of flaky tests.
2019-10-16 21:13:35 +02:00
4bd88d568a patch 8.1.2161: mapping test fails
Problem:    Mapping test fails.
Solution:   Run the test separately.
2019-10-16 19:27:26 +02:00
a6cc5beb17 patch 8.1.2160: cannot build with +syntax but without +terminal
Problem:    Cannot build with +syntax but without +terminal.
Solution:   Add #ifdef.
2019-10-16 18:42:26 +02:00
fafb4b18cd patch 8.1.2159: some mappings are listed twice
Problem:    Some mappings are listed twice.
Solution:   Skip mappings duplicated for modifyOtherKeys. (closes #5064)
2019-10-16 18:34:57 +02:00
17efc7fa05 patch 8.1.2158: terminal attributes missing in Terminal-normal mode
Problem:    Terminal attributes missing in Terminal-normal mode.
Solution:   Use "syntax_attr".
2019-10-16 18:11:31 +02:00
8f7b29f033 patch 8.1.2157: libvterm source files missing from distribution
Problem:    Libvterm source files missing from distribution.
Solution:   Rename source files. (closes #5065)
2019-10-16 17:15:18 +02:00
9115c611db patch 8.1.2156: first character after Tab is not highlighted
Problem:    First character after Tab is not highlighted.
Solution:   Remember the syntax attribute for a column.
2019-10-16 16:57:06 +02:00
a3817730c0 patch 8.1.2155: in a terminal window 'cursorlineopt' does not work properly
Problem:    In a terminal window 'cursorlineopt' does not work properly.
Solution:   Check the 'cursorlineopt' value. (closes #5055)
2019-10-16 16:31:44 +02:00
1142a31b8c patch 8.1.2154: quickfix window height wrong when there is a tabline
Problem:    Quickfix window height wrong when there is a tabline. (Daniel
            Hahler)
Solution:   Take the tabline height into account. (closes #5058)
2019-10-16 14:51:39 +02:00
3439028c89 patch 8.1.2153: combining text property and syntax highlight is wrong
Problem:    Combining text property and syntax highlight is wrong. (Nick
            Jensen)
Solution:   Compute the syntax highlight attribute much earlier.
            (closes #5057)
2019-10-16 14:38:26 +02:00
27fc8cab22 patch 8.1.2152: problems navigating tags file on MacOS Catalina
Problem:    Problems navigating tags file on MacOS Catalina.
Solution:   Use fseek instead of lseek. (John Lamb, fixes #5061)
2019-10-15 22:23:37 +02:00
3c8cd4a1dc patch 8.1.2151: state test is a bit flaky
Problem:    State test is a bit flaky.
Solution:   Add to the list of flaky tests.
2019-10-14 22:26:20 +02:00
03b00476ee patch 8.1.2150: no test for 'ttymouse' set from xterm version response
Problem:    No test for 'ttymouse' set from xterm version response.
Solution:   Test the three possible values.
2019-10-14 22:22:03 +02:00
e3a22cb1ba patch 8.1.2149: crash when running out of memory very early
Problem:    Crash when running out of memory very early.
Solution:   Do not use IObuff when it's NULL. (closes #5052)
2019-10-14 22:01:57 +02:00
6aa7523b96 patch 8.1.2148: no test for right click extending Visual area
Problem:    No test for right click extending Visual area.
Solution:   Add a test. (Dominique Pelle, closes #5018)
2019-10-13 21:01:34 +02:00
53efb18530 patch 8.1.2147: crash when allocating memory fails
Problem:    Crash when allocating memory fails. (Zu-Ming Jiang)
Solution:   Check that 'spellcapcheck' is not NULL. (closes #5048)
2019-10-13 19:49:26 +02:00
1e7b52ad8a patch 8.1.2146: build failure
Problem:    Build failure.
Solution:   Include omitted changed file.
2019-10-13 16:59:08 +02:00
459fd785e4 patch 8.1.2145: cannot map <C-H> when modifyOtherKeys is enabled
Problem:    Cannot map <C-H> when modifyOtherKeys is enabled.
Solution:   Add the <C-H> mapping twice, both with modifier and as 0x08.  Use
            only the first one when modifyOtherKeys has been detected.
2019-10-13 16:43:39 +02:00
171a921b51 patch 8.1.2144: side effects when using t_ti to enable modifyOtherKeys
Problem:    Side effects when using t_ti to enable modifyOtherKeys.
Solution:   Add t_TI and t_TE.
2019-10-12 21:08:59 +02:00
4facea310c patch 8.1.2143: cannot see each command even when 'verbose' is set
Problem:    Cannot see each command even when 'verbose' is set.
Solution:   List each command when 'verbose' is at least 16.
2019-10-12 20:17:40 +02:00
d1e2f3984a patch 8.1.2142: some key mappings do not work with modifyOtherKeys
Problem:    Some key mappings do not work with modifyOtherKeys.
Solution:   Remove the Shift modifier if it is already included in the key.
2019-10-12 18:22:50 +02:00
e8070987c6 patch 8.1.2141: :tselect has an extra hit-enter prompt
Problem:    :tselect has an extra hit-enter prompt.
Solution:   Do not set need_wait_return when only moving the cursor.
            (closes #5040)
2019-10-12 17:07:06 +02:00
ceba3dd518 patch 8.1.2140: "gk" and "gj" do not work correctly in number column
Problem:    "gk" and "gj" do not work correctly in number column.
Solution:   Allow for a negative "curswant". (Zach Wegner, closes #4969)
2019-10-12 16:12:54 +02:00
18a79a6841 patch 8.1.2139: the modifyOtherKeys codes are not tested
Problem:    The modifyOtherKeys codes are not tested.
Solution:   Add a test case.
2019-10-12 15:36:11 +02:00
4cdbed33e4 patch 8.1.2138: including the build number in the Win32 binary is confusing
Problem:    Including the build number in the Win32 binary is confusing.
Solution:   Only use the patchlevel.
2019-10-12 15:02:47 +02:00
1a4cbb19de patch 8.1.2137: parsing the termresponse is not tested
Problem:    Parsing the termresponse is not tested.
Solution:   Add a first test. (related to #5042)
2019-10-12 13:25:44 +02:00
ec66c41d84 patch 8.1.2136: using freed memory with autocmd from fuzzer
Problem:    using freed memory with autocmd from fuzzer. (Dhiraj Mishra,
            Dominique Pelle)
Solution:   Avoid using "wp" after autocommands. (closes #5041)
2019-10-11 21:19:13 +02:00
00eab7f128 patch 8.1.2135: with modifyOtherKeys Alt-a does not work properly
Problem:    With modifyOtherKeys Alt-a does not work properly.
Solution:   Remove the ALT modifier.  Get multi-byte after applying ALT.
2019-10-10 21:49:28 +02:00
6a0299d8f4 patch 8.1.2134: modifier keys are not always recognized
Problem:    Modifier keys are not always recognized.
Solution:   Handle key codes generated by xterm with modifyOtherKeys set.
            Add this to libvterm so we can debug it.
2019-10-10 21:14:03 +02:00
07282f01da patch 8.1.2133: some tests fail when run as root
Problem:    Some tests fail when run as root.
Solution:   Add CheckNotRoot and use it. (James McCoy, closes #5020)
2019-10-10 16:46:17 +02:00
a129974bc7 patch 8.1.2132: MS-Windows: screen mess when not recognizing insider build
Problem:    MS-Windows: screen mess when not recognizing insider build.
Solution:   Always move the cursor to the first column first. (Nobuhiro
            Takasaki, closes #5036)
2019-10-10 16:36:00 +02:00
c25e702dee patch 8.1.2131: MSVC tests fail
Problem:    MSVC tests fail.
Solution:   Replace backslashes with slashes.
2019-10-10 14:08:26 +02:00
073e779640 patch 8.1.2130: MSVC build fails
Problem:    MSVC build fails.
Solution:   Add the source file name explicitly.
2019-10-10 13:39:08 +02:00
1ac41a5c13 patch 8.1.2129: using hard coded executable path in test
Problem:    Using hard coded executable path in test.
Solution:   Use v:progpath. Use $VIMRUNTIME instead of "runtime". (James
            McCoy, closes #5025)
2019-10-10 13:30:12 +02:00
9326805442 patch 8.1.2128: renamed libvterm sources makes merging difficult
Problem:    Renamed libvterm sources makes merging difficult.
Solution:   Rename back to the original name and only rename the .o files.
            Also clean the libvterm build artifacts. (James McCoy,
            closes #5027)
2019-10-10 13:22:54 +02:00
14c01f8348 patch 8.1.2127: the indent.c file is a bit big
Problem:    The indent.c file is a bit big.
Solution:   Move C-indent code a a new cindent.c file.  Move other
            indent-related code to indent.c. (Yegappan Lakshmanan,
            closes #5031)
2019-10-09 22:53:08 +02:00
6bd1d77067 patch 8.1.2126: viminfo not sufficiently tested
Problem:    Viminfo not sufficiently tested.
Solution:   Add more test cases.  Clean up comments. (Yegappan Lakshmanan,
            closes #5032)
2019-10-09 22:01:25 +02:00
b189295b72 patch 8.1.2125: fnamemodify() fails when repeating :e
Problem:    Fnamemodify() fails when repeating :e.
Solution:   Do not go before the tail. (Rob Pilling, closes #5024)
2019-10-08 23:26:50 +02:00
345f28df54 patch 8.1.2124: ruler is not updated if win_execute() moves cursor
Problem:    Ruler is not updated if win_execute() moves cursor.
Solution:   Update the status line. (closes #5022)
2019-10-08 22:20:35 +02:00
c3e555b22f patch 8.1.2123: parsing CSI sequence is messy
Problem:    Parsing CSI sequence is messy.
Solution:   Generalize parsing a CSI sequence.
2019-10-08 20:15:39 +02:00
fbbd102be0 patch 8.1.2122: cannot build without terminal feature
Problem:    Cannot build without terminal feature.
Solution:   Add #ifdef.
2019-10-07 22:38:58 +02:00
a27e1dcddc patch 8.1.2121: mode is not updated when switching to terminal
Problem:    Mode is not updated when switching to terminal in Insert mode.
Solution:   Redraw the mode when entering a terminal window. (Jason Franklin)
2019-10-07 22:27:36 +02:00
1614a14901 patch 8.1.2120: some MB_ macros are more complicated than necessary
Problem:    Some MB_ macros are more complicated than necessary. (Dominique
            Pelle)
Solution:   Simplify the macros.  Expand inline.
2019-10-06 22:00:13 +02:00
524f3b19ae patch 8.1.2119: memory access error for empty string
Problem:    memory access error for empty string when 'encoding' is a single
            byte encoding.
Solution:   Check for empty string when getting the length. (Dominique Pelle,
            closes #5021, closes #5007)
2019-10-06 20:08:38 +02:00
eb66328bd7 patch 8.1.2118: termcodes test fails when $TERM is "dumb"
Problem:    Termcodes test fails when $TERM is "dumb".
Solution:   Skip the test. (James McCoy, closes #5019)
2019-10-06 12:02:15 +02:00
49474ca122 patch 8.1.2117: CursorLine highlight used while 'cursorline' is off
Problem:    CursorLine highlight used while 'cursorline' is off.
Solution:   Check 'cursorline' is set. (cloes #5017)
2019-10-05 21:57:12 +02:00
1671de3098 patch 8.1.2116: no check for out of memory
Problem:    No check for out of memory.
Solution:   Check for NULL pointer.
2019-10-05 21:35:16 +02:00
2efc44b3f0 patch 8.1.2115: MS-Windows: shell commands fail if &shell contains a space
Problem:    MS-Windows: shell commands fail if &shell contains a space.
Solution:   Use quotes instead of escaping. (closes #4920)
2019-10-05 12:09:32 +02:00
fd00c042af patch 8.1.2114: when a popup is closed with CTRL-C the callback aborts
Problem:    When a popup is closed with CTRL-C the callback aborts.
Solution:   Reset got_int when invoking the callback. (closes #5008)
2019-10-05 11:56:54 +02:00
9ca250855b patch 8.1.2113: ":help expr-!~?" only works after searching
Problem:    ":help expr-!~?" only works after searching.
Solution:   Escape "~" after "expr-". (closes #5015)
2019-10-05 11:30:09 +02:00
4c063dde73 patch 8.1.2112: build number for ConPTY is outdated
Problem:    Build number for ConPTY is outdated.
Solution:   Update to new build number. (Nobuhiro Takasaki, closes #5014)
2019-10-04 21:29:12 +02:00
2a8d3b8997 patch 8.1.2111: viminfo file not sufficiently tested
Problem:    Viminfo file not sufficiently tested.
Solution:   Add more tests. (Yegappan Lakshmanan, closes #5009)
2019-10-04 21:20:25 +02:00
e8a7dfedfc patch 8.1.2110: CTRL-C closes two popups instead of one
Problem:    CTRL-C closes two popups instead of one.
Solution:   Reset got_int when the filter consumed the key.
2019-10-03 22:35:52 +02:00
1824f45883 patch 8.1.2109: popup_getoptions() hangs with tab-local popup
Problem:    popup_getoptions() hangs with tab-local popup.
Solution:   Correct pointer name. (Marko Mahnič, closes #5006)
2019-10-02 23:06:46 +02:00
23324a0b35 patch 8.1.2108: cannot close the cmdline window from CmdWinEnter
Problem:    Cannot close the cmdline window from CmdWinEnter. (George Brown)
Solution:   Reset cmdwin_result earlier. (Christian Brabandt, closes #4980)
2019-10-01 17:39:04 +02:00
8617348e21 patch 8.1.2107: various memory leaks reported by asan
Problem:    Various memory leaks reported by asan.
Solution:   Free the memory. (Ozaki Kiichi, closes #5003)
2019-10-01 17:02:16 +02:00
b4367b7fb6 patch 8.1.2106: no tests for dragging the mouse beyond the window
Problem:    No tests for dragging the mouse beyond the window.
Solution:   Add a test. (Dominique Pelle, closes #5004)
2019-10-01 14:19:07 +02:00
2886dcceba patch 8.1.2105: MS-Windows: system() may crash
Problem:    MS-Windows: system() may crash.
Solution:   Do not use "itmp" when it is NULL. (Yasuhiro Matsumoto,
            closes #5005)
2019-10-01 12:10:25 +02:00
792cf5e1be patch 8.1.2104: the normal.c file is too big
Problem:    The normal.c file is too big.
Solution:   Move do_pending_operator() to ops.c. (Yegappan Lakshmanan,
            closes #4999).
2019-09-30 23:12:16 +02:00
18223a592e patch 8.1.2103: wrong error message if "termdebugger" is not executable
Problem:    wrong error message if "termdebugger" is not executable.
Solution:   Check if "termdebugger" is executable and give a clear error
            message. (Ozaki Kiichi, closes #5000)  Fix indents.
2019-09-30 20:47:54 +02:00
d17a57a433 patch 8.1.2102: can't build with GTK and FEAT_GUI_GNOME
Problem:    Can't build with GTK and FEAT_GUI_GNOME. (Tony Mechelynck)
Solution:   Adjust the #ifdef. (Yegappan Lakshmanan)
2019-09-29 20:53:55 +02:00
ac02a638b4 patch 8.1.2101: write_session_file() often defined but not used
Problem:    write_session_file() often defined but not used.
Solution:   Adjust the #ifdef. (Yegappan Lakshmanan, closes #4998)
2019-09-29 19:02:46 +02:00
ee1a2b5a2a patch 8.1.2100: :mksession is not sufficiently tested
Problem:    :mksession is not sufficiently tested.
Solution:   Add more test cases. (Yegappan Lakshmanan, closes #4993)
2019-09-29 14:23:39 +02:00
b7a97ef340 patch 8.1.2099: state() test fails on some Mac systems
Problem:    state() test fails on some Mac systems.
Solution:   Increase the wait time. (closes #4983)
2019-09-28 22:11:56 +02:00
37ac4a531c patch 8.1.2098: mksession test fails on MS-Windows
Problem:    mksession test fails on MS-Windows.
Solution:   Skip testing with backslashes on MS-Windows.
2019-09-28 19:29:04 +02:00
66f0e6c6e2 patch 8.1.2097: :mksession is not sufficiently tested
Problem:    :mksession is not sufficiently tested.
Solution:   Add more test cases. (Yegappan Lakshmanan, closes #4992)
2019-09-28 19:08:45 +02:00
8c96af9c05 patch 8.1.2096: too many #ifdefs
Problem:    Too many #ifdefs.
Solution:   Graduate FEAT_COMMENTS.
2019-09-28 19:05:57 +02:00
a893194d91 patch 8.1.2095: leaking memory when getting item from dict
Problem:    Leaking memory when getting item from dict.
Solution:   Also free the key when not evaluating.
2019-09-28 17:25:10 +02:00
473952e852 patch 8.1.2094: the fileio.c file is too big
Problem:    The fileio.c file is too big.
Solution:   Move buf_write() to bufwrite.c. (Yegappan Lakshmanan,
            closes #4990)
2019-09-28 16:30:04 +02:00
9be0e0b9d3 patch 8.1.2093: MS-Windows: system() test fails
Problem:    MS-Windows: system() test fails.
Solution:   Expect CR when using systemlist().
2019-09-28 16:25:00 +02:00
1a61339806 patch 8.1.2092: MS-Windows: redirect in system() does not work
Problem:    MS-Windows: redirect in system() does not work.
Solution:   Handle 'shellxescape' and 'shellxquote' better. (Yasuhiro
            Matsumoto, closes #2054)
2019-09-28 15:51:37 +02:00
0f1c6708fd patch 8.1.2091: double free when memory allocation fails
Problem:    Double free when memory allocation fails. (Zu-Ming Jiang)
Solution:   Use VIM_CLEAR() instead of vim_free(). (closes #4991)
2019-09-28 15:24:00 +02:00
2e47cab715 patch 8.1.2090: not clear why channel log file ends
Problem:    Not clear why channel log file ends.
Solution:   Add a "closing" line.
2019-09-27 23:12:45 +02:00
7b666c7883 patch 8.1.2089: do not get a hint that $TEST_FILTER was active
Problem:    Do not get a hint that $TEST_FILTER was active.
Solution:   Mention $TEST_FILTER if no functions were executed.
2019-09-27 21:25:00 +02:00
383f387d9d patch 8.1.2088: renamed libvterm mouse.c file not in distributed file list
Problem:    Renamed libvterm mouse.c file not in distributed file list.
Solution:   Rename the file in the file list.
2019-09-27 19:35:48 +02:00
5be4ceecea Update runtime files. 2019-09-27 19:34:08 +02:00
a7f6c3cf07 patch 8.1.2087: cannot easily select one test function to execute
Problem:    Cannot easily select one test function to execute.
Solution:   Support the $TEST_FILTER environment variable. (Ozaki Kiichi,
            closes #2695)
2019-09-27 15:34:16 +02:00
38f1eeac3d patch 8.1.2086: missing a few changes for the renamed files
Problem:    Missing a few changes for the renamed files.
Solution:   Rename in a few more places. (Ken Takata)
2019-09-27 14:19:09 +02:00
2313b61257 patch 8.1.2085: MS-Windows: draw error moving cursor over double-cell char
Problem:    MS-Windows: draw error moving cursor over double-cell character.
Solution:   Move the cursor to the left edge if needed. (Nobuhiro Takasaki,
            closes #4986)
2019-09-27 14:14:32 +02:00
5e8e967f25 patch 8.1.2084: Amiga: cannot get the user name
Problem:    Amiga: cannot get the user name.
Solution:   Use getpwuid() if available. (Ola Söder, closes #4985)
2019-09-27 13:38:56 +02:00
ce0fac2897 patch 8.1.2083: multi-byte chars do not work properly with "%.*S" in printf()
Problem:    Multi-byte chars do not work properly with "%.*S" in printf().
Solution:   Use mb_ptr2cells(). Daniel Hahler, closes #4989)
2019-09-27 13:32:06 +02:00
30e8e73506 patch 8.1.2082: some files have a weird name to fit in 8.3 characters
Problem:    Some files have a weird name to fit in 8.3 characters.
Solution:   Use a nicer names.
2019-09-27 13:08:36 +02:00
46a426c9ac patch 8.1.2081: the spell.c file is too big
Problem:    The spell.c file is too big.
Solution:   Move the code for spell suggestions to a separate file. (Yegappan
            Lakshmanan, closes #4988)
2019-09-27 12:41:56 +02:00
d2842ea60b patch 8.1.2080: the terminal API is limited and can't be disabled
Problem:    The terminal API is limited and can't be disabled.
Solution:   Add term_setapi() to set the function prefix. (Ozaki Kiichi,
            closes #2907)
2019-09-26 23:08:54 +02:00
d2c1fb476d patch 8.1.2079: popup window test fails without +terminal
Problem:    Popup window test fails without +terminal.
Solution:   Check for the +terminal feature.
2019-09-25 23:06:40 +02:00
f21118e4a9 patch 8.1.2078: build error with +textprop but without +terminal
Problem:    Build error with +textprop but without +terminal. (Tony Mechelynck)
Solution:   Add #ifdef.
2019-09-25 22:45:45 +02:00
4aea03eb87 patch 8.1.2077: the ops.c file is too big
Problem:    The ops.c file is too big.
Solution:   Move code for dealing with registers to a new file. (Yegappan
            Lakshmanan, closes #4982)
2019-09-25 22:37:17 +02:00
e0d749a496 patch 8.1.2076: crash when trying to put a terminal in a popup window
Problem:    Crash when trying to put a terminal buffer in a popup window.
Solution:   Check for NULL buffer.  Do not allow putting a terminal in a popup
            window.
2019-09-25 22:14:48 +02:00
101e99207f patch 8.1.2075: get many log messages when waiting for a typed character
Problem:    Get many log messages when waiting for a typed character.
Solution:   Do not repeat the repeated messages when nothing happens.
2019-09-25 21:43:11 +02:00
0d0c3ca007 patch 8.1.2074: test for SafeState autocommand is a bit flaky
Problem:    Test for SafeState autocommand is a bit flaky.
Solution:   Add to list of flaky tests.
2019-09-25 21:16:15 +02:00
010ee9657a patch 8.1.2073: when editing a buffer 'colorcolumn' may not work
Problem:    When editing a buffer 'colorcolumn' may not work.
Solution:   Set the buffer before copying option values. Call
            check_colorcolumn() after copying window options.
2019-09-25 20:37:36 +02:00
03ac52fc02 patch 8.1.2072: "gk" moves to start of line instead of upwards
Problem:    "gk" moves to start of line instead of upwards.
Solution:   Fix off-by-one error. (Christian Brabandt, closes #4969)
2019-09-24 22:47:46 +02:00
053f712ef2 patch 8.1.2071: when 'wincolor' is set text property changes highlighting
Problem:    When 'wincolor' is set text property changes highlighting. (Andy
            Stewart)
Solution:   Fix combining colors. (closes #4968)
2019-09-23 22:17:15 +02:00
b8ff5c271e patch 8.1.2070: mouse code is spread out
Problem:    Mouse code is spread out.
Solution:   Move mouse terminal code parsing to mouse.c. (Yegappan Lakshmanan,
            closes #4966)
2019-09-23 21:16:54 +02:00
0f6629a08a patch 8.1.2069: test for SafeStateAgain may still fail
Problem:    Test for SafeStateAgain may still fail.
Solution:   Send another message to trigger SafeStateAgain.
2019-09-22 23:24:13 +02:00
513537bfff patch 8.1.2068: test for SafeState and SafeStateAgain may fail
Problem:    Test for SafeState and SafeStateAgain may fail.
Solution:   Accept more possible responses
2019-09-22 23:03:58 +02:00
cadbe1b1fb patch 8.1.2067: no tests for SafeState and SafeStateAgain
Problem:    No tests for SafeState and SafeStateAgain.
Solution:   Add tests.
2019-09-22 21:50:09 +02:00
c258549032 patch 8.1.2066: no tests for state()
Problem:    No tests for state().
Solution:   Add tests.  Clean up some feature checks.  Make "a" flag work.
2019-09-22 21:29:53 +02:00
910c378d93 patch 8.1.2065: compiler warning building non-GUI with MinGW.
Problem:    Compiler warning building non-GUI with MinGW.
Solution:   Adjust #ifdefs. (Yegappan Lakshmanan, closes #4964)
2019-09-22 14:11:50 +02:00
bd67aac279 patch 8.1.2064: MS-Windows: compiler warnings for unused arguments
Problem:    MS-Windows: compiler warnings for unused arguments.
Solution:   Add UNUSED. (Yegappan Lakshmanan, closes #4963)
2019-09-21 23:09:04 +02:00
1e82a784ac patch 8.1.2063: some tests fail when +balloon_eval_term is missing
Problem:    Some tests fail when +balloon_eval_term is missing but
            _balloon_eval is present. (Dominique Pelle)
Solution:   Check the right feature in the test. (closes #4962)
2019-09-21 22:57:06 +02:00
b20b9e14dd patch 8.1.2062: the mouse code is spread out
Problem:    The mouse code is spread out.
Solution:   Move all the mouse code to mouse.c. (Yegappan Lakshmanan,
            closes #4959)
2019-09-21 20:48:04 +02:00
4d5c12626c patch 8.1.2061: MS-Windows GUI: ":sh" crashes when trying to use a terminal
Problem:    MS-Windows GUI: ":sh" crashes when trying to use a terminal.
Solution:   Check for a NULL command. (Yasuhiro Matsumoto, closes #4958)
2019-09-20 17:20:02 +02:00
bffba7f704 patch 8.1.2060: "precedes" in 'listchars' not used properly
Problem:    "precedes" in 'listchars' not used properly.
Solution:   Correctly handle the "precedes" char in list mode for long lines.
            (Christian Brabandt, closes #4953)
2019-09-20 17:00:17 +02:00
589edb3404 Updte runtime files 2019-09-20 14:38:13 +02:00
56ebbabea1 patch 8.1.2059: fix for "x" deleting a fold has side effects
Problem:    Fix for "x" deleting a fold has side effects.
Solution:   Fix it where the fold is included.
2019-09-20 13:40:14 +02:00
4bd782339e patch 8.1.2058: function for ex command is named inconsistently
Problem:    Function for ex command is named inconsistently.
Solution:   Rename do_marks() to ex_marks().
2019-09-19 23:21:55 +02:00
7528d1f6b5 patch 8.1.2057: the screen.c file is much too big
Problem:    The screen.c file is much too big.
Solution:   Split it in three parts. (Yegappan Lakshmanan, closes #4943)
2019-09-19 23:06:20 +02:00
cd67059c0c patch 8.1.2056: "make test" for indent files doesn't cause make to fail
Problem:    "make test" for indent files doesn't cause make to fail.
Solution:   Exit the script with ":cquit". (Daniel Hahler, closes #4949)
2019-09-18 22:14:43 +02:00
181d4f58cc patch 8.1.2055: not easy to jump to function line from profile
Problem:    Not easy to jump to function line from profile.
Solution:   Use "file:99" instead of "file line 99" so that "gf" works.
            (Daniel Hahler, closes #4951)
2019-09-18 22:04:56 +02:00
cebfcffa40 patch 8.1.2054: compiler test for Perl may fail
Problem:    Compiler test for Perl may fail.
Solution:   Accept any error line number. (James McCoy, closes #4944)
2019-09-18 21:42:38 +02:00
d103ee7843 patch 8.1.2053: SafeStateAgain not triggered if callback uses feedkeys()
Problem:    SafeStateAgain not triggered if callback uses feedkeys().
Solution:   Check for safe state in the input loop.  Make log messages easier
            to find. Add 'S' flag to state().
2019-09-18 21:15:31 +02:00
7a9bd7c1e0 patch 8.1.2052: using "x" before a closed fold may delete that fold
Problem:    Using "x" before a closed fold may delete that fold.
Solution:   Do not translate 'x' do "dl". (Christian Brabandt, closes #4927)
2019-09-17 22:42:55 +02:00
705918f9f7 patch 8.1.2051: double-click test is a bit flaky
Problem:    Double-click test is a bit flaky.
Solution:   Correct entry in list of flaky tests.
2019-09-17 21:27:49 +02:00
7e0f462db5 patch 8.1.2050: popup window test fails in some configurations
Problem:    Popup window test fails in some configurations. (James McCoy)
Solution:   Clear the command line.
2019-09-17 21:23:39 +02:00
397c6a1438 patch 8.1.2049: cannot build tiny version
Problem:    Cannot build tiny version.
Solution:   Add #ifdefs.
2019-09-17 20:54:31 +02:00
37d1807a80 patch 8.1.2048: not clear why SafeState and SafeStateAgain are not triggered
Problem:    Not clear why SafeState and SafeStateAgain are not triggered.
Solution:   Add log statements.
2019-09-17 20:28:38 +02:00
0e57dd859e patch 8.1.2047: cannot check the current state
Problem:    Cannot check the current state.
Solution:   Add the state() function.
2019-09-16 22:56:03 +02:00
69198cb8c0 patch 8.1.2046: SafeState may be triggered at the wrong moment
Problem:    SafeState may be triggered at the wrong moment.
Solution:   Move it up higher to after where messages are processed.  Add a
            SafeStateAgain event to tigger there.
2019-09-16 21:58:13 +02:00
dac1347b4d patch 8.1.2045: the option.c file is too big
Problem:    The option.c file is too big.
Solution:   Split off the code dealing with strings. (Yegappan Lakshmanan,
            closes #4937)
2019-09-16 21:06:21 +02:00
8aeec40207 patch 8.1.2044: no easy way to process postponed work
Problem:    No easy way to process postponed work. (Paul Jolly)
Solution:   Add the SafeState autocommand event.
2019-09-15 23:02:04 +02:00
ea8dcf8346 patch 8.1.2043: not sufficient testing for quoted numbers
Problem:    Not sufficient testing for quoted numbers.
Solution:   Add a few more test cases.
2019-09-15 21:12:22 +02:00
9c658c9eac patch 8.1.2042: the evalfunc.c file is too big
Problem:    The evalfunc.c file is too big.
Solution:   Move getchar() and parse_queued_messages() to getchar.c.
2019-09-15 21:00:54 +02:00
248fdb3332 patch 8.1.2041: no test for diff mode with syntax highlighting
Problem:    No test for diff mode with syntax highlighting.
Solution:   Add a test case.
2019-09-15 19:31:28 +02:00
e00fdf35d0 patch 8.1.2040: no highlighting of current line in quickfix window
Problem:    No highlighting of current line in quickfix window.
Solution:   Combine with line_attr.
2019-09-15 19:09:42 +02:00
8ae54375ca patch 8.1.2039: character from 'showbreak' does not use 'wincolor'
Problem:    Character from 'showbreak' does not use 'wincolor'. (Nick Jensen)
Solution:   Mix with 'wincolor'. (closes #4938)
2019-09-15 18:11:16 +02:00
af91438338 patch 8.1.2038: has('vimscript-4') is always 0
Problem:    has('vimscript-4') is always 0.
Solution:   Add "vimscript-4" to the feature table. (Naruhiko Nishino,
            closes #4941)
2019-09-15 17:49:10 +02:00
a046b37c22 patch 8.1.2037: can call win_gotoid() in cmdline window
Problem:    Can call win_gotoid() in cmdline window.
Solution:   Disallow switching windows. (Yasuhiro Matsumoto, closes #4940)
2019-09-15 17:26:07 +02:00
1ac90b4fa6 patch 8.1.2036: the str2nr() tests fail
Problem:    The str2nr() tests fail.
Solution:   Add missing part of patch.
2019-09-15 14:49:52 +02:00
60a8de28d1 patch 8.1.2035: recognizing octal numbers is confusing
Problem:    Recognizing octal numbers is confusing.
Solution:   Introduce scriptversion 4: do not use octal and allow for single
            quote inside numbers.
2019-09-15 14:33:22 +02:00
50bf7ce0c9 patch 8.1.2034: dark them of GTK 3 not supported
Problem:    Dark them of GTK 3 not supported.
Solution:   Add the "d" flag in 'guioptions'. (Jonathan Conder, closes #4934)
2019-09-15 13:17:00 +02:00
0571f3d6f9 patch 8.1.2033: cannot build with tiny features
Problem:    Cannot build with tiny features.
Solution:   Add #ifdef.
2019-09-14 22:33:47 +02:00
076d98839c patch 8.1.2032: scrollbar thumb wrong in popup window
Problem:    Scrollbar thumb wrong in popup window.
Solution:   Adjust thumb size and position when scrolled.
2019-09-14 22:23:29 +02:00
5babc6e858 patch 8.1.2031: cursor position wrong when resizing and using conceal
Problem:    Cursor position wrong when resizing and using conceal.
Solution:   Set the flags that the cursor position is valid when setting the
            row and column during redrawing. (closes #4931)
2019-09-14 21:55:51 +02:00
997d42427e patch 8.1.2030: tests fail when build with normal features and terminal
Problem:    Tests fail when build with normal features and terminal.
            (Dominique Pelle)
Solution:   Disable tests that won't work. (closes #4932)
2019-09-14 21:23:40 +02:00
017ba07fa2 patch 8.1.2029: cannot control 'cursorline' highlighting well
Problem:    Cannot control 'cursorline' highlighting well.
Solution:   Add "screenline". (Christian Brabandt, closes #4933)
2019-09-14 21:01:23 +02:00
d9b0d83b13 patch 8.1.2028: options test script does not work
Problem:    Options test script does not work.
Solution:   Use optiondefs.h for input.
2019-09-14 15:46:32 +02:00
57da698168 patch 8.1.2027: MS-Windows: problem with ambiwidth characters
Problem:    MS-Windows: problem with ambiwidth characters.
Solution:   handle ambiguous width characters in ConPTY on Windows 10 (1903).
            (Nobuhiro Takasaki, closes #4411)
2019-09-13 22:30:11 +02:00
dbec74907e patch 8.1.2026: possibly using uninitialized memory
Problem:    Possibly using uninitialized memory.
Solution:   Check if "dict" is NULL. (closes #4925)
2019-09-13 22:16:21 +02:00
1946de140a patch 8.1.2025: MS-Windows: Including shlguid.h causes problems for msys2
Problem:    MS-Windows: Including shlguid.h causes problems for msys2.
Solution:   Do not include shlguid.h. (closes #4913)
2019-09-13 22:03:19 +02:00
9283f92008 patch 8.1.2024: delete call commented out for debugging
Problem:    Delete call commented out for debugging.
Solution:   Restore the delete call. (Christian Brabandt)
2019-09-13 21:48:34 +02:00
dcb2b9cb08 patch 8.1.2023: no test for synIDattr() returning "strikethrough"
Problem:    No test for synIDattr() returning "strikethrough".
Solution:   Extend the synIDattr() test. (Jaskaran Singh, closes #4929)
2019-09-13 21:26:39 +02:00
0eddca40a6 patch 8.1.2022: the option.c file is too big
Problem:    The option.c file is too big.
Solution:   Move option definitions to a separate file. (Yegappan Lakshmanan,
            closes #4918)
2019-09-12 22:26:43 +02:00
8fe1000e9c Update runtime files 2019-09-11 22:56:44 +02:00
840d16fd36 patch 8.1.2021: some global functions can be local to the file
Problem:    Some global functions can be local to the file.
Solution:   Add "static". (Yegappan Lakshmanan, closes #4917)
2019-09-10 21:27:18 +02:00
d20dcb3d01 patch 8.1.2020: it is not easy to change the window layout
Problem:    It is not easy to change the window layout.
Solution:   Add win_splitmove(). (Andy Massimino, closes #4561)
2019-09-10 21:22:58 +02:00
410e98a70b patch 8.1.2019: 'cursorline' always highlights the whole line
Problem:    'cursorline' always highlights the whole line.
Solution:   Add 'cursorlineopt' to specify what is highlighted.
            (closes #4693)
2019-09-09 22:05:49 +02:00
e5fbd73930 patch 8.1.2018: using freed memory when out of memory and displaying message
Problem:    Using freed memory when out of memory and displaying message.
Solution:   Make a copy of the message first.
2019-09-09 20:04:13 +02:00
96e38a86a7 patch 8.1.2017: cannot execute commands after closing the cmdline window
Problem:    Cannot execute commands after closing the cmdline window.
Solution:   Also trigger BufEnter and WinEnter. (closes #4762)
2019-09-09 18:35:33 +02:00
adbde3fbed patch 8.1.2016: terminal altscreen test now fails on MS-Windows
Problem:    Terminal altscreen test now fails on MS-Windows.
Solution:   Skip the test on MS-Windows
2019-09-08 22:57:14 +02:00
bf9a3b0164 patch 8.1.2015: terminal altscreen test still fails sometimes
Problem:    Terminal altscreen test still fails sometimes.
Solution:   Write the escape sequence in a file.
2019-09-08 22:35:48 +02:00
b9c79cf5cc patch 8.1.2014: terminal altscreen test fails sometimes
Problem:    Terminal altscreen test fails sometimes.
Solution:   Use WaitFor().
2019-09-08 22:09:52 +02:00
f92e58cadb patch 8.1.2013: more functions can be used as methods
Problem:    More functions can be used as methods.
Solution:   Make various functions usable as a method.
2019-09-08 21:51:41 +02:00
7ee80f7661 patch 8.1.2012: more functions can be used as methods
Problem:    More functions can be used as methods.
Solution:   Make terminal functions usable as a method.  Fix term_getattr().
2019-09-08 20:55:06 +02:00
ce90e36f59 patch 8.1.2011: more functions can be used as methods
Problem:    More functions can be used as methods.
Solution:   Make various functions usable as a method.  Make the window
            command test faster.
2019-09-08 18:58:44 +02:00
9490b9a61c patch 8.1.2010: new file uses old style comments
Problem:    New file uses old style comments.
Solution:   Change to new style comments. (Yegappan Lakshmanan, closes #4910)
2019-09-08 17:20:12 +02:00
3d2a3cbce8 patch 8.1.2009: cursorline highlighting not updated in popup window
Problem:    Cursorline highlighting not updated in popup window. (Marko
            Mahnič)
Solution:   Check if the cursor position changed. (closes #4912)
2019-09-08 17:12:01 +02:00
4544bd2f24 patch 8.1.2008: error for invalid range when using listener and undo
Problem:    Error for invalid range when using listener and undo. (Paul Jolly)
Solution:   Do not change the cursor before the lines are restored.
            (closes #4908)
2019-09-08 15:27:21 +02:00
fca068b977 patch 8.1.2007: no test for what 8.1.1926 fixes
Problem:    No test for what 8.1.1926 fixes.
Solution:   Add a test case.
2019-09-08 14:07:47 +02:00
6cdce2a003 patch 8.1.2006: build failure with huge features but without channel feature
Problem:    Build failure with huge features but without channel feature.
Solution:   Add #ifdef. (Dominique Pelle, closes #4906)
2019-09-07 23:25:09 +02:00
6d7d7cf750 patch 8.1.2005: the regexp.c file is too big
Problem:    The regexp.c file is too big.
Solution:   Move the backtracking engine to a separate file. (Yegappan
            Lakshmanan, closes #4905)
2019-09-07 23:16:33 +02:00
f6ed61e148 patch 8.1.2004: more functions can be used as methods
Problem:    More functions can be used as methods.
Solution:   Make various functions usable as a method.
2019-09-07 19:05:09 +02:00
30e9b3c425 Update runtime files 2019-09-07 16:24:12 +02:00
fa90d70884 patch 8.1.2003: MS-Windows: code page 65001 is not recognized
Problem:    MS-Windows: code page 65001 is not recognized.
Solution:   Use utf-8 for code page 65001. (Dan Thompson, closes #4902)
2019-09-07 16:07:47 +02:00
9b1cd65d8b patch 8.1.2002: version number 2000 missing
Problem:    Version number 2000 missing.
Solution:   Add the number in the list of patches.
2019-09-07 15:51:28 +02:00
261f346f81 patch 8.1.2001: some source files are too big
Problem:    Some source files are too big.
Solution:   Move buffer and window related functions to evalbuffer.c and
            evalwindow.c. (Yegappan Lakshmanan, closes #4898)
2019-09-07 15:45:32 +02:00
964 changed files with 141232 additions and 102827 deletions

17
.cirrus.yml Normal file
View File

@ -0,0 +1,17 @@
env:
CIRRUS_CLONE_DEPTH: 3
FEATURES: huge
freebsd_12_task:
freebsd_instance:
image: freebsd-12-1-release-amd64
install_script:
pkg install -y gettext
build_script:
- NPROC=$(getconf _NPROCESSORS_ONLN)
- ./configure --with-features=${FEATURES}
- make -j${NPROC}
- src/vim --version
test_script:
# Runtime Indent tests do not work, run only the normal test suite
- cd src && make test

1
.gitattributes vendored Normal file
View File

@ -0,0 +1 @@
src/testdir/test42.in diff

4
.gitignore vendored
View File

@ -8,6 +8,7 @@ src/auto/gui_gtk_gresources.h
src/objects/.dirstamp src/objects/.dirstamp
src/objects src/objects
src/tags src/tags
src/types.vim
# We do need src/auto/configure. # We do need src/auto/configure.
src/auto/config.cache src/auto/config.cache
@ -50,6 +51,7 @@ nbproject/*
# Mac OSX # Mac OSX
src/xxd/xxd.dSYM src/xxd/xxd.dSYM
.DS_Store
# All platforms # All platforms
*.rej *.rej
@ -77,6 +79,7 @@ src/testdir/messages
src/testdir/viminfo src/testdir/viminfo
src/testdir/opt_test.vim src/testdir/opt_test.vim
runtime/indent/testdir/*.out runtime/indent/testdir/*.out
runtime/indent/testdir/*.fail
src/memfile_test src/memfile_test
src/json_test src/json_test
src/message_test src/message_test
@ -84,6 +87,7 @@ src/kword_test
# Generated by "make install" # Generated by "make install"
runtime/doc/tags runtime/doc/tags
runtime/doc/doctags
# Generated by "make shadow". The directory names could be anything but we # Generated by "make shadow". The directory names could be anything but we
# restrict them to shadow (the default) or shadow-* # 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/.dirstamp
src/objects src/objects
src/tags src/tags
src/types.vim
# We do need src/auto/configure. # We do need src/auto/configure.
src/auto/config.cache src/auto/config.cache
@ -86,6 +87,7 @@ src/kword_test
# Generated by "make install" # Generated by "make install"
runtime/doc/tags runtime/doc/tags
runtime/doc/doctags
# Generated by "make shadow". The directory names could be anything but we # Generated by "make shadow". The directory names could be anything but we
# restrict them to shadow (the default) or shadow-* # restrict them to shadow (the default) or shadow-*

View File

@ -9,7 +9,7 @@ anchors:
- &small - &small
BUILD=yes TEST=test COVERAGE=no FEATURES=small CONFOPT= SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=no BUILD=yes TEST=test COVERAGE=no FEATURES=small CONFOPT= SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=no
- &normal - &normal
BUILD=yes TEST=test COVERAGE=no FEATURES=normal CONFOPT= SHADOWOPT="-C src/shadow" SRCDIR=./src/shadow CHECK_AUTOCONF=no BUILD=yes TEST=test COVERAGE=no FEATURES=normal CONFOPT= SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=no
- &linux-huge - &linux-huge
BUILD=yes TEST="scripttests test_libvterm" COVERAGE=yes CFLAGS=--coverage LDFLAGS=--coverage FEATURES=huge SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=no 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'" "CONFOPT='--enable-perlinterp --enable-pythoninterp --enable-python3interp --enable-rubyinterp --enable-luainterp --enable-tclinterp'"
@ -21,6 +21,8 @@ anchors:
- &asan # ASAN build - &asan # ASAN build
SANITIZER_CFLAGS="-g -O1 -DABORT_ON_INTERNAL_ERROR -DEXITFREE -fsanitize=address -fno-omit-frame-pointer" 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" 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 linux: &linux
os: linux os: linux
@ -133,15 +135,14 @@ script:
fi fi
- echo -en "travis_fold:end:build\\r\\033[0K" - echo -en "travis_fold:end:build\\r\\033[0K"
- set +o errexit - 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. # Show Vim version and also if_xx versions.
- | - |
if [[ "${BUILD}" = "yes" ]]; then if [[ "${BUILD}" = "yes" ]]; then
"${SRCDIR}"/vim --version "${SRCDIR}"/vim --version
"${SRCDIR}"/vim --not-a-term -u NONE -S "${SRCDIR}"/testdir/if_ver-1.vim -c quit > /dev/null "${SRCDIR}"/vim -u NONE --not-a-term -esNX -V1 -S ci/if_ver-1.vim -c quit
"${SRCDIR}"/vim --not-a-term -u NONE -S "${SRCDIR}"/testdir/if_ver-2.vim -c quit > /dev/null "${SRCDIR}"/vim -u NONE --not-a-term -esNX -V1 -S ci/if_ver-2.vim -c quit
cat if_ver.txt
fi fi
- 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 - do_test make ${SHADOWOPT} ${TEST} && FOLD_MARKER=travis_fold
- echo -en "${FOLD_MARKER}:end:test\\r\\033[0K" - echo -en "${FOLD_MARKER}:end:test\\r\\033[0K"
@ -191,11 +192,15 @@ matrix:
- <<: *linux - <<: *linux
name: normal/clang name: normal/clang
compiler: clang compiler: clang
env: *normal env:
- *normal
- *shadowopt
- <<: *linux - <<: *linux
name: normal/gcc name: normal/gcc
compiler: gcc compiler: gcc
env: *normal env:
- *normal
- *shadowopt
- <<: *linux - <<: *linux
name: huge+coverage/clang name: huge+coverage/clang
compiler: clang compiler: clang
@ -225,5 +230,11 @@ matrix:
- *linux-huge - *linux-huge
- TEST="-C src testgui" - TEST="-C src testgui"
after_success: *coverage 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: # vim:set sts=2 sw=2 tw=0 et:

View File

@ -65,6 +65,9 @@ If the maintainer does not respond, contact the vim-dev maillist.
# Translations # Translations
Translations of this CONTRIBUTING file:
[Korean](https://github.com/cjw1359/opensource/blob/master/Vim/CONTRIBUTING_ko.md)
Translating messages and runtime files is very much appreciated! These things Translating messages and runtime files is very much appreciated! These things
can be translated: can be translated:
* Messages in Vim, see [src/po/README.txt][1] * Messages in Vim, see [src/po/README.txt][1]

View File

@ -4,13 +4,17 @@
# source files for all source archives # source files for all source archives
SRC_ALL = \ SRC_ALL = \
.gitignore \ .gitignore \
.gitattributes \
.hgignore \ .hgignore \
.lgtm.yml \ .lgtm.yml \
.travis.yml \ .travis.yml \
.cirrus.yml \
appveyor.yml \ appveyor.yml \
ci/appveyor.bat \ ci/appveyor.bat \
ci/if_ver*.vim \
src/Make_all.mak \ src/Make_all.mak \
src/README.md \ src/README.md \
src/README_VIM9.md \
src/alloc.h \ src/alloc.h \
src/arabic.c \ src/arabic.c \
src/arglist.c \ src/arglist.c \
@ -21,9 +25,11 @@ SRC_ALL = \
src/blob.c \ src/blob.c \
src/blowfish.c \ src/blowfish.c \
src/buffer.c \ src/buffer.c \
src/bufwrite.c \
src/change.c \ src/change.c \
src/channel.c \ src/channel.c \
src/charset.c \ src/charset.c \
src/cindent.c \
src/cmdexpand.c \ src/cmdexpand.c \
src/cmdhist.c \ src/cmdhist.c \
src/crypt.c \ src/crypt.c \
@ -32,10 +38,14 @@ SRC_ALL = \
src/dict.c \ src/dict.c \
src/diff.c \ src/diff.c \
src/digraph.c \ src/digraph.c \
src/drawline.c \
src/drawscreen.c \
src/edit.c \ src/edit.c \
src/eval.c \ src/eval.c \
src/evalbuffer.c \
src/evalfunc.c \ src/evalfunc.c \
src/evalvars.c \ src/evalvars.c \
src/evalwindow.c \
src/ex_cmdidxs.h \ src/ex_cmdidxs.h \
src/ex_cmds.c \ src/ex_cmds.c \
src/ex_cmds.h \ src/ex_cmds.h \
@ -76,6 +86,7 @@ SRC_ALL = \
src/message_test.c \ src/message_test.c \
src/misc1.c \ src/misc1.c \
src/misc2.c \ src/misc2.c \
src/mouse.c \
src/move.c \ src/move.c \
src/mysign \ src/mysign \
src/nbdebug.c \ src/nbdebug.c \
@ -85,13 +96,17 @@ SRC_ALL = \
src/ops.c \ src/ops.c \
src/option.c \ src/option.c \
src/option.h \ src/option.h \
src/popupmnu.c \ src/optiondefs.h \
src/optionstr.c \
src/popupmenu.c \
src/popupwin.c \ src/popupwin.c \
src/profiler.c \ src/profiler.c \
src/quickfix.c \ src/quickfix.c \
src/regexp.c \ src/regexp.c \
src/regexp_bt.c \
src/regexp_nfa.c \ src/regexp_nfa.c \
src/regexp.h \ src/regexp.h \
src/register.c \
src/scriptfile.c \ src/scriptfile.c \
src/screen.c \ src/screen.c \
src/search.c \ src/search.c \
@ -102,6 +117,7 @@ SRC_ALL = \
src/spell.c \ src/spell.c \
src/spell.h \ src/spell.h \
src/spellfile.c \ src/spellfile.c \
src/spellsuggest.c \
src/structs.h \ src/structs.h \
src/syntax.c \ src/syntax.c \
src/tag.c \ src/tag.c \
@ -118,6 +134,10 @@ SRC_ALL = \
src/version.c \ src/version.c \
src/version.h \ src/version.h \
src/vim.h \ src/vim.h \
src/vim9.h \
src/vim9compile.c \
src/vim9execute.c \
src/vim9script.c \
src/viminfo.c \ src/viminfo.c \
src/winclip.c \ src/winclip.c \
src/window.c \ src/window.c \
@ -163,7 +183,6 @@ SRC_ALL = \
src/testdir/dumps/*.dump \ src/testdir/dumps/*.dump \
src/testdir/samples/*.txt \ src/testdir/samples/*.txt \
src/testdir/samples/test000 \ src/testdir/samples/test000 \
src/testdir/if_ver*.vim \
src/testdir/color_ramp.vim \ src/testdir/color_ramp.vim \
src/testdir/silent.wav \ src/testdir/silent.wav \
src/testdir/popupbounce.vim \ src/testdir/popupbounce.vim \
@ -176,9 +195,11 @@ SRC_ALL = \
src/proto/blob.pro \ src/proto/blob.pro \
src/proto/blowfish.pro \ src/proto/blowfish.pro \
src/proto/buffer.pro \ src/proto/buffer.pro \
src/proto/bufwrite.pro \
src/proto/change.pro \ src/proto/change.pro \
src/proto/channel.pro \ src/proto/channel.pro \
src/proto/charset.pro \ src/proto/charset.pro \
src/proto/cindent.pro \
src/proto/cmdexpand.pro \ src/proto/cmdexpand.pro \
src/proto/cmdhist.pro \ src/proto/cmdhist.pro \
src/proto/crypt.pro \ src/proto/crypt.pro \
@ -187,10 +208,14 @@ SRC_ALL = \
src/proto/dict.pro \ src/proto/dict.pro \
src/proto/diff.pro \ src/proto/diff.pro \
src/proto/digraph.pro \ src/proto/digraph.pro \
src/proto/drawline.pro \
src/proto/drawscreen.pro \
src/proto/edit.pro \ src/proto/edit.pro \
src/proto/eval.pro \ src/proto/eval.pro \
src/proto/evalbuffer.pro \
src/proto/evalfunc.pro \ src/proto/evalfunc.pro \
src/proto/evalvars.pro \ src/proto/evalvars.pro \
src/proto/evalwindow.pro \
src/proto/ex_cmds.pro \ src/proto/ex_cmds.pro \
src/proto/ex_cmds2.pro \ src/proto/ex_cmds2.pro \
src/proto/ex_docmd.pro \ src/proto/ex_docmd.pro \
@ -220,16 +245,19 @@ SRC_ALL = \
src/proto/message.pro \ src/proto/message.pro \
src/proto/misc1.pro \ src/proto/misc1.pro \
src/proto/misc2.pro \ src/proto/misc2.pro \
src/proto/mouse.pro \
src/proto/move.pro \ src/proto/move.pro \
src/proto/netbeans.pro \ src/proto/netbeans.pro \
src/proto/normal.pro \ src/proto/normal.pro \
src/proto/ops.pro \ src/proto/ops.pro \
src/proto/option.pro \ src/proto/option.pro \
src/proto/popupmnu.pro \ src/proto/optionstr.pro \
src/proto/popupmenu.pro \
src/proto/popupwin.pro \ src/proto/popupwin.pro \
src/proto/profiler.pro \ src/proto/profiler.pro \
src/proto/quickfix.pro \ src/proto/quickfix.pro \
src/proto/regexp.pro \ src/proto/regexp.pro \
src/proto/register.pro \
src/proto/scriptfile.pro \ src/proto/scriptfile.pro \
src/proto/screen.pro \ src/proto/screen.pro \
src/proto/search.pro \ src/proto/search.pro \
@ -239,6 +267,7 @@ SRC_ALL = \
src/proto/sound.pro \ src/proto/sound.pro \
src/proto/spell.pro \ src/proto/spell.pro \
src/proto/spellfile.pro \ src/proto/spellfile.pro \
src/proto/spellsuggest.pro \
src/proto/syntax.pro \ src/proto/syntax.pro \
src/proto/tag.pro \ src/proto/tag.pro \
src/proto/term.pro \ src/proto/term.pro \
@ -251,6 +280,9 @@ SRC_ALL = \
src/proto/usercmd.pro \ src/proto/usercmd.pro \
src/proto/userfunc.pro \ src/proto/userfunc.pro \
src/proto/version.pro \ src/proto/version.pro \
src/proto/vim9compile.pro \
src/proto/vim9execute.pro \
src/proto/vim9script.pro \
src/proto/viminfo.pro \ src/proto/viminfo.pro \
src/proto/winclip.pro \ src/proto/winclip.pro \
src/proto/window.pro \ src/proto/window.pro \
@ -261,9 +293,6 @@ SRC_ALL = \
src/libvterm/README \ src/libvterm/README \
src/libvterm/tbl2inc_c.pl \ src/libvterm/tbl2inc_c.pl \
src/libvterm/vterm.pc.in \ src/libvterm/vterm.pc.in \
src/libvterm/bin/unterm.c \
src/libvterm/bin/vterm-ctrl.c \
src/libvterm/bin/vterm-dump.c \
src/libvterm/doc/URLs \ src/libvterm/doc/URLs \
src/libvterm/doc/seqs.txt \ src/libvterm/doc/seqs.txt \
src/libvterm/include/vterm.h \ src/libvterm/include/vterm.h \
@ -278,7 +307,7 @@ SRC_ALL = \
src/libvterm/src/parser.c \ src/libvterm/src/parser.c \
src/libvterm/src/pen.c \ src/libvterm/src/pen.c \
src/libvterm/src/rect.h \ src/libvterm/src/rect.h \
src/libvterm/src/termscreen.c \ src/libvterm/src/screen.c \
src/libvterm/src/state.c \ src/libvterm/src/state.c \
src/libvterm/src/unicode.c \ src/libvterm/src/unicode.c \
src/libvterm/src/utf8.h \ src/libvterm/src/utf8.h \
@ -378,7 +407,6 @@ SRC_UNIX = \
src/gui_xmebwp.h \ src/gui_xmebwp.h \
src/gui_x11.c \ src/gui_x11.c \
src/gui_x11_pm.h \ src/gui_x11_pm.h \
src/hangulin.c \
src/if_xcmdsrv.c \ src/if_xcmdsrv.c \
src/link.sh \ src/link.sh \
src/installman.sh \ src/installman.sh \
@ -398,7 +426,6 @@ SRC_UNIX = \
src/proto/gui_motif.pro \ src/proto/gui_motif.pro \
src/proto/gui_xmdlg.pro \ src/proto/gui_xmdlg.pro \
src/proto/gui_x11.pro \ src/proto/gui_x11.pro \
src/proto/hangulin.pro \
src/proto/if_xcmdsrv.pro \ src/proto/if_xcmdsrv.pro \
src/proto/os_unix.pro \ src/proto/os_unix.pro \
src/proto/pty.pro \ src/proto/pty.pro \
@ -499,7 +526,7 @@ SRC_DOS = \
src/testdir/Make_dos.mak \ src/testdir/Make_dos.mak \
src/testdir/Make_ming.mak \ src/testdir/Make_ming.mak \
src/testdir/dos.vim \ src/testdir/dos.vim \
src/uninstal.c \ src/uninstall.c \
src/vim.def \ src/vim.def \
src/vim.rc \ src/vim.rc \
src/vimio.h \ src/vimio.h \
@ -514,7 +541,7 @@ SRC_DOS = \
nsis/gvim_version.nsh \ nsis/gvim_version.nsh \
nsis/README.txt \ nsis/README.txt \
nsis/lang/*.nsi \ nsis/lang/*.nsi \
uninstal.txt \ uninstall.txt \
src/VisVim/Commands.cpp \ src/VisVim/Commands.cpp \
src/VisVim/Commands.h \ src/VisVim/Commands.h \
src/VisVim/DSAddIn.cpp \ src/VisVim/DSAddIn.cpp \
@ -633,6 +660,7 @@ SRC_EXTRA = \
RT_ALL = \ RT_ALL = \
README.txt \ README.txt \
README.md \ README.md \
LICENSE \
CONTRIBUTING.md \ CONTRIBUTING.md \
runtime/bugreport.vim \ runtime/bugreport.vim \
runtime/doc/*.awk \ runtime/doc/*.awk \
@ -640,6 +668,7 @@ RT_ALL = \
runtime/doc/*.txt \ runtime/doc/*.txt \
runtime/doc/Makefile \ runtime/doc/Makefile \
runtime/doc/doctags.c \ runtime/doc/doctags.c \
runtime/doc/doctags.vim \
runtime/doc/test_urls.vim \ runtime/doc/test_urls.vim \
runtime/doc/vim.1 \ runtime/doc/vim.1 \
runtime/doc/evim.1 \ runtime/doc/evim.1 \
@ -834,7 +863,7 @@ BIN_AMI = \
# files for DOS binary (also in extra archive) # files for DOS binary (also in extra archive)
BIN_DOS = \ BIN_DOS = \
README_bindos.txt \ README_bindos.txt \
uninstal.txt \ uninstall.txt \
# files for Win32 OLE binary (also in extra archive) # files for Win32 OLE binary (also in extra archive)
BIN_OLE = \ BIN_OLE = \

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

@ -85,19 +85,19 @@ indenttest:
# Before creating an archive first delete all backup files, *.orig, etc. # Before creating an archive first delete all backup files, *.orig, etc.
MAJOR = 8 MAJOR = 8
MINOR = 1 MINOR = 2
# CHECKLIST for creating a new version: # CHECKLIST for creating a new version:
# #
# - Update Vim version number. For a test version in: src/version.h, # - Update Vim version number. For a test version in: src/version.h,
# READMEdir/Contents, MAJOR/MINOR above, VIMMAJOR and VIMMINOR in # READMEdir/Contents, MAJOR/MINOR above, VIMMAJOR and VIMMINOR in
# src/Makefile, README.txt, README.md, READMEdir/README*.txt, # src/Makefile, README.txt, README.md, src/README.md, READMEdir/README*.txt,
# runtime/doc/*.txt and make nsis/gvim_version.nsh. # runtime/doc/*.txt and make nsis/gvim_version.nsh.
# For a minor/major version: src/GvimExt/GvimExt.reg, src/vim.def, # For a minor/major version: src/GvimExt/GvimExt.reg, src/vim.def,
# src/gvim.exe.mnf. # src/gvim.exe.mnf.
# - Compile Vim with GTK, Perl, Python, Python3, TCL, Ruby, MZscheme, Lua (if # - Compile Vim with GTK, Perl, Python, Python3, TCL, Ruby, Lua, Cscope and
# you can make it all work), Cscope and "huge" features. Exclude workshop # "huge" features. Add MZscheme if you can make it work.
# and SNiFF. # Use "make reconfig" after selecting the configure arguments.
# - With these features: "make proto" (requires cproto and Motif installed; # - With these features: "make proto" (requires cproto and Motif installed;
# ignore warnings for missing include files, fix problems for syntax errors). # ignore warnings for missing include files, fix problems for syntax errors).
# - With these features: "make depend" (works best with gcc). # - With these features: "make depend" (works best with gcc).
@ -106,9 +106,6 @@ MINOR = 1
# - If you have valgrind, enable it in src/testdir/Makefile and run "make # - If you have valgrind, enable it in src/testdir/Makefile and run "make
# test". Enable EXITFREE, disable GUI, scheme and tcl to avoid false alarms. # test". Enable EXITFREE, disable GUI, scheme and tcl to avoid false alarms.
# Check the valgrind output. # Check the valgrind output.
# - If you have the efence library, enable it in "src/Makefile" and run "make
# test". Disable Python and Ruby to avoid trouble with threads (efence is
# not threadsafe).
# - Adjust the date and other info in src/version.h. # - Adjust the date and other info in src/version.h.
# - Correct included_patches[] in src/version.c. # - Correct included_patches[] in src/version.c.
# - Check for missing entries in runtime/makemenu.vim (with checkmenu script). # - Check for missing entries in runtime/makemenu.vim (with checkmenu script).
@ -148,7 +145,7 @@ MINOR = 1
# - > make dossrc # - > make dossrc
# > make dosrt # > make dosrt
# Unpack dist/vim##rt.zip and dist/vim##src.zip on an MS-Windows PC. # Unpack dist/vim##rt.zip and dist/vim##src.zip on an MS-Windows PC.
# This creates the directory vim/vim81 and puts all files in there. # This creates the directory vim/vim82 and puts all files in there.
# Win32 console version build: # Win32 console version build:
# - See src/INSTALLpc.txt for installing the compiler and SDK. # - See src/INSTALLpc.txt for installing the compiler and SDK.
# - Set environment for Visual C++ 2015: # - Set environment for Visual C++ 2015:
@ -156,7 +153,7 @@ MINOR = 1
# > msvc2015.bat # > msvc2015.bat
# - Build the console binary: # - Build the console binary:
# > nmake -f Make_mvc.mak # > 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 testclean
# > nmake -f Make_mvc.mak test # > nmake -f Make_mvc.mak test
# - Rename (using ../tools/rename.bat): # - Rename (using ../tools/rename.bat):
@ -165,7 +162,7 @@ MINOR = 1
# xxd/xxd.exe to xxdw32.exe # xxd/xxd.exe to xxdw32.exe
# vim.pdb to vimw32.pdb # vim.pdb to vimw32.pdb
# install.exe to installw32.exe # install.exe to installw32.exe
# uninstal.exe to uninstalw32.exe # uninstall.exe to uninstallw32.exe
# Win32 GUI version build: # Win32 GUI version build:
# - > cd src # - > cd src
# > nmake -f Make_mvc.mak GUI=yes # > nmake -f Make_mvc.mak GUI=yes
@ -175,7 +172,7 @@ MINOR = 1
# - move "gvim.exe" to here (otherwise the OLE version will overwrite it). # - move "gvim.exe" to here (otherwise the OLE version will overwrite it).
# - Move gvim.pdb to here. # - Move gvim.pdb to here.
# - Copy "GvimExt/gvimext.dll" to here. # - Copy "GvimExt/gvimext.dll" to here.
# - Delete vimrun.exe, install.exe and uninstal.exe. # - Delete vimrun.exe, install.exe and uninstall.exe.
# Win32 GUI version with OLE, PERL, Ruby, TCL, PYTHON and dynamic IME: # Win32 GUI version with OLE, PERL, Ruby, TCL, PYTHON and dynamic IME:
# - Install the interfaces you want, see src/INSTALLpc.txt # - Install the interfaces you want, see src/INSTALLpc.txt
# Adjust bigvim.bat to match the version of each interface you want. # Adjust bigvim.bat to match the version of each interface you want.
@ -188,7 +185,7 @@ MINOR = 1
# - check the output. # - check the output.
# - Rename "gvim.exe" to "gvim_ole.exe". # - Rename "gvim.exe" to "gvim_ole.exe".
# - Rename gvim.pdb to "gvim_ole.pdb". # - Rename gvim.pdb to "gvim_ole.pdb".
# - Delete install.exe and uninstal.exe. # - Delete install.exe and uninstall.exe.
# Create the archives: # Create the archives:
# - Copy all the "*.exe" files to where this Makefile is. # - Copy all the "*.exe" files to where this Makefile is.
# - Copy all the "*.pdb" files to where this Makefile is. # - Copy all the "*.pdb" files to where this Makefile is.
@ -197,7 +194,7 @@ MINOR = 1
# NSIS self installing exe: # NSIS self installing exe:
# - To get NSIS see http://nsis.sourceforge.net # - To get NSIS see http://nsis.sourceforge.net
# - Make sure gvim_ole.exe, vimw32.exe, installw32.exe, # - Make sure gvim_ole.exe, vimw32.exe, installw32.exe,
# uninstalw32.exe, teew32.exe and xxdw32.exe have been build as mentioned # uninstallw32.exe, teew32.exe and xxdw32.exe have been build as mentioned
# above. # above.
# - copy these files (get them from a binary archive or build them): # - copy these files (get them from a binary archive or build them):
# gvimext.dll in src/GvimExt # gvimext.dll in src/GvimExt
@ -206,7 +203,7 @@ MINOR = 1
# Note: VisVim needs to be build with MSVC 5, newer versions don't work. # Note: VisVim needs to be build with MSVC 5, newer versions don't work.
# gvimext64.dll can be obtained from: # gvimext64.dll can be obtained from:
# https://github.com/vim/vim-win32-installer/releases # https://github.com/vim/vim-win32-installer/releases
# It is part of gvim_8.0.*_x64.zip as vim/vim80/GvimExt/gvimext64.dll. # It is part of gvim_8.2.*_x64.zip as vim/vim82/GvimExt/gvimext64.dll.
# - Make sure there is a diff.exe two levels up (get it from a previous Vim # - Make sure there is a diff.exe two levels up (get it from a previous Vim
# version). Also put winpty32.dll and winpty-agent.exe there. # version). Also put winpty32.dll and winpty-agent.exe there.
# - go to ../nsis and do: # - go to ../nsis and do:
@ -518,7 +515,7 @@ dosbin_gvim: dist no_title.vim dist/$(COMMENT_GVIM)
cp xxdw32.exe dist/vim/$(VIMRTDIR)/xxd.exe cp xxdw32.exe dist/vim/$(VIMRTDIR)/xxd.exe
cp vimrun.exe dist/vim/$(VIMRTDIR)/vimrun.exe cp vimrun.exe dist/vim/$(VIMRTDIR)/vimrun.exe
cp installw32.exe dist/vim/$(VIMRTDIR)/install.exe cp installw32.exe dist/vim/$(VIMRTDIR)/install.exe
cp uninstalw32.exe dist/vim/$(VIMRTDIR)/uninstal.exe cp uninstallw32.exe dist/vim/$(VIMRTDIR)/uninstall.exe
mkdir dist/vim/$(VIMRTDIR)/GvimExt32 mkdir dist/vim/$(VIMRTDIR)/GvimExt32
cp gvimext.dll dist/vim/$(VIMRTDIR)/GvimExt32/gvimext.dll cp gvimext.dll dist/vim/$(VIMRTDIR)/GvimExt32/gvimext.dll
mkdir dist/vim/$(VIMRTDIR)/GvimExt64 mkdir dist/vim/$(VIMRTDIR)/GvimExt64
@ -539,7 +536,7 @@ dosbin_w32: dist no_title.vim dist/$(COMMENT_W32)
cp teew32.exe dist/vim/$(VIMRTDIR)/tee.exe cp teew32.exe dist/vim/$(VIMRTDIR)/tee.exe
cp xxdw32.exe dist/vim/$(VIMRTDIR)/xxd.exe cp xxdw32.exe dist/vim/$(VIMRTDIR)/xxd.exe
cp installw32.exe dist/vim/$(VIMRTDIR)/install.exe cp installw32.exe dist/vim/$(VIMRTDIR)/install.exe
cp uninstalw32.exe dist/vim/$(VIMRTDIR)/uninstal.exe cp uninstallw32.exe dist/vim/$(VIMRTDIR)/uninstall.exe
cd dist && zip -9 -rD -z vim$(VERSION)w32.zip vim <$(COMMENT_W32) cd dist && zip -9 -rD -z vim$(VERSION)w32.zip vim <$(COMMENT_W32)
cp vimw32.pdb dist/vim$(VERSION)w32.pdb cp vimw32.pdb dist/vim$(VERSION)w32.pdb
@ -557,7 +554,7 @@ dosbin_ole: dist no_title.vim dist/$(COMMENT_OLE)
cp xxdw32.exe dist/vim/$(VIMRTDIR)/xxd.exe cp xxdw32.exe dist/vim/$(VIMRTDIR)/xxd.exe
cp vimrun.exe dist/vim/$(VIMRTDIR)/vimrun.exe cp vimrun.exe dist/vim/$(VIMRTDIR)/vimrun.exe
cp installw32.exe dist/vim/$(VIMRTDIR)/install.exe cp installw32.exe dist/vim/$(VIMRTDIR)/install.exe
cp uninstalw32.exe dist/vim/$(VIMRTDIR)/uninstal.exe cp uninstallw32.exe dist/vim/$(VIMRTDIR)/uninstall.exe
cp gvimext.dll dist/vim/$(VIMRTDIR)/gvimext.dll cp gvimext.dll dist/vim/$(VIMRTDIR)/gvimext.dll
cp README_ole.txt dist/vim/$(VIMRTDIR) cp README_ole.txt dist/vim/$(VIMRTDIR)
cp src/VisVim/VisVim.dll dist/vim/$(VIMRTDIR)/VisVim.dll cp src/VisVim/VisVim.dll dist/vim/$(VIMRTDIR)/VisVim.dll

View File

@ -1,12 +1,14 @@
![Vim Logo](https://github.com/vim/vim/blob/master/runtime/vimlogo.gif) ![Vim Logo](https://github.com/vim/vim/blob/master/runtime/vimlogo.gif)
[![Build Status](https://travis-ci.org/vim/vim.svg?branch=master)](https://travis-ci.org/vim/vim) [![Travis Build Status](https://travis-ci.org/vim/vim.svg?branch=master)](https://travis-ci.org/vim/vim)
[![Appveyor Build status](https://ci.appveyor.com/api/projects/status/o2qht2kjm02sgghk?svg=true)](https://ci.appveyor.com/project/chrisbra/vim) [![Appveyor Build status](https://ci.appveyor.com/api/projects/status/o2qht2kjm02sgghk?svg=true)](https://ci.appveyor.com/project/chrisbra/vim)
[![Cirrus Build Status](https://api.cirrus-ci.com/github/vim/vim.svg)](https://cirrus-ci.com/github/vim/vim)
[![Coverage Status](https://codecov.io/gh/vim/vim/coverage.svg?branch=master)](https://codecov.io/gh/vim/vim?branch=master) [![Coverage Status](https://codecov.io/gh/vim/vim/coverage.svg?branch=master)](https://codecov.io/gh/vim/vim?branch=master)
[![Coverity Scan](https://scan.coverity.com/projects/241/badge.svg)](https://scan.coverity.com/projects/vim) [![Coverity Scan](https://scan.coverity.com/projects/241/badge.svg)](https://scan.coverity.com/projects/vim)
[![Language Grade: C/C++](https://img.shields.io/lgtm/grade/cpp/g/vim/vim.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/vim/vim/context:cpp) [![Language Grade: C/C++](https://img.shields.io/lgtm/grade/cpp/g/vim/vim.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/vim/vim/context:cpp)
[![Debian CI](https://badges.debian.net/badges/debian/testing/vim/version.svg)](https://buildd.debian.org/vim) [![Debian CI](https://badges.debian.net/badges/debian/testing/vim/version.svg)](https://buildd.debian.org/vim)
[![Packages](https://repology.org/badge/tiny-repos/vim.svg)](https://repology.org/metapackage/vim) [![Packages](https://repology.org/badge/tiny-repos/vim.svg)](https://repology.org/metapackage/vim)
For translations of this README see the end.
## What is Vim? ## ## What is Vim? ##
@ -24,11 +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 with ten fingers can work very fast. Additionally, function keys can be
mapped to commands by the user, and the mouse can be used. 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 Vim runs under MS-Windows (XP, Vista, 7, 8, 10), macOS, VMS and almost all
almost all flavours of UNIX. Porting to other systems should not be very flavours of UNIX. Porting to other systems should not be very difficult.
difficult. Older versions of Vim run on MS-DOS, MS-Windows 95/98/Me, Amiga Older versions of Vim run on MS-DOS, MS-Windows 95/98/Me/NT/2000, Amiga DOS,
DOS, Atari MiNT, BeOS, RISC OS and OS/2. These are no longer maintained. Atari MiNT, BeOS, RISC OS and OS/2. These are no longer maintained.
For Vim9 script see [README_VIM9](README_VIM9.md).
## Distribution ## ## Distribution ##
@ -140,4 +143,9 @@ Send any other comments, patches, flowers and suggestions to:
Bram Moolenaar <Bram@vim.org> Bram Moolenaar <Bram@vim.org>
This is `README.md` for version 8.1 of Vim: Vi IMproved. This is `README.md` for version 8.2 of Vim: Vi IMproved.
## Translations of this README ##
[Korean](https://github.com/cjw1359/opensource/blob/master/Vim/README_ko.md)

View File

@ -1,4 +1,4 @@
README.txt for version 8.1 of Vim: Vi IMproved. README.txt for version 8.2 of Vim: Vi IMproved.
WHAT IS VIM? WHAT IS VIM?
@ -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 with ten fingers can work very fast. Additionally, function keys can be
mapped to commands by the user, and the mouse can be used. 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 Vim runs under MS-Windows (XP, Vista, 7, 8, 10), macOS, VMS and almost all
almost all flavours of UNIX. Porting to other systems should not be very flavours of UNIX. Porting to other systems should not be very difficult.
difficult. Older versions of Vim run on MS-DOS, MS-Windows 95/98/Me, Amiga Older versions of Vim run on MS-DOS, MS-Windows 95/98/Me/NT/2000, Amiga DOS,
DOS, Atari MiNT, BeOS, RISC OS and OS/2. These are no longer maintained. Atari MiNT, BeOS, RISC OS and OS/2. These are no longer maintained.
DISTRIBUTION 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

@ -9,10 +9,10 @@ Vim Vi IMproved. A clone of the UNIX text editor Vi. Very useful
messages, shows current file name in window title, on-line messages, shows current file name in window title, on-line
help, rectangular cut/paste, etc., etc., etc... help, rectangular cut/paste, etc., etc., etc...
Version 8.1. Also runs under UNIX, MS-Windows, Mac, etc. Version 8.2. Also runs under UNIX, MS-Windows, Mac, etc.
vim81rt.tgz contains the documentation and syntax files. vim82rt.tgz contains the documentation and syntax files.
vim81bin.tgz contains the binaries. vim82bin.tgz contains the binaries.
vim81src.tgz contains the sources. vim82src.tgz contains the sources.
Author: Bram Moolenaar et al. Author: Bram Moolenaar et al.

View File

@ -1,4 +1,4 @@
README_ami.txt for version 8.1 of Vim: Vi IMproved. README_ami.txt for version 8.2 of Vim: Vi IMproved.
This file explains the installation of Vim on Amiga systems. This file explains the installation of Vim on Amiga systems.
See README.txt for general information about Vim. See README.txt for general information about Vim.
@ -16,8 +16,8 @@ easily upgrade to a new version. For example:
You would then unpack the archives like this: You would then unpack the archives like this:
cd dh0:editors cd dh0:editors
tar xf t:vim81bin.tar tar xf t:vim82bin.tar
tar xf t:vim81rt.tar tar xf t:vim82rt.tar
Set the $VIM environment variable to point to the top directory of your Vim Set the $VIM environment variable to point to the top directory of your Vim
files. For the above example: files. For the above example:

View File

@ -1,8 +1,8 @@
README_amibin.txt for version 8.1 of Vim: Vi IMproved. README_amibin.txt for version 8.2 of Vim: Vi IMproved.
See "README.txt" for general information about Vim. See "README.txt" for general information about Vim.
See "README_ami.txt" for installation instructions for the Amiga. See "README_ami.txt" for installation instructions for the Amiga.
These files are in the runtime archive (vim81rt.tgz). These files are in the runtime archive (vim82rt.tgz).
The Amiga "bin" archive contains the Vim executable for the Amiga. It was The Amiga "bin" archive contains the Vim executable for the Amiga. It was

View File

@ -1,8 +1,8 @@
README_amisrc.txt for version 8.1 of Vim: Vi IMproved. README_amisrc.txt for version 8.2 of Vim: Vi IMproved.
See "README.txt" for general information about Vim. See "README.txt" for general information about Vim.
See "README_ami.txt" for installation instructions for the Amiga. See "README_ami.txt" for installation instructions for the Amiga.
These files are in the runtime archive (vim81rt.tgz). These files are in the runtime archive (vim82rt.tgz).
The Amiga source archive contains the files needed to compile Vim on the The Amiga source archive contains the files needed to compile Vim on the

View File

@ -1,16 +1,16 @@
README_bindos.txt for version 8.1 of Vim: Vi IMproved. README_bindos.txt for version 8.2 of Vim: Vi IMproved.
See "README.txt" for general information about Vim. 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-DOS and MS-Windows.
These files are in the runtime archive (vim81rt.zip). These files are in the runtime archive (vim82rt.zip).
There are several binary distributions of Vim for the PC. You would normally There are several binary distributions of Vim for the PC. You would normally
pick only one of them, but it's also possible to install several. pick only one of them, but it's also possible to install several.
These ones are available (the version number may differ): These ones are available (the version number may differ):
vim81w32.zip Windows 95/98/NT/etc. console version vim82w32.zip Windows 95/98/NT/etc. console version
gvim81.zip Windows 95/98/NT/etc. GUI version gvim82.zip Windows 95/98/NT/etc. GUI version
gvim81ole.zip Windows 95/98/NT/etc. GUI version with OLE gvim82ole.zip Windows 95/98/NT/etc. GUI version with OLE
You MUST also get the runtime archive (vim81rt.zip). You MUST also get the runtime archive (vim82rt.zip).
The sources are also available (vim81src.zip). The sources are also available (vim82src.zip).

View File

@ -1,6 +1,6 @@
README_dos.txt for version 8.1 of Vim: Vi IMproved. 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. See "README.txt" for general information about Vim.
There are two ways to install Vim: There are two ways to install Vim:
@ -41,19 +41,19 @@ These are the normal steps to install Vim from the .zip archives:
located. Check the $VIM setting to see where it points to: located. Check the $VIM setting to see where it points to:
set VIM set VIM
For example, if you have For example, if you have
C:\vim\vim81 C:\vim\vim82
do do
cd C:\ cd C:\
Binary and runtime Vim archives are normally unpacked in the same location, Binary and runtime Vim archives are normally unpacked in the same location,
on top of each other. on top of each other.
2. Unpack the zip archives. This will create a new directory "vim\vim81", 2. Unpack the zip archives. This will create a new directory "vim\vim82",
in which all the distributed Vim files are placed. Since the directory in which all the distributed Vim files are placed. Since the directory
name includes the version number, it is unlikely that you overwrite name includes the version number, it is unlikely that you overwrite
existing files. existing files.
Examples: Examples:
pkunzip -d gvim81.zip pkunzip -d gvim82.zip
unzip vim81w32.zip unzip vim82w32.zip
You need to unpack the runtime archive and at least one of the binary You need to unpack the runtime archive and at least one of the binary
archives. When using more than one binary version, be careful not to archives. When using more than one binary version, be careful not to
@ -64,12 +64,8 @@ These are the normal steps to install Vim from the .zip archives:
to another location. That is where they will stay, the install program to another location. That is where they will stay, the install program
won't move or copy the runtime files. 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: 3. Change to the new directory:
cd vim\vim81 cd vim\vim82
Run the "install.exe" program. It will ask you a number of questions about Run the "install.exe" program. It will ask you a number of questions about
how you would like to have your Vim setup. Among these are: how you would like to have your Vim setup. Among these are:
- You can tell it to write a "_vimrc" file with your preferences in the - You can tell it to write a "_vimrc" file with your preferences in the
@ -80,8 +76,8 @@ These are the normal steps to install Vim from the .zip archives:
console or in a shell. You can select one of the directories in your console or in a shell. You can select one of the directories in your
$PATH. If you skip this, you can add Vim to the search path manually: $PATH. If you skip this, you can add Vim to the search path manually:
The simplest is to add a line to your autoexec.bat. Examples: The simplest is to add a line to your autoexec.bat. Examples:
set path=%path%;C:\vim\vim81 set path=%path%;C:\vim\vim82
set path=%path%;D:\editors\vim\vim81 set path=%path%;D:\editors\vim\vim82
- Create entries for Vim on the desktop and in the Start menu. - Create entries for Vim on the desktop and in the Start menu.
That's it! That's it!
@ -93,8 +89,8 @@ Remarks:
won't show a menubar. Then you need to set the $VIM environment variable to won't show a menubar. Then you need to set the $VIM environment variable to
point to the top directory of your Vim files. Example: point to the top directory of your Vim files. Example:
set VIM=C:\editors\vim set VIM=C:\editors\vim
Vim version 8.1 will look for your vimrc file in $VIM, and for the runtime Vim version 8.2 will look for your vimrc file in $VIM, and for the runtime
files in $VIM/vim81. See ":help $VIM" for more information. files in $VIM/vim82. See ":help $VIM" for more information.
- To avoid confusion between distributed files of different versions and your - To avoid confusion between distributed files of different versions and your
own modified vim scripts, it is recommended to use this directory layout: own modified vim scripts, it is recommended to use this directory layout:
@ -105,14 +101,14 @@ Remarks:
C:\vim\vimfiles\ftplugin\*.vim Filetype plugins C:\vim\vimfiles\ftplugin\*.vim Filetype plugins
C:\vim\... Other files you made. C:\vim\... Other files you made.
Distributed files: Distributed files:
C:\vim\vim81\vim.exe The Vim version 8.1 executable. C:\vim\vim82\vim.exe The Vim version 8.2 executable.
C:\vim\vim81\doc\*.txt The version 8.1 documentation files. C:\vim\vim82\doc\*.txt The version 8.2 documentation files.
C:\vim\vim81\bugreport.vim A Vim version 8.1 script. C:\vim\vim82\bugreport.vim A Vim version 8.2 script.
C:\vim\vim81\... Other version 8.1 distributed files. C:\vim\vim82\... Other version 8.2 distributed files.
In this case the $VIM environment variable would be set like this: In this case the $VIM environment variable would be set like this:
set VIM=C:\vim set VIM=C:\vim
Then $VIMRUNTIME will automatically be set to "$VIM\vim81". Don't add Then $VIMRUNTIME will automatically be set to "$VIM\vim82". Don't add
"vim81" to $VIM, that won't work. "vim82" to $VIM, that won't work.
- You can put your Vim executable anywhere else. If the executable is not - You can put your Vim executable anywhere else. If the executable is not
with the other Vim files, you should set $VIM. The simplest is to add a line with the other Vim files, you should set $VIM. The simplest is to add a line
@ -121,7 +117,7 @@ Remarks:
set VIM=d:\editors\vim set VIM=d:\editors\vim
- If you have told the "install.exe" program to add the "Edit with Vim" menu - 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". ":help win32-popup-menu".
- In Windows 95/98/NT you can create a shortcut to Vim. This works for all - In Windows 95/98/NT you can create a shortcut to Vim. This works for all
@ -136,8 +132,8 @@ Remarks:
Select Properties. Select Properties.
5. In the Program tab, change the "Cmdline" to add "/c" and the name of the 5. In the Program tab, change the "Cmdline" to add "/c" and the name of the
Vim executable. Examples: Vim executable. Examples:
C:\command.com /c C:\vim\vim81\vim.exe C:\command.com /c C:\vim\vim82\vim.exe
C:\command.com /c D:\editors\vim\vim81\vim.exe C:\command.com /c D:\editors\vim\vim82\vim.exe
6. Select the font, window size, etc. that you like. If this isn't 6. Select the font, window size, etc. that you like. If this isn't
possible, select "Advanced" in the Program tab, and deselect "MS-DOS possible, select "Advanced" in the Program tab, and deselect "MS-DOS
mode". mode".
@ -150,5 +146,4 @@ Remarks:
For further information, type one of these inside Vim: For further information, type one of these inside Vim:
:help dos :help dos
:help msdos
:help win32 :help win32

View File

@ -1,4 +1,4 @@
README_extra.txt for version 8.1 of Vim: Vi IMproved. README_extra.txt for version 8.2 of Vim: Vi IMproved.
These extra files of Vim are for special purposes. This README explains what These extra files of Vim are for special purposes. This README explains what
the files are for. For general information about Vim, see the "README.txt" the files are for. For general information about Vim, see the "README.txt"
@ -24,9 +24,6 @@ src/os_mac.* Files for the Mac port.
src/os_mint.8 Files for the Atari Mint port. src/os_mint.8 Files for the Atari Mint port.
src/os_os2* Files for the OS/2 port.
src/tee/* Extra program for OS/2.
src/os_vms* Files for the VMS port. src/os_vms* Files for the VMS port.
src/os_w32* src/os_w32*

View File

@ -1,4 +1,4 @@
README_mac.txt for version 8.1 of Vim: Vi IMproved. README_mac.txt for version 8.2 of Vim: Vi IMproved.
This file explains the installation of Vim on Macintosh systems. This file explains the installation of Vim on Macintosh systems.
See "README.txt" for general information about Vim. See "README.txt" for general information about Vim.

View File

@ -1,4 +1,4 @@
README_ole.txt for version 8.1 of Vim: Vi IMproved. README_ole.txt for version 8.2 of Vim: Vi IMproved.
This archive contains gvim.exe with OLE interface and VisVim. This archive contains gvim.exe with OLE interface and VisVim.
This version of gvim.exe can also load a number of interface dynamically (you This version of gvim.exe can also load a number of interface dynamically (you

View File

@ -1,4 +1,4 @@
README_os2.txt for version 8.1 of Vim: Vi IMproved. README_os2.txt for version 8.2 of Vim: Vi IMproved.
This file used to explain the installation of Vim on OS/2 systems. This file used to explain the installation of Vim on OS/2 systems.
However, support for OS/2 has been removed in patch 7.4.1008. However, support for OS/2 has been removed in patch 7.4.1008.

View File

@ -1,4 +1,4 @@
README_os390.txt for version 8.1 of Vim: Vi IMproved. README_os390.txt for version 8.2 of Vim: Vi IMproved.
This readme explains how to build Vim on z/OS. Formerly called OS/390. This readme explains how to build Vim on z/OS. Formerly called OS/390.
See "README.txt" for general information about Vim. See "README.txt" for general information about Vim.
@ -11,8 +11,8 @@ Getting the source to z/OS:
First get the source code in one big tar file and ftp it a binary to z/OS. If First get the source code in one big tar file and ftp it a binary to z/OS. If
the tar file is initially compressed with gzip (tar.gz) or bzip2 (tar.bz2) the tar file is initially compressed with gzip (tar.gz) or bzip2 (tar.bz2)
uncompress it on your PC, as this tools are (most likely) not available on the uncompress it on your PC, as these tools are (most likely) not available on
mainframe. the mainframe.
To reduce the size of the tar file you might compress it into a zip file. On To reduce the size of the tar file you might compress it into a zip file. On
z/OS Unix you might have the command "jar" from java to uncompress a zip. Use: z/OS Unix you might have the command "jar" from java to uncompress a zip. Use:
@ -82,8 +82,8 @@ WARNING: This instruction was not tested with Vim 7.4 or later.
There are two ways for building VIM with X11 support. The first way is simple There are two ways for building VIM with X11 support. The first way is simple
and results in a big executable (~13 Mb), the second needs a few additional and results in a big executable (~13 Mb), the second needs a few additional
steps and results in a much smaller executable (~4.5 Mb). This examples assume steps and results in a much smaller executable (~4.5 Mb). These examples
you want Motif. assume you want Motif.
The easy way: The easy way:
$ export CC=cc $ export CC=cc

View File

@ -1,8 +1,8 @@
README_src.txt for version 8.1 of Vim: Vi IMproved. README_src.txt for version 8.2 of Vim: Vi IMproved.
The source archive contains the files needed to compile Vim on Unix systems. The source archive contains the files needed to compile Vim on Unix systems.
It is packed for Unix systems (NL line separator). It is packed for Unix systems (NL line separator).
For more information, see the README.txt file that comes with the runtime For more information, see the README.txt file that comes with the runtime
archive (vim-8.1-rt.tar.gz). To be able to run Vim you MUST get the runtime archive (vim-8.2-rt.tar.gz). To be able to run Vim you MUST get the runtime
archive too! archive too!

View File

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

View File

@ -1,4 +1,4 @@
README_unix.txt for version 8.1 of Vim: Vi IMproved. README_unix.txt for version 8.2 of Vim: Vi IMproved.
This file explains the installation of Vim on Unix systems. This file explains the installation of Vim on Unix systems.
See "README.txt" for general information about Vim. See "README.txt" for general information about Vim.

View File

@ -1,4 +1,4 @@
README_vms.txt for version 8.1 of Vim: Vi IMproved. README_vms.txt for version 8.2 of Vim: Vi IMproved.
This file explains the installation of Vim on VMS systems. This file explains the installation of Vim on VMS systems.
See "README.txt" in the runtime archive for information about Vim. See "README.txt" in the runtime archive for information about Vim.

View File

@ -1,15 +1,6 @@
README_w32s.txt for version 8.1 of Vim: Vi IMproved. README_w32s.txt for version 8.2 of Vim: Vi IMproved.
This archive contains the gvim.exe that was specifically compiled for use in This file used to explain the installation of Vim on MS-Windows 3.1 and 3.11
the Win32s subsystem in 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.
Also see the README_bindos.txt, README_dos.txt and README.txt files. See "README.txt" for general information about Vim.
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

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>)

View File

@ -14,7 +14,7 @@ To build the installable .exe:
gvim.exe (the OLE version), gvim.exe (the OLE version),
vimrun.exe, vimrun.exe,
install.exe, install.exe,
uninstal.exe, uninstall.exe,
tee/tee.exe, tee/tee.exe,
xxd/xxd.exe, xxd/xxd.exe,
@ -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 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 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). it's the same for all Vim versions).
You can find one in previous Vim versions or in this archive: You can find one in previous Vim versions or in this archive:
http://www.mossbayeng.com/~ron/vim/diffutils.tar.gz 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. directory). This is required for the terminal window.
7. Do "make uganda.nsis.txt" in runtime/doc. This requires sed, you may have 7. Do "make uganda.nsis.txt" in runtime/doc. This requires sed, you may have

View File

@ -176,6 +176,7 @@ Page custom SetCustom ValidateCustom
!include "lang\japanese.nsi" !include "lang\japanese.nsi"
!include "lang\simpchinese.nsi" !include "lang\simpchinese.nsi"
!include "lang\tradchinese.nsi" !include "lang\tradchinese.nsi"
!include "lang\turkish.nsi"
!endif !endif
########################################################## ##########################################################
@ -341,13 +342,13 @@ Section "$(str_section_exe)" id_section_exe
File ${VIMSRC}\vim${BIT}.dll File ${VIMSRC}\vim${BIT}.dll
!endif !endif
File /oname=install.exe ${VIMSRC}\installw32.exe File /oname=install.exe ${VIMSRC}\installw32.exe
File /oname=uninstal.exe ${VIMSRC}\uninstalw32.exe File /oname=uninstall.exe ${VIMSRC}\uninstallw32.exe
File ${VIMSRC}\vimrun.exe File ${VIMSRC}\vimrun.exe
File /oname=tee.exe ${VIMSRC}\teew32.exe File /oname=tee.exe ${VIMSRC}\teew32.exe
File /oname=xxd.exe ${VIMSRC}\xxdw32.exe File /oname=xxd.exe ${VIMSRC}\xxdw32.exe
File ..\vimtutor.bat File ..\vimtutor.bat
File ..\README.txt File ..\README.txt
File ..\uninstal.txt File ..\uninstall.txt
File ${VIMRT}\*.vim File ${VIMRT}\*.vim
File ${VIMRT}\rgb.txt File ${VIMRT}\rgb.txt
@ -955,7 +956,7 @@ Section "un.$(str_unsection_register)" id_unsection_register
# delete the context menu entry and batch files # delete the context menu entry and batch files
DetailPrint "$(str_msg_unregistering)" DetailPrint "$(str_msg_unregistering)"
nsExec::Exec "$0\uninstal.exe -nsis" nsExec::Exec "$0\uninstall.exe -nsis"
Pop $3 Pop $3
# We may have been put to the background when uninstall did something. # We may have been put to the background when uninstall did something.

View File

@ -2,5 +2,5 @@
!ifndef __GVIM_VER__NSH__ !ifndef __GVIM_VER__NSH__
!define __GVIM_VER__NSH__ !define __GVIM_VER__NSH__
!define VER_MAJOR 8 !define VER_MAJOR 8
!define VER_MINOR 1 !define VER_MINOR 2
!endif !endif

280
nsis/lang/serbian.nsi Normal file
View File

@ -0,0 +1,280 @@
# vi:set ts=8 sts=4 sw=4 et fdm=marker:
#
# serbian.nsi: Serbian language strings for gvim NSIS installer.
#
# Locale ID : 3098
# fileencoding : UTF-8
# Author : Ivan Pešić
!insertmacro MUI_LANGUAGE "Српски"
# Overwrite the default translation.
# These strings should be always English. Otherwise dosinst.c fails.
LangString ^SetupCaption ${LANG_SERBIAN} \
"$(^Name) Setup"
LangString ^UninstallCaption ${LANG_SERBIAN} \
"$(^Name) Uninstall"
##############################################################################
# MUI Configuration Strings {{{1
##############################################################################
#LangString str_dest_folder ${LANG_SERBIAN} \
# "Destination Folder (Must end with $\"vim$\")"
LangString str_show_readme ${LANG_SERBIAN} \
"Прикажи ПРОЧИТАЈМЕ када се заврши инсталација"
# Install types:
LangString str_type_typical ${LANG_SERBIAN} \
"Типична"
LangString str_type_minimal ${LANG_SERBIAN} \
"Минимална"
LangString str_type_full ${LANG_SERBIAN} \
"Пуна"
##############################################################################
# Section Titles & Description {{{1
##############################################################################
LangString str_section_old_ver ${LANG_SERBIAN} \
"Уклањање постојећ(е/их) верзиј(е/а)"
LangString str_desc_old_ver ${LANG_SERBIAN} \
"Уклања постојећ(у/е) Vim верзииј(у/е) из вашег система."
LangString str_section_exe ${LANG_SERBIAN} \
"Vim ГКИ и фајлови потребни за извршавање"
LangString str_desc_exe ${LANG_SERBIAN} \
"Vim ГКИ извршни фајлови и фајлови потребни током извршавања. Ова компонента је неопходна."
LangString str_section_console ${LANG_SERBIAN} \
"Vim конзолни програм"
LangString str_desc_console ${LANG_SERBIAN} \
"Конзолна верзија програма Vim (vim.exe)."
LangString str_section_batch ${LANG_SERBIAN} \
"Креирај .bat фајлове"
LangString str_desc_batch ${LANG_SERBIAN} \
"Креира у Windows директоријуму .bat фајлове за Vim варијанте \
у циљу коришћења из командне линије."
LangString str_group_icons ${LANG_SERBIAN} \
"Креирај иконе за Vim"
LangString str_desc_icons ${LANG_SERBIAN} \
"Креира иконе за Vim на различитим местима, како би се олакшао приступ."
LangString str_section_desktop ${LANG_SERBIAN} \
"На радној површини"
LangString str_desc_desktop ${LANG_SERBIAN} \
"Креира иконе за gVim извршне фајлове на радној површини."
LangString str_section_start_menu ${LANG_SERBIAN} \
"У фасцикли Програми унутар Старт менија"
LangString str_desc_start_menu ${LANG_SERBIAN} \
"Додаје Vim у фолдер Програми Старт менија."
#LangString str_section_quick_launch ${LANG_SERBIAN} \
# "In the Quick Launch Bar"
#LangString str_desc_quick_launch ${LANG_SERBIAN} \
# "Add Vim shortcut in the quick launch bar."
LangString str_section_edit_with ${LANG_SERBIAN} \
"Додај Vim контекстни мени"
LangString str_desc_edit_with ${LANG_SERBIAN} \
"Додаје Vim у $\"Отвори помоћу...$\" листу контекстног менија."
#LangString str_section_edit_with32 ${LANG_SERBIAN} \
# "32-bit Version"
#LangString str_desc_edit_with32 ${LANG_SERBIAN} \
# "Add Vim to the $\"Open With...$\" context menu list \
# for 32-bit applications."
#LangString str_section_edit_with64 ${LANG_SERBIAN} \
# "64-bit Version"
#LangString str_desc_edit_with64 ${LANG_SERBIAN} \
# "Add Vim to the $\"Open With...$\" context menu list \
# for 64-bit applications."
LangString str_section_vim_rc ${LANG_SERBIAN} \
"Креирај Подразумевану конфигурацију"
LangString str_desc_vim_rc ${LANG_SERBIAN} \
"Креира подразумевани конфиг фајл (_vimrc) ако неки већ не постоји."
LangString str_group_plugin ${LANG_SERBIAN} \
"Креира директоријуме додатака"
LangString str_desc_plugin ${LANG_SERBIAN} \
"Креира директоријуме додатака. Ови директоријуми омогућавају проширење програма Vim \
убацивањем фајла у директоријум."
LangString str_section_plugin_home ${LANG_SERBIAN} \
"Приватне"
LangString str_desc_plugin_home ${LANG_SERBIAN} \
"Креира директоријуме додатака у HOME директоријуму."
LangString str_section_plugin_vim ${LANG_SERBIAN} \
"Дељене"
LangString str_desc_plugin_vim ${LANG_SERBIAN} \
"Креира директоријуме додатака у Vim инсталационом директоријуму, користе их сви \
на систему."
LangString str_section_vis_vim ${LANG_SERBIAN} \
"VisVim проширење"
LangString str_desc_vis_vim ${LANG_SERBIAN} \
"VisVim проширење за Microsoft Visual Studio интеграцију."
LangString str_section_nls ${LANG_SERBIAN} \
"Подршка за домаћи језик"
LangString str_desc_nls ${LANG_SERBIAN} \
"Инсталира фајлове за домаћу језичку подршку."
LangString str_unsection_register ${LANG_SERBIAN} \
"Поништи регистрацију Vim"
LangString str_desc_unregister ${LANG_SERBIAN} \
"Поништава регистрацију програма Vim на систему."
LangString str_unsection_exe ${LANG_SERBIAN} \
"Уклони Vim извршне фајлове/фајлове потребне у време извршавања"
LangString str_desc_rm_exe ${LANG_SERBIAN} \
"Уклања све Vim извршне фајлове и оне потребне у време извршавања."
LangString str_ungroup_plugin ${LANG_SERBIAN} \
"Укони директоријуме додатака"
LangString str_desc_rm_plugin ${LANG_SERBIAN} \
"Уклања директоријуме додатака ако су празни."
LangString str_unsection_plugin_home ${LANG_SERBIAN} \
"Приватне"
LangString str_desc_rm_plugin_home ${LANG_SERBIAN} \
"Уклања директоријуме додатака из HOME директоријума."
LangString str_unsection_plugin_vim ${LANG_SERBIAN} \
"Дељене"
LangString str_desc_rm_plugin_vim ${LANG_SERBIAN} \
"Уклања директоријуме додатака из Vim инсталациониг директоријума."
LangString str_unsection_rootdir ${LANG_SERBIAN} \
"Уклони Vim корени директоријум"
LangString str_desc_rm_rootdir ${LANG_SERBIAN} \
"Уклања Vim корени директоријум. Он садржи ваше Vim конфигурационе фајлове!"
##############################################################################
# Messages {{{1
##############################################################################
#LangString str_msg_too_many_ver ${LANG_SERBIAN} \
# "Found $vim_old_ver_count Vim versions on your system.$\r$\n\
# This installer can only handle ${VIM_MAX_OLD_VER} versions \
# at most.$\r$\n\
# Please remove some versions and start again."
#LangString str_msg_invalid_root ${LANG_SERBIAN} \
# "Invalid install path: $vim_install_root!$\r$\n\
# It should end with $\"vim$\"."
#LangString str_msg_bin_mismatch ${LANG_SERBIAN} \
# "Binary path mismatch!$\r$\n$\r$\n\
# Expect the binary path to be $\"$vim_bin_path$\",$\r$\n\
# but system indicates the binary path is $\"$INSTDIR$\"."
#LangString str_msg_vim_running ${LANG_SERBIAN} \
# "Vim is still running on your system.$\r$\n\
# Please close all instances of Vim before you continue."
#LangString str_msg_register_ole ${LANG_SERBIAN} \
# "Attempting to register Vim with OLE. \
# There is no message indicates whether this works or not."
#LangString str_msg_unreg_ole ${LANG_SERBIAN} \
# "Attempting to unregister Vim with OLE. \
# There is no message indicates whether this works or not."
#LangString str_msg_rm_start ${LANG_SERBIAN} \
# "Uninstalling the following version:"
#LangString str_msg_rm_fail ${LANG_SERBIAN} \
# "Fail to uninstall the following version:"
#LangString str_msg_no_rm_key ${LANG_SERBIAN} \
# "Cannot find uninstaller registry key."
#LangString str_msg_no_rm_reg ${LANG_SERBIAN} \
# "Cannot find uninstaller from registry."
#LangString str_msg_no_rm_exe ${LANG_SERBIAN} \
# "Cannot access uninstaller."
#LangString str_msg_rm_copy_fail ${LANG_SERBIAN} \
# "Fail to copy uninstaller to temporary directory."
#LangString str_msg_rm_run_fail ${LANG_SERBIAN} \
# "Fail to run uninstaller."
#LangString str_msg_abort_install ${LANG_SERBIAN} \
# "Installer will abort."
LangString str_msg_install_fail ${LANG_SERBIAN} \
"Инсталација није успела. Више среће идући пут."
LangString str_msg_rm_exe_fail ${LANG_SERBIAN} \
"Неки фајлови у $0 нису обрисани!$\r$\n\
Морате то ручно да обавите."
#LangString str_msg_rm_root_fail ${LANG_SERBIAN} \
# "WARNING: Cannot remove $\"$vim_install_root$\", it is not empty!"
LangString str_msg_uninstalling ${LANG_SERBIAN} \
"Уклањање старе верзије..."
LangString str_msg_registering ${LANG_SERBIAN} \
"Регистровање..."
LangString str_msg_unregistering ${LANG_SERBIAN} \
"Поништавање регистрације..."
##############################################################################
# Dialog Box {{{1
##############################################################################
LangString str_vimrc_page_title ${LANG_SERBIAN} \
"Изаберите _vimrc подешавања"
LangString str_vimrc_page_subtitle ${LANG_SERBIAN} \
"Изаберите подешавања за побољшања, тастатуру и миша."
LangString str_msg_compat_title ${LANG_SERBIAN} \
" Vi / Vim понашање "
LangString str_msg_compat_desc ${LANG_SERBIAN} \
"&Компатибилност и побољшања"
LangString str_msg_compat_vi ${LANG_SERBIAN} \
"Vi компатибилно"
LangString str_msg_compat_vim ${LANG_SERBIAN} \
"Vim оригинално"
LangString str_msg_compat_defaults ${LANG_SERBIAN} \
"Vim са неким побољшањима (учитава defaults.vim)"
LangString str_msg_compat_all ${LANG_SERBIAN} \
"Vim са свим побољшањима (учитава vimrc_example.vim) (Подразумевано)"
LangString str_msg_keymap_title ${LANG_SERBIAN} \
" Мапирања "
LangString str_msg_keymap_desc ${LANG_SERBIAN} \
"&Ремапира неколико тастера за Windows (Ctrl-V, Ctrl-C, Ctrl-A, Ctrl-S, Ctrl-F, итд.)"
LangString str_msg_keymap_default ${LANG_SERBIAN} \
"Немој да ремапираш тастере (Подразумевано)"
LangString str_msg_keymap_windows ${LANG_SERBIAN} \
"Ремапира неколико тастера"
LangString str_msg_mouse_title ${LANG_SERBIAN} \
" Миш "
LangString str_msg_mouse_desc ${LANG_SERBIAN} \
"&Понашање левог и десног тастера"
LangString str_msg_mouse_default ${LANG_SERBIAN} \
"Десни: искачући мени, Леви: визуелни режим (Подразумевано)"
LangString str_msg_mouse_windows ${LANG_SERBIAN} \
"Десни: искачући мени, Леви: режим избора (Windows)"
LangString str_msg_mouse_unix ${LANG_SERBIAN} \
"Десни: проширује избор, Леви: визуелни режим (Unix)"

View File

@ -5,7 +5,7 @@
# #
# Locale ID : 2052 # Locale ID : 2052
# fileencoding : UTF-8 # fileencoding : UTF-8
# Author : Guopeng Wen # Author : Guopeng Wen, David Liu
!insertmacro MUI_LANGUAGE "SimpChinese" !insertmacro MUI_LANGUAGE "SimpChinese"
@ -112,7 +112,7 @@ LangString str_desc_plugin ${LANG_SIMPCHINESE} \
LangString str_section_plugin_home ${LANG_SIMPCHINESE} \ LangString str_section_plugin_home ${LANG_SIMPCHINESE} \
"私有插件目录" "私有插件目录"
LangString str_desc_plugin_home ${LANG_SIMPCHINESE} \ LangString str_desc_plugin_home ${LANG_SIMPCHINESE} \
"Create plugin directories in HOME directory." "在主目录创建私有插件目录。"
LangString str_section_plugin_vim ${LANG_SIMPCHINESE} \ LangString str_section_plugin_vim ${LANG_SIMPCHINESE} \
"公共插件目录" "公共插件目录"
@ -141,14 +141,14 @@ LangString str_desc_rm_exe ${LANG_SIMPCHINESE} \
"删除 Vim 的所有执行文件及脚本。" "删除 Vim 的所有执行文件及脚本。"
LangString str_ungroup_plugin ${LANG_SIMPCHINESE} \ LangString str_ungroup_plugin ${LANG_SIMPCHINESE} \
"Remove plugin directories" "移除插件目录"
LangString str_desc_rm_plugin ${LANG_SIMPCHINESE} \ LangString str_desc_rm_plugin ${LANG_SIMPCHINESE} \
"Remove the plugin directories if they are empty." "移除插件目录(如果目录为空)。"
LangString str_unsection_plugin_home ${LANG_SIMPCHINESE} \ LangString str_unsection_plugin_home ${LANG_SIMPCHINESE} \
"私有插件目录" "私有插件目录"
LangString str_desc_rm_plugin_home ${LANG_SIMPCHINESE} \ LangString str_desc_rm_plugin_home ${LANG_SIMPCHINESE} \
"Remove the plugin directories from HOME directory." "从主目录中移除私有插件目录。"
LangString str_unsection_plugin_vim ${LANG_SIMPCHINESE} \ LangString str_unsection_plugin_vim ${LANG_SIMPCHINESE} \
"公共插件目录" "公共插件目录"
@ -241,37 +241,37 @@ LangString str_msg_unregistering ${LANG_SIMPCHINESE} \
LangString str_vimrc_page_title ${LANG_SIMPCHINESE} \ LangString str_vimrc_page_title ${LANG_SIMPCHINESE} \
"设置 _vimrc" "设置 _vimrc"
LangString str_vimrc_page_subtitle ${LANG_SIMPCHINESE} \ LangString str_vimrc_page_subtitle ${LANG_SIMPCHINESE} \
"选择键盘、鼠标和增强选项" "选择键盘、鼠标和扩展设置"
LangString str_msg_compat_title ${LANG_SIMPCHINESE} \ LangString str_msg_compat_title ${LANG_SIMPCHINESE} \
"Vi / Vim 行为" "Vi / Vim 行为"
LangString str_msg_compat_desc ${LANG_SIMPCHINESE} \ LangString str_msg_compat_desc ${LANG_SIMPCHINESE} \
"&Compatibility and enhancements" "兼容性与扩展(&B)"
LangString str_msg_compat_vi ${LANG_SIMPCHINESE} \ LangString str_msg_compat_vi ${LANG_SIMPCHINESE} \
"Vi compatible" "原始 Vi"
LangString str_msg_compat_vim ${LANG_SIMPCHINESE} \ LangString str_msg_compat_vim ${LANG_SIMPCHINESE} \
"Vim original" "原始 Vim"
LangString str_msg_compat_defaults ${LANG_SIMPCHINESE} \ LangString str_msg_compat_defaults ${LANG_SIMPCHINESE} \
"Vim with some enhancements (load defaults.vim)" "Vim 原始版本和部分扩展 (加载 defaults.vim)"
LangString str_msg_compat_all ${LANG_SIMPCHINESE} \ LangString str_msg_compat_all ${LANG_SIMPCHINESE} \
"Vim with all enhancements (load vimrc_example.vim) (Default)" "Vim 原始版本和所有扩展 (加载 vimrc_example.vim) (缺省)"
LangString str_msg_keymap_title ${LANG_SIMPCHINESE} \ LangString str_msg_keymap_title ${LANG_SIMPCHINESE} \
"键盘映射" "键盘映射"
LangString str_msg_keymap_desc ${LANG_SIMPCHINESE} \ LangString str_msg_keymap_desc ${LANG_SIMPCHINESE} \
"&Remap a few keys for Windows (Ctrl-V, Ctrl-C, Ctrl-A, Ctrl-S, Ctrl-F, etc)" "为 Windows 映射按键(&R) (例如:Ctrl-V, Ctrl-C, Ctrl-A, Ctrl-S, Ctrl-F)"
LangString str_msg_keymap_default ${LANG_SIMPCHINESE} \ LangString str_msg_keymap_default ${LANG_SIMPCHINESE} \
"Do not remap keys (Default)" "不映射按键 (缺省)"
LangString str_msg_keymap_windows ${LANG_SIMPCHINESE} \ LangString str_msg_keymap_windows ${LANG_SIMPCHINESE} \
"Remap a few keys" "映射一些按键"
LangString str_msg_mouse_title ${LANG_SIMPCHINESE} \ LangString str_msg_mouse_title ${LANG_SIMPCHINESE} \
"鼠标" "鼠标"
LangString str_msg_mouse_desc ${LANG_SIMPCHINESE} \ LangString str_msg_mouse_desc ${LANG_SIMPCHINESE} \
"&Behavior of right and left buttons" "左键和右键行为(&B)"
LangString str_msg_mouse_default ${LANG_SIMPCHINESE} \ LangString str_msg_mouse_default ${LANG_SIMPCHINESE} \
"Right: popup menu, Left: visual mode (Default)" "右键:弹出菜单, 左键:可视化模式 (缺省)"
LangString str_msg_mouse_windows ${LANG_SIMPCHINESE} \ LangString str_msg_mouse_windows ${LANG_SIMPCHINESE} \
"Right: popup menu, Left: select mode (Windows)" "右键:弹出菜单, 左键:选择模式 (Windows)"
LangString str_msg_mouse_unix ${LANG_SIMPCHINESE} \ LangString str_msg_mouse_unix ${LANG_SIMPCHINESE} \
"Right: extends selection, Left: visual mode (Unix)" "右键: 扩展选择, 左键:可视化模式 (Unix)"

190
nsis/lang/turkish.nsi Normal file
View File

@ -0,0 +1,190 @@
# turkish.nsi: Turkish language strings for gvim NSIS installer.
# fileencoding : UTF-8
# Author : Emir SARI
!insertmacro MUI_LANGUAGE "Turkish"
# Overwrite the default translation.
# These strings should be always English. Otherwise dosinst.c fails.
LangString ^SetupCaption ${LANG_TURKISH} \
"$(^Name) Setup"
LangString ^UninstallCaption ${LANG_TURKISH} \
"$(^Name) Uninstall"
LangString str_show_readme ${LANG_TURKISH} \
"Kurulum bittikten sonra README dosyasını"
# Install types:
LangString str_type_typical ${LANG_TURKISH} \
"Normal"
LangString str_type_minimal ${LANG_TURKISH} \
"Küçük"
LangString str_type_full ${LANG_TURKISH} \
"Tam"
##############################################################################
# Section Titles & Description {{{1
##############################################################################
LangString str_section_old_ver ${LANG_TURKISH} \
"Eski sürümü kaldır"
LangString str_desc_old_ver ${LANG_TURKISH} \
"Vim'in eski sürümünü sisteminizden kaldırır."
LangString str_section_exe ${LANG_TURKISH} \
"Vim grafik arabirimi ve çalışma dosyaları"
LangString str_desc_exe ${LANG_TURKISH} \
"Vim program başlatıcı ve çalışma dosyaları. Bu bileşen zorunludur."
LangString str_section_console ${LANG_TURKISH} \
"Vim konsol sürümü"
LangString str_desc_console ${LANG_TURKISH} \
"Vim'in konsol sürümü (vim.exe)."
LangString str_section_batch ${LANG_TURKISH} \
".bat dosyaları oluştur"
LangString str_desc_batch ${LANG_TURKISH} \
"Vim için komut satırında kullanmak üzere .bat dosyaları oluşturur"
LangString str_group_icons ${LANG_TURKISH} \
"Vim için kısayollar oluştur"
LangString str_desc_icons ${LANG_TURKISH} \
"Kolay erişim için Vim kısayolları oluşturur."
LangString str_section_desktop ${LANG_TURKISH} \
"Masaüstünde"
LangString str_desc_desktop ${LANG_TURKISH} \
"gVim programı için Masaüstünde kısayol oluşturur."
LangString str_section_start_menu ${LANG_TURKISH} \
"Başlat Menüsü - Programlar klasöründe"
LangString str_desc_start_menu ${LANG_TURKISH} \
"Vim kısayolunu Başlat Menüsüne ekler."
LangString str_section_edit_with ${LANG_TURKISH} \
"Vim ile Aç"
LangString str_desc_edit_with ${LANG_TURKISH} \
"Vim'i $\"Birlikte $\" sağ tık menüsüne ekler."
LangString str_section_vim_rc ${LANG_TURKISH} \
"Bir yapılandırma dosyası oluştur"
LangString str_desc_vim_rc ${LANG_TURKISH} \
"Eğer yoksa bir yapılandırma dosyası (_vimrc) oluşturur."
LangString str_group_plugin ${LANG_TURKISH} \
"Eklenti dizinleri oluştur"
LangString str_desc_plugin ${LANG_TURKISH} \
"Bu dizinlere Vim eklentilerini yerleştirerek Vim'e yeni \
özellikler kazandırabilirsiniz."
LangString str_section_plugin_home ${LANG_TURKISH} \
"Gizli"
LangString str_desc_plugin_home ${LANG_TURKISH} \
"Eklenti dizinlerini EV dizininde oluşturur."
LangString str_section_plugin_vim ${LANG_TURKISH} \
"Paylaşılan"
LangString str_desc_plugin_vim ${LANG_TURKISH} \
"Eklenti dizinlerini Vim yükleme dizininde oluşturur. Bu eklentilerden \
bilgisayarın tüm kullanıcıları yararlanabilir."
LangString str_section_vis_vim ${LANG_TURKISH} \
"VisVim eklentisi"
LangString str_desc_vis_vim ${LANG_TURKISH} \
"Microsoft Visual Studio entegrasyonu için VisVim eklentisi"
LangString str_section_nls ${LANG_TURKISH} \
"Ek dil desteği"
LangString str_desc_nls ${LANG_TURKISH} \
"Mevcut olan Vim yerelleştirmelerini yükler."
LangString str_unsection_register ${LANG_TURKISH} \
"Vim kaydını kaldır"
LangString str_desc_unregister ${LANG_TURKISH} \
"Vim'in bu bilgisayardaki kaydını kaldırır."
LangString str_unsection_exe ${LANG_TURKISH} \
"Vim programını ve çalıştırma dosyalarını kaldır"
LangString str_desc_rm_exe ${LANG_TURKISH} \
"Vim çalıştırılabilir dosyalarını ve diğer dosyaları kaldırır."
LangString str_ungroup_plugin ${LANG_TURKISH} \
"Eklenti dizinlerini kaldır"
LangString str_desc_rm_plugin ${LANG_TURKISH} \
"Eklenti dizinlerini eğer boş ise kaldırır."
LangString str_unsection_plugin_home ${LANG_TURKISH} \
"Gizli"
LangString str_desc_rm_plugin_home ${LANG_TURKISH} \
"Eklenti dizinlerini EV dizininden kaldırır."
LangString str_unsection_plugin_vim ${LANG_TURKISH} \
"Paylaşılan"
LangString str_desc_rm_plugin_vim ${LANG_TURKISH} \
"Eklenti dizinlerini Vim yükleme dizininden kaldırır."
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 yapılandırma dosyalarını içerir!"
LangString str_msg_install_fail ${LANG_TURKISH} \
"Yükleme başarısız oldu. Yeniden deneyin."
LangString str_msg_rm_exe_fail ${LANG_TURKISH} \
"$0 içindeki bazı dosyalar silinemedi!$\r$\n\
Bu dosyaları el ile kaldırmalısınız."
LangString str_msg_uninstalling ${LANG_TURKISH} \
"Eski sürüm kaldırılıyor..."
LangString str_msg_registering ${LANG_TURKISH} \
"Kaydediliyor..."
LangString str_msg_unregistering ${LANG_TURKISH} \
"Kayıt siliniyor..."
##############################################################################
# Dialog Box {{{1
##############################################################################
LangString str_vimrc_page_title ${LANG_TURKISH} \
"_vimrc ayarlarını seçin"
LangString str_vimrc_page_subtitle ${LANG_TURKISH} \
"Yüklenecek ek özellikler, klavye ve fare için ayarları seçin."
LangString str_msg_compat_title ${LANG_TURKISH} \
" Vi / Vim davranışı "
LangString str_msg_compat_desc ${LANG_TURKISH} \
"&Uyumluluk ve ek özellikler"
LangString str_msg_compat_vi ${LANG_TURKISH} \
"Vi uyumlu"
LangString str_msg_compat_vim ${LANG_TURKISH} \
"Vim orijinal"
LangString str_msg_compat_defaults ${LANG_TURKISH} \
"Vim ve ek olarak bazı ek özellikler (load defaults.vim)"
LangString str_msg_compat_all ${LANG_TURKISH} \
"Vim ve ek olarak tüm ek özellikler (load vimrc_example.vim) (Default)"
LangString str_msg_keymap_title ${LANG_TURKISH} \
" Klavye İşlevleri "
LangString str_msg_keymap_desc ${LANG_TURKISH} \
"&Windows için bazı düğmeleri yeniden ayarla (Ctrl-V, Ctrl-C, Ctrl-A, Ctrl-S, Ctrl-F, etc)"
LangString str_msg_keymap_default ${LANG_TURKISH} \
"Düğme işlevlerini değiştirme (varsayılan)"
LangString str_msg_keymap_windows ${LANG_TURKISH} \
"Bazı düğmeleri yeniden ayarla"
LangString str_msg_mouse_title ${LANG_TURKISH} \
" Fare İşlevleri "
LangString str_msg_mouse_desc ${LANG_TURKISH} \
"&Sağ ve sol düğme davranışı"
LangString str_msg_mouse_default ${LANG_TURKISH} \
"Sağ: açılır menü, Sol: Görsel Kip (varsayılan)"
LangString str_msg_mouse_windows ${LANG_TURKISH} \
"Sağ: açılır menü, Sol: seçim kipi (Windows)"
LangString str_msg_mouse_unix ${LANG_TURKISH} \
"Sağ: seçimi genişlet, Sol: Görsel Kip (Unix)"

View File

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

View File

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

View File

@ -2,7 +2,7 @@
" Language: Haskell " Language: Haskell
" Maintainer: Daniel Campoverde <alx@sillybytes.net> " Maintainer: Daniel Campoverde <alx@sillybytes.net>
" URL: https://github.com/alx741/haskellcomplete.vim " URL: https://github.com/alx741/haskellcomplete.vim
" Last Change: 2018 Aug 26 " Last Change: 2019 May 14
" Usage: setlocal omnifunc=haskellcomplete#Complete " Usage: setlocal omnifunc=haskellcomplete#Complete
@ -63,6 +63,7 @@ function! haskellcomplete#Complete(findstart, base)
call add(l:matches, extension) call add(l:matches, extension)
endif endif
endfor endfor
let b:completingLangExtension = 0
return l:matches return l:matches
endif endif
@ -78,6 +79,7 @@ function! haskellcomplete#Complete(findstart, base)
call add(l:matches, flag) call add(l:matches, flag)
endif endif
endfor endfor
let b:completingOptionsGHC = 0
return l:matches return l:matches
endif endif
@ -93,6 +95,7 @@ function! haskellcomplete#Complete(findstart, base)
call add(l:matches, module) call add(l:matches, module)
endif endif
endfor endfor
let b:completingModule = 0
return l:matches return l:matches
endif endif

View File

@ -1,7 +1,7 @@
" Vim completion script " Vim completion script
" Language: HTML and XHTML " Language: HTML and XHTML
" Maintainer: Mikolaj Machowski ( mikmach AT wp DOT pl ) " Maintainer: Mikolaj Machowski ( mikmach AT wp DOT pl )
" Last Change: 2014 Jun 20 " Last Change: 2019 Sep 27
" Distinguish between HTML versions. " Distinguish between HTML versions.
" To use with other HTML versions add another "elseif" condition to match " To use with other HTML versions add another "elseif" condition to match
@ -245,7 +245,8 @@ function! htmlcomplete#CompleteTags(findstart, base)
" If context contains white space it is attribute. " If context contains white space it is attribute.
" It can be also value of attribute. " It can be also value of attribute.
" We have to get first word to offer proper completions " We have to get first word to offer proper completions
if context == '' if context =~ '^\s*$'
" empty or whitespace line
let tag = '' let tag = ''
else else
let tag = split(context)[0] let tag = split(context)[0]

View File

@ -1,8 +1,8 @@
" netrw.vim: Handles file transfer and remote directory listing across " netrw.vim: Handles file transfer and remote directory listing across
" AUTOLOAD SECTION " AUTOLOAD SECTION
" Date: Jul 16, 2019 " Date: Jan 07, 2020
" Version: 165 " Version: 168
" Maintainer: Charles E Campbell <NdrOchip@ScampbellPfamily.AbizM-NOSPAM> " Maintainer: Charles E Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
" GetLatestVimScripts: 1075 1 :AutoInstall: netrw.vim " GetLatestVimScripts: 1075 1 :AutoInstall: netrw.vim
" Copyright: Copyright (C) 2016 Charles E. Campbell {{{1 " Copyright: Copyright (C) 2016 Charles E. Campbell {{{1
" Permission is hereby granted to use and distribute this code, " Permission is hereby granted to use and distribute this code,
@ -13,6 +13,10 @@
" expressed or implied. By using this plugin, you agree that " expressed or implied. By using this plugin, you agree that
" in no event will the copyright holder be liable for any damages " in no event will the copyright holder be liable for any damages
" resulting from the use of this software. " resulting from the use of this software.
"
" Note: the code here was started in 1999 under a much earlier version of vim. The directory browsing
" code was written using vim v6, which did not have Lists (Lists were first offered with vim-v7).
"
"redraw!|call DechoSep()|call inputsave()|call input("Press <cr> to continue")|call inputrestore() "redraw!|call DechoSep()|call inputsave()|call input("Press <cr> to continue")|call inputrestore()
" "
" But be doers of the Word, and not only hearers, deluding your own selves {{{1 " But be doers of the Word, and not only hearers, deluding your own selves {{{1
@ -39,7 +43,7 @@ if exists("s:needspatches")
endfor endfor
endif endif
let g:loaded_netrw = "v165" let g:loaded_netrw = "v168"
if !exists("s:NOTE") if !exists("s:NOTE")
let s:NOTE = 0 let s:NOTE = 0
let s:WARNING = 1 let s:WARNING = 1
@ -64,7 +68,7 @@ setl cpo&vim
" Usage: netrw#ErrorMsg(s:NOTE | s:WARNING | s:ERROR,"some message",error-number) " 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) " netrw#ErrorMsg(s:NOTE | s:WARNING | s:ERROR,["message1","message2",...],error-number)
" (this function can optionally take a list of messages) " (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) 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) " call Dfunc("netrw#ErrorMsg(level=".a:level." msg<".a:msg."> errnum=".a:errnum.") g:netrw_use_errorwindow=".g:netrw_use_errorwindow)
@ -232,12 +236,12 @@ if !exists("g:netrw_ftp_options")
let g:netrw_ftp_options= "-i -n" let g:netrw_ftp_options= "-i -n"
endif endif
if !exists("g:netrw_http_cmd") if !exists("g:netrw_http_cmd")
if executable("curl") if executable("wget")
let g:netrw_http_cmd = "curl"
call s:NetrwInit("g:netrw_http_xcmd","-L -o")
elseif executable("wget")
let g:netrw_http_cmd = "wget" let g:netrw_http_cmd = "wget"
call s:NetrwInit("g:netrw_http_xcmd","-q -O") call s:NetrwInit("g:netrw_http_xcmd","-q -O")
elseif executable("curl")
let g:netrw_http_cmd = "curl"
call s:NetrwInit("g:netrw_http_xcmd","-L -o")
elseif executable("elinks") elseif executable("elinks")
let g:netrw_http_cmd = "elinks" let g:netrw_http_cmd = "elinks"
call s:NetrwInit("g:netrw_http_xcmd","-source >") call s:NetrwInit("g:netrw_http_xcmd","-source >")
@ -443,23 +447,9 @@ if !exists("g:netrw_localmovecmd")
let g:netrw_localmovecmd= "" let g:netrw_localmovecmd= ""
endif endif
endif endif
if v:version < 704 || (v:version == 704 && !has("patch1107")) " following serves as an example for how to insert a version&patch specific test
" 1109 provides for delete(tmpdir,"d") which is what will be used "if v:version < 704 || (v:version == 704 && !has("patch1107"))
if exists("g:netrw_local_rmdir") "endif
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
call s:NetrwInit("g:netrw_liststyle" , s:THINLIST) call s:NetrwInit("g:netrw_liststyle" , s:THINLIST)
" sanity checks " sanity checks
if g:netrw_liststyle < 0 || g:netrw_liststyle >= s:MAXLIST if g:netrw_liststyle < 0 || g:netrw_liststyle >= s:MAXLIST
@ -689,6 +679,7 @@ fun! netrw#Explore(indx,dosplit,style,...)
" save registers " save registers
if has("clipboard") if has("clipboard")
" call Decho("(netrw#Explore) save @* and @+",'~'.expand("<slnum>"))
sil! let keepregstar = @* sil! let keepregstar = @*
sil! let keepregplus = @+ sil! let keepregplus = @+
endif endif
@ -916,8 +907,9 @@ fun! netrw#Explore(indx,dosplit,style,...)
if !exists("w:netrw_explore_list") " sanity check if !exists("w:netrw_explore_list") " sanity check
NetrwKeepj call netrw#ErrorMsg(s:WARNING,"using Nexplore or <s-down> improperly; see help for netrw-starstar",40) NetrwKeepj call netrw#ErrorMsg(s:WARNING,"using Nexplore or <s-down> improperly; see help for netrw-starstar",40)
if has("clipboard") if has("clipboard")
sil! let @* = keepregstar " call Decho("(netrw#Explore) restore @* and @+",'~'.expand("<slnum>"))
sil! let @+ = keepregplus if @* != keepregstar | sil! let @* = keepregstar | endif
if @+ != keepregplus | sil! let @+ = keepregplus | endif
endif endif
sil! let @/ = keepregslash sil! let @/ = keepregslash
" call Dret("netrw#Explore") " call Dret("netrw#Explore")
@ -941,8 +933,9 @@ fun! netrw#Explore(indx,dosplit,style,...)
if !exists("w:netrw_explore_list") " sanity check if !exists("w:netrw_explore_list") " sanity check
NetrwKeepj call netrw#ErrorMsg(s:WARNING,"using Pexplore or <s-up> improperly; see help for netrw-starstar",41) NetrwKeepj call netrw#ErrorMsg(s:WARNING,"using Pexplore or <s-up> improperly; see help for netrw-starstar",41)
if has("clipboard") if has("clipboard")
sil! let @* = keepregstar " call Decho("(netrw#Explore) restore @* and @+",'~'.expand("<slnum>"))
sil! let @+ = keepregplus if @* != keepregstar | sil! let @* = keepregstar | endif
if @+ != keepregplus | sil! let @+ = keepregplus | endif
endif endif
sil! let @/ = keepregslash sil! let @/ = keepregslash
" call Dret("netrw#Explore") " call Dret("netrw#Explore")
@ -996,8 +989,9 @@ fun! netrw#Explore(indx,dosplit,style,...)
keepalt call netrw#ErrorMsg(s:WARNING,'no files matched pattern<'.pattern.'>',45) keepalt call netrw#ErrorMsg(s:WARNING,'no files matched pattern<'.pattern.'>',45)
if &hls | let keepregslash= s:ExplorePatHls(pattern) | endif if &hls | let keepregslash= s:ExplorePatHls(pattern) | endif
if has("clipboard") if has("clipboard")
sil! let @* = keepregstar " call Decho("(netrw#Explore) restore @* and @+",'~'.expand("<slnum>"))
sil! let @+ = keepregplus if @* != keepregstar | sil! let @* = keepregstar | endif
if @+ != keepregplus | sil! let @+ = keepregplus | endif
endif endif
sil! let @/ = keepregslash sil! let @/ = keepregslash
" call Dret("netrw#Explore : no files matched pattern") " call Dret("netrw#Explore : no files matched pattern")
@ -1032,8 +1026,9 @@ fun! netrw#Explore(indx,dosplit,style,...)
if w:netrw_explore_listlen == 0 || (w:netrw_explore_listlen == 1 && w:netrw_explore_list[0] =~ '\*\*\/') if w:netrw_explore_listlen == 0 || (w:netrw_explore_listlen == 1 && w:netrw_explore_list[0] =~ '\*\*\/')
keepalt NetrwKeepj call netrw#ErrorMsg(s:WARNING,"no files matched",42) keepalt NetrwKeepj call netrw#ErrorMsg(s:WARNING,"no files matched",42)
if has("clipboard") if has("clipboard")
sil! let @* = keepregstar " call Decho("(netrw#Explore) restore @* and @+",'~'.expand("<slnum>"))
sil! let @+ = keepregplus if @* != keepregstar | sil! let @* = keepregstar | endif
if @+ != keepregplus | sil! let @+ = keepregplus | endif
endif endif
sil! let @/ = keepregslash sil! let @/ = keepregslash
" call Dret("netrw#Explore : no files matched") " call Dret("netrw#Explore : no files matched")
@ -1080,8 +1075,9 @@ fun! netrw#Explore(indx,dosplit,style,...)
keepalt NetrwKeepj call netrw#ErrorMsg(s:WARNING,"your vim needs the +path_extra feature for Exploring with **!",44) keepalt NetrwKeepj call netrw#ErrorMsg(s:WARNING,"your vim needs the +path_extra feature for Exploring with **!",44)
endif endif
if has("clipboard") if has("clipboard")
sil! let @* = keepregstar " call Decho("(netrw#Explore) restore @* and @+",'~'.expand("<slnum>"))
sil! let @+ = keepregplus if @* != keepregstar | sil! let @* = keepregstar | endif
if @+ != keepregplus | sil! let @+ = keepregplus | endif
endif endif
sil! let @/ = keepregslash sil! let @/ = keepregslash
" call Dret("netrw#Explore : missing +path_extra") " call Dret("netrw#Explore : missing +path_extra")
@ -1153,8 +1149,9 @@ fun! netrw#Explore(indx,dosplit,style,...)
" Consequently, set s:netrw_events to 2. " Consequently, set s:netrw_events to 2.
let s:netrw_events= 2 let s:netrw_events= 2
if has("clipboard") if has("clipboard")
sil! let @* = keepregstar " call Decho("(netrw#Explore) restore @* and @+",'~'.expand("<slnum>"))
sil! let @+ = keepregplus if @* != keepregstar | sil! let @* = keepregstar | endif
if @+ != keepregplus | sil! let @+ = keepregplus | endif
endif endif
sil! let @/ = keepregslash sil! let @/ = keepregslash
" call Dret("netrw#Explore : @/<".@/.">") " call Dret("netrw#Explore : @/<".@/.">")
@ -1528,7 +1525,8 @@ fun! netrw#Obtain(islocal,fname,...)
" -i : turns off interactive prompting from ftp " -i : turns off interactive prompting from ftp
" -n unix : DON'T use <.netrc>, even though it exists " -n unix : DON'T use <.netrc>, even though it exists
" -n win32: quit being obnoxious about password " -n win32: quit being obnoxious about password
NetrwKeepj norm! 1Gdd " Note: using "_dd to delete to the black hole register; avoids messing up @@
NetrwKeepj norm! 1G"_dd
call s:NetrwExe(s:netrw_silentxfer."%!".s:netrw_ftp_cmd." ".g:netrw_ftp_options) call s:NetrwExe(s:netrw_silentxfer."%!".s:netrw_ftp_cmd." ".g:netrw_ftp_options)
" If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar) " If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar)
if getline(1) !~ "^$" if getline(1) !~ "^$"
@ -1642,7 +1640,6 @@ fun! s:NetrwOptionsSave(vt)
let {a:vt}netrw_cpokeep = &l:cpo let {a:vt}netrw_cpokeep = &l:cpo
let {a:vt}netrw_diffkeep = &l:diff let {a:vt}netrw_diffkeep = &l:diff
let {a:vt}netrw_fenkeep = &l:fen let {a:vt}netrw_fenkeep = &l:fen
" call Decho("saving current settings: got here#1",'~'.expand("<slnum>"))
if !exists("g:netrw_ffkeep") || g:netrw_ffkeep if !exists("g:netrw_ffkeep") || g:netrw_ffkeep
let {a:vt}netrw_ffkeep = &l:ff let {a:vt}netrw_ffkeep = &l:ff
endif endif
@ -1661,7 +1658,6 @@ fun! s:NetrwOptionsSave(vt)
let {a:vt}netrw_rokeep = &l:ro let {a:vt}netrw_rokeep = &l:ro
let {a:vt}netrw_selkeep = &l:sel let {a:vt}netrw_selkeep = &l:sel
let {a:vt}netrw_spellkeep = &l:spell let {a:vt}netrw_spellkeep = &l:spell
" call Decho("saving current settings: got here#2",'~'.expand("<slnum>"))
if !g:netrw_use_noswf if !g:netrw_use_noswf
let {a:vt}netrw_swfkeep = &l:swf let {a:vt}netrw_swfkeep = &l:swf
endif endif
@ -1675,6 +1671,7 @@ fun! s:NetrwOptionsSave(vt)
" call Decho("saving a few selected netrw-related variables",'~'.expand("<slnum>")) " call Decho("saving a few selected netrw-related variables",'~'.expand("<slnum>"))
if g:netrw_keepdir if g:netrw_keepdir
let {a:vt}netrw_dirkeep = getcwd() let {a:vt}netrw_dirkeep = getcwd()
" call Decho("saving to ".a:vt."netrw_dirkeep<".{a:vt}netrw_dirkeep.">",'~'.expand("<slnum>"))
endif endif
if has("clipboard") if has("clipboard")
sil! let {a:vt}netrw_starkeep = @* sil! let {a:vt}netrw_starkeep = @*
@ -1745,6 +1742,7 @@ fun! s:NetrwOptionsRestore(vt)
" call Dfunc("s:NetrwOptionsRestore(vt<".a:vt.">) win#".winnr()." buf#".bufnr("%")."<".bufname("%")."> winnr($)=".winnr("$")) " call Dfunc("s:NetrwOptionsRestore(vt<".a:vt.">) win#".winnr()." buf#".bufnr("%")."<".bufname("%")."> winnr($)=".winnr("$"))
" call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo." a:vt=".a:vt,'~'.expand("<slnum>")) " call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo." a:vt=".a:vt,'~'.expand("<slnum>"))
if !exists("{a:vt}netrw_optionsave") if !exists("{a:vt}netrw_optionsave")
" call Decho("case ".a:vt."netrw_optionsave : doesn't exist",'~'.expand("<slnum>"))
" call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo." a:vt=".a:vt,'~'.expand("<slnum>")) " call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo." a:vt=".a:vt,'~'.expand("<slnum>"))
" call Decho("ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("<slnum>")) " call Decho("ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("<slnum>"))
" call Dret("s:NetrwOptionsRestore : ".a:vt."netrw_optionsave doesn't exist") " call Dret("s:NetrwOptionsRestore : ".a:vt."netrw_optionsave doesn't exist")
@ -1829,6 +1827,7 @@ fun! s:NetrwOptionsRestore(vt)
endif endif
endif endif
if has("clipboard") if has("clipboard")
" call Decho("has clipboard",'~'.expand("<slnum>"))
call s:NetrwRestoreSetting(a:vt."netrw_starkeep","@*") call s:NetrwRestoreSetting(a:vt."netrw_starkeep","@*")
call s:NetrwRestoreSetting(a:vt."netrw_pluskeep","@+") call s:NetrwRestoreSetting(a:vt."netrw_pluskeep","@+")
endif endif
@ -1890,7 +1889,7 @@ endfun
" Used by s:NetrwOptionsRestore() to restore each netrw-senstive setting " Used by s:NetrwOptionsRestore() to restore each netrw-senstive setting
" keepvars are set up by s:NetrwOptionsSave " keepvars are set up by s:NetrwOptionsSave
fun! s:NetrwRestoreSetting(keepvar,setting) fun! s:NetrwRestoreSetting(keepvar,setting)
"" call Dfunc("s:NetrwRestoreSetting(a:keepvar<".a:keepvar."> a:setting<".a:setting.">)") """ call Dfunc("s:NetrwRestoreSetting(a:keepvar<".a:keepvar."> a:setting<".a:setting.">)")
" typically called from s:NetrwOptionsRestore " typically called from s:NetrwOptionsRestore
" call s:NetrwRestoreSettings(keep-option-variable-name,'associated-option') " call s:NetrwRestoreSettings(keep-option-variable-name,'associated-option')
@ -1905,7 +1904,7 @@ fun! s:NetrwRestoreSetting(keepvar,setting)
"" call Decho("fyi: a:setting<".a:setting."> setting<".setting.">") "" call Decho("fyi: a:setting<".a:setting."> setting<".setting.">")
if setting != keepvarval if setting != keepvarval
"" call Decho("restore setting<".a:setting."=".setting."> to keepvarval<".keepvarval.">") "" call Decho("restore setting<".a:setting."> (currently=".setting.") to keepvarval<".keepvarval.">")
if type(a:setting) == 0 if type(a:setting) == 0
exe "let ".a:setting."= ".keepvarval exe "let ".a:setting."= ".keepvarval
elseif type(a:setting) == 1 elseif type(a:setting) == 1
@ -2195,7 +2194,7 @@ fun! netrw#NetRead(mode,...)
" -i : turns off interactive prompting from ftp " -i : turns off interactive prompting from ftp
" -n unix : DON'T use <.netrc>, even though it exists " -n unix : DON'T use <.netrc>, even though it exists
" -n win32: quit being obnoxious about password " -n win32: quit being obnoxious about password
NetrwKeepj norm! 1Gdd NetrwKeepj norm! 1G"_dd
call s:NetrwExe(s:netrw_silentxfer."%!".s:netrw_ftp_cmd." ".g:netrw_ftp_options) call s:NetrwExe(s:netrw_silentxfer."%!".s:netrw_ftp_cmd." ".g:netrw_ftp_options)
" If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar) " If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar)
if getline(1) !~ "^$" if getline(1) !~ "^$"
@ -2295,7 +2294,7 @@ fun! netrw#NetRead(mode,...)
NetrwKeepj put ='quit' NetrwKeepj put ='quit'
" perform cadaver operation: " perform cadaver operation:
NetrwKeepj norm! 1Gdd NetrwKeepj norm! 1G"_dd
call s:NetrwExe(s:netrw_silentxfer."%!".g:netrw_dav_cmd) call s:NetrwExe(s:netrw_silentxfer."%!".g:netrw_dav_cmd)
keepj bd! keepj bd!
endif endif
@ -2611,7 +2610,7 @@ fun! netrw#NetWrite(...) range
" -i : turns off interactive prompting from ftp " -i : turns off interactive prompting from ftp
" -n unix : DON'T use <.netrc>, even though it exists " -n unix : DON'T use <.netrc>, even though it exists
" -n win32: quit being obnoxious about password " -n win32: quit being obnoxious about password
NetrwKeepj norm! 1Gdd NetrwKeepj norm! 1G"_dd
call s:NetrwExe(s:netrw_silentxfer."%!".s:netrw_ftp_cmd." ".g:netrw_ftp_options) call s:NetrwExe(s:netrw_silentxfer."%!".s:netrw_ftp_cmd." ".g:netrw_ftp_options)
" If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar) " If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar)
if getline(1) !~ "^$" if getline(1) !~ "^$"
@ -2677,7 +2676,7 @@ fun! netrw#NetWrite(...) range
NetrwKeepj put ='put '.tmpfile.' '.netrw_fname NetrwKeepj put ='put '.tmpfile.' '.netrw_fname
" perform cadaver operation: " perform cadaver operation:
NetrwKeepj norm! 1Gdd NetrwKeepj norm! 1G"_dd
call s:NetrwExe(s:netrw_silentxfer."%!".g:netrw_dav_cmd) call s:NetrwExe(s:netrw_silentxfer."%!".g:netrw_dav_cmd)
" remove enew buffer (quietly) " remove enew buffer (quietly)
@ -2863,7 +2862,7 @@ fun! s:NetrwGetFile(readcmd, tfile, method)
" readcmd=='t': simply do nothing " readcmd=='t': simply do nothing
if a:readcmd == 't' if a:readcmd == 't'
" call Decho(" ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("<slnum>")) " call Decho(" ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("<slnum>"))
" call Dret("NetrwGetFile : skip read of <".a:tfile.">") " call Dret("NetrwGetFile : skip read of tfile<".a:tfile.">")
return return
endif endif
@ -4359,7 +4358,7 @@ fun! s:NetrwGetWord()
let curline= getline('.') let curline= getline('.')
if curline =~# '"\s*Sorted by\s' if curline =~# '"\s*Sorted by\s'
NetrwKeepj norm! s NetrwKeepj norm! "_s
let s:netrw_skipbrowse= 1 let s:netrw_skipbrowse= 1
echo 'Pressing "s" also works' echo 'Pressing "s" also works'
@ -5194,17 +5193,31 @@ fun! s:NetrwBrowseUpDir(islocal)
endfun endfun
" --------------------------------------------------------------------- " ---------------------------------------------------------------------
" netrw#BrowseX: (implements "x") executes a special "viewer" script or program for the {{{2 " netrw#BrowseX: (implements "x" and "gx") executes a special "viewer" script or program for the {{{2
" given filename; typically this means given their extension. " given filename; typically this means given their extension.
" 0=local, 1=remote " 0=local, 1=remote
fun! netrw#BrowseX(fname,remote) fun! netrw#BrowseX(fname,remote)
" call Dfunc("netrw#BrowseX(fname<".a:fname."> remote=".a:remote.")") let use_ctrlo= 1
" call Dfunc("netrw#BrowseX(fname<".a:fname."> remote=".a:remote.") implements x and gx maps")
if a:remote == 0 && isdirectory(a:fname)
" if its really just a local directory, then do a "gf" instead " if its really just a local directory, then do a "gf" instead
if (a:remote == 0 && isdirectory(a:fname)) || (a:remote == 1 && a:fname =~ '/$' && a:fname !~ '^https\=:') " 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 e ".a:fname." instead",'~'.expand("<slnum>"))
exe "e ".a:fname
" call Dret("netrw#BrowseX")
return
elseif a:remote == 1 && a:fname !~ '^https\=:' && a:fname =~ '/$'
" remote directory, not a webpage access, looks like an attempt to do a directory listing
" call Decho("remote≡1 and a:fname<".a:fname.">",'~'.expand("<slnum>"))
" call Decho("..and fname ".((a:fname =~ '^https\=:')? 'matches' : 'does not match').'^https\=:','~'.expand("<slnum>"))
" call Decho("..and fname ".((a:fname =~ '/$')? 'matches' : 'does not match').' /$','~'.expand("<slnum>"))
" call Decho("..appears to be a remote directory listing request; using gf instead",'~'.expand("<slnum>"))
norm! gf norm! gf
" call Dret("(netrw#BrowseX) did gf instead") " call Dret("netrw#BrowseX")
return
endif endif
" call Decho("not a local file nor a webpage request",'~'.expand("<slnum>"))
let ykeep = @@ let ykeep = @@
let screenposn = winsaveview() let screenposn = winsaveview()
@ -5302,10 +5315,9 @@ fun! netrw#BrowseX(fname,remote)
endif endif
" call Decho("set up redirection: redir{".redir."} srr{".&srr."}",'~'.expand("<slnum>")) " call Decho("set up redirection: redir{".redir."} srr{".&srr."}",'~'.expand("<slnum>"))
" extract any viewing options. Assumes that they're set apart by quotes. " extract any viewing options. Assumes that they're set apart by spaces.
" call Decho("extract any viewing options",'~'.expand("<slnum>"))
if exists("g:netrw_browsex_viewer") if exists("g:netrw_browsex_viewer")
" call Decho("g:netrw_browsex_viewer<".g:netrw_browsex_viewer.">",'~'.expand("<slnum>")) " call Decho("extract any viewing options from g:netrw_browsex_viewer<".g:netrw_browsex_viewer.">",'~'.expand("<slnum>"))
if g:netrw_browsex_viewer =~ '\s' if g:netrw_browsex_viewer =~ '\s'
let viewer = substitute(g:netrw_browsex_viewer,'\s.*$','','') let viewer = substitute(g:netrw_browsex_viewer,'\s.*$','','')
let viewopt = substitute(g:netrw_browsex_viewer,'^\S\+\s*','','')." " let viewopt = substitute(g:netrw_browsex_viewer,'^\S\+\s*','','')." "
@ -5328,16 +5340,16 @@ fun! netrw#BrowseX(fname,remote)
" execute the file handler " execute the file handler
" call Decho("execute the file handler (if any)",'~'.expand("<slnum>")) " call Decho("execute the file handler (if any)",'~'.expand("<slnum>"))
if exists("g:netrw_browsex_viewer") && g:netrw_browsex_viewer == '-' if exists("g:netrw_browsex_viewer") && g:netrw_browsex_viewer == '-'
" call Decho("g:netrw_browsex_viewer<".g:netrw_browsex_viewer.">",'~'.expand("<slnum>")) " call Decho("(netrw#BrowseX) g:netrw_browsex_viewer<".g:netrw_browsex_viewer.">",'~'.expand("<slnum>"))
let ret= netrwFileHandlers#Invoke(exten,fname) let ret= netrwFileHandlers#Invoke(exten,fname)
elseif exists("g:netrw_browsex_viewer") && executable(viewer) elseif exists("g:netrw_browsex_viewer") && executable(viewer)
" call Decho("g:netrw_browsex_viewer<".g:netrw_browsex_viewer.">",'~'.expand("<slnum>")) " call Decho("(netrw#BrowseX) g:netrw_browsex_viewer<".g:netrw_browsex_viewer.">",'~'.expand("<slnum>"))
call s:NetrwExe("sil !".viewer." ".viewopt.s:ShellEscape(fname,1).redir) call s:NetrwExe("sil !".viewer." ".viewopt.s:ShellEscape(fname,1).redir)
let ret= v:shell_error let ret= v:shell_error
elseif has("win32") || has("win64") elseif has("win32") || has("win64")
" call Decho("win".(has("win32")? "32" : "64")",'~'.expand("<slnum>")) " call Decho("(netrw#BrowseX) win".(has("win32")? "32" : "64"),'~'.expand("<slnum>"))
if executable("start") if executable("start")
call s:NetrwExe('sil! !start rundll32 url.dll,FileProtocolHandler '.s:ShellEscape(fname,1)) call s:NetrwExe('sil! !start rundll32 url.dll,FileProtocolHandler '.s:ShellEscape(fname,1))
elseif executable("rundll32") elseif executable("rundll32")
@ -5345,56 +5357,68 @@ fun! netrw#BrowseX(fname,remote)
else else
call netrw#ErrorMsg(s:WARNING,"rundll32 not on path",74) call netrw#ErrorMsg(s:WARNING,"rundll32 not on path",74)
endif endif
" call inputsave()|call input("Press <cr> to continue")|call inputrestore()
let ret= v:shell_error let ret= v:shell_error
elseif has("win32unix") elseif has("win32unix")
let winfname= 'c:\cygwin'.substitute(fname,'/','\\','g') let winfname= 'c:\cygwin'.substitute(fname,'/','\\','g')
" call Decho("cygwin: winfname<".s:ShellEscape(winfname,1).">",'~'.expand("<slnum>")) " call Decho("(netrw#BrowseX) cygwin: winfname<".s:ShellEscape(winfname,1).">",'~'.expand("<slnum>"))
if executable("start") if executable("start")
" call Decho("(netrw#BrowseX) win32unix+start",'~'.expand("<slnum>"))
call s:NetrwExe('sil !start rundll32 url.dll,FileProtocolHandler '.s:ShellEscape(winfname,1)) call s:NetrwExe('sil !start rundll32 url.dll,FileProtocolHandler '.s:ShellEscape(winfname,1))
elseif executable("rundll32") elseif executable("rundll32")
" call Decho("(netrw#BrowseX) win32unix+rundll32",'~'.expand("<slnum>"))
call s:NetrwExe('sil !rundll32 url.dll,FileProtocolHandler '.s:ShellEscape(winfname,1)) call s:NetrwExe('sil !rundll32 url.dll,FileProtocolHandler '.s:ShellEscape(winfname,1))
elseif executable("cygstart") elseif executable("cygstart")
" call Decho("(netrw#BrowseX) win32unix+cygstart",'~'.expand("<slnum>"))
call s:NetrwExe('sil !cygstart '.s:ShellEscape(fname,1)) call s:NetrwExe('sil !cygstart '.s:ShellEscape(fname,1))
else else
call netrw#ErrorMsg(s:WARNING,"rundll32 not on path",74) call netrw#ErrorMsg(s:WARNING,"rundll32 not on path",74)
endif endif
" call inputsave()|call input("Press <cr> to continue")|call inputrestore()
let ret= v:shell_error let ret= v:shell_error
elseif has("unix") && executable("kfmclient") && s:CheckIfKde() elseif has("unix") && executable("kfmclient") && s:CheckIfKde()
" call Decho("unix and kfmclient",'~'.expand("<slnum>")) " call Decho("(netrw#BrowseX) unix and kfmclient",'~'.expand("<slnum>"))
call s:NetrwExe("sil !kfmclient exec ".s:ShellEscape(fname,1)." ".redir) call s:NetrwExe("sil !kfmclient exec ".s:ShellEscape(fname,1)." ".redir)
let ret= v:shell_error let ret= v:shell_error
elseif has("unix") && executable("exo-open") && executable("xdg-open") && executable("setsid") elseif has("unix") && executable("exo-open") && executable("xdg-open") && executable("setsid")
" call Decho("unix, exo-open, xdg-open",'~'.expand("<slnum>")) " call Decho("(netrw#BrowseX) unix, exo-open, xdg-open",'~'.expand("<slnum>"))
call s:NetrwExe("sil !setsid xdg-open ".s:ShellEscape(fname,1).redir) call s:NetrwExe("sil !setsid xdg-open ".s:ShellEscape(fname,1).redir)
let ret= v:shell_error let ret= v:shell_error
elseif has("unix") && $DESKTOP_SESSION == "mate" && executable("atril") elseif has("unix") && $DESKTOP_SESSION == "mate" && executable("atril")
" call Decho("unix and atril",'~'.expand("<slnum>")) " call Decho("(netrw#BrowseX) unix and atril",'~'.expand("<slnum>"))
if a:fname =~ '^https\=://'
" atril does not appear to understand how to handle html -- so use gvim to edit the document
let use_ctrlo= 0
" call Decho("(COMBAK) fname<".fname.">")
" call Decho("(COMBAK) a:fname<".a:fname.">")
call s:NetrwExe("sil! !gvim ".fname.' -c "keepj keepalt file '.fnameescape(a:fname).'"')
else
call s:NetrwExe("sil !atril ".s:ShellEscape(fname,1).redir) call s:NetrwExe("sil !atril ".s:ShellEscape(fname,1).redir)
endif
let ret= v:shell_error let ret= v:shell_error
elseif has("unix") && executable("xdg-open") elseif has("unix") && executable("xdg-open")
" call Decho("unix and xdg-open",'~'.expand("<slnum>")) " call Decho("(netrw#BrowseX) unix and xdg-open",'~'.expand("<slnum>"))
call s:NetrwExe("sil !xdg-open ".s:ShellEscape(fname,1).redir) call s:NetrwExe("sil !xdg-open ".s:ShellEscape(fname,1).redir)
let ret= v:shell_error let ret= v:shell_error
elseif has("macunix") && executable("open") elseif has("macunix") && executable("open")
" call Decho("macunix and open",'~'.expand("<slnum>")) " call Decho("(netrw#BrowseX) macunix and open",'~'.expand("<slnum>"))
call s:NetrwExe("sil !open ".s:ShellEscape(fname,1)." ".redir) call s:NetrwExe("sil !open ".s:ShellEscape(fname,1)." ".redir)
let ret= v:shell_error let ret= v:shell_error
else else
" netrwFileHandlers#Invoke() always returns 0 " netrwFileHandlers#Invoke() always returns 0
" call Decho("(netrw#BrowseX) use netrwFileHandlers",'~'.expand("<slnum>"))
let ret= netrwFileHandlers#Invoke(exten,fname) let ret= netrwFileHandlers#Invoke(exten,fname)
endif endif
" if unsuccessful, attempt netrwFileHandlers#Invoke() " if unsuccessful, attempt netrwFileHandlers#Invoke()
if ret if ret
" call Decho("(netrw#BrowseX) ret=".ret," indicates unsuccessful thus far",'~'.expand("<slnum>"))
let ret= netrwFileHandlers#Invoke(exten,fname) let ret= netrwFileHandlers#Invoke(exten,fname)
endif endif
@ -5416,8 +5440,9 @@ fun! netrw#BrowseX(fname,remote)
if g:netrw_use_noswf if g:netrw_use_noswf
setl noswf setl noswf
endif endif
if use_ctrlo
exe "sil! NetrwKeepj norm! \<c-o>" exe "sil! NetrwKeepj norm! \<c-o>"
" redraw! endif
endif endif
" call Decho("restoring posn to screenposn<".string(screenposn).">",'~'.expand("<slnum>")) " call Decho("restoring posn to screenposn<".string(screenposn).">",'~'.expand("<slnum>"))
call winrestview(screenposn) call winrestview(screenposn)
@ -5446,11 +5471,11 @@ endfun
" netrw#BrowseXVis: used by gx in visual mode to select a file for browsing {{{2 " netrw#BrowseXVis: used by gx in visual mode to select a file for browsing {{{2
fun! netrw#BrowseXVis() fun! netrw#BrowseXVis()
" call Dfunc("netrw#BrowseXVis()") " call Dfunc("netrw#BrowseXVis()")
let atkeep = @@ let akeep = @a
norm! gvy norm! gv"ay
" call Decho("@@<".@@.">",'~'.expand("<slnum>")) let gxfile= @a
call netrw#BrowseX(@@,netrw#CheckIfRemote(@@)) let @a = akeep
let @@ = atkeep call netrw#BrowseX(gxfile,netrw#CheckIfRemote(gxfile))
" call Dret("netrw#BrowseXVis") " call Dret("netrw#BrowseXVis")
endfun endfun
@ -6070,13 +6095,12 @@ fun! s:NetrwSLeftrelease(islocal)
endfun endfun
" --------------------------------------------------------------------- " ---------------------------------------------------------------------
" s:NetrwListHide: uses [range]g~...~d to delete files that match comma {{{2 " s:NetrwListHide: uses [range]g~...~d to delete files that match {{{2
" separated patterns given in g:netrw_list_hide " comma-separated patterns given in g:netrw_list_hide
fun! s:NetrwListHide() fun! s:NetrwListHide()
" call Dfunc("s:NetrwListHide() g:netrw_hide=".g:netrw_hide." g:netrw_list_hide<".g:netrw_list_hide.">") " call Dfunc("s:NetrwListHide() g:netrw_hide=".g:netrw_hide." g:netrw_list_hide<".g:netrw_list_hide.">")
" call Decho("initial: ".string(getline(w:netrw_bannercnt,'$'))) " call Decho("initial: ".string(getline(w:netrw_bannercnt,'$')))
let ykeep= @@ let ykeep= @@
" call DechoBuf(bufnr("%"),"COMBAK#3")
" find a character not in the "hide" string to use as a separator for :g and :v commands " find a character not in the "hide" string to use as a separator for :g and :v commands
" How-it-works: take the hiding command, convert it into a range. " How-it-works: take the hiding command, convert it into a range.
@ -6085,8 +6109,8 @@ fun! s:NetrwListHide()
" Use the first character left as a separator character. " Use the first character left as a separator character.
" call Decho("find a character not in the hide string to use as a separator") " call Decho("find a character not in the hide string to use as a separator")
let listhide= g:netrw_list_hide let listhide= g:netrw_list_hide
let sep = strpart(substitute('/~@#$%^&*{};:,<.>?|1234567890','['.escape(listhide,'-]^\').']','','ge'),1,1) let sep = strpart(substitute('~@#$%^&*{};:,<.>?|1234567890','['.escape(listhide,'-]^\').']','','ge'),1,1)
" call Decho("sep=".sep,'~'.expand("<slnum>")) " call Decho("sep=".sep," (sep not in hide string)'~'.expand("<slnum>"))
while listhide != "" while listhide != ""
if listhide =~ ',' if listhide =~ ','
@ -6096,10 +6120,19 @@ fun! s:NetrwListHide()
let hide = listhide let hide = listhide
let listhide = "" let listhide = ""
endif endif
" call Decho("hide<".hide."> listhide<".listhide.'>','~'.expand("<slnum>")) " call Decho("..extracted from listhide: hide<".hide."> g:netrw_sort_by<".g:netrw_sort_by.'>','~'.expand("<slnum>"))
if g:netrw_sort_by =~ '^[ts]'
if hide =~ '^\^'
" call Decho("..modify hide to handle a \"^...\" pattern",'~'.expand("<slnum>"))
let hide= substitute(hide,'^\^','^\(\\d\\+/\)','')
elseif hide =~ '^\\(\^'
let hide= substitute(hide,'^\\(\^','\\(^\\(\\d\\+/\\)','')
endif
" call Decho("..hide<".hide."> listhide<".listhide.'>','~'.expand("<slnum>"))
endif
" Prune the list by hiding any files which match " Prune the list by hiding any files which match
" call Decho("prune the list by hiding any files which ",((g:netrw_hide == 1)? "" : "don't")." match hide<".hide.">") " call Decho("..prune the list by hiding any files which ",((g:netrw_hide == 1)? "" : "don't")." match hide<".hide.">")
if g:netrw_hide == 1 if g:netrw_hide == 1
" call Decho("..hiding<".hide.">",'~'.expand("<slnum>")) " call Decho("..hiding<".hide.">",'~'.expand("<slnum>"))
exe 'sil! NetrwKeepj '.w:netrw_bannercnt.',$g'.sep.hide.sep.'d' exe 'sil! NetrwKeepj '.w:netrw_bannercnt.',$g'.sep.hide.sep.'d'
@ -6120,7 +6153,6 @@ fun! s:NetrwListHide()
" remove any blank lines that have somehow remained. " remove any blank lines that have somehow remained.
" This seems to happen under Windows. " This seems to happen under Windows.
exe 'sil! NetrwKeepj 1,$g@^\s*$@d' exe 'sil! NetrwKeepj 1,$g@^\s*$@d'
" call DechoBuf(bufnr("%"),"COMBAK#4")
let @@= ykeep let @@= ykeep
" call Dret("s:NetrwListHide") " call Dret("s:NetrwListHide")
@ -6645,9 +6677,9 @@ fun! s:NetrwMarkFiles(islocal,...)
while i <= a:0 while i <= a:0
if a:islocal if a:islocal
if v:version > 704 || (v:version == 704 && has("patch656")) if v:version > 704 || (v:version == 704 && has("patch656"))
let mffiles= glob(fnameescape(a:{i}),0,1,1) let mffiles= glob(a:{i},0,1,1)
else else
let mffiles= glob(fnameescape(a:{i}),0,1) let mffiles= glob(a:{i},0,1)
endif endif
else else
let mffiles= [a:{i}] let mffiles= [a:{i}]
@ -6788,13 +6820,15 @@ fun! s:NetrwMarkFile(islocal,fname)
if index(s:netrwmarkfilelist,dname) == -1 if index(s:netrwmarkfilelist,dname) == -1
" append new filename to global markfilelist " append new filename to global markfilelist
call add(s:netrwmarkfilelist,s:ComposePath(b:netrw_curdir,a:fname)) call add(s:netrwmarkfilelist,s:ComposePath(b:netrw_curdir,a:fname))
" call Decho("append filename<".a:fname."> to global markfilelist<".string(s:netrwmarkfilelist).">",'~'.expand("<slnum>")) " call Decho("append filename<".a:fname."> to global s:markfilelist<".string(s:netrwmarkfilelist).">",'~'.expand("<slnum>"))
else else
" remove new filename from global markfilelist " remove new filename from global markfilelist
" call Decho("filter(".string(s:netrwmarkfilelist).",'v:val != '.".dname.")",'~'.expand("<slnum>")) " call Decho("remove new filename from global s:markfilelist",'~'.expand("<slnum>"))
" call Decho("..filter(".string(s:netrwmarkfilelist).",'v:val != '.".dname.")",'~'.expand("<slnum>"))
call filter(s:netrwmarkfilelist,'v:val != "'.dname.'"') call filter(s:netrwmarkfilelist,'v:val != "'.dname.'"')
" call Decho("ending s:netrwmarkfilelist <".string(s:netrwmarkfilelist).">",'~'.expand("<slnum>")) " call Decho("..ending s:netrwmarkfilelist <".string(s:netrwmarkfilelist).">",'~'.expand("<slnum>"))
if s:netrwmarkfilelist == [] if s:netrwmarkfilelist == []
" call Decho("s:netrwmarkfilelist is empty; unlet it",'~'.expand("<slnum>"))
unlet s:netrwmarkfilelist unlet s:netrwmarkfilelist
endif endif
endif endif
@ -6818,7 +6852,8 @@ fun! s:NetrwMarkFile(islocal,fname)
endif endif
endif endif
let @@= ykeep let @@= ykeep
" call Dret("s:NetrwMarkFile : s:netrwmarkfilelist_".curbufnr."<".(exists("s:netrwmarkfilelist_{curbufnr}")? string(s:netrwmarkfilelist_{curbufnr}) : " doesn't exist").">") " call Decho("s:netrwmarkfilelist[".(exists("s:netrwmarkfilelist")? string(s:netrwmarkfilelist) : "")."] (avail in all buffers)",'~'.expand("<slnum>"))
" call Dret("s:NetrwMarkFile : s:netrwmarkfilelist_".curbufnr."<".(exists("s:netrwmarkfilelist_{curbufnr}")? string(s:netrwmarkfilelist_{curbufnr}) : " doesn't exist")."> (buf#".curbufnr."list)")
endfun endfun
" --------------------------------------------------------------------- " ---------------------------------------------------------------------
@ -7109,18 +7144,9 @@ fun! s:NetrwMarkFileCopy(islocal,...)
" call Dret("s:NetrwMarkFileCopy : lcd failure") " call Dret("s:NetrwMarkFileCopy : lcd failure")
return return
endif 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") if delete(tmpdir,"d")
call netrw#ErrorMsg(s:ERROR,"unable to delete directory <".tmpdir.">!",103) call netrw#ErrorMsg(s:ERROR,"unable to delete directory <".tmpdir.">!",103)
endif endif
endif
else else
if s:NetrwLcd(curdir) if s:NetrwLcd(curdir)
" call Dret("s:NetrwMarkFileCopy : lcd failure") " call Dret("s:NetrwMarkFileCopy : lcd failure")
@ -7573,8 +7599,9 @@ fun! s:NetrwMarkFileGrep(islocal)
let curdir = s:NetrwGetCurdir(a:islocal) let curdir = s:NetrwGetCurdir(a:islocal)
if exists("s:netrwmarkfilelist") if exists("s:netrwmarkfilelist")
" call Decho("s:netrwmarkfilelist".string(s:netrwmarkfilelist).">",'~'.expand("<slnum>")) " call Decho("using s:netrwmarkfilelist".string(s:netrwmarkfilelist).">",'~'.expand("<slnum>"))
let netrwmarkfilelist= join(map(deepcopy(s:netrwmarkfilelist), "fnameescape(v:val)")) let netrwmarkfilelist= join(map(deepcopy(s:netrwmarkfilelist), "fnameescape(v:val)"))
" call Decho("keeping copy of s:netrwmarkfilelist in function-local variable,'~'.expand("<slnum>"))"
call s:NetrwUnmarkAll() call s:NetrwUnmarkAll()
else else
" call Decho('no marked files, using "*"','~'.expand("<slnum>")) " call Decho('no marked files, using "*"','~'.expand("<slnum>"))
@ -7582,6 +7609,7 @@ fun! s:NetrwMarkFileGrep(islocal)
endif endif
" ask user for pattern " ask user for pattern
" call Decho("ask user for search pattern",'~'.expand("<slnum>"))
call inputsave() call inputsave()
let pat= input("Enter pattern: ","") let pat= input("Enter pattern: ","")
call inputrestore() call inputrestore()
@ -8694,7 +8722,7 @@ fun! s:NetrwUpload(fname,tgt,...)
" -i : turns off interactive prompting from ftp " -i : turns off interactive prompting from ftp
" -n unix : DON'T use <.netrc>, even though it exists " -n unix : DON'T use <.netrc>, even though it exists
" -n win32: quit being obnoxious about password " -n win32: quit being obnoxious about password
NetrwKeepj norm! 1Gdd NetrwKeepj norm! 1G"_dd
call s:NetrwExe(s:netrw_silentxfer."%!".s:netrw_ftp_cmd." ".g:netrw_ftp_options) call s:NetrwExe(s:netrw_silentxfer."%!".s:netrw_ftp_cmd." ".g:netrw_ftp_options)
" If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar) " If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar)
sil NetrwKeepj g/Local directory now/d sil NetrwKeepj g/Local directory now/d
@ -9532,15 +9560,19 @@ fun! s:NetrwWideListing()
" fpl: filenames per line " fpl: filenames per line
" fpc: filenames per column " fpc: filenames per column
setl ma noro setl ma noro
let keepa= @a
" call Decho("setl ma noro",'~'.expand("<slnum>")) " call Decho("setl ma noro",'~'.expand("<slnum>"))
let b:netrw_cpf= 0 let b:netrw_cpf= 0
if line("$") >= w:netrw_bannercnt 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' exe 'sil NetrwKeepj '.w:netrw_bannercnt.',$g/^./if virtcol("$") > b:netrw_cpf|let b:netrw_cpf= virtcol("$")|endif'
NetrwKeepj call histdel("/",-1) NetrwKeepj call histdel("/",-1)
else else
let @a= keepa
" call Dret("NetrwWideListing") " call Dret("NetrwWideListing")
return return
endif endif
" allow for two spaces to separate columns
let b:netrw_cpf= b:netrw_cpf + 2 let b:netrw_cpf= b:netrw_cpf + 2
" call Decho("b:netrw_cpf=max_filename_length+2=".b:netrw_cpf,'~'.expand("<slnum>")) " call Decho("b:netrw_cpf=max_filename_length+2=".b:netrw_cpf,'~'.expand("<slnum>"))
@ -9560,6 +9592,7 @@ fun! s:NetrwWideListing()
let newcolend = newcolstart + fpc - 1 let newcolend = newcolstart + fpc - 1
" call Decho("bannercnt=".w:netrw_bannercnt." fpl=".w:netrw_fpl." fpc=".fpc." newcol[".newcolstart.",".newcolend."]",'~'.expand("<slnum>")) " call Decho("bannercnt=".w:netrw_bannercnt." fpl=".w:netrw_fpl." fpc=".fpc." newcol[".newcolstart.",".newcolend."]",'~'.expand("<slnum>"))
if has("clipboard") if has("clipboard")
" call Decho("(s:NetrwWideListing) save @* and @+",'~'.expand("<slnum>"))
sil! let keepregstar = @* sil! let keepregstar = @*
sil! let keepregplus = @+ sil! let keepregplus = @+
endif endif
@ -9567,17 +9600,19 @@ fun! s:NetrwWideListing()
if newcolend > line("$") | let newcolend= line("$") | endif if newcolend > line("$") | let newcolend= line("$") | endif
let newcolqty= newcolend - newcolstart let newcolqty= newcolend - newcolstart
exe newcolstart exe newcolstart
" COMBAK: both of the visual-mode using lines below are problematic vis-a-vis @*
if newcolqty == 0 if newcolqty == 0
exe "sil! NetrwKeepj norm! 0\<c-v>$hx".w:netrw_bannercnt."G$p" exe "sil! NetrwKeepj norm! 0\<c-v>$h\"ax".w:netrw_bannercnt."G$\"ap"
else else
exe "sil! NetrwKeepj norm! 0\<c-v>".newcolqty.'j$hx'.w:netrw_bannercnt.'G$p' exe "sil! NetrwKeepj norm! 0\<c-v>".newcolqty.'j$h"ax'.w:netrw_bannercnt.'G$"ap'
endif endif
exe "sil! NetrwKeepj ".newcolstart.','.newcolend.'d _' exe "sil! NetrwKeepj ".newcolstart.','.newcolend.'d _'
exe 'sil! NetrwKeepj '.w:netrw_bannercnt exe 'sil! NetrwKeepj '.w:netrw_bannercnt
endwhile endwhile
if has("clipboard") if has("clipboard")
sil! let @*= keepregstar " call Decho("(s:NetrwWideListing) restore @* and @+",'~'.expand("<slnum>"))
sil! let @+= keepregplus if @* != keepregstar | sil! let @* = keepregstar | endif
if @+ != keepregplus | sil! let @+ = keepregplus | endif
endif endif
exe "sil! NetrwKeepj ".w:netrw_bannercnt.',$s/\s\+$//e' exe "sil! NetrwKeepj ".w:netrw_bannercnt.',$s/\s\+$//e'
NetrwKeepj call histdel("/",-1) NetrwKeepj call histdel("/",-1)
@ -9585,6 +9620,7 @@ fun! s:NetrwWideListing()
exe 'nno <buffer> <silent> b :call search(''^.\\|\s\s\zs\S'',''bW'')'."\<cr>" exe 'nno <buffer> <silent> b :call search(''^.\\|\s\s\zs\S'',''bW'')'."\<cr>"
" call Decho("NetrwWideListing) setl noma nomod ro",'~'.expand("<slnum>")) " call Decho("NetrwWideListing) setl noma nomod ro",'~'.expand("<slnum>"))
exe "setl ".g:netrw_bufsettings exe "setl ".g:netrw_bufsettings
let @a= keepa
" call Decho("ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("<slnum>")) " call Decho("ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("<slnum>"))
" call Dret("NetrwWideListing") " call Dret("NetrwWideListing")
return return
@ -9782,6 +9818,7 @@ fun! s:PerformListing(islocal)
exe 'sil NetrwKeepj '.w:netrw_bannercnt.',$sort!'.' '.g:netrw_sort_options exe 'sil NetrwKeepj '.w:netrw_bannercnt.',$sort!'.' '.g:netrw_sort_options
endif endif
endif endif
" remove priority pattern prefix " remove priority pattern prefix
" call Decho("remove priority pattern prefix",'~'.expand("<slnum>")) " call Decho("remove priority pattern prefix",'~'.expand("<slnum>"))
exe 'sil! NetrwKeepj '.w:netrw_bannercnt.',$s/^\d\{3}'.g:netrw_sepchr.'//e' exe 'sil! NetrwKeepj '.w:netrw_bannercnt.',$s/^\d\{3}'.g:netrw_sepchr.'//e'
@ -9820,6 +9857,7 @@ fun! s:PerformListing(islocal)
" call Decho('exe sil NetrwKeepj '.w:netrw_bannercnt.',$sort!','~'.expand("<slnum>")) " call Decho('exe sil NetrwKeepj '.w:netrw_bannercnt.',$sort!','~'.expand("<slnum>"))
exe 'sil! NetrwKeepj '.w:netrw_bannercnt.',$sort!'.' '.g:netrw_sort_options exe 'sil! NetrwKeepj '.w:netrw_bannercnt.',$sort!'.' '.g:netrw_sort_options
endif endif
" call Decho("remove leading digits/ (sorting) information from listing",'~'.expand("<slnum>"))
exe 'sil! NetrwKeepj '.w:netrw_bannercnt.',$s/^\d\{-}\///e' exe 'sil! NetrwKeepj '.w:netrw_bannercnt.',$s/^\d\{-}\///e'
NetrwKeepj call histdel("/",-1) NetrwKeepj call histdel("/",-1)
endif endif
@ -9882,6 +9920,7 @@ fun! s:PerformListing(islocal)
" call Decho("exe setl ts=".(g:netrw_maxfilenamelen+1),'~'.expand("<slnum>")) " call Decho("exe setl ts=".(g:netrw_maxfilenamelen+1),'~'.expand("<slnum>"))
exe "setl ts=".(g:netrw_maxfilenamelen+1) exe "setl ts=".(g:netrw_maxfilenamelen+1)
endif endif
" call Decho("PerformListing buffer:",'~'.expand("<slnum>"))
" call DechoBuf(bufnr("%")) " call DechoBuf(bufnr("%"))
if exists("s:treecurpos") if exists("s:treecurpos")
@ -10849,7 +10888,6 @@ fun! s:LocalListing()
for filename in filelist for filename in filelist
" call Decho(" ",'~'.expand("<slnum>")) " call Decho(" ",'~'.expand("<slnum>"))
" call Decho("for filename in filelist: filename<".filename.">",'~'.expand("<slnum>")) " call Decho("for filename in filelist: filename<".filename.">",'~'.expand("<slnum>"))
" call DechoBuf(bufnr("%"),"COMBAK#1")
if getftype(filename) == "link" if getftype(filename) == "link"
" indicate a symbolic link " indicate a symbolic link
@ -10907,10 +10945,10 @@ fun! s:LocalListing()
if w:netrw_liststyle == s:LONGLIST if w:netrw_liststyle == s:LONGLIST
let sz = getfsize(filename) let sz = getfsize(filename)
let fsz = strpart(" ",1,15-strlen(sz)).sz
if g:netrw_sizestyle =~# "[hH]" if g:netrw_sizestyle =~# "[hH]"
let sz= s:NetrwHumanReadable(sz) let sz= s:NetrwHumanReadable(sz)
endif endif
let fsz = strpart(" ",1,15-strlen(sz)).sz
let longfile= printf("%-".(g:netrw_maxfilenamelen+1)."s",pfile) let longfile= printf("%-".(g:netrw_maxfilenamelen+1)."s",pfile)
let pfile = longfile.fsz." ".strftime(g:netrw_timefmt,getftime(filename)) let pfile = longfile.fsz." ".strftime(g:netrw_timefmt,getftime(filename))
" call Decho("longlist support: sz=".sz." fsz=".fsz,'~'.expand("<slnum>")) " call Decho("longlist support: sz=".sz." fsz=".fsz,'~'.expand("<slnum>"))
@ -10918,10 +10956,11 @@ fun! s:LocalListing()
if g:netrw_sort_by =~# "^t" if g:netrw_sort_by =~# "^t"
" sort by time (handles time up to 1 quintillion seconds, US) " sort by time (handles time up to 1 quintillion seconds, US)
" Decorate listing by prepending a timestamp/ . Sorting will then be done based on time.
" call Decho("getftime(".filename.")=".getftime(filename),'~'.expand("<slnum>")) " call Decho("getftime(".filename.")=".getftime(filename),'~'.expand("<slnum>"))
let t = getftime(filename) let t = getftime(filename)
let ft = strpart("000000000000000000",1,18-strlen(t)).t let ft = strpart("000000000000000000",1,18-strlen(t)).t
" call Decho("exe NetrwKeepj put ='".ft.'/'.filename."'",'~'.expand("<slnum>")) " call Decho("exe NetrwKeepj put ='".ft.'/'.pfile."'",'~'.expand("<slnum>"))
let ftpfile= ft.'/'.pfile let ftpfile= ft.'/'.pfile
sil! NetrwKeepj put=ftpfile sil! NetrwKeepj put=ftpfile
@ -10942,7 +10981,7 @@ fun! s:LocalListing()
" call Decho("exe NetrwKeepj put ='".pfile."'",'~'.expand("<slnum>")) " call Decho("exe NetrwKeepj put ='".pfile."'",'~'.expand("<slnum>"))
sil! NetrwKeepj put=pfile sil! NetrwKeepj put=pfile
endif endif
" call DechoBuf(bufnr("%"),"COMBAK#2") " call DechoBuf(bufnr("%"),"bufnr(%)")
endfor endfor
" cleanup any windows mess at end-of-line " cleanup any windows mess at end-of-line
@ -10992,6 +11031,7 @@ fun! s:NetrwLocalRename(path) range
let ykeep = @@ let ykeep = @@
let ctr = a:firstline let ctr = a:firstline
let svpos = winsaveview() let svpos = winsaveview()
let all = 0
" call Decho("saving posn to svpos<".string(svpos).">",'~'.expand("<slnum>")) " call Decho("saving posn to svpos<".string(svpos).">",'~'.expand("<slnum>"))
" rename files given by the markfilelist " rename files given by the markfilelist
@ -11019,6 +11059,23 @@ fun! s:NetrwLocalRename(path) range
let newname = substitute(oldname,subfrom,subto,'') let newname = substitute(oldname,subfrom,subto,'')
endif endif
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) call rename(oldname,newname)
endfor endfor
call s:NetrwUnmarkList(bufnr("%"),b:netrw_curdir) call s:NetrwUnmarkList(bufnr("%"),b:netrw_curdir)
@ -11259,7 +11316,9 @@ fun! netrw#Expose(varname)
" call Dfunc("netrw#Expose(varname<".a:varname.">)") " call Dfunc("netrw#Expose(varname<".a:varname.">)")
if exists("s:".a:varname) if exists("s:".a:varname)
exe "let retval= s:".a:varname exe "let retval= s:".a:varname
" call Decho("retval=".retval,'~'.expand("<slnum>"))
if exists("g:netrw_pchk") if exists("g:netrw_pchk")
" call Decho("type(g:netrw_pchk=".g:netrw_pchk.")=".type(retval),'~'.expand("<slnum>"))
if type(retval) == 3 if type(retval) == 3
let retval = copy(retval) let retval = copy(retval)
let i = 0 let i = 0
@ -11268,10 +11327,13 @@ fun! netrw#Expose(varname)
let i = i + 1 let i = i + 1
endwhile endwhile
endif endif
" call Dret("netrw#Expose ".string(retval)) " call Dret("netrw#Expose ".string(retval)),'~'.expand("<slnum>"))
return string(retval) return string(retval)
else
" call Decho("g:netrw_pchk doesn't exist",'~'.expand("<slnum>"))
endif endif
else else
" call Decho("s:".a:varname." doesn't exist",'~'.expand("<slnum>"))
let retval= "n/a" let retval= "n/a"
endif endif
@ -11832,6 +11894,9 @@ fun! s:NetrwExe(cmd)
" call Decho("exe ".a:cmd,'~'.expand("<slnum>")) " call Decho("exe ".a:cmd,'~'.expand("<slnum>"))
exe a:cmd exe a:cmd
endif 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) " call Dret("s:NetrwExe : v:shell_error=".v:shell_error)
endfun endfun

View File

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

View File

@ -18,61 +18,5 @@
" holder be liable for any damages resulting from the use " holder be liable for any damages resulting from the use
" of this software. " of this software.
function! netrw_gitignore#Hide(...) function! netrw_gitignore#Hide(...)
let additional_files = a:000 return substitute(substitute(system('git ls-files --other --ignored --exclude-standard --directory'), '\n', ',', 'g'), ',$', '', '')
let default_files = ['.gitignore', '.git/info/exclude']
" get existing global/system gitignore files
let global_gitignore = expand(substitute(system("git config --global core.excludesfile"), '\n', '', 'g'))
if global_gitignore !=# ''
let default_files = add(default_files, global_gitignore)
endif
let system_gitignore = expand(substitute(system("git config --system core.excludesfile"), '\n', '', 'g'))
if system_gitignore !=# ''
let default_files = add(default_files, system_gitignore)
endif
" append additional files if given as function arguments
if additional_files !=# []
let files = extend(default_files, additional_files)
else
let files = default_files
endif
" keep only existing/readable files
let gitignore_files = []
for file in files
if filereadable(file)
let gitignore_files = add(gitignore_files, file)
endif
endfor
" get contents of gitignore patterns from those files
let gitignore_lines = []
for file in gitignore_files
for line in readfile(file)
" filter empty lines and comments
if line !~# '^#' && line !~# '^$'
let gitignore_lines = add(gitignore_lines, line)
endif
endfor
endfor
" convert gitignore patterns to Netrw/Vim regex patterns
let escaped_lines = []
for line in gitignore_lines
let escaped = line
let escaped = substitute(escaped, '\*\*', '*', 'g')
let escaped = substitute(escaped, '\.', '\\.', 'g')
let escaped = substitute(escaped, '\$', '\\$', 'g')
let escaped = substitute(escaped, '*', '.*', 'g')
" correction: dot, dollar and asterisks chars shouldn't be escaped when
" within regex matching groups.
let escaped = substitute(escaped, '\(\[[^]]*\)\zs\\\.', '\.', 'g')
let escaped = substitute(escaped, '\(\[[^]]*\)\zs\\\$', '\$', 'g')
let escaped = substitute(escaped, '\(\[[^]]*\)\zs\.\*', '*', 'g')
let escaped_lines = add(escaped_lines, escaped)
endfor
return join(escaped_lines, ',')
endfunction endfunction

View File

@ -3,7 +3,7 @@
" Maintainer: Mark Guzman <segfault@hasno.info> " Maintainer: Mark Guzman <segfault@hasno.info>
" URL: https://github.com/vim-ruby/vim-ruby " URL: https://github.com/vim-ruby/vim-ruby
" Release Coordinator: Doug Kearns <dougkearns@gmail.com> " Release Coordinator: Doug Kearns <dougkearns@gmail.com>
" Last Change: 2019 Jan 06 " Last Change: 2019 Feb 25
" ---------------------------------------------------------------------------- " ----------------------------------------------------------------------------
" "
" Ruby IRB/Complete author: Keiju ISHITSUKA(keiju@ishitsuka.com) " Ruby IRB/Complete author: Keiju ISHITSUKA(keiju@ishitsuka.com)
@ -53,6 +53,23 @@ if !exists("g:rubycomplete_include_objectspace")
endif endif
" }}} configuration failsafe initialization " }}} configuration failsafe initialization
" {{{ regex patterns
" Regex that defines the start-match for the 'end' keyword.
let s:end_start_regex =
\ '\C\%(^\s*\|[=,*/%+\-|;{]\|<<\|>>\|:\s\)\s*\zs' .
\ '\<\%(module\|class\|if\|for\|while\|until\|case\|unless\|begin' .
\ '\|\%(\K\k*[!?]\?\s\+\)\=def\):\@!\>' .
\ '\|\%(^\|[^.:@$]\)\@<=\<do:\@!\>'
" Regex that defines the middle-match for the 'end' keyword.
let s:end_middle_regex = '\<\%(ensure\|else\|\%(\%(^\|;\)\s*\)\@<=\<rescue:\@!\>\|when\|elsif\):\@!\>'
" Regex that defines the end-match for the 'end' keyword.
let s:end_end_regex = '\%(^\|[^.:@$]\)\@<=\<end:\@!\>'
" }}} regex patterns
" {{{ vim-side support functions " {{{ vim-side support functions
let s:rubycomplete_debug = 0 let s:rubycomplete_debug = 0
@ -103,7 +120,7 @@ function! s:GetBufferRubyEntity( name, type, ... )
endif endif
let curpos = getpos(".") let curpos = getpos(".")
let [enum,ecol] = searchpairpos( crex, '', '\(end\|}\)', 'W' ) let [enum,ecol] = searchpairpos( s:end_start_regex, s:end_middle_regex, s:end_end_regex, 'W' )
call cursor(lastpos[1], lastpos[2]) call cursor(lastpos[1], lastpos[2])
if lnum > enum if lnum > enum
@ -128,19 +145,28 @@ function! s:IsPosInClassDef(pos)
return ret return ret
endfunction endfunction
function! s:IsInComment(pos)
let stack = synstack(a:pos[0], a:pos[1])
if !empty(stack)
return synIDattr(stack[0], 'name') =~ 'ruby\%(.*Comment\|Documentation\)'
else
return 0
endif
endfunction
function! s:GetRubyVarType(v) function! s:GetRubyVarType(v)
let stopline = 1 let stopline = 1
let vtp = '' let vtp = ''
let pos = getpos('.') let curpos = getpos('.')
let sstr = '^\s*#\s*@var\s*'.escape(a:v, '*').'\>\s\+[^ \t]\+\s*$' let sstr = '^\s*#\s*@var\s*'.escape(a:v, '*').'\>\s\+[^ \t]\+\s*$'
let [lnum,lcol] = searchpos(sstr,'nb',stopline) let [lnum,lcol] = searchpos(sstr,'nb',stopline)
if lnum != 0 && lcol != 0 if lnum != 0 && lcol != 0
call setpos('.',pos) call setpos('.',curpos)
let str = getline(lnum) let str = getline(lnum)
let vtp = substitute(str,sstr,'\1','') let vtp = substitute(str,sstr,'\1','')
return vtp return vtp
endif endif
call setpos('.',pos) call setpos('.',curpos)
let ctors = '\(now\|new\|open\|get_instance' let ctors = '\(now\|new\|open\|get_instance'
if exists('g:rubycomplete_rails') && g:rubycomplete_rails == 1 && s:rubycomplete_rails_loaded == 1 if exists('g:rubycomplete_rails') && g:rubycomplete_rails == 1 && s:rubycomplete_rails_loaded == 1
let ctors = ctors.'\|find\|create' let ctors = ctors.'\|find\|create'
@ -150,9 +176,13 @@ function! s:GetRubyVarType(v)
let fstr = '=\s*\([^ \t]\+.' . ctors .'\>\|[\[{"''/]\|%[xwQqr][(\[{@]\|[A-Za-z0-9@:\-()\.]\+...\?\|lambda\|&\)' let fstr = '=\s*\([^ \t]\+.' . ctors .'\>\|[\[{"''/]\|%[xwQqr][(\[{@]\|[A-Za-z0-9@:\-()\.]\+...\?\|lambda\|&\)'
let sstr = ''.escape(a:v, '*').'\>\s*[+\-*/]*'.fstr let sstr = ''.escape(a:v, '*').'\>\s*[+\-*/]*'.fstr
let [lnum,lcol] = searchpos(sstr,'nb',stopline) let pos = searchpos(sstr,'bW')
if lnum != 0 && lcol != 0 while pos != [0,0] && s:IsInComment(pos)
let str = matchstr(getline(lnum),fstr,lcol) let pos = searchpos(sstr,'bW')
endwhile
if pos != [0,0]
let [lnum, col] = pos
let str = matchstr(getline(lnum),fstr,col)
let str = substitute(str,'^=\s*','','') let str = substitute(str,'^=\s*','','')
call setpos('.',pos) call setpos('.',pos)
@ -174,7 +204,7 @@ function! s:GetRubyVarType(v)
end end
return '' return ''
endif endif
call setpos('.',pos) call setpos('.',curpos)
return '' return ''
endfunction endfunction
@ -671,11 +701,10 @@ class VimRubyCompletion
methods.delete_if { |c| c.match( /'/ ) } methods.delete_if { |c| c.match( /'/ ) }
end end
when /^::([A-Z][^:\.\(]*)$/ # Absolute Constant or class methods when /^::([A-Z][^:\.\(]*)?$/ # Absolute Constant or class methods
dprint "const or cls" dprint "const or cls"
receiver = $1 receiver = $1
methods = Object.constants methods = Object.constants.collect{ |c| c.to_s }.grep(/^#{receiver}/)
methods.grep(/^#{receiver}/).collect{|e| "::" + e}
when /^(((::)?[A-Z][^:.\(]*)+?)::?([^:.]*)$/ # Constant or class methods when /^(((::)?[A-Z][^:.\(]*)+?)::?([^:.]*)$/ # Constant or class methods
receiver = $1 receiver = $1
@ -684,13 +713,13 @@ class VimRubyCompletion
load_buffer_class( receiver ) load_buffer_class( receiver )
load_buffer_module( receiver ) load_buffer_module( receiver )
begin begin
classes = eval("#{receiver}.constants") constants = eval("#{receiver}.constants").collect{ |c| c.to_s }.grep(/^#{message}/)
#methods = eval("#{receiver}.methods") methods = eval("#{receiver}.methods").collect{ |m| m.to_s }.grep(/^#{message}/)
rescue Exception rescue Exception
dprint "exception: %s" % $! dprint "exception: %s" % $!
constants = []
methods = [] methods = []
end end
methods.grep(/^#{message}/).collect{|e| receiver + "::" + e}
when /^(:[^:.]+)\.([^.]*)$/ # Symbol when /^(:[^:.]+)\.([^.]*)$/ # Symbol
dprint "symbol" dprint "symbol"

View File

@ -1,13 +1,13 @@
" tar.vim: Handles browsing tarfiles " tar.vim: Handles browsing tarfiles
" AUTOLOAD PORTION " AUTOLOAD PORTION
" Date: Apr 17, 2013 " Date: Jan 07, 2020
" Version: 29 " Version: 32
" Maintainer: Charles E Campbell <NdrOchip@ScampbellPfamily.AbizM-NOSPAM> " Maintainer: Charles E Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
" License: Vim License (see vim's :help license) " License: Vim License (see vim's :help license)
" "
" Contains many ideas from Michael Toren's <tar.vim> " 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, " Permission is hereby granted to use and distribute this code,
" with or without modifications, provided that this copyright " with or without modifications, provided that this copyright
" notice is copied with it. Like anything else that's free, " notice is copied with it. Like anything else that's free,
@ -22,7 +22,7 @@
if &cp || exists("g:loaded_tar") if &cp || exists("g:loaded_tar")
finish finish
endif endif
let g:loaded_tar= "v29" let g:loaded_tar= "v32"
if v:version < 702 if v:version < 702
echohl WarningMsg echohl WarningMsg
echo "***warning*** this version of tar needs vim 7.2" echo "***warning*** this version of tar needs vim 7.2"
@ -48,6 +48,9 @@ endif
if !exists("g:tar_writeoptions") if !exists("g:tar_writeoptions")
let g:tar_writeoptions= "uf" let g:tar_writeoptions= "uf"
endif endif
if !exists("g:tar_delfile")
let g:tar_delfile="--delete -f"
endif
if !exists("g:netrw_cygwin") if !exists("g:netrw_cygwin")
if has("win32") || has("win95") || has("win64") || has("win16") if has("win32") || has("win95") || has("win64") || has("win16")
if &shell =~ '\%(\<bash\>\|\<zsh\>\)\%(\.exe\)\=$' if &shell =~ '\%(\<bash\>\|\<zsh\>\)\%(\.exe\)\=$'
@ -109,6 +112,7 @@ fun! tar#Browse(tarfile)
" sanity checks " sanity checks
if !executable(g:tar_cmd) if !executable(g:tar_cmd)
redraw! 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' echohl Error | echo '***error*** (tar#Browse) "'.g:tar_cmd.'" not available on your system'
let &report= repkeep let &report= repkeep
" call Dret("tar#Browse") " call Dret("tar#Browse")
@ -119,6 +123,7 @@ fun! tar#Browse(tarfile)
if a:tarfile !~# '^\a\+://' if a:tarfile !~# '^\a\+://'
" if it's an url, don't complain, let url-handlers such as vim do its thing " if it's an url, don't complain, let url-handlers such as vim do its thing
redraw! redraw!
" call Decho("***error*** (tar#Browse) File not readable<".a:tarfile.">")
echohl Error | echo "***error*** (tar#Browse) File not readable<".a:tarfile.">" | echohl None echohl Error | echo "***error*** (tar#Browse) File not readable<".a:tarfile.">" | echohl None
endif endif
let &report= repkeep let &report= repkeep
@ -152,12 +157,27 @@ fun! tar#Browse(tarfile)
" assuming cygwin " assuming cygwin
let tarfile=substitute(system("cygpath -u ".shellescape(tarfile,0)),'\n$','','e') let tarfile=substitute(system("cygpath -u ".shellescape(tarfile,0)),'\n$','','e')
endif endif
let curlast= line("$") 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." - ") " 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' elseif tarfile =~# '\.lrp'
" call Decho("2: exe silent r! cat -- ".shellescape(tarfile,1)."|gzip -d -c -|".g:tar_cmd." -".g:tar_browseoptions." - ") " 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." - " 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.">") " call Dret("tar#Browse : a:tarfile<".a:tarfile.">")
return return
endif 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! redraw!
echohl WarningMsg | echo "***warning*** (tar#Browse) ".a:tarfile." doesn't appear to be a tar file" | echohl None echohl WarningMsg | echo "***warning*** (tar#Browse) ".a:tarfile." doesn't appear to be a tar file" | echohl None
keepj sil! %d keepj sil! %d
@ -197,8 +217,13 @@ fun! tar#Browse(tarfile)
return return
endif endif
" set up maps supported for tar
setlocal noma nomod ro 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 let &report= repkeep
" call Dret("tar#Browse : b:tarfile<".b:tarfile.">") " 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') let tarfile=substitute(system("cygpath -u ".shellescape(tarfile,0)),'\n$','','e')
endif 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 if !exists("g:tar_nomax") || g:tar_nomax == 0
wincmd _ wincmd _
endif endif
@ -267,7 +293,7 @@ fun! tar#Read(fname,mode)
if fname =~ '\.bz2$' && executable("bzcat") if fname =~ '\.bz2$' && executable("bzcat")
let decmp= "|bzcat" let decmp= "|bzcat"
let doro = 1 let doro = 1
elseif fname =~ '\.gz$' && executable("zcat") elseif fname =~ '\.t\=gz$' && executable("zcat")
let decmp= "|zcat" let decmp= "|zcat"
let doro = 1 let doro = 1
elseif fname =~ '\.lzma$' && executable("lzcat") elseif fname =~ '\.lzma$' && executable("lzcat")
@ -291,20 +317,29 @@ fun! tar#Read(fname,mode)
endif endif
if tarfile =~# '\.bz2$' 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 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\)$' elseif tarfile =~# '\.\(gz\)$'
let gzip_command = s:get_gzip_command(tarfile) exe "sil! r! gzip -d -c -- ".shellescape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp
" 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 =~# '\(\.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$' 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 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$' 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 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\)$' 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 exe "sil! r! xz --decompress --stdout -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp
else else
if tarfile =~ '^\s*-' if tarfile =~ '^\s*-'
@ -348,13 +383,14 @@ fun! tar#Write(fname)
" sanity checks " sanity checks
if !executable(g:tar_cmd) if !executable(g:tar_cmd)
redraw! 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 let &report= repkeep
" call Dret("tar#Write") " call Dret("tar#Write")
return return
endif endif
if !exists("*mkdir") if !exists("*mkdir")
redraw! 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 echohl Error | echo "***error*** (tar#Write) sorry, mkdir() doesn't work on your system" | echohl None
let &report= repkeep let &report= repkeep
" call Dret("tar#Write") " call Dret("tar#Write")
@ -375,6 +411,7 @@ fun! tar#Write(fname)
exe "cd ".fnameescape(tmpdir) exe "cd ".fnameescape(tmpdir)
catch /^Vim\%((\a\+)\)\=:E344/ catch /^Vim\%((\a\+)\)\=:E344/
redraw! redraw!
" call Decho("***error*** (tar#Write) cannot cd to temporary directory")
echohl Error | echo "***error*** (tar#Write) cannot cd to temporary directory" | Echohl None echohl Error | echo "***error*** (tar#Write) cannot cd to temporary directory" | Echohl None
let &report= repkeep let &report= repkeep
" call Dret("tar#Write") " call Dret("tar#Write")
@ -393,8 +430,6 @@ fun! tar#Write(fname)
let tarfile = substitute(b:tarfile,'tarfile:\(.\{-}\)::.*$','\1','') let tarfile = substitute(b:tarfile,'tarfile:\(.\{-}\)::.*$','\1','')
let fname = substitute(b:tarfile,'tarfile:.\{-}::\(.*\)$','\1','') let fname = substitute(b:tarfile,'tarfile:.\{-}::\(.*\)$','\1','')
let gzip_command = s:get_gzip_command(tarfile)
" handle compressed archives " handle compressed archives
if tarfile =~# '\.bz2' if tarfile =~# '\.bz2'
call system("bzip2 -d -- ".shellescape(tarfile,0)) call system("bzip2 -d -- ".shellescape(tarfile,0))
@ -402,12 +437,12 @@ fun! tar#Write(fname)
let compress= "bzip2 -- ".shellescape(tarfile,0) let compress= "bzip2 -- ".shellescape(tarfile,0)
" call Decho("compress<".compress.">") " call Decho("compress<".compress.">")
elseif tarfile =~# '\.gz' 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 tarfile = substitute(tarfile,'\.gz','','e')
let compress= "gzip -- ".shellescape(tarfile,0) let compress= "gzip -- ".shellescape(tarfile,0)
" call Decho("compress<".compress.">") " call Decho("compress<".compress.">")
elseif tarfile =~# '\.tgz' 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 tarfile = substitute(tarfile,'\.tgz','.tar','e')
let compress= "gzip -- ".shellescape(tarfile,0) let compress= "gzip -- ".shellescape(tarfile,0)
let tgz = 1 let tgz = 1
@ -427,6 +462,7 @@ fun! tar#Write(fname)
if v:shell_error != 0 if v:shell_error != 0
redraw! 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 echohl Error | echo "***error*** (tar#Write) sorry, unable to update ".tarfile." with ".fname | echohl None
else else
@ -459,10 +495,11 @@ fun! tar#Write(fname)
endif endif
" delete old file from tarfile " delete old file from tarfile
" call Decho("system(".g:tar_cmd." --delete -f ".shellescape(tarfile,0)." -- ".shellescape(fname,0).")") " call Decho("system(".g:tar_cmd." ".g:tar_delfile." ".shellescape(tarfile,0)." -- ".shellescape(fname,0).")")
call system(g:tar_cmd." --delete -f ".shellescape(tarfile,0).tar_secure.shellescape(fname,0)) call system(g:tar_cmd." ".g:tar_delfile." ".shellescape(tarfile,0).tar_secure.shellescape(fname,0))
if v:shell_error != 0 if v:shell_error != 0
redraw! 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 echohl Error | echo "***error*** (tar#Write) sorry, unable to update ".fnameescape(tarfile)." with ".fnameescape(fname) | echohl None
else 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)) call system(g:tar_cmd." -".g:tar_writeoptions." ".shellescape(tarfile,0).tar_secure.shellescape(fname,0))
if v:shell_error != 0 if v:shell_error != 0
redraw! 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 echohl Error | echo "***error*** (tar#Write) sorry, unable to update ".fnameescape(tarfile)." with ".fnameescape(fname) | echohl None
elseif exists("compress") elseif exists("compress")
" call Decho("call system(".compress.")") " call Decho("call system(".compress.")")
@ -486,11 +524,11 @@ fun! tar#Write(fname)
if s:tblfile_{winnr()} =~ '^\a\+://' if s:tblfile_{winnr()} =~ '^\a\+://'
" call Decho("handle writing <".tarfile."> across network to <".s:tblfile_{winnr()}.">") " call Decho("handle writing <".tarfile."> across network to <".s:tblfile_{winnr()}.">")
let tblfile= s:tblfile_{winnr()} let tblfile= s:tblfile_{winnr()}
1split|enew 1split|noswapfile enew
let binkeep= &l:binary let binkeep= &l:binary
let eikeep = &ei let eikeep = &ei
set binary ei=all set binary ei=all
exe "e! ".fnameescape(tarfile) exe "noswapfile e! ".fnameescape(tarfile)
call netrw#NetWrite(tblfile) call netrw#NetWrite(tblfile)
let &ei = eikeep let &ei = eikeep
let &l:binary = binkeep 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) " sets up b:tardiff_otherbuf variables so each buffer knows about the other (for closing purposes)
diffthis diffthis
wincmd v wincmd v
exe "e ".fnameescape(fname) exe "noswapfile e ".fnameescape(fname)
diffthis diffthis
else else
redraw! redraw!
@ -533,6 +571,119 @@ fun! tar#Diff(userfname,fname)
" call Dret("tar#Diff") " call Dret("tar#Diff")
endfun 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 " s:Rmdir: {{{2
fun! s:Rmdir(fname) fun! s:Rmdir(fname)
@ -587,10 +738,7 @@ fun! tar#Vimuntar(...)
" if necessary, decompress the tarball; then, extract it " if necessary, decompress the tarball; then, extract it
if tartail =~ '\.tgz' if tartail =~ '\.tgz'
let gzip_command = s:get_gzip_command(tarfile) if executable("gunzip")
if executable(gzip_command)
silent exe "!" . gzip_command . " -d ".shellescape(tartail)
elseif executable("gunzip")
silent exe "!gunzip ".shellescape(tartail) silent exe "!gunzip ".shellescape(tartail)
elseif executable("gzip") elseif executable("gzip")
silent exe "!gzip -d ".shellescape(tartail) silent exe "!gzip -d ".shellescape(tartail)
@ -628,28 +776,6 @@ fun! tar#Vimuntar(...)
" call Dret("tar#Vimuntar") " call Dret("tar#Vimuntar")
endfun 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 " Modelines And Restoration: {{{1
let &cpo= s:keepcpo let &cpo= s:keepcpo

View File

@ -1,6 +1,6 @@
" Vim autoload file for the tohtml plugin. " Vim autoload file for the tohtml plugin.
" Maintainer: Ben Fritz <fritzophrenic@gmail.com> " Maintainer: Ben Fritz <fritzophrenic@gmail.com>
" Last Change: 2018 Nov 11 " Last Change: 2019 Aug 16
" "
" Additional contributors: " Additional contributors:
" "
@ -364,6 +364,7 @@ func! tohtml#Diff2HTML(win_list, buf_list) "{{{
let body_line = '' let body_line = ''
let html = [] let html = []
let s:html5 = 0
if s:settings.use_xhtml if s:settings.use_xhtml
call add(html, xml_line) call add(html, xml_line)
endif endif
@ -371,8 +372,9 @@ func! tohtml#Diff2HTML(win_list, buf_list) "{{{
call add(html, "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">") call add(html, "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">")
call add(html, '<html xmlns="http://www.w3.org/1999/xhtml">') call add(html, '<html xmlns="http://www.w3.org/1999/xhtml">')
elseif s:settings.use_css && !s:settings.no_pre elseif s:settings.use_css && !s:settings.no_pre
call add(html, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">") call add(html, "<!DOCTYPE html>")
call add(html, '<html>') call add(html, '<html>')
let s:html5 = 1
else else
call add(html, '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"') call add(html, '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"')
call add(html, ' "http://www.w3.org/TR/html4/loose.dtd">') call add(html, ' "http://www.w3.org/TR/html4/loose.dtd">')
@ -383,8 +385,12 @@ func! tohtml#Diff2HTML(win_list, buf_list) "{{{
" include encoding as close to the top as possible, but only if not already " include encoding as close to the top as possible, but only if not already
" contained in XML information " contained in XML information
if s:settings.encoding != "" && !s:settings.use_xhtml if s:settings.encoding != "" && !s:settings.use_xhtml
if s:html5
call add(html, '<meta charset="' . s:settings.encoding . '"' . tag_close)
else
call add(html, "<meta http-equiv=\"content-type\" content=\"text/html; charset=" . s:settings.encoding . '"' . tag_close) call add(html, "<meta http-equiv=\"content-type\" content=\"text/html; charset=" . s:settings.encoding . '"' . tag_close)
endif endif
endif
call add(html, '<title>diff</title>') call add(html, '<title>diff</title>')
call add(html, '<meta name="Generator" content="Vim/'.v:version/100.'.'.v:version%100.'"'.tag_close) call add(html, '<meta name="Generator" content="Vim/'.v:version/100.'.'.v:version%100.'"'.tag_close)
@ -392,6 +398,7 @@ func! tohtml#Diff2HTML(win_list, buf_list) "{{{
call add(html, '<meta name="settings" content="'. call add(html, '<meta name="settings" content="'.
\ join(filter(keys(s:settings),'s:settings[v:val]'),','). \ join(filter(keys(s:settings),'s:settings[v:val]'),',').
\ ',prevent_copy='.s:settings.prevent_copy. \ ',prevent_copy='.s:settings.prevent_copy.
\ ',use_input_for_pc='.s:settings.use_input_for_pc.
\ '"'.tag_close) \ '"'.tag_close)
call add(html, '<meta name="colorscheme" content="'. call add(html, '<meta name="colorscheme" content="'.
\ (exists('g:colors_name') \ (exists('g:colors_name')
@ -400,16 +407,8 @@ func! tohtml#Diff2HTML(win_list, buf_list) "{{{
call add(html, '</head>') call add(html, '</head>')
let body_line_num = len(html) let body_line_num = len(html)
if !empty(s:settings.prevent_copy)
call add(html, "<body onload='FixCharWidth();".(s:settings.line_ids ? " JumpToLine();" : "")."'>")
call add(html, "<!-- hidden divs used by javascript to get the width of a char -->")
call add(html, "<div id='oneCharWidth'>0</div>")
call add(html, "<div id='oneInputWidth'><input size='1' value='0'".tag_close."</div>")
call add(html, "<div id='oneEmWidth' style='width: 1em;'></div>")
else
call add(html, '<body'.(s:settings.line_ids ? ' onload="JumpToLine();"' : '').'>') call add(html, '<body'.(s:settings.line_ids ? ' onload="JumpToLine();"' : '').'>')
endif call add(html, "<table ".(s:settings.use_css? "" : "border='1' width='100%' ")."id='vimCodeElement".s:settings.id_suffix."'>")
call add(html, "<table border='1' width='100%' id='vimCodeElement".s:settings.id_suffix."'>")
call add(html, '<tr>') call add(html, '<tr>')
for buf in a:win_list for buf in a:win_list
@ -443,7 +442,7 @@ func! tohtml#Diff2HTML(win_list, buf_list) "{{{
" Grab the style information. Some of this will be duplicated so only insert " Grab the style information. Some of this will be duplicated so only insert
" it if it's not already there. {{{ " it if it's not already there. {{{
1 1
let style_start = search('^<style type="text/css">') let style_start = search('^<style\( type="text/css"\)\?>')
1 1
let style_end = search('^</style>') let style_end = search('^</style>')
if style_start > 0 && style_end > 0 if style_start > 0 && style_end > 0
@ -481,7 +480,7 @@ func! tohtml#Diff2HTML(win_list, buf_list) "{{{
" TODO: restore using grabbed lines if undolevel is 1? " TODO: restore using grabbed lines if undolevel is 1?
normal! 2u normal! 2u
if s:settings.use_css if s:settings.use_css
call add(html, '<td valign="top"><div>') call add(html, '<td><div>')
elseif s:settings.use_xhtml elseif s:settings.use_xhtml
call add(html, '<td nowrap="nowrap" valign="top"><div>') call add(html, '<td nowrap="nowrap" valign="top"><div>')
else else
@ -515,7 +514,13 @@ func! tohtml#Diff2HTML(win_list, buf_list) "{{{
let name = substitute(name, '\d*\.x\?html$', '', '') . i . '.' . fnamemodify(copy(name), ":t:e") let name = substitute(name, '\d*\.x\?html$', '', '') . i . '.' . fnamemodify(copy(name), ":t:e")
let i += 1 let i += 1
endwhile endwhile
let s:ei_sav = &eventignore
set eventignore+=FileType
exe "topleft new " . name exe "topleft new " . name
let &eventignore=s:ei_sav
unlet s:ei_sav
setlocal modifiable setlocal modifiable
" just in case some user autocmd creates content in the new buffer, make sure " just in case some user autocmd creates content in the new buffer, make sure
@ -544,7 +549,7 @@ func! tohtml#Diff2HTML(win_list, buf_list) "{{{
" add required javascript in reverse order so we can just call append again " add required javascript in reverse order so we can just call append again
" and again without adjusting {{{ " and again without adjusting {{{
let s:uses_script = s:settings.dynamic_folds || s:settings.line_ids || !empty(s:settings.prevent_copy) let s:uses_script = s:settings.dynamic_folds || s:settings.line_ids
" insert script closing tag if needed " insert script closing tag if needed
if s:uses_script if s:uses_script
@ -555,31 +560,6 @@ func! tohtml#Diff2HTML(win_list, buf_list) "{{{
\ ]) \ ])
endif endif
" insert script which corrects the size of small input elements in
" prevent_copy mode. See 2html.vim for details on why this is needed and how
" it works.
if !empty(s:settings.prevent_copy)
call append(style_start, [
\ '',
\ '/* simulate a "ch" unit by asking the browser how big a zero character is */',
\ 'function FixCharWidth() {',
\ ' /* get the hidden element which gives the width of a single character */',
\ ' var goodWidth = document.getElementById("oneCharWidth").clientWidth;',
\ ' /* get all input elements, we''ll filter on class later */',
\ ' var inputTags = document.getElementsByTagName("input");',
\ ' var ratio = 5;',
\ ' var inputWidth = document.getElementById("oneInputWidth").clientWidth;',
\ ' var emWidth = document.getElementById("oneEmWidth").clientWidth;',
\ ' if (inputWidth > goodWidth) {',
\ ' while (ratio < 100*goodWidth/emWidth && ratio < 100) {',
\ ' ratio += 5;',
\ ' }',
\ ' document.getElementById("vimCodeElement'.s:settings.id_suffix.'").className = "em"+ratio;',
\ ' }',
\ '}'
\ ])
endif
" insert javascript to get IDs from line numbers, and to open a fold before " insert javascript to get IDs from line numbers, and to open a fold before
" jumping to any lines contained therein " jumping to any lines contained therein
if s:settings.line_ids if s:settings.line_ids
@ -659,10 +639,9 @@ func! tohtml#Diff2HTML(win_list, buf_list) "{{{
endif endif
if s:uses_script if s:uses_script
" insert script tag; javascript is always needed for the line number " insert script tag if needed
" normalization for URL hashes
call append(style_start, [ call append(style_start, [
\ "<script type='text/javascript'>", \ "<script" . (s:html5 ? "" : " type='text/javascript'") . ">",
\ s:settings.use_xhtml ? '//<![CDATA[' : "<!--"]) \ s:settings.use_xhtml ? '//<![CDATA[' : "<!--"])
endif endif
@ -673,11 +652,13 @@ func! tohtml#Diff2HTML(win_list, buf_list) "{{{
" is pretty useless for really long lines. {{{ " is pretty useless for really long lines. {{{
if s:settings.use_css if s:settings.use_css
call append(style_start, call append(style_start,
\ ['<style type="text/css">']+ \ ['<style' . (s:html5 ? '' : 'type="text/css"') . '>']+
\ style+ \ style+
\ [ s:settings.use_xhtml ? '' : '<!--', \ [ s:settings.use_xhtml ? '' : '<!--',
\ 'table { table-layout: fixed; }', \ 'table { table-layout: fixed; }',
\ 'html, body, table, tbody { width: 100%; margin: 0; padding: 0; }', \ 'html, body, table, tbody { width: 100%; margin: 0; padding: 0; }',
\ 'table, td, th { border: 1px solid; }',
\ 'td { vertical-align: top; }',
\ 'th, td { width: '.printf("%.1f",100.0/len(a:win_list)).'%; }', \ 'th, td { width: '.printf("%.1f",100.0/len(a:win_list)).'%; }',
\ 'td div { overflow: auto; }', \ 'td div { overflow: auto; }',
\ s:settings.use_xhtml ? '' : '-->', \ s:settings.use_xhtml ? '' : '-->',
@ -735,6 +716,7 @@ func! tohtml#GetUserSettings() "{{{
call tohtml#GetOption(user_settings, 'whole_filler', 0 ) call tohtml#GetOption(user_settings, 'whole_filler', 0 )
call tohtml#GetOption(user_settings, 'use_xhtml', 0 ) call tohtml#GetOption(user_settings, 'use_xhtml', 0 )
call tohtml#GetOption(user_settings, 'line_ids', user_settings.number_lines ) call tohtml#GetOption(user_settings, 'line_ids', user_settings.number_lines )
call tohtml#GetOption(user_settings, 'use_input_for_pc', 'fallback')
" }}} " }}}
" override those settings that need it {{{ " override those settings that need it {{{
@ -868,6 +850,16 @@ func! tohtml#GetUserSettings() "{{{
let user_settings.no_invalid = 0 let user_settings.no_invalid = 0
endif endif
" enforce valid values for use_input_for_pc
if user_settings.use_input_for_pc !~# 'fallback\|none\|all'
let user_settings.use_input_for_pc = 'fallback'
echohl WarningMsg
echomsg '2html: "' . g:html_use_input_for_pc . '" is not valid for g:html_use_input_for_pc'
echomsg '2html: defaulting to "' . user_settings.use_input_for_pc . '"'
echohl None
sleep 3
endif
if exists('g:html_id_expr') if exists('g:html_id_expr')
let user_settings.id_suffix = eval(g:html_id_expr) let user_settings.id_suffix = eval(g:html_id_expr)
if user_settings.id_suffix !~ '^[-_:.A-Za-z0-9]*$' if user_settings.id_suffix !~ '^[-_:.A-Za-z0-9]*$'

View File

@ -1,6 +1,6 @@
" Vim plugin for formatting XML " Vim plugin for formatting XML
" Last Change: Thu, 07 Dec 2018 " Last Change: 2019 Oct 24
" Version: 0.1 " Version: 0.2
" Author: Christian Brabandt <cb@256bit.org> " Author: Christian Brabandt <cb@256bit.org>
" Repository: https://github.com/chrisbra/vim-xml-ftplugin " Repository: https://github.com/chrisbra/vim-xml-ftplugin
" License: VIM License " License: VIM License
@ -22,14 +22,30 @@ func! xmlformat#Format()
" do not fall back to internal formatting " do not fall back to internal formatting
return 0 return 0
endif endif
let count_orig = v:count
let sw = shiftwidth() let sw = shiftwidth()
let prev = prevnonblank(v:lnum-1) let prev = prevnonblank(v:lnum-1)
let s:indent = indent(prev)/sw let s:indent = indent(prev)/sw
let result = [] let result = []
let lastitem = prev ? getline(prev) : '' let lastitem = prev ? getline(prev) : ''
let is_xml_decl = 0 let is_xml_decl = 0
" split on `<`, but don't split on very first opening < " go through every line, but don't join all content together and join it
for item in split(join(getline(v:lnum, (v:lnum + v:count - 1))), '.\@<=[>]\zs') " back. We might lose empty lines
let list = getline(v:lnum, (v:lnum + count_orig - 1))
let current = 0
for line in list
" Keep empty input lines?
if empty(line)
call add(result, '')
continue
elseif line !~# '<[/]\?[^>]*>'
let nextmatch = match(list, '<[/]\?[^>]*>', current)
let line .= join(list[(current + 1):(nextmatch-1)], "\n")
call remove(list, current+1, nextmatch-1)
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) if s:EndTag(item)
let s:indent = s:DecreaseIndent() let s:indent = s:DecreaseIndent()
call add(result, s:Indent(item)) call add(result, s:Indent(item))
@ -40,26 +56,39 @@ func! xmlformat#Format()
call add(result, s:Indent(item)) call add(result, s:Indent(item))
else else
if !s:IsTag(item) if !s:IsTag(item)
" Simply split on '<' " Simply split on '<', if there is one,
" but reformat according to &textwidth
let t=split(item, '.<\@=\zs') let t=split(item, '.<\@=\zs')
" t should only contain 2 items, but just be safe here
if s:IsTag(lastitem)
let s:indent+=1 let s:indent+=1
call add(result, s:Indent(t[0])) endif
let result+=s:FormatContent([t[0]])
if s:EndTag(t[1])
let s:indent = s:DecreaseIndent() let s:indent = s:DecreaseIndent()
call add(result, s:Indent(t[1])) endif
"for y in t[1:]
let result+=s:FormatContent(t[1:])
"endfor
else else
call add(result, s:Indent(item)) call add(result, s:Indent(item))
endif endif
endif endif
let lastitem = item let lastitem = item
endfor endfor
let current += 1
endfor
if !empty(result) if !empty(result)
exe v:lnum. ",". (v:lnum + v:count - 1). 'd' let lastprevline = getline(v:lnum + count_orig)
let delete_lastline = v:lnum + count_orig - 1 == line('$')
exe v:lnum. ",". (v:lnum + count_orig - 1). 'd'
call append(v:lnum - 1, result) call append(v:lnum - 1, result)
" Might need to remove the last line, if it became empty because of the " Might need to remove the last line, if it became empty because of the
" append() call " append() call
let last = v:lnum + len(result) let last = v:lnum + len(result)
if getline(last) is '' " do not use empty(), it returns true for `empty(0)`
if getline(last) is '' && lastprevline is '' && delete_lastline
exe last. 'd' exe last. 'd'
endif endif
endif endif
@ -88,6 +117,7 @@ func! s:StartTag(tag)
let is_comment = s:IsComment(a:tag) let is_comment = s:IsComment(a:tag)
return a:tag =~? '^\s*<[^/?]' && !is_comment return a:tag =~? '^\s*<[^/?]' && !is_comment
endfunc endfunc
" Check if tag is a Comment start {{{1
func! s:IsComment(tag) func! s:IsComment(tag)
return a:tag =~? '<!--' return a:tag =~? '<!--'
endfunc endfunc
@ -108,6 +138,43 @@ endfunc
func! s:EmptyTag(tag) func! s:EmptyTag(tag)
return a:tag =~ '/>\s*$' return a:tag =~ '/>\s*$'
endfunc endfunc
" Format input line according to textwidth {{{1
func! s:FormatContent(list)
let result=[]
let limit = 80
if &textwidth > 0
let limit = &textwidth
endif
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')
let column += strdisplaywidth(word, column)
if match(word, "^\\s*\n\\+\\s*$") > -1
call add(result, '')
let idx += 1
let column = 0
let add_indent = 1
elseif column > limit || cnt == 0
let add = s:Indent(s:Trim(word))
call add(result, add)
let column = strdisplaywidth(add)
let idx += 1
else
if add_indent
let result[idx] = s:Indent(s:Trim(word))
else
let result[idx] .= ' '. s:Trim(word)
endif
let add_indent = 0
endif
let cnt += 1
endfor
endfor
return result
endfunc
" Restoration And Modelines: {{{1 " Restoration And Modelines: {{{1
let &cpo= s:keepcpo let &cpo= s:keepcpo
unlet s:keepcpo unlet s:keepcpo

View File

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

View File

@ -1,7 +1,7 @@
" The default vimrc file. " The default vimrc file.
" "
" Maintainer: Bram Moolenaar <Bram@vim.org> " Maintainer: Bram Moolenaar <Bram@vim.org>
" Last change: 2019 Feb 18 " Last change: 2019 Oct 27
" "
" This is loaded if no vimrc file was found. " This is loaded if no vimrc file was found.
" Except when Vim is run with "-u NONE" or "-C". " Except when Vim is run with "-u NONE" or "-C".
@ -75,8 +75,14 @@ inoremap <C-U> <C-G>u<C-U>
" In many terminal emulators the mouse works just fine. By enabling it you " In many terminal emulators the mouse works just fine. By enabling it you
" can position the cursor, Visually select and scroll with the mouse. " can position the cursor, Visually select and scroll with the mouse.
" Only xterm can grab the mouse events when using the shift key, for other
" terminals use ":", select text and press Esc.
if has('mouse') if has('mouse')
if &term =~ 'xterm'
set mouse=a set mouse=a
else
set mouse=nvi
endif
endif endif
" Switch syntax highlighting on when the terminal has colors or when using the " Switch syntax highlighting on when the terminal has colors or when using the

View File

@ -2,25 +2,31 @@
" Warning: This also deletes all menus defined by the user! " Warning: This also deletes all menus defined by the user!
" "
" Maintainer: Bram Moolenaar <Bram@vim.org> " Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2001 May 27 " Last Change: 2019 Dec 10
aunmenu * aunmenu *
tlunmenu * tlunmenu *
silent! unlet did_install_default_menus unlet! g:did_install_default_menus
silent! unlet did_install_syntax_menu unlet! g:did_install_syntax_menu
if exists("did_menu_trans")
if exists('g:did_menu_trans')
menutrans clear menutrans clear
unlet did_menu_trans unlet g:did_menu_trans
endif endif
silent! unlet find_help_dialog unlet! g:find_help_dialog
silent! unlet menutrans_help_dialog unlet! g:menutrans_fileformat_choices
silent! unlet menutrans_path_dialog unlet! g:menutrans_fileformat_dialog
silent! unlet menutrans_tags_dialog unlet! g:menutrans_help_dialog
silent! unlet menutrans_textwidth_dialog unlet! g:menutrans_no_file
silent! unlet menutrans_fileformat_dialog unlet! g:menutrans_path_dialog
silent! unlet menutrans_no_file unlet! g:menutrans_set_lang_to
unlet! g:menutrans_spell_add_ARG_to_word_list
unlet! g:menutrans_spell_change_ARG_to
unlet! g:menutrans_spell_ignore_ARG
unlet! g:menutrans_tags_dialog
unlet! g:menutrans_textwidth_dialog
" vim: set sw=2 : " vim: set sw=2 :

View File

@ -149,6 +149,7 @@ DOCS = \
version7.txt \ version7.txt \
version8.txt \ version8.txt \
vi_diff.txt \ vi_diff.txt \
vim9.txt \
visual.txt \ visual.txt \
windows.txt \ windows.txt \
workshop.txt workshop.txt
@ -289,6 +290,7 @@ HTMLS = \
version8.html \ version8.html \
vi_diff.html \ vi_diff.html \
vimindex.html \ vimindex.html \
vim9.html \
visual.html \ visual.html \
windows.html \ windows.html \
workshop.html workshop.html
@ -323,7 +325,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 # Use Vim to generate the tags file. Can only be used when Vim has been
# compiled and installed. Supports multiple languages. # compiled and installed. Supports multiple languages.
vimtags: $(DOCS) vimtags: $(DOCS)
$(VIMEXE) -u NONE -esX -c "helptags ++t ." -c quit @$(VIMEXE) --clean -esX -V1 -u doctags.vim
# Use "doctags" to generate the tags file. Only works for English! # Use "doctags" to generate the tags file. Only works for English!
tags: doctags $(DOCS) tags: doctags $(DOCS)

View File

@ -1,4 +1,4 @@
*arabic.txt* For Vim version 8.1. Last change: 2019 May 05 *arabic.txt* For Vim version 8.2. Last change: 2019 May 05
VIM REFERENCE MANUAL by Nadim Shaikli VIM REFERENCE MANUAL by Nadim Shaikli

View File

@ -1,4 +1,4 @@
*autocmd.txt* For Vim version 8.1. Last change: 2019 Jun 26 *autocmd.txt* For Vim version 8.2. Last change: 2020 Jan 26
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@ -268,7 +268,6 @@ Name triggered by ~
|BufCreate| just after adding a buffer to the buffer list |BufCreate| just after adding a buffer to the buffer list
|BufDelete| before deleting a buffer from the buffer list |BufDelete| before deleting a buffer from the buffer list
|BufWipeout| before completely deleting a buffer |BufWipeout| before completely deleting a buffer
|TerminalOpen| after a terminal buffer was created
|BufFilePre| before changing the name of the current buffer |BufFilePre| before changing the name of the current buffer
|BufFilePost| after changing the name of the current buffer |BufFilePost| after changing the name of the current buffer
@ -302,6 +301,10 @@ Name triggered by ~
|VimLeavePre| before exiting Vim, before writing the viminfo file |VimLeavePre| before exiting Vim, before writing the viminfo file
|VimLeave| before exiting Vim, after writing the viminfo file |VimLeave| before exiting Vim, after writing the viminfo file
Terminal
|TerminalOpen| after a terminal buffer was created
|TerminalWinOpen| after a terminal buffer was created in a new window
Various Various
|FileChangedShell| Vim notices that a file changed since editing started |FileChangedShell| Vim notices that a file changed since editing started
|FileChangedShellPost| After handling a file changed since editing started |FileChangedShellPost| After handling a file changed since editing started
@ -355,6 +358,10 @@ Name triggered by ~
when popup menu visible when popup menu visible
|TextYankPost| after text has been yanked or deleted |TextYankPost| after text has been yanked or deleted
|SafeState| nothing pending, going to wait for the user to type a
character
|SafeStateAgain| repeated SafeState
|ColorSchemePre| before loading a color scheme |ColorSchemePre| before loading a color scheme
|ColorScheme| after loading a color scheme |ColorScheme| after loading a color scheme
@ -367,7 +374,10 @@ Name triggered by ~
|MenuPopup| just before showing the popup menu |MenuPopup| just before showing the popup menu
|CompleteChanged| after Insert mode completion menu changed |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" |User| to be used in combination with ":doautocmd"
@ -380,6 +390,8 @@ BufAdd or BufCreate Just after creating a new buffer which is
to the buffer list. to the buffer list.
Also used just after a buffer in the buffer Also used just after a buffer in the buffer
list has been renamed. list has been renamed.
Not triggered for the initial buffers created
during startup.
The BufCreate event is for historic reasons. The BufCreate event is for historic reasons.
NOTE: When this autocommand is executed, the NOTE: When this autocommand is executed, the
current buffer "%" may be different from the current buffer "%" may be different from the
@ -554,16 +566,14 @@ CmdlineLeave Before leaving the command line.
*CmdwinEnter* *CmdwinEnter*
CmdwinEnter After entering the command-line window. CmdwinEnter After entering the command-line window.
Useful for setting options specifically for Useful for setting options specifically for
this special type of window. This is this special type of window.
triggered _instead_ of BufEnter and WinEnter.
<afile> is set to a single character, <afile> is set to a single character,
indicating the type of command-line. indicating the type of command-line.
|cmdwin-char| |cmdwin-char|
*CmdwinLeave* *CmdwinLeave*
CmdwinLeave Before leaving the command-line window. CmdwinLeave Before leaving the command-line window.
Useful to clean up any global setting done Useful to clean up any global setting done
with CmdwinEnter. This is triggered _instead_ with CmdwinEnter.
of BufLeave and WinLeave.
<afile> is set to a single character, <afile> is set to a single character,
indicating the type of command-line. indicating the type of command-line.
|cmdwin-char| |cmdwin-char|
@ -582,8 +592,8 @@ ColorSchemePre Before loading a color scheme. |:colorscheme|
CompleteChanged *CompleteChanged* CompleteChanged *CompleteChanged*
After each time the Insert mode completion After each time the Insert mode completion
menu changed. Not fired on popup menu hide, menu changed. Not fired on popup menu hide,
use |CompleteDone| for that. Never triggered use |CompleteDonePre| or |CompleteDone| for
recursively. that. Never triggered recursively.
Sets these |v:event| keys: Sets these |v:event| keys:
completed_item See |complete-items|. completed_item See |complete-items|.
@ -599,10 +609,22 @@ CompleteChanged *CompleteChanged*
The size and position of the popup are also The size and position of the popup are also
available by calling |pum_getpos()|. 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*
CompleteDone After Insert mode completion is done. Either CompleteDone After Insert mode completion is done. Either
when something was completed or abandoning when something was completed or abandoning
completion. |ins-completion| 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 The |v:completed_item| variable contains
information about the completed item. information about the completed item.
@ -632,7 +654,7 @@ CursorHold When the user doesn't press a key for the time
Hint: to force an update of the status lines Hint: to force an update of the status lines
use: > use: >
:let &ro = &ro :let &ro = &ro
< {only on Amiga, Unix, Win32, MSDOS and all GUI < {only on Amiga, Unix, Win32 and all GUI
versions} versions}
*CursorHoldI* *CursorHoldI*
CursorHoldI Just like CursorHold, but in Insert mode. CursorHoldI Just like CursorHold, but in Insert mode.
@ -957,6 +979,32 @@ RemoteReply When a reply from a Vim that functions as
Note that even if an autocommand is defined, Note that even if an autocommand is defined,
the reply should be read with |remote_read()| the reply should be read with |remote_read()|
to consume it. to consume it.
*SafeState*
SafeState When nothing is pending, going to wait for the
user to type a character.
This will not be triggered when:
- an operator is pending
- a register was entered with "r
- halfway executing a command
- executing a mapping
- there is typeahead
- Insert mode completion is active
- Command line completion is active
You can use `mode()` to find out what state
Vim is in. That may be:
- VIsual mode
- Normal mode
- Insert mode
- Command-line mode
Depending on what you want to do, you may also
check more with `state()`, e.g. whether the
screen was scrolled for messages.
*SafeStateAgain*
SafeStateAgain Like SafeState but after processing any
messages and invoking callbacks. This may be
triggered often, don't do something that takes
time.
*SessionLoadPost* *SessionLoadPost*
SessionLoadPost After loading the session file created using SessionLoadPost After loading the session file created using
the |:mksession| command. the |:mksession| command.
@ -1053,6 +1101,12 @@ TerminalOpen Just after a terminal buffer was created, with
`:terminal` or |term_start()|. This event is `:terminal` or |term_start()|. This event is
triggered even if the buffer is created triggered even if the buffer is created
without a window, with the ++hidden option. without a window, with the ++hidden option.
*TerminalWinOpen*
TerminalWinOpen Just after a terminal buffer was created, with
`:terminal` or |term_start()|. This event is
triggered only if the buffer is created
with a window. Can be used to set window
local options for the terminal window.
*TermResponse* *TermResponse*
TermResponse After the response to |t_RV| is received from TermResponse After the response to |t_RV| is received from
the terminal. The value of |v:termresponse| the terminal. The value of |v:termresponse|
@ -1250,8 +1304,8 @@ The pattern is interpreted like mostly used in file names:
[^ch] match any character but 'c' and 'h' [^ch] match any character but 'c' and 'h'
Note that for all systems the '/' character is used for path separator (even Note that for all systems the '/' character is used for path separator (even
MS-DOS and OS/2). This was done because the backslash is difficult to use for MS-Windows). This was done because the backslash is difficult to use in a
in a pattern and to make the autocommands portable across different systems. pattern and to make the autocommands portable across different systems.
It is possible to use |pattern| items, but they may not work as expected, It is possible to use |pattern| items, but they may not work as expected,
because of the translation done for the above. because of the translation done for the above.

View File

@ -1,4 +1,4 @@
*change.txt* For Vim version 8.1. Last change: 2019 Aug 21 *change.txt* For Vim version 8.2. Last change: 2019 Sep 28
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@ -611,7 +611,7 @@ attack or other people reading your file). When Vim exits the directory and
all files in it are deleted. When Vim has the setuid bit set this may cause all files in it are deleted. When Vim has the setuid bit set this may cause
problems, the temp file is owned by the setuid user but the filter command problems, the temp file is owned by the setuid user but the filter command
probably runs as the original user. probably runs as the original user.
On MS-DOS and OS/2 the first of these directories that works is used: $TMP, On MS-Windows the first of these directories that works is used: $TMP,
$TEMP, c:\TMP, c:\TEMP. $TEMP, c:\TMP, c:\TEMP.
For Unix the list of directories is: $TMPDIR, /tmp, current-dir, $HOME. For Unix the list of directories is: $TMPDIR, /tmp, current-dir, $HOME.
For MS-Windows the GetTempFileName() system function is used. For MS-Windows the GetTempFileName() system function is used.
@ -999,9 +999,13 @@ inside of strings can change! Also see 'softtabstop' option. >
delete and yank) ({.%#:} only work with put). delete and yank) ({.%#:} only work with put).
*:reg* *:registers* *:reg* *:registers*
:reg[isters] Display the contents of all numbered and named :reg[isters] Display the type and contents of all numbered and
registers. If a register is written to for |:redir| named registers. If a register is written to for
it will not be listed. |:redir| it will not be listed.
Type can be one of:
"c" for |characterwise| text
"l" for |linewise| text
"b" for |blockwise-visual| text
:reg[isters] {arg} Display the contents of the numbered and named :reg[isters] {arg} Display the contents of the numbered and named
@ -1172,7 +1176,7 @@ Rationale: In Vi the "y" command followed by a backwards motion would
With a linewise yank command the cursor is put in the first line, but the With a linewise yank command the cursor is put in the first line, but the
column is unmodified, thus it may not be on the first yanked character. column is unmodified, thus it may not be on the first yanked character.
There are ten types of registers: *registers* *E354* There are ten types of registers: *registers* *{register}* *E354*
1. The unnamed register "" 1. The unnamed register ""
2. 10 numbered registers "0 to "9 2. 10 numbered registers "0 to "9
3. The small delete register "- 3. The small delete register "-
@ -1618,8 +1622,6 @@ By default, "b:#" is included. This means that a line that starts with
"#include" is not recognized as a comment line. But a line that starts with "#include" is not recognized as a comment line. But a line that starts with
"# define" is recognized. This is a compromise. "# define" is recognized. This is a compromise.
{not available when compiled without the |+comments| feature}
*fo-table* *fo-table*
You can use the 'formatoptions' option to influence how Vim formats text. You can use the 'formatoptions' option to influence how Vim formats text.
'formatoptions' is a string that can contain any of the letters below. The 'formatoptions' is a string that can contain any of the letters below. The

View File

@ -1,4 +1,4 @@
*channel.txt* For Vim version 8.1. Last change: 2019 Aug 22 *channel.txt* For Vim version 8.2. Last change: 2019 Dec 07
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@ -508,6 +508,9 @@ ch_evalexpr({handle}, {expr} [, {options}]) *ch_evalexpr()*
expression. When there is an error or timeout it returns an expression. When there is an error or timeout it returns an
empty string. empty string.
Note that while waiting for the response, Vim handles other
messages. You need to make sure this doesn't cause trouble.
Can also be used as a |method|: > Can also be used as a |method|: >
GetChannel()->ch_evalexpr(expr) GetChannel()->ch_evalexpr(expr)

View File

@ -1,4 +1,4 @@
*cmdline.txt* For Vim version 8.1. Last change: 2019 Aug 18 *cmdline.txt* For Vim version 8.2. Last change: 2019 Dec 17
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@ -75,12 +75,19 @@ CTRL-V Insert next non-digit literally. Up to three digits form the
decimal value of a single byte. The non-digit and the three decimal value of a single byte. The non-digit and the three
digits are not considered for mapping. This works the same digits are not considered for mapping. This works the same
way as in Insert mode (see above, |i_CTRL-V|). way as in Insert mode (see above, |i_CTRL-V|).
Note: Under Windows CTRL-V is often mapped to paste text. Note: Under MS-Windows CTRL-V is often mapped to paste text.
Use CTRL-Q instead then. Use CTRL-Q instead then.
When |modifyOtherKeys| is enabled then special Escape sequence
is converted back to what it was without |modifyOtherKeys|,
unless the Shift key is also pressed.
*c_CTRL-Q* *c_CTRL-Q*
CTRL-Q Same as CTRL-V. But with some terminals it is used for CTRL-Q Same as CTRL-V. But with some terminals it is used for
control flow, it doesn't work then. control flow, it doesn't work then.
CTRL-SHIFT-V *c_CTRL-SHIFT-V* *c_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.
*c_<Left>* *c_Left* *c_<Left>* *c_Left*
<Left> cursor left <Left> cursor left
*c_<Right>* *c_Right* *c_<Right>* *c_Right*
@ -129,7 +136,7 @@ CTRL-K {char1} {char2} *c_CTRL-K*
enter digraph (see |digraphs|). When {char1} is a special enter digraph (see |digraphs|). When {char1} is a special
key, the code for that key is inserted in <> form. key, the code for that key is inserted in <> form.
CTRL-R {0-9a-z"%#:-=.} *c_CTRL-R* *c_<C-R>* CTRL-R {register} *c_CTRL-R* *c_<C-R>*
Insert the contents of a numbered or named register. Between Insert the contents of a numbered or named register. Between
typing CTRL-R and the second character '"' will be displayed typing CTRL-R and the second character '"' will be displayed
to indicate that you are expected to enter the name of a to indicate that you are expected to enter the name of a
@ -191,8 +198,8 @@ CTRL-R CTRL-L *c_CTRL-R_CTRL-L* *c_<C-R>_<C-L>*
*c_CTRL-R_CTRL-R* *c_<C-R>_<C-R>* *c_CTRL-R_CTRL-R* *c_<C-R>_<C-R>*
*c_CTRL-R_CTRL-O* *c_<C-R>_<C-O>* *c_CTRL-R_CTRL-O* *c_<C-R>_<C-O>*
CTRL-R CTRL-R {0-9a-z"%#:-=. CTRL-F CTRL-P CTRL-W CTRL-A CTRL-L} CTRL-R CTRL-R {register CTRL-F CTRL-P CTRL-W CTRL-A CTRL-L}
CTRL-R CTRL-O {0-9a-z"%#:-=. CTRL-F CTRL-P CTRL-W CTRL-A CTRL-L} CTRL-R CTRL-O {register CTRL-F CTRL-P CTRL-W CTRL-A CTRL-L}
Insert register or object under the cursor. Works like Insert register or object under the cursor. Works like
|c_CTRL-R| but inserts the text literally. For example, if |c_CTRL-R| but inserts the text literally. For example, if
register a contains "xy^Hz" (where ^H is a backspace), register a contains "xy^Hz" (where ^H is a backspace),
@ -909,8 +916,7 @@ Note: these are typed literally, they are not special keys!
*%:8* *%:p* *%:.* *%:~* *%:h* *%:t* *%:r* *%:e* *%:s* *%:gs* *%:S* *%:8* *%:p* *%:.* *%:~* *%:h* *%:t* *%:r* *%:e* *%:s* *%:gs* *%:S*
The file name modifiers can be used after "%", "#", "#n", "<cfile>", "<sfile>", The file name modifiers can be used after "%", "#", "#n", "<cfile>", "<sfile>",
"<afile>" or "<abuf>". They are also used with the |fnamemodify()| function. "<afile>" or "<abuf>". They are also used with the |fnamemodify()| function.
These are not available when Vim has been compiled without the |+modify_fname|
feature.
These modifiers can be given, in this order: These modifiers can be given, in this order:
:p Make file name a full path. Must be the first modifier. Also :p Make file name a full path. Must be the first modifier. Also
changes "~/" (and "~user/" for Unix and VMS) to the path for changes "~/" (and "~user/" for Unix and VMS) to the path for
@ -927,8 +933,7 @@ These modifiers can be given, in this order:
directory. directory.
:. Reduce file name to be relative to current directory, if :. Reduce file name to be relative to current directory, if
possible. File name is unmodified if it is not below the possible. File name is unmodified if it is not below the
current directory, but on MS-Windows the drive is removed if current directory.
it is the current drive.
For maximum shortness, use ":~:.". For maximum shortness, use ":~:.".
:h Head of the file name (the last component and any separators :h Head of the file name (the last component and any separators
removed). Cannot be used with :e, :r or :t. removed). Cannot be used with :e, :r or :t.
@ -937,9 +942,9 @@ These modifiers can be given, in this order:
separator is removed. Thus ":p:h" on a directory name results separator is removed. Thus ":p:h" on a directory name results
on the directory name itself (without trailing slash). on the directory name itself (without trailing slash).
When the file name is an absolute path (starts with "/" for When the file name is an absolute path (starts with "/" for
Unix; "x:\" for MS-DOS, WIN32, OS/2; "drive:" for Amiga), that Unix; "x:\" for Win32; "drive:" for Amiga), that part is not
part is not removed. When there is no head (path is relative removed. When there is no head (path is relative to current
to current directory) the result is empty. directory) the result is empty.
:t Tail of the file name (last component of the name). Must :t Tail of the file name (last component of the name). Must
precede any :r or :e. precede any :r or :e.
:r Root of the file name (the last extension removed). When :r Root of the file name (the last extension removed). When
@ -1036,12 +1041,12 @@ option contains "sh", this is done twice, to avoid the shell trying to expand
the "!". the "!".
*filename-backslash* *filename-backslash*
For filesystems that use a backslash as directory separator (MS-DOS, Windows, For filesystems that use a backslash as directory separator (MS-Windows), it's
OS/2), it's a bit difficult to recognize a backslash that is used to escape a bit difficult to recognize a backslash that is used to escape the special
the special meaning of the next character. The general rule is: If the meaning of the next character. The general rule is: If the backslash is
backslash is followed by a normal file name character, it does not have a followed by a normal file name character, it does not have a special meaning.
special meaning. Therefore "\file\foo" is a valid file name, you don't have Therefore "\file\foo" is a valid file name, you don't have to type the
to type the backslash twice. backslash twice.
An exception is the '$' sign. It is a valid character in a file name. But An exception is the '$' sign. It is a valid character in a file name. But
to avoid a file name like "$home" to be interpreted as an environment variable, to avoid a file name like "$home" to be interpreted as an environment variable,
@ -1172,11 +1177,9 @@ edited as described in |cmdwin-char|.
AUTOCOMMANDS AUTOCOMMANDS
Two autocommand events are used: |CmdwinEnter| and |CmdwinLeave|. Since this Two autocommand events are used: |CmdwinEnter| and |CmdwinLeave|. You can use
window is of a special type, the WinEnter, WinLeave, BufEnter and BufLeave the Cmdwin events to do settings specifically for the command-line window.
events are not triggered. You can use the Cmdwin events to do settings Be careful not to cause side effects!
specifically for the command-line window. Be careful not to cause side
effects!
Example: > Example: >
:au CmdwinEnter : let b:cpt_save = &cpt | set cpt=. :au CmdwinEnter : let b:cpt_save = &cpt | set cpt=.
:au CmdwinLeave : let &cpt = b:cpt_save :au CmdwinLeave : let &cpt = b:cpt_save

View File

@ -1,4 +1,4 @@
*debug.txt* For Vim version 8.1. Last change: 2019 May 07 *debug.txt* For Vim version 8.2. Last change: 2019 May 07
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar

View File

@ -1,4 +1,4 @@
*debugger.txt* For Vim version 8.1. Last change: 2019 Jul 06 *debugger.txt* For Vim version 8.2. Last change: 2019 Dec 21
VIM REFERENCE MANUAL by Gordon Prieur VIM REFERENCE MANUAL by Gordon Prieur
@ -12,8 +12,6 @@ For the debugger running in a Vim terminal window see |terminal-debugger|.
1. Debugger Features |debugger-features| 1. Debugger Features |debugger-features|
2. Vim Compile Options |debugger-compilation| 2. Vim Compile Options |debugger-compilation|
3. Integrated Debuggers |debugger-integration|
============================================================================== ==============================================================================
1. Debugger Features *debugger-features* 1. Debugger Features *debugger-features*
@ -114,10 +112,10 @@ other settings apply.
============================================================================== ==============================================================================
2. Vim Compile Options *debugger-compilation* 2. Vim Compile Options *debugger-compilation*
The debugger features were added explicitly for use with Sun's Visual The debugger features were added for use with Sun's Visual WorkShop Integrated
WorkShop Integrated Programming Environment (ipe). However, they were done Programming Environment (ipe). However, they were done in as generic a manner
in as generic a manner as possible so that integration with other debuggers as possible so that integration with other debuggers could also use these
could also use some or all of the tools used with Sun's ipe. features.
The following compile time preprocessor variables control the features: The following compile time preprocessor variables control the features:
@ -127,18 +125,10 @@ The following compile time preprocessor variables control the features:
Message Footer FEAT_FOOTER Message Footer FEAT_FOOTER
Balloon Evaluation FEAT_BEVAL Balloon Evaluation FEAT_BEVAL
The first integration with a full IPE/IDE was with Sun Visual WorkShop. To The support specifically for Sun Visual WorkShop has been removed, since the
compile a gvim which interfaces with VWS set the following flag, which sets product no longer exists.
all the above flags:
Sun Visual WorkShop FEAT_SUN_WORKSHOP
==============================================================================
3. Integrated Debuggers *debugger-integration*
One fully integrated debugger/IPE/IDE is Sun's Visual WorkShop Integrated
Programming Environment.
For Sun NetBeans support see |netbeans|. For Sun NetBeans support see |netbeans|.
vim:tw=78:sw=4:ts=8:noet:ft=help:norl: vim:tw=78:sw=4:ts=8:noet:ft=help:norl:

View File

@ -1,4 +1,4 @@
*develop.txt* For Vim version 8.1. Last change: 2019 Aug 05 *develop.txt* For Vim version 8.2. Last change: 2019 Nov 22
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@ -195,10 +195,14 @@ problems for existing patches. Only use them for new and changed code.
Comments ~ Comments ~
Traditionally Vim uses /* comments */. We intend to keep it that way, Traditionally Vim uses /* comments */. We intend to keep it that way
especially for file and function headers. For new code or lines of code that for file and function headers and larger blocks of code, E.g.:
change, it is allowed to use // comments. Especially when it comes after /*
code: * The "foo" argument does something useful.
* Return OK or FAIL.
*/
For new code or lines of code that change, it is preferred to use // comments.
Especially when it comes after code:
int some_var; // single line comment useful here int some_var; // single line comment useful here
Enums ~ Enums ~

View File

@ -1,4 +1,4 @@
*diff.txt* For Vim version 8.1. Last change: 2019 Jul 27 *diff.txt* For Vim version 8.2. Last change: 2019 Nov 10
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@ -68,11 +68,12 @@ reset to the global value.
The options can still be overruled from a modeline when re-editing the file. The options can still be overruled from a modeline when re-editing the file.
However, 'foldmethod' and 'wrap' won't be set from a modeline when 'diff' is However, 'foldmethod' and 'wrap' won't be set from a modeline when 'diff' is
set. set.
See `:diffoff` for an easy way to revert the options.
The differences shown are actually the differences in the buffer. Thus if you The differences shown are actually the differences in the buffer. Thus if you
make changes after loading a file, these will be included in the displayed make changes after loading a file, these will be included in the displayed
diffs. You might have to do ":diffupdate" now and then, not all changes are diffs. You might have to do ":diffupdate" now and then, not all changes are
immediately taken into account. immediately taken into account, especially when using an external diff command.
In your .vimrc file you could do something special when Vim was started in In your .vimrc file you could do something special when Vim was started in
diff mode. You could use a construct like this: > diff mode. You could use a construct like this: >

View File

@ -1,4 +1,4 @@
*digraph.txt* For Vim version 8.1. Last change: 2019 May 05 *digraph.txt* For Vim version 8.2. Last change: 2019 May 05
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar

13
runtime/doc/doctags.vim Normal file
View File

@ -0,0 +1,13 @@
" This script makes a tags file for help text.
"
" Usage: vim -eX -u doctags.vim
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 @@
*editing.txt* For Vim version 8.1. Last change: 2019 Jun 10 *editing.txt* For Vim version 8.2. Last change: 2019 Dec 22
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@ -100,7 +100,7 @@ g CTRL-G Prints the current position of the cursor in five
:buffers :buffers
:files :files
:ls List all the currently known file names. See :ls List all the currently known file names. See
'windows.txt' |:files| |:buffers| |:ls|. |windows.txt| |:files| |:buffers| |:ls|.
Vim will remember the full path name of a file name that you enter. In most Vim will remember the full path name of a file name that you enter. In most
cases when the file name is displayed only the name you typed is shown, but cases when the file name is displayed only the name you typed is shown, but
@ -131,7 +131,7 @@ You can use this file if you discover that you need the original file. See
also the 'patchmode' option. The name of the backup file is normally the same also the 'patchmode' option. The name of the backup file is normally the same
as the original file with 'backupext' appended. The default "~" is a bit as the original file with 'backupext' appended. The default "~" is a bit
strange to avoid accidentally overwriting existing files. If you prefer ".bak" strange to avoid accidentally overwriting existing files. If you prefer ".bak"
change the 'backupext' option. Extra dots are replaced with '_' on MS-DOS change the 'backupext' option. Extra dots are replaced with '_' on MS-Windows
machines, when Vim has detected that an MS-DOS-like filesystem is being used machines, when Vim has detected that an MS-DOS-like filesystem is being used
(e.g., messydos or crossdos) or when the 'shortname' option is on. The (e.g., messydos or crossdos) or when the 'shortname' option is on. The
backup file can be placed in another directory by setting 'backupdir'. backup file can be placed in another directory by setting 'backupdir'.
@ -331,10 +331,13 @@ CTRL-^ Edit the alternate file. Mostly the alternate file is
*gF* *gF*
[count]gF Same as "gf", except if a number follows the file [count]gF Same as "gf", except if a number follows the file
name, then the cursor is positioned on that line in name, then the cursor is positioned on that line in
the file. The file name and the number must be the file.
separated by a non-filename (see 'isfname') and The file name and the number must be separated by a
non-numeric character. White space between the non-filename (see 'isfname') and non-numeric
filename, the separator and the number are ignored. character. " line " is also recognized, like it is
used in the output of `:verbose command UserCmd`
White space between the filename, the separator and
the number are ignored.
Examples: Examples:
eval.c:10 ~ eval.c:10 ~
eval.c @ 20 ~ eval.c @ 20 ~
@ -519,9 +522,9 @@ The 'fileformat' option sets the <EOL> style for a file:
Previously 'textmode' was used. It is obsolete now. Previously 'textmode' was used. It is obsolete now.
When reading a file, the mentioned characters are interpreted as the <EOL>. When reading a file, the mentioned characters are interpreted as the <EOL>.
In DOS format (default for MS-DOS, OS/2 and Win32), <CR><NL> and <NL> are both In DOS format (default for Win32), <CR><NL> and <NL> are both interpreted as
interpreted as the <EOL>. Note that when writing the file in DOS format, the <EOL>. Note that when writing the file in DOS format, <CR> characters
<CR> characters will be added for each single <NL>. Also see |file-read|. will be added for each single <NL>. Also see |file-read|.
When writing a file, the mentioned characters are used for <EOL>. For DOS When writing a file, the mentioned characters are used for <EOL>. For DOS
format <CR><NL> is used. Also see |DOS-format-write|. format <CR><NL> is used. Also see |DOS-format-write|.
@ -542,15 +545,16 @@ If you start editing a new file and the 'fileformats' option is not empty
(which is the default), Vim will try to detect whether the lines in the file (which is the default), Vim will try to detect whether the lines in the file
are separated by the specified formats. When set to "unix,dos", Vim will are separated by the specified formats. When set to "unix,dos", Vim will
check for lines with a single <NL> (as used on Unix and Amiga) or by a <CR> check for lines with a single <NL> (as used on Unix and Amiga) or by a <CR>
<NL> pair (MS-DOS). Only when ALL lines end in <CR><NL>, 'fileformat' is set <NL> pair (MS-Windows). Only when ALL lines end in <CR><NL>, 'fileformat' is
to "dos", otherwise it is set to "unix". When 'fileformats' includes "mac", set to "dos", otherwise it is set to "unix". When 'fileformats' includes
and no <NL> characters are found in the file, 'fileformat' is set to "mac". "mac", and no <NL> characters are found in the file, 'fileformat' is set to
"mac".
If the 'fileformat' option is set to "dos" on non-MS-DOS systems the message If the 'fileformat' option is set to "dos" on non-MS-Windows systems the
"[dos format]" is shown to remind you that something unusual is happening. On message "[dos format]" is shown to remind you that something unusual is
MS-DOS systems you get the message "[unix format]" if 'fileformat' is set to happening. On MS-Windows systems you get the message "[unix format]" if
"unix". On all systems but the Macintosh you get the message "[mac format]" 'fileformat' is set to "unix". On all systems but the Macintosh you get the
if 'fileformat' is set to "mac". message "[mac format]" if 'fileformat' is set to "mac".
If the 'fileformats' option is empty and DOS format is used, but while reading If the 'fileformats' option is empty and DOS format is used, but while reading
a file some lines did not end in <CR><NL>, "[CR missing]" will be included in a file some lines did not end in <CR><NL>, "[CR missing]" will be included in
@ -1023,11 +1027,11 @@ lost the original file.
*DOS-format-write* *DOS-format-write*
If the 'fileformat' is "dos", <CR> <NL> is used for <EOL>. This is default If the 'fileformat' is "dos", <CR> <NL> is used for <EOL>. This is default
for MS-DOS, Win32 and OS/2. On other systems the message "[dos format]" is for Win32. On other systems the message "[dos format]" is shown to remind you
shown to remind you that an unusual <EOL> was used. that an unusual <EOL> was used.
*Unix-format-write* *Unix-format-write*
If the 'fileformat' is "unix", <NL> is used for <EOL>. On MS-DOS, Win32 and If the 'fileformat' is "unix", <NL> is used for <EOL>. On Win32 the message
OS/2 the message "[unix format]" is shown. "[unix format]" is shown.
*Mac-format-write* *Mac-format-write*
If the 'fileformat' is "mac", <CR> is used for <EOL>. On non-Mac systems the If the 'fileformat' is "mac", <CR> is used for <EOL>. On non-Mac systems the
message "[mac format]" is shown. message "[mac format]" is shown.
@ -1056,11 +1060,11 @@ When the file name is actually a device name, Vim will not make a backup (that
would be impossible). You need to use "!", since the device already exists. would be impossible). You need to use "!", since the device already exists.
Example for Unix: > Example for Unix: >
:w! /dev/lpt0 :w! /dev/lpt0
and for MS-DOS or MS-Windows: > and for MS-Windows: >
:w! lpt0 :w! lpt0
For Unix a device is detected when the name doesn't refer to a normal file or For Unix a device is detected when the name doesn't refer to a normal file or
a directory. A fifo or named pipe also looks like a device to Vim. a directory. A fifo or named pipe also looks like a device to Vim.
For MS-DOS and MS-Windows the device is detected by its name: For MS-Windows the device is detected by its name:
AUX AUX
CON CON
CLOCK$ CLOCK$
@ -1233,7 +1237,7 @@ The syntax is best shown via some examples: >
< Open the browser in the C:/bar directory, with the current < Open the browser in the C:/bar directory, with the current
buffer filename as default, and save the buffer under the buffer filename as default, and save the buffer under the
filename chosen. filename chosen.
Also see the |'browsedir'| option. Also see the 'browsedir' option.
For versions of Vim where browsing is not supported, the command is executed For versions of Vim where browsing is not supported, the command is executed
unmodified. unmodified.
@ -1294,7 +1298,7 @@ present in 'cpoptions' and "!" is not used in the command.
Does not change the meaning of an already opened file, Does not change the meaning of an already opened file,
because its full path name is remembered. Files from because its full path name is remembered. Files from
the |arglist| may change though! the |arglist| may change though!
On MS-DOS this also changes the active drive. On MS-Windows this also changes the active drive.
To change to the directory of the current file: > To change to the directory of the current file: >
:cd %:h :cd %:h
< <
@ -1554,7 +1558,7 @@ focus.
If you want to automatically reload a file when it has been changed outside of If you want to automatically reload a file when it has been changed outside of
Vim, set the 'autoread' option. This doesn't work at the moment you write the Vim, set the 'autoread' option. This doesn't work at the moment you write the
file though, only when the file wasn't changed inside of Vim. file though, only when the file wasn't changed inside of Vim.
*ignore-timestamp*
If you do not want to be asked or automatically reload the file, you can use If you do not want to be asked or automatically reload the file, you can use
this: > this: >
set buftype=nofile set buftype=nofile

File diff suppressed because it is too large Load Diff

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

View File

@ -1,4 +1,4 @@
*farsi.txt* For Vim version 8.1. Last change: 2019 May 05 *farsi.txt* For Vim version 8.2. Last change: 2019 May 05
VIM REFERENCE MANUAL by Mortaza Ghassab Shiran VIM REFERENCE MANUAL by Mortaza Ghassab Shiran

View File

@ -1,4 +1,4 @@
*filetype.txt* For Vim version 8.1. Last change: 2019 Jul 16 *filetype.txt* For Vim version 8.2. Last change: 2019 Jul 16
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@ -34,8 +34,7 @@ if you didn't do that already.
Detail: The ":filetype on" command will load one of these files: Detail: The ":filetype on" command will load one of these files:
Amiga $VIMRUNTIME/filetype.vim Amiga $VIMRUNTIME/filetype.vim
Mac $VIMRUNTIME:filetype.vim Mac $VIMRUNTIME:filetype.vim
MS-DOS $VIMRUNTIME\filetype.vim MS-Windows $VIMRUNTIME\filetype.vim
RiscOS Vim:Filetype
Unix $VIMRUNTIME/filetype.vim Unix $VIMRUNTIME/filetype.vim
VMS $VIMRUNTIME/filetype.vim VMS $VIMRUNTIME/filetype.vim
This file is a Vim script that defines autocommands for the This file is a Vim script that defines autocommands for the
@ -308,13 +307,13 @@ all loaded. For example, if this command: >
produces this output: 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: then Vim will load all plugins in these directories and below:
/etc/vim/plugin/ ~ /etc/vim/plugin/ ~
~/.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. Note that the last one is the value of $VIMRUNTIME which has been expanded.
@ -595,6 +594,10 @@ If you do not like the default folding, use an autocommand to add your desired
folding style instead. For example: > folding style instead. For example: >
autocmd FileType man setlocal foldmethod=indent foldenable autocmd FileType man setlocal foldmethod=indent foldenable
If you would like :Man {number} {name} to behave like man {number} {name} by
not running man {name} if no page is found, then use this: >
let g:ft_man_no_sect_fallback = 1
You may also want to set 'keywordprg' to make the |K| command open a manual You may also want to set 'keywordprg' to make the |K| command open a manual
page in a Vim window: > page in a Vim window: >
set keywordprg=:Man set keywordprg=:Man

View File

@ -1,4 +1,4 @@
*fold.txt* For Vim version 8.1. Last change: 2019 Jun 02 *fold.txt* For Vim version 8.2. Last change: 2019 Jun 02
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar

View File

@ -1,4 +1,4 @@
*ft_ada.txt* For Vim version 8.1. Last change: 2010 Jul 20 *ft_ada.txt* For Vim version 8.2. Last change: 2010 Jul 20
ADA FILE TYPE PLUG-INS REFERENCE MANUAL~ ADA FILE TYPE PLUG-INS REFERENCE MANUAL~

View File

@ -1,4 +1,4 @@
*ft_rust.txt* For Vim version 8.1. Last change: 2017 Nov 02 *ft_rust.txt* For Vim version 8.2. Last change: 2017 Nov 02
This is documentation for the Rust filetype plugin. This is documentation for the Rust filetype plugin.

View File

@ -1,4 +1,4 @@
*ft_sql.txt* For Vim version 8.1. Last change: 2013 May 15 *ft_sql.txt* For Vim version 8.2. Last change: 2019 Dec 07
by David Fishburn by David Fishburn
@ -342,8 +342,8 @@ The defaults static maps are: >
imap <buffer> <C-C>T <C-\><C-O>:call sqlcomplete#Map('sqlType')<CR><C-X><C-O> imap <buffer> <C-C>T <C-\><C-O>:call sqlcomplete#Map('sqlType')<CR><C-X><C-O>
imap <buffer> <C-C>s <C-\><C-O>:call sqlcomplete#Map('sqlStatement')<CR><C-X><C-O> imap <buffer> <C-C>s <C-\><C-O>:call sqlcomplete#Map('sqlStatement')<CR><C-X><C-O>
The use of "<C-C>" can be user chosen by using the following in your |.vimrc| as it The use of "<C-C>" can be user chosen by using the following in your |.vimrc|
may not work properly on all platforms: > as it may not work properly on all platforms: >
let g:ftplugin_sql_omni_key = '<C-C>' let g:ftplugin_sql_omni_key = '<C-C>'
> >
The static maps (which are based on the syntax highlight groups) follow this The static maps (which are based on the syntax highlight groups) follow this

View File

@ -1,4 +1,4 @@
*gui.txt* For Vim version 8.1. Last change: 2019 Aug 21 *gui.txt* For Vim version 8.2. Last change: 2019 Nov 16
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@ -95,9 +95,7 @@ terminal version.
Recommended place for your personal GUI initializations: Recommended place for your personal GUI initializations:
Unix $HOME/.gvimrc or $HOME/.vim/gvimrc Unix $HOME/.gvimrc or $HOME/.vim/gvimrc
OS/2 $HOME/.gvimrc, $HOME/vimfiles/gvimrc Win32 $HOME/_gvimrc, $HOME/vimfiles/gvimrc
or $VIM/.gvimrc
MS-DOS and Win32 $HOME/_gvimrc, $HOME/vimfiles/gvimrc
or $VIM/_gvimrc or $VIM/_gvimrc
Amiga s:.gvimrc, home:.gvimrc, home:vimfiles:gvimrc Amiga s:.gvimrc, home:.gvimrc, home:vimfiles:gvimrc
or $VIM/.gvimrc or $VIM/.gvimrc
@ -309,7 +307,7 @@ because the menu command will always be applied to the top window.
If you are on the ':' line (or '/' or '?'), then clicking the left or right If you are on the ':' line (or '/' or '?'), then clicking the left or right
mouse button will position the cursor on the ':' line (if 'mouse' contains mouse button will position the cursor on the ':' line (if 'mouse' contains
'c', 'a' or 'A'). 'c' or 'a').
In any situation the middle mouse button may be clicked to paste the current In any situation the middle mouse button may be clicked to paste the current
selection. selection.
@ -560,8 +558,9 @@ floating menus that do not appear on the main menu bar.
*E330* *E327* *E331* *E336* *E333* *E330* *E327* *E331* *E336* *E333*
*E328* *E329* *E337* *E792* *E328* *E329* *E337* *E792*
To create a new menu item, use the ":menu" commands. They are mostly like To create a new menu item, use the ":menu" commands. They are mostly like
the ":map" set of commands but the first argument is a menu item name, given the ":map" set of commands (see |map-modes|), but the first argument is a menu
as a path of menus and submenus with a '.' between them, e.g.: > item name, given as a path of menus and submenus with a '.' between them,
e.g.: >
:menu File.Save :w<CR> :menu File.Save :w<CR>
:inoremenu File.Save <C-O>:w<CR> :inoremenu File.Save <C-O>:w<CR>

View File

@ -1,4 +1,4 @@
*gui_w32.txt* For Vim version 8.1. Last change: 2019 May 05 *gui_w32.txt* For Vim version 8.2. Last change: 2019 May 05
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@ -106,8 +106,6 @@ when you have got a new version):
You can also install Vim in the "Send To" menu: You can also install Vim in the "Send To" menu:
1. Start a Windows Explorer 1. Start a Windows Explorer
2. Navigate to your sendto directory: 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 XP: C:\Documents and Settings\%user%\SendTo
Windows Vista: C:\Users\%user%\AppData\Roaming\Microsoft\Windows\SendTo . Windows Vista: C:\Users\%user%\AppData\Roaming\Microsoft\Windows\SendTo .
3. Right-click in the file pane and select New->Shortcut 3. Right-click in the file pane and select New->Shortcut
@ -115,7 +113,8 @@ You can also install Vim in the "Send To" menu:
When you 'send a file to Vim', Vim changes to that file's directory. Note, 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-DOS) however, that any long directory names will appear in their short (MS-DOS)
form. This is a limitation of the Windows "Send To" mechanism. form on some Windows versions. This is a limitation of the Windows "Send To"
mechanism.
*notepad* *notepad*
You could replace notepad.exe with gvim.exe, but that has a few side effects. You could replace notepad.exe with gvim.exe, but that has a few side effects.
@ -169,16 +168,16 @@ you can.
Vim Shell Extension Vim Shell Extension
HKEY_LOCAL_MACHINE\Software\Vim\Gvim HKEY_LOCAL_MACHINE\Software\Vim\Gvim
path {path}\gvim.exe path {path}\gvim.exe
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall\vim 5.6 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall\vim 8.2
DisplayName Vim 5.6: Edit with Vim popup menu entry DisplayName Vim 8.2: Edit with Vim popup menu entry
UninstallString {path}\uninstal.exe UninstallString {path}\uninstall.exe
Replace {path} with the path that leads to the executable. Replace {path} with the path that leads to the executable.
Don't type {default}, this is the value for the key itself. Don't type {default}, this is the value for the key itself.
To remove "Edit with Vim" from the popup menu, just remove the registry To remove "Edit with Vim" from the popup menu, just remove the registry
entries mentioned above. The "uninstal.exe" program can do this for you. You entries mentioned above. The "uninstall.exe" program can do this for you.
can also use the entry in the Windows standard "Add/Remove Programs" list. You can also use the entry in the Windows standard "Add/Remove Programs" list.
If you notice that this entry overrules other file type associations, set If you notice that this entry overrules other file type associations, set
those associations again by hand (using Windows Explorer, see above). This those associations again by hand (using Windows Explorer, see above). This
@ -214,7 +213,7 @@ REGEDIT4
[HKEY_CLASSES_ROOT\Applications\gvim.exe\shell\edit] [HKEY_CLASSES_ROOT\Applications\gvim.exe\shell\edit]
[HKEY_CLASSES_ROOT\Applications\gvim.exe\shell\edit\command] [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] [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 To uninstall this run the Vim uninstall program or manually delete the
registry entries with "regedit". registry entries with "regedit".

View File

@ -1,4 +1,4 @@
*gui_x11.txt* For Vim version 8.1. Last change: 2019 May 05 *gui_x11.txt* For Vim version 8.2. Last change: 2019 May 05
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar

View File

@ -1,112 +1,17 @@
*hangulin.txt* For Vim version 8.1. Last change: 2015 Nov 24 *hangulin.txt* For Vim version 8.2. Last change: 2019 Nov 21
VIM REFERENCE MANUAL by Chi-Deok Hwang and Sung-Hyun Nam VIM REFERENCE MANUAL by Chi-Deok Hwang and Sung-Hyun Nam
*hangul*
Vim had built-in support for hangul, the Korean language, for users without
XIM (X Input Method). Since it didn't work well and was not maintained it was
removed in Vim 8.1.2327.
Introduction *hangul* If you want this hangul input mehod you can go back to Vim 8.1.2326 or
------------ earlier. If you think this code is still useful and want to maintain it, make
It is to input hangul, the Korean language, with Vim GUI version. a patch to add it back. However, making it work with UTF-8 encoding would be
If you have a XIM program, you can use another |+xim| feature. best.
Basically, it is for anybody who has no XIM program.
Compile
-------
Next is a basic option. You can add any other configure option. >
./configure --with-x --enable-multibyte --enable-hangulinput \
--disable-xim
And you should check feature.h. If |+hangul_input| feature is enabled
by configure, you can select more options such as keyboard type, 2 bulsik
or 3 bulsik. You can find keywords like next in there. >
#define HANGUL_DEFAULT_KEYBOARD 2
#define ESC_CHG_TO_ENG_MODE
/* #define X_LOCALE */
Environment variables
---------------------
You should set LANG variable to Korean locale such as ko, ko_KR.eucKR
or ko_KR.UTF-8.
If you set LC_ALL variable, it should be set to Korean locale also.
Vim resource
------------
You may want to set 'encoding' and 'fileencodings'.
Next are examples: >
:set encoding=euc-kr
:set encoding=utf-8
:set fileencodings=ucs-bom,utf-8,cp949,euc-kr,latin1
Keyboard
--------
You can change keyboard type (2 bulsik or 3 bulsik) using VIM_KEYBOARD
or HANGUL_KEYBOARD_TYPE environment variables. For sh, just do (2 bulsik): >
export VIM_KEYBOARD="2"
or >
export HANGUL_KEYBOARD_TYPE="2"
If both are set, VIM_KEYBOARD has higher priority.
Hangul Fonts
------------
If you use GTK version of gvim, you should set 'guifont' and 'guifontwide'.
For example: >
set guifont=Courier\ 12
set guifontwide=NanumGothicCoding\ 12
If you use Motif or Athena version of gvim, you should set 'guifontset' in
your vimrc. You can set fontset in the .Xdefaults file.
$HOME/.gvimrc: >
set guifontset=english_font,hangul_font
$HOME/.Xdefaults: >
Vim.font: english_font
! Nexts are for hangul menu with Athena
*international: True
Vim*fontSet: english_font,hangul_font
! Nexts are for hangul menu with Motif
*international: True
Vim*fontList: english_font;hangul_font:
attention! the , (comma) or ; (semicolon)
And there should be no ':set guifont'. If it exists, then gvim ignores
':set guifontset'. It means Vim runs without fontset supporting.
So, you can see only English. Hangul does not be correctly displayed.
After "fontset" feature is enabled, Vim does not allow using english
font only in "font" setting for syntax.
For example, if you use >
:set guifontset=eng_font,your_font
in your .gvimrc, then you should do for syntax >
:hi Comment guifg=Cyan font=another_eng_font,another_your_font
If you just do >
:hi Comment font=another_eng_font
then you can see a error message. Be careful!
hangul_font width should be twice than english_font width.
Unsupported Feature
-------------------
We don't support Johab font.
We don't support Hanja input.
And We don't have any plan to support them.
If you really need such features, you can use console version of Vim with a
capable terminal emulator.
Bug or Comment
--------------
Send comments, patches and suggestions to:
SungHyun Nam <goweol@gmail.com>
Chi-Deok Hwang <...>
vim:tw=78:ts=8:noet:ft=help:norl: vim:tw=78:ts=8:noet:ft=help:norl:

View File

@ -1,4 +1,4 @@
*hebrew.txt* For Vim version 8.1. Last change: 2019 May 05 *hebrew.txt* For Vim version 8.2. Last change: 2019 May 05
VIM REFERENCE MANUAL by Ron Aaron (and Avner Lottem) VIM REFERENCE MANUAL by Ron Aaron (and Avner Lottem)

View File

@ -1,4 +1,4 @@
*help.txt* For Vim version 8.1. Last change: 2019 Jul 21 *help.txt* For Vim version 8.2. Last change: 2019 Jul 21
VIM - main help file VIM - main help file
k k
@ -197,7 +197,7 @@ Remarks about specific systems ~
|os_390.txt| OS/390 Unix |os_390.txt| OS/390 Unix
|os_amiga.txt| Amiga |os_amiga.txt| Amiga
|os_beos.txt| BeOS and BeBox |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_mac.txt| Macintosh
|os_mint.txt| Atari MiNT |os_mint.txt| Atari MiNT
|os_msdos.txt| MS-DOS (plain DOS and DOS box under Windows) |os_msdos.txt| MS-DOS (plain DOS and DOS box under Windows)
@ -206,7 +206,7 @@ Remarks about specific systems ~
|os_risc.txt| RISC-OS |os_risc.txt| RISC-OS
|os_unix.txt| Unix |os_unix.txt| Unix
|os_vms.txt| VMS |os_vms.txt| VMS
|os_win32.txt| MS-Windows 95/98/NT |os_win32.txt| MS-Windows
*standard-plugin-list* *standard-plugin-list*
Standard plugins ~ Standard plugins ~
|pi_getscript.txt| Downloading latest version of Vim scripts |pi_getscript.txt| Downloading latest version of Vim scripts

View File

@ -1,4 +1,4 @@
*helphelp.txt* For Vim version 8.1. Last change: 2019 May 04 *helphelp.txt* For Vim version 8.2. Last change: 2019 Oct 18
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@ -103,6 +103,10 @@ Help on help files *helphelp*
*:helpc* *:helpclose* *:helpc* *:helpclose*
:helpc[lose] Close one help window, if there is one. :helpc[lose] Close one help window, if there is one.
Vim will try to restore the window layout (including
cursor position) to the same layout it was before
opening the help window initially. This might cause
triggering several autocommands.
*:helpg* *:helpgrep* *:helpg* *:helpgrep*
:helpg[rep] {pattern}[@xx] :helpg[rep] {pattern}[@xx]

View File

@ -1,4 +1,4 @@
*howto.txt* For Vim version 8.1. Last change: 2006 Apr 02 *howto.txt* For Vim version 8.2. Last change: 2006 Apr 02
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar

View File

@ -1,4 +1,4 @@
*if_cscop.txt* For Vim version 8.1. Last change: 2019 May 05 *if_cscop.txt* For Vim version 8.2. Last change: 2019 May 05
VIM REFERENCE MANUAL by Andy Kahn VIM REFERENCE MANUAL by Andy Kahn

View File

@ -1,4 +1,4 @@
*if_lua.txt* For Vim version 8.1. Last change: 2019 Jul 21 *if_lua.txt* For Vim version 8.2. Last change: 2019 Jul 21
VIM REFERENCE MANUAL by Luis Carvalho VIM REFERENCE MANUAL by Luis Carvalho

View File

@ -1,4 +1,4 @@
*if_mzsch.txt* For Vim version 8.1. Last change: 2019 Jul 21 *if_mzsch.txt* For Vim version 8.2. Last change: 2019 Dec 07
VIM REFERENCE MANUAL by Sergey Khorev VIM REFERENCE MANUAL by Sergey Khorev

View File

@ -1,4 +1,4 @@
*if_ole.txt* For Vim version 8.1. Last change: 2019 May 05 *if_ole.txt* For Vim version 8.2. Last change: 2019 Dec 07
VIM REFERENCE MANUAL by Paul Moore VIM REFERENCE MANUAL by Paul Moore

View File

@ -1,4 +1,4 @@
*if_perl.txt* For Vim version 8.1. Last change: 2019 Jul 21 *if_perl.txt* For Vim version 8.2. Last change: 2019 Dec 07
VIM REFERENCE MANUAL by Sven Verdoolaege VIM REFERENCE MANUAL by Sven Verdoolaege
@ -55,14 +55,14 @@ The ActiveState one should work, Strawberry Perl is a good alternative.
working: > working: >
:perl VIM::Msg("Hello") :perl VIM::Msg("Hello")
:pe[rl] << [endpattern] :pe[rl] << [endmarker]
{script} {script}
{endpattern} {endmarker}
Execute Perl script {script}. Execute Perl script {script}.
The {endpattern} after {script} must NOT be preceded The {endmarker} after {script} must NOT be preceded by
by any white space. any white space.
If [endpattern] is omitted, it defaults to a dot '.' If [endmarker] is omitted, it defaults to a dot '.'
like for the |:append| and |:insert| commands. Using like for the |:append| and |:insert| commands. Using
'.' helps when inside a function, because "$i;" looks '.' helps when inside a function, because "$i;" looks
like the start of an |:insert| command to Vim. like the start of an |:insert| command to Vim.

View File

@ -1,4 +1,4 @@
*if_pyth.txt* For Vim version 8.1. Last change: 2019 Jul 21 *if_pyth.txt* For Vim version 8.2. Last change: 2019 Dec 07
VIM REFERENCE MANUAL by Paul Moore VIM REFERENCE MANUAL by Paul Moore
@ -767,16 +767,27 @@ match the Python 2.x or Python 3 version Vim was compiled with.
10. Python 3 *python3* 10. Python 3 *python3*
*:py3* *:python3* *:py3* *:python3*
The `:py3` and `:python3` commands work similar to `:python`. A simple check :[range]py3 {stmt}
if the `:py3` command is working: > :[range]py3 << [endmarker]
:py3 print("Hello") {script}
{endmarker}
:[range]python3 {stmt}
:[range]python3 << [endmarker]
{script}
{endmarker}
The `:py3` and `:python3` commands work similar to `:python`. A
simple check if the `:py3` command is working: >
:py3 print("Hello")
<
To see what version of Python you have: > To see what version of Python you have: >
:py3 import sys :py3 import sys
:py3 print(sys.version) :py3 print(sys.version)
< *:py3file* < *:py3file*
:[range]py3f[ile] {file}
The `:py3file` command works similar to `:pyfile`. The `:py3file` command works similar to `:pyfile`.
*:py3do* *:py3do*
:[range]py3do {body}
The `:py3do` command works similar to `:pydo`. The `:py3do` command works similar to `:pydo`.

View File

@ -1,4 +1,4 @@
*if_ruby.txt* For Vim version 8.1. Last change: 2019 Jul 21 *if_ruby.txt* For Vim version 8.2. Last change: 2019 Jul 21
VIM REFERENCE MANUAL by Shugo Maeda VIM REFERENCE MANUAL by Shugo Maeda
@ -28,14 +28,14 @@ downloading Ruby there.
:rub[y] {cmd} Execute Ruby command {cmd}. A command to try it out: > :rub[y] {cmd} Execute Ruby command {cmd}. A command to try it out: >
:ruby print "Hello" :ruby print "Hello"
:rub[y] << [endpattern] :rub[y] << [endmarker]
{script} {script}
{endpattern} {endmarker}
Execute Ruby script {script}. Execute Ruby script {script}.
The {endpattern} after {script} must NOT be preceded The {endmarker} after {script} must NOT be preceded by
by any white space. any white space.
If [endpattern] is omitted, it defaults to a dot '.' If [endmarker] is omitted, it defaults to a dot '.'
like for the |:append| and |:insert| commands. like for the |:append| and |:insert| commands.
This form of the |:ruby| command is mainly useful for This form of the |:ruby| command is mainly useful for

View File

@ -1,4 +1,4 @@
*if_sniff.txt* For Vim version 8.1. Last change: 2016 Feb 27 *if_sniff.txt* For Vim version 8.2. Last change: 2016 Feb 27
VIM REFERENCE MANUAL VIM REFERENCE MANUAL

View File

@ -1,4 +1,4 @@
*if_tcl.txt* For Vim version 8.1. Last change: 2019 Jul 21 *if_tcl.txt* For Vim version 8.2. Last change: 2019 Jul 21
VIM REFERENCE MANUAL by Ingo Wilken VIM REFERENCE MANUAL by Ingo Wilken

View File

@ -1,4 +1,4 @@
*indent.txt* For Vim version 8.1. Last change: 2019 Aug 01 *indent.txt* For Vim version 8.2. Last change: 2019 Dec 07
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@ -812,6 +812,16 @@ Detail:
<!-- --> : -1 <!-- --> : -1
MATLAB *ft-matlab-indent* *matlab-indent* *matlab-indenting*
The setting Function indenting format in MATLAB Editor/Debugger Language
Preferences corresponds to: >
:let g:MATLAB_function_indent = {0, 1 or 2 (default)}
Where 0 is for Classic, 1 for Indent nested functions and 2 for Indent all
functions.
PHP *ft-php-indent* *php-indent* *php-indenting* PHP *ft-php-indent* *php-indent* *php-indenting*
NOTE: PHP files will be indented correctly only if PHP |syntax| is active. NOTE: PHP files will be indented correctly only if PHP |syntax| is active.
@ -949,10 +959,12 @@ Function call arguments will indent 1 extra level. For two-space indentation: >
------------- -------------
*PHP_IndentFunctionDeclarationParameters* *PHP_IndentFunctionDeclarationParameters*
Extra indentation levels to add to arguments in multi-line function definitions. > Extra indentation levels to add to arguments in multi-line function
definitions. >
let g:PHP_IndentFunctionDeclarationParameters = 1 let g:PHP_IndentFunctionDeclarationParameters = 1
Function arguments in declarations will indent 1 extra level. For two-space indentation: > Function arguments in declarations will indent 1 extra level. For two-space
indentation: >
function call_the_thing( function call_the_thing(
$with_this, $with_this,

View File

@ -1,4 +1,4 @@
*index.txt* For Vim version 8.1. Last change: 2019 Aug 21 *index.txt* For Vim version 8.2. Last change: 2020 Jan 14
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@ -23,7 +23,7 @@ to look for deleting something, use: "/delete".
5. Terminal-Job mode |terminal-job-index| 5. Terminal-Job mode |terminal-job-index|
6. EX commands |ex-cmd-index| 6. EX commands |ex-cmd-index|
For an overview of options see help.txt |option-list|. For an overview of options see |option-list|.
For an overview of built-in functions see |functions|. For an overview of built-in functions see |functions|.
For a list of Vim variables see |vim-variable|. For a list of Vim variables see |vim-variable|.
For a complete listing of all help items see |help-tags|. For a complete listing of all help items see |help-tags|.
@ -73,14 +73,16 @@ tag char action in Insert mode ~
the cursor the cursor
|i_CTRL-Q| CTRL-Q same as CTRL-V, unless used for terminal |i_CTRL-Q| CTRL-Q same as CTRL-V, unless used for terminal
control flow control flow
|i_CTRL-R| CTRL-R {0-9a-z"%#*:=} |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 insert the contents of a register
|i_CTRL-R_CTRL-R| CTRL-R CTRL-R {0-9a-z"%#*:=} |i_CTRL-R_CTRL-R| CTRL-R CTRL-R {register}
insert the contents of a register literally insert the contents of a register literally
|i_CTRL-R_CTRL-O| CTRL-R CTRL-O {0-9a-z"%#*:=} |i_CTRL-R_CTRL-O| CTRL-R CTRL-O {register}
insert the contents of a register literally insert the contents of a register literally
and don't auto-indent and don't auto-indent
|i_CTRL-R_CTRL-P| CTRL-R CTRL-P {0-9a-z"%#*:=} |i_CTRL-R_CTRL-P| CTRL-R CTRL-P {register}
insert the contents of a register literally insert the contents of a register literally
and fix indent. and fix indent.
CTRL-S (used for terminal control flow) CTRL-S (used for terminal control flow)
@ -89,6 +91,8 @@ tag char action in Insert mode ~
|i_CTRL-U| CTRL-U delete all entered characters in the current |i_CTRL-U| CTRL-U delete all entered characters in the current
line line
|i_CTRL-V| CTRL-V {char} insert next non-digit literally |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 |i_CTRL-V_digit| CTRL-V {number} insert three digit decimal number as a single
byte. byte.
|i_CTRL-W| CTRL-W delete word before the cursor |i_CTRL-W| CTRL-W delete word before the cursor
@ -781,6 +785,7 @@ tag char note action in Normal mode ~
|gn| gn 1,2 find the next match with the last used |gn| gn 1,2 find the next match with the last used
search pattern and Visually select it search pattern and Visually select it
|gm| gm 1 go to character at middle of the screenline |gm| gm 1 go to character at middle of the screenline
|gM| gM 1 go to character at middle of the text line
|go| go 1 cursor to byte N in the buffer |go| go 1 cursor to byte N in the buffer
|gp| ["x]gp 2 put the text [from register x] after the |gp| ["x]gp 2 put the text [from register x] after the
cursor N times, leave the cursor after it cursor N times, leave the cursor after it
@ -1128,6 +1133,8 @@ The commands are sorted on the non-optional part of their name.
tag command action ~ tag command action ~
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
|:| : nothing
|:range| :{range} go to last line in {range}
|:!| :! filter lines or execute an external command |:!| :! filter lines or execute an external command
|:!!| :!! repeat last ":!" command |:!!| :!! repeat last ":!" command
|:#| :# same as ":number" |:#| :# same as ":number"

View File

@ -1,4 +1,4 @@
*insert.txt* For Vim version 8.1. Last change: 2019 Aug 21 *insert.txt* For Vim version 8.2. Last change: 2020 Jan 26
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@ -106,7 +106,7 @@ CTRL-K {char1} [char2]
CTRL-N Find next keyword (see |i_CTRL-N|). CTRL-N Find next keyword (see |i_CTRL-N|).
CTRL-P Find previous keyword (see |i_CTRL-P|). CTRL-P Find previous keyword (see |i_CTRL-P|).
CTRL-R {0-9a-z"%#*+:.-=} *i_CTRL-R* CTRL-R {register} *i_CTRL-R*
Insert the contents of a register. Between typing CTRL-R and Insert the contents of a register. Between typing CTRL-R and
the second character, '"' will be displayed to indicate that the second character, '"' will be displayed to indicate that
you are expected to enter the name of a register. you are expected to enter the name of a register.
@ -143,7 +143,7 @@ CTRL-R {0-9a-z"%#*+:.-=} *i_CTRL-R*
sequence will be broken. sequence will be broken.
See |registers| about registers. See |registers| about registers.
CTRL-R CTRL-R {0-9a-z"%#*+/:.-=} *i_CTRL-R_CTRL-R* CTRL-R CTRL-R {register} *i_CTRL-R_CTRL-R*
Insert the contents of a register. Works like using a single Insert the contents of a register. Works like using a single
CTRL-R, but the text is inserted literally, not as if typed. CTRL-R, but the text is inserted literally, not as if typed.
This differs when the register contains characters like <BS>. This differs when the register contains characters like <BS>.
@ -155,7 +155,7 @@ CTRL-R CTRL-R {0-9a-z"%#*+/:.-=} *i_CTRL-R_CTRL-R*
The '.' register (last inserted text) is still inserted as The '.' register (last inserted text) is still inserted as
typed. typed.
CTRL-R CTRL-O {0-9a-z"%#*+/:.-=} *i_CTRL-R_CTRL-O* CTRL-R CTRL-O {register} *i_CTRL-R_CTRL-O*
Insert the contents of a register literally and don't Insert the contents of a register literally and don't
auto-indent. Does the same as pasting with the mouse auto-indent. Does the same as pasting with the mouse
|<MiddleMouse>|. When the register is linewise this will |<MiddleMouse>|. When the register is linewise this will
@ -164,7 +164,7 @@ CTRL-R CTRL-O {0-9a-z"%#*+/:.-=} *i_CTRL-R_CTRL-O*
The '.' register (last inserted text) is still inserted as The '.' register (last inserted text) is still inserted as
typed. typed.
CTRL-R CTRL-P {0-9a-z"%#*+/:.-=} *i_CTRL-R_CTRL-P* CTRL-R CTRL-P {register} *i_CTRL-R_CTRL-P*
Insert the contents of a register literally and fix the Insert the contents of a register literally and fix the
indent, like |[<MiddleMouse>|. indent, like |[<MiddleMouse>|.
Does not replace characters! Does not replace characters!
@ -196,12 +196,19 @@ CTRL-V Insert next non-digit literally. For special keys, the
mapping. mapping.
Note: When CTRL-V is mapped (e.g., to paste text) you can Note: When CTRL-V is mapped (e.g., to paste text) you can
often use CTRL-Q instead |i_CTRL-Q|. often use CTRL-Q instead |i_CTRL-Q|.
When |modifyOtherKeys| is enabled then special Escape sequence
is converted back to what it was without |modifyOtherKeys|,
unless the Shift key is also pressed.
*i_CTRL-Q* *i_CTRL-Q*
CTRL-Q Same as CTRL-V. CTRL-Q Same as CTRL-V.
Note: Some terminal connections may eat CTRL-Q, it doesn't Note: Some terminal connections may eat CTRL-Q, it doesn't
work then. It does work in the GUI. 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 CTRL-X Enter CTRL-X mode. This is a sub-mode where commands can
be given to complete words or scroll the window. See be given to complete words or scroll the window. See
|i_CTRL-X| and |ins-completion|. |i_CTRL-X| and |ins-completion|.
@ -1072,7 +1079,8 @@ If you want to suppress the warning message for an empty result, return
Other items are ignored. 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: > For example, the function can contain this: >
let matches = ... list of words ... let matches = ... list of words ...
@ -1101,7 +1109,8 @@ items:
empty when non-zero this match will be added even when it is empty when non-zero this match will be added even when it is
an empty string an empty string
user_data custom data which is associated with the item and 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 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 an item does not meet these requirements then an error message is given and
@ -1124,7 +1133,7 @@ is used when the info popup is created. The option is a comma separated list
of values: of values:
height maximum height of the popup height maximum height of the popup
width maximum width of the popup width maximum width of the popup
highlight highlight group of the popup (default is Pmenu) highlight highlight group of the popup (default is PmenuSel)
align "item" (default) or "menu" align "item" (default) or "menu"
border "on" (default) or "off" border "on" (default) or "off"
Example: > Example: >
@ -1138,6 +1147,27 @@ below the text, and the bottom of the menu otherwise.
After the info popup is created it can be found with |popup_findinfo()| and After the info popup is created it can be found with |popup_findinfo()| and
properties can be changed with |popup_setoptions()|. properties can be changed with |popup_setoptions()|.
*complete-popuphidden*
If the information for the popup is obtained asynchronously, use "popuphidden"
in 'completeopt'. The info popup will then be initially hidden and
|popup_show()| must be called once it has been filled with the info. This can
be done with a |CompleteChanged| autocommand, something like this: >
set completeopt+=popuphidden
au CompleteChanged * call UpdateCompleteInfo()
func UpdateCompleteInfo()
" Cancel any pending info fetch
let item = v:event.completed_item
" Start fetching info for the item then call ShowCompleteInfo(info)
endfunc
func ShowCompleteInfo(info)
let id = popup_findinfo()
if id
call popup_settext(id, 'async info: ' .. a:info)
call popup_show(id)
endif
endfunc
< *complete-item-kind*
The "kind" item uses a single letter to indicate the kind of completion. This The "kind" item uses a single letter to indicate the kind of completion. This
may be used to show the completion differently (different color or icon). may be used to show the completion differently (different color or icon).
Currently these types can be used: Currently these types can be used:
@ -1980,11 +2010,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. changed, the detected format is only used while reading the file.
A similar thing happens with 'fileencodings'. A similar thing happens with 'fileencodings'.
On non-MS-DOS, Win32, and OS/2 systems the message "[dos format]" is shown if On non-Win32 systems the message "[dos format]" is shown if a file is read in
a file is read in DOS format, to remind you that something unusual is done. DOS format, to remind you that something unusual is done.
On Macintosh, MS-DOS, Win32, and OS/2 the message "[unix format]" is shown if On Macintosh and Win32 the message "[unix format]" is shown if a file is read
a file is read in Unix format. 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. read in Mac format.
An example on how to use ":r !": > An example on how to use ":r !": >

View File

@ -1,4 +1,4 @@
*intro.txt* For Vim version 8.1. Last change: 2019 Aug 16 *intro.txt* For Vim version 8.2. Last change: 2019 Nov 11
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@ -234,7 +234,7 @@ Vim would never have become what it is now, without the help of these people!
Sung-Hyun Nam Work on multi-byte versions Sung-Hyun Nam Work on multi-byte versions
Vince Negri Win32 GUI and generic console enhancements Vince Negri Win32 GUI and generic console enhancements
Steve Oualline Author of the first Vim book |frombook| Steve Oualline Author of the first Vim book |frombook|
Dominique Pelle valgrind reports and many fixes Dominique Pelle Valgrind reports and many fixes
A.Politz Many bug reports and some fixes A.Politz Many bug reports and some fixes
George V. Reilly Win32 port, Win32 GUI start-off George V. Reilly Win32 port, Win32 GUI start-off
Stephen Riehm bug collector Stephen Riehm bug collector

View File

@ -1,4 +1,4 @@
*map.txt* For Vim version 8.1. Last change: 2019 Jun 02 *map.txt* For Vim version 8.2. Last change: 2019 Dec 19
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@ -20,7 +20,8 @@ manual.
1.8 Examples |map-examples| 1.8 Examples |map-examples|
1.9 Using mappings |map-typing| 1.9 Using mappings |map-typing|
1.10 Mapping alt-keys |:map-alt-keys| 1.10 Mapping alt-keys |:map-alt-keys|
1.11 Mapping an operator |:map-operator| 1.11 Mapping in modifyOtherKeys mode |modifyOtherKeys|
1.12 Mapping an operator |:map-operator|
2. Abbreviations |abbreviations| 2. Abbreviations |abbreviations|
3. Local mappings and functions |script-local| 3. Local mappings and functions |script-local|
4. User-defined commands |user-commands| 4. User-defined commands |user-commands|
@ -357,6 +358,8 @@ Some commands work both in Insert mode and Command-line mode, some not:
:cmap :cnoremap :cunmap :cmapclear - yes - :cmap :cnoremap :cunmap :cmapclear - yes -
:lmap :lnoremap :lunmap :lmapclear yes* yes* yes* :lmap :lnoremap :lunmap :lmapclear yes* yes* yes*
* If 'iminsert' is 1, see |language-mapping| below.
The original Vi did not have separate mappings for The original Vi did not have separate mappings for
Normal/Visual/Operator-pending mode and for Insert/Command-line mode. Normal/Visual/Operator-pending mode and for Insert/Command-line mode.
Therefore the ":map" and ":map!" commands enter and display mappings for Therefore the ":map" and ":map!" commands enter and display mappings for
@ -777,6 +780,9 @@ In the GUI Vim handles the Alt key itself, thus mapping keys with ALT should
always work. But in a terminal Vim gets a sequence of bytes and has to figure always work. But in a terminal Vim gets a sequence of bytes and has to figure
out whether ALT was pressed or not. out whether ALT was pressed or not.
If the terminal supports the modifyOtherKeys mode and it has been enabled,
then Vim can recognize more key combinations, see |modifyOtherKeys| below.
By default Vim assumes that pressing the ALT key sets the 8th bit of a typed By default Vim assumes that pressing the ALT key sets the 8th bit of a typed
character. Most decent terminals can work that way, such as xterm, aterm and character. Most decent terminals can work that way, such as xterm, aterm and
rxvt. If your <A-k> mappings don't work it might be that the terminal is rxvt. If your <A-k> mappings don't work it might be that the terminal is
@ -814,7 +820,40 @@ on the terminal; that's a good last resource in case you want to send ESC when
using other applications but not when inside Vim. using other applications but not when inside Vim.
1.11 MAPPING AN OPERATOR *:map-operator* 1.11 MAPPING IN modifyOtherKeys mode *modifyOtherKeys*
Xterm and a few other terminals can be put in a mode where keys with modifiers
are sent with a special escape code. Vim recognizes these codes and can then
make a difference between CTRL-H and Backspace, even when Backspace sends the
character 8. And many more special keys.
For xterm modifyOtherKeys is enabled in the builtin termcap entry. If this is
not used you can enable modifyOtherKeys with these lines in your vimrc: >
let &t_TI = "\<Esc>[>4;2m"
let &t_TE = "\<Esc>[>4;m"
In case the modifyOtherKeys mode causes problems you can disable it: >
let &t_TI = ""
let &t_TE = ""
It does not take effect immediately. To have this work without restarting Vim
execute a shell command, e.g.: `!ls` Or put the lines in your |vimrc|.
When modifyOtherKeys is enabled you can map <C-[> and <C-S-{>: >
imap <C-[> [[[
imap <C-S-{> {{{
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-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.
1.12 MAPPING AN OPERATOR *:map-operator*
An operator is used before a {motion} command. To define your own operator An operator is used before a {motion} command. To define your own operator
you must create mapping that first sets the 'operatorfunc' option and then you must create mapping that first sets the 'operatorfunc' option and then
@ -1006,7 +1045,8 @@ See |:verbose-cmd| for more information.
See |:map-<buffer>| for the optional <buffer> argument. See |:map-<buffer>| for the optional <buffer> argument.
*:una* *:unabbreviate* *:una* *:unabbreviate*
:una[bbreviate] {lhs} Remove abbreviation for {lhs} from the list. If none :una[bbreviate] [<buffer>] {lhs}
Remove abbreviation for {lhs} from the list. If none
is found, remove abbreviations in which {lhs} matches is found, remove abbreviations in which {lhs} matches
with the {rhs}. This is done so that you can even with the {rhs}. This is done so that you can even
remove abbreviations after expansion. To avoid remove abbreviations after expansion. To avoid
@ -1021,7 +1061,8 @@ See |:verbose-cmd| for more information.
Same as ":ab", but for Command-line mode only. Same as ":ab", but for Command-line mode only.
*:cuna* *:cunabbrev* *:cuna* *:cunabbrev*
:cuna[bbrev] {lhs} Same as ":una", but for Command-line mode only. :cuna[bbrev] [<buffer>] {lhs}
Same as ":una", but for Command-line mode only.
*:cnorea* *:cnoreabbrev* *:cnorea* *:cnoreabbrev*
:cnorea[bbrev] [<expr>] [<buffer>] [lhs] [rhs] :cnorea[bbrev] [<expr>] [<buffer>] [lhs] [rhs]
@ -1033,7 +1074,8 @@ See |:verbose-cmd| for more information.
Same as ":ab", but for Insert mode only. Same as ":ab", but for Insert mode only.
*:iuna* *:iunabbrev* *:iuna* *:iunabbrev*
:iuna[bbrev] {lhs} Same as ":una", but for insert mode only. :iuna[bbrev] [<buffer>] {lhs}
Same as ":una", but for insert mode only.
*:inorea* *:inoreabbrev* *:inorea* *:inoreabbrev*
:inorea[bbrev] [<expr>] [<buffer>] [lhs] [rhs] :inorea[bbrev] [<expr>] [<buffer>] [lhs] [rhs]

View File

@ -1,4 +1,4 @@
*mbyte.txt* For Vim version 8.1. Last change: 2019 Jul 04 *mbyte.txt* For Vim version 8.2. Last change: 2019 Jul 04
VIM REFERENCE MANUAL by Bram Moolenaar et al. VIM REFERENCE MANUAL by Bram Moolenaar et al.

View File

@ -1,4 +1,4 @@
*message.txt* For Vim version 8.1. Last change: 2019 Aug 23 *message.txt* For Vim version 8.2. Last change: 2020 Jan 01
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@ -76,7 +76,7 @@ See `:messages` above.
LIST OF MESSAGES LIST OF MESSAGES
*E222* *E228* *E232* *E256* *E293* *E298* *E304* *E317* *E222* *E228* *E232* *E256* *E293* *E298* *E304* *E317*
*E318* *E356* *E438* *E439* *E440* *E316* *E320* *E322* *E318* *E356* *E438* *E439* *E440* *E316* *E320* *E322*
*E323* *E341* *E473* *E570* *E685* *E950* > *E323* *E341* *E473* *E570* *E685* *E292* >
Add to read buffer Add to read buffer
makemap: Illegal mode makemap: Illegal mode
Cannot create BalloonEval with both message and callback Cannot create BalloonEval with both message and callback
@ -582,7 +582,8 @@ allowed for the command that was used.
Vim was not able to create a swap file. You can still edit the file, but if Vim was not able to create a swap file. You can still edit the file, but if
Vim unexpectedly exits the changes will be lost. And Vim may consume a lot of Vim unexpectedly exits the changes will be lost. And Vim may consume a lot of
memory when editing a big file. You may want to change the 'directory' option memory when editing a big file. You may want to change the 'directory' option
to avoid this error. See |swap-file|. to avoid this error. This error is not given when 'directory' is empty. See
|swap-file|.
*E140* > *E140* >
Use ! to write partial buffer Use ! to write partial buffer

View File

@ -1,4 +1,4 @@
*mlang.txt* For Vim version 8.1. Last change: 2019 May 05 *mlang.txt* For Vim version 8.2. Last change: 2019 May 05
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar

View File

@ -1,4 +1,4 @@
*motion.txt* For Vim version 8.1. Last change: 2019 Jun 02 *motion.txt* For Vim version 8.2. Last change: 2019 Nov 16
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@ -227,6 +227,12 @@ g^ When lines wrap ('wrap' on): To the first non-blank
gm Like "g0", but half a screenwidth to the right (or as gm Like "g0", but half a screenwidth to the right (or as
much as possible). much as possible).
*gM*
gM Like "g0", but to halfway the text of the line.
With a count: to this percentage of text in the line.
Thus "10gM" is near the start of the text and "90gM"
is near the end of the text.
*g$* *g<End>* *g$* *g<End>*
g$ or g<End> When lines wrap ('wrap' on): To the last character of g$ or g<End> When lines wrap ('wrap' on): To the last character of
the screen line and [count - 1] screen lines downward the screen line and [count - 1] screen lines downward
@ -958,6 +964,7 @@ These commands are not marks themselves, but jump to a mark:
- numbered marks '0 - '9 - numbered marks '0 - '9
- last insert position '^ - last insert position '^
- last change position '. - last change position '.
- last affected text area '[ and ']
- the Visual area '< and '> - the Visual area '< and '>
- line numbers in placed signs - line numbers in placed signs
- line numbers in quickfix positions - line numbers in quickfix positions

View File

@ -1,4 +1,4 @@
*netbeans.txt* For Vim version 8.1. Last change: 2019 May 05 *netbeans.txt* For Vim version 8.2. Last change: 2019 May 05
VIM REFERENCE MANUAL by Gordon Prieur et al. VIM REFERENCE MANUAL by Gordon Prieur et al.

View File

@ -1,4 +1,4 @@
*options.txt* For Vim version 8.1. Last change: 2019 Aug 21 *options.txt* For Vim version 8.2. Last change: 2020 Jan 24
VIM REFERENCE MANUAL by Bram Moolenaar 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* 1. Setting options *set-option* *E764*
*:se* *:set* *: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 :se[t] termcap Show all terminal options. Note that in the GUI the
key codes are not shown, because they are generated key codes are not shown, because they are generated
@ -196,11 +200,11 @@ the option value, use '\"' instead. This example sets the 'titlestring'
option to 'hi "there"': > option to 'hi "there"': >
:set titlestring=hi\ \"there\" :set titlestring=hi\ \"there\"
For MS-DOS and WIN32 backslashes in file names are mostly not removed. More For Win32 backslashes in file names are mostly not removed. More precise: For
precise: For options that expect a file name (those where environment options that expect a file name (those where environment variables are
variables are expanded) a backslash before a normal file name character is not expanded) a backslash before a normal file name character is not removed. But
removed. But a backslash before a special character (space, backslash, comma, a backslash before a special character (space, backslash, comma, etc.) is used
etc.) is used like explained above. like explained above.
There is one special situation, when the value starts with "\\": > There is one special situation, when the value starts with "\\": >
:set dir=\\machine\path results in "\\machine\path" :set dir=\\machine\path results in "\\machine\path"
:set dir=\\\\machine\\path results in "\\machine\path" :set dir=\\\\machine\\path results in "\\machine\path"
@ -287,7 +291,7 @@ happens when the buffer is not loaded, but they are lost when the buffer is
wiped out |:bwipe|. wiped out |:bwipe|.
*:setl* *:setlocal* *: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 current buffer or window. Not all options have a
local value. If the option does not have a local local value. If the option does not have a local
value the global value is set. value the global value is set.
@ -309,7 +313,7 @@ wiped out |:bwipe|.
{option}, so that the global value will be used. {option}, so that the global value will be used.
*:setg* *:setglobal* *: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. option without changing the local value.
When displaying an option, the global value is shown. When displaying an option, the global value is shown.
With the "all" argument: display global values for all With the "all" argument: display global values for all
@ -496,10 +500,11 @@ to set options automatically for one or more files:
*modeline* *vim:* *vi:* *ex:* *E520* *modeline* *vim:* *vi:* *ex:* *E520*
There are two forms of modelines. The first form: There are two forms of modelines. The first form:
[text]{white}{vi:|vim:|ex:}[white]{options} [text{white}]{vi:|vim:|ex:}[white]{options}
[text] any text or empty [text{white}] empty or any text followed by at least one blank
{white} at least one blank character (<Space> or <Tab>) character (<Space> or <Tab>); "ex:" always requires at
least one blank character
{vi:|vim:|ex:} the string "vi:", "vim:" or "ex:" {vi:|vim:|ex:} the string "vi:", "vim:" or "ex:"
[white] optional white space [white] optional white space
{options} a list of option settings, separated with white space {options} a list of option settings, separated with white space
@ -512,10 +517,11 @@ Examples:
The second form (this is compatible with some versions of Vi): 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 [text{white}] empty or any text followed by at least one blank
{white} at least one blank character (<Space> or <Tab>) character (<Space> or <Tab>); "ex:" always requires at
least one blank character
{vi:|vim:|Vim:|ex:} the string "vi:", "vim:", "Vim:" or "ex:" {vi:|vim:|Vim:|ex:} the string "vi:", "vim:", "Vim:" or "ex:"
[white] optional white space [white] optional white space
se[t] the string "set " or "se " (note the space); When se[t] the string "set " or "se " (note the space); When
@ -575,9 +581,9 @@ If an error is detected the rest of the line is skipped.
If you want to include a ':' in a set command precede it with a '\'. The If you want to include a ':' in a set command precede it with a '\'. The
backslash in front of the ':' will be removed. Example: backslash in front of the ':' will be removed. Example:
/* vi:set dir=c\:\tmp: */ ~ /* vi:set fillchars=stl\:^,vert\:\|: */ ~
This sets the 'dir' option to "c:\tmp". Only a single backslash before the This sets the 'fillchars' option to "stl:^,vert:\|". Only a single backslash
':' is removed. Thus to include "\:" you have to specify "\\:". before the ':' is removed. Thus to include "\:" you have to specify "\\:".
*E992* *E992*
No other commands than "set" are supported, for security reasons (somebody No other commands than "set" are supported, for security reasons (somebody
might create a Trojan horse text file with modelines). And not all options might create a Trojan horse text file with modelines). And not all options
@ -651,7 +657,7 @@ supported use something like this: >
A jump table for the options with a short description can be found at |Q_op|. A jump table for the options with a short description can be found at |Q_op|.
*'aleph'* *'al'* *aleph* *Aleph* *'aleph'* *'al'* *aleph* *Aleph*
'aleph' 'al' number (default 128 for MS-DOS, 224 otherwise) 'aleph' 'al' number (default 128 for MS-Windows, 224 otherwise)
global global
{only available when compiled with the |+rightleft| {only available when compiled with the |+rightleft|
feature} feature}
@ -708,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.), (or Vim is run inside an xterm invoked with "-cjkwidth" option.),
this option should be set to "double" to match the width perceived 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 by Vim with the width of glyphs in the font. Perhaps it also has
to be set to "double" under CJK Windows 9x/ME or Windows 2k/XP to be set to "double" under CJK MS-Windows when the system locale is
when the system locale is set to one of CJK locales. See Unicode set to one of CJK locales. See Unicode Standard Annex #11
Standard Annex #11 (http://www.unicode.org/reports/tr11). (http://www.unicode.org/reports/tr11).
Vim may set this option automatically at startup time when Vim is 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 compiled with the |+termresponse| feature and if |t_u7| is set to the
@ -856,6 +862,8 @@ A jump table for the options with a short description can be found at |Q_op|.
:set background& :set background&
< Vim will guess the value. In the GUI this should work correctly, < Vim will guess the value. In the GUI this should work correctly,
in other cases Vim might not be able to guess the right value. in other cases Vim might not be able to guess the right value.
If the GUI supports a dark theme, you can use the "d" flag in
'guioptions', see 'go-d'.
When the |t_RB| option is set, Vim will use it to request the background When the |t_RB| option is set, Vim will use it to request the background
color from the terminal. If the returned RGB value is dark/light and color from the terminal. If the returned RGB value is dark/light and
@ -873,7 +881,7 @@ A jump table for the options with a short description can be found at |Q_op|.
putting a ":gui" command in the .gvimrc file, before where the value putting a ":gui" command in the .gvimrc file, before where the value
of 'background' is used (e.g., before ":syntax on"). of 'background' is used (e.g., before ":syntax on").
For MS-DOS, Windows and OS/2 the default is "dark". For MS-Windows the default is "dark".
For other systems "dark" is used when 'term' is "linux", For other systems "dark" is used when 'term' is "linux",
"screen.linux", "cygwin" or "putty", or $COLORFGBG suggests a dark "screen.linux", "cygwin" or "putty", or $COLORFGBG suggests a dark
background. Otherwise the default is "light". background. Otherwise the default is "light".
@ -1004,7 +1012,7 @@ A jump table for the options with a short description can be found at |Q_op|.
*'backupdir'* *'bdir'* *'backupdir'* *'bdir'*
'backupdir' 'bdir' string (default for Amiga: ".,t:", 'backupdir' 'bdir' string (default for Amiga: ".,t:",
for MS-DOS and Win32: ".,$TEMP,c:/tmp,c:/temp" for Win32: ".,$TEMP,c:/tmp,c:/temp"
for Unix: ".,~/tmp,~/") for Unix: ".,~/tmp,~/")
global global
List of directories for the backup file, separated with commas. List of directories for the backup file, separated with commas.
@ -1015,9 +1023,9 @@ A jump table for the options with a short description can be found at |Q_op|.
impossible!). Writing may fail because of this. impossible!). Writing may fail because of this.
- A directory "." means to put the backup file in the same directory - A directory "." means to put the backup file in the same directory
as the edited file. as the edited file.
- A directory starting with "./" (or ".\" for MS-DOS et al.) means to - A directory starting with "./" (or ".\" for MS-Windows) means to put
put the backup file relative to where the edited file is. The the backup file relative to where the edited file is. The leading
leading "." is replaced with the path name of the edited file. "." is replaced with the path name of the edited file.
("." inside a directory name has no special meaning). ("." inside a directory name has no special meaning).
- Spaces after the comma are ignored, other spaces are considered part - 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 of the directory name. To have a space at the start of a directory
@ -1193,7 +1201,7 @@ A jump table for the options with a short description can be found at |Q_op|.
(mostly used in |Normal-mode| or |Cmdline-mode|). (mostly used in |Normal-mode| or |Cmdline-mode|).
esc hitting <Esc> in |Normal-mode|. esc hitting <Esc> in |Normal-mode|.
ex In |Visual-mode|, hitting |Q| results in an error. ex In |Visual-mode|, hitting |Q| results in an error.
hangul Error occurred when using hangul input. hangul Ignored.
insertmode Pressing <Esc> in 'insertmode'. insertmode Pressing <Esc> in 'insertmode'.
lang Calling the beep module for Lua/Mzscheme/TCL. lang Calling the beep module for Lua/Mzscheme/TCL.
mess No output available for |g<|. mess No output available for |g<|.
@ -1683,8 +1691,6 @@ A jump table for the options with a short description can be found at |Q_op|.
'comments' 'com' string (default 'comments' 'com' string (default
"s1:/*,mb:*,ex:*/,://,b:#,:%,:XCOMM,n:>,fb:-") "s1:/*,mb:*,ex:*/,://,b:#,:%,:XCOMM,n:>,fb:-")
local to buffer local to buffer
{not available when compiled without the |+comments|
feature}
A comma separated list of strings that can start a comment line. See A comma separated list of strings that can start a comment line. See
|format-comments|. See |option-backslash| about using backslashes to |format-comments|. See |option-backslash| about using backslashes to
insert a space. insert a space.
@ -1769,7 +1775,7 @@ A jump table for the options with a short description can be found at |Q_op|.
'esckeys' & off no <Esc>-keys in Insert mode 'esckeys' & off no <Esc>-keys in Insert mode
'expandtab' + off tabs not expanded to spaces 'expandtab' + off tabs not expanded to spaces
'fileformats' & "" no automatic file format detection, 'fileformats' & "" no automatic file format detection,
"dos,unix" except for DOS, Windows and OS/2 "dos,unix" except for MS-Windows
'formatexpr' + "" use 'formatprg' for auto-formatting 'formatexpr' + "" use 'formatprg' for auto-formatting
'formatoptions' & "vt" Vi compatible formatting 'formatoptions' & "vt" Vi compatible formatting
'gdefault' + off no default 'g' flag for ":s" 'gdefault' + off no default 'g' flag for ":s"
@ -1877,13 +1883,13 @@ A jump table for the options with a short description can be found at |Q_op|.
*'completeslash'* *'csl'* *'completeslash'* *'csl'*
'completeslash' 'csl' string (default: "") 'completeslash' 'csl' string (default: "")
local to buffer local to buffer
{not in Vi} {only for MS-Windows} {only for MS-Windows}
When this option is set it overrules 'shellslash' for completion: When this option is set it overrules 'shellslash' for completion:
- When this option is set to "slash", a forward slash is used for path - When this option is set to "slash", a forward slash is used for path
completion in insert mode. This is useful when editing HTML tag, or completion in insert mode. This is useful when editing HTML tag, or
Makefile with 'noshellslash' on Windows. Makefile with 'noshellslash' on MS-Windows.
- When this option is set to "backslash", backslash is used. This is - When this option is set to "backslash", backslash is used. This is
useful when editing a batch file with 'shellslash' set on Windows. useful when editing a batch file with 'shellslash' set on MS-Windows.
- When this option is empty, same character is used as for - When this option is empty, same character is used as for
'shellslash'. 'shellslash'.
For Insert mode completion the buffer-local value is used. For For Insert mode completion the buffer-local value is used. For
@ -1917,7 +1923,14 @@ A jump table for the options with a short description can be found at |Q_op|.
completion in a popup window. Only works in combination completion in a popup window. Only works in combination
with "menu" or "menuone". Overrides "preview". with "menu" or "menuone". Overrides "preview".
See |'completepopup'| for specifying properties. See |'completepopup'| for specifying properties.
{only works when compiled with the +textprop feature} {only works when compiled with the |+textprop| feature}
popuphidden
Just like "popup" but initially hide the popup. Use a
|CompleteChanged| autocommand to fetch the info and call
|popup_show()| once the popup has been filled.
See the example at |complete-popuphidden|.
{only works when compiled with the |+textprop| feature}
noinsert Do not insert any text for a match until the user selects noinsert Do not insert any text for a match until the user selects
a match from the menu. Only works in combination with a match from the menu. Only works in combination with
@ -2461,13 +2474,32 @@ A jump table for the options with a short description can be found at |Q_op|.
local to window local to window
{not available when compiled without the |+syntax| {not available when compiled without the |+syntax|
feature} feature}
Highlight the screen line of the cursor with CursorLine Highlight the text line of the cursor with CursorLine |hl-CursorLine|.
|hl-CursorLine|. Useful to easily spot the cursor. Will make screen Useful to easily spot the cursor. Will make screen redrawing slower.
redrawing slower.
When Visual mode is active the highlighting isn't used to make it When Visual mode is active the highlighting isn't used to make it
easier to see the selected text. easier to see the selected text.
*'cursorlineopt'* *'culopt'*
'cursorlineopt' 'culopt' string (default: "number,line")
local to window
{not available when compiled without the |+syntax|
feature}
Comma separated list of settings for how 'cursorline' is displayed.
Valid values:
"line" Highlight the text line of the cursor with
CursorLine |hl-CursorLine|.
"screenline" Highlight only the screen line of the cursor with
CursorLine |hl-CursorLine|.
"number" Highlight the line number of the cursor with
CursorLineNr |hl-CursorLineNr|.
Special value:
"both" Alias for the values "line,number".
"line" and "screenline" cannot be used together.
*'debug'* *'debug'*
'debug' string (default "") 'debug' string (default "")
global global
@ -2565,7 +2597,7 @@ A jump table for the options with a short description can be found at |Q_op|.
security reasons. security reasons.
*'dip'* *'diffopt'* *'dip'* *'diffopt'*
'diffopt' 'dip' string (default "internal,filler") 'diffopt' 'dip' string (default "internal,filler,closeoff")
global global
{not available when compiled without the |+diff| {not available when compiled without the |+diff|
feature} feature}
@ -2624,6 +2656,12 @@ A jump table for the options with a short description can be found at |Q_op|.
vertical Start diff mode with vertical splits (unless vertical Start diff mode with vertical splits (unless
explicitly specified otherwise). explicitly specified otherwise).
closeoff When a window is closed where 'diff' is set
and there is only one window remaining in the
same tab page with 'diff' set, execute
`:diffoff` in that window. This undoes a
`:diffsplit` command.
hiddenoff Do not use diff mode for a buffer when it hiddenoff Do not use diff mode for a buffer when it
becomes hidden. becomes hidden.
@ -2667,21 +2705,21 @@ A jump table for the options with a short description can be found at |Q_op|.
*'directory'* *'dir'* *'directory'* *'dir'*
'directory' 'dir' string (default for Amiga: ".,t:", 'directory' 'dir' string (default for Amiga: ".,t:",
for MS-DOS and Win32: ".,$TEMP,c:\tmp,c:\temp" for Win32: ".,$TEMP,c:\tmp,c:\temp"
for Unix: ".,~/tmp,/var/tmp,/tmp") for Unix: ".,~/tmp,/var/tmp,/tmp")
global global
List of directory names for the swap file, separated with commas. List of directory names for the swap file, separated with commas.
- The swap file will be created in the first directory where this is - The swap file will be created in the first directory where this is
possible. possible.
- Empty means that no swap file will be used (recovery is - Empty means that no swap file will be used (recovery is
impossible!). impossible!) and no |E303| error will be given.
- A directory "." means to put the swap file in the same directory as - A directory "." means to put the swap file in the same directory as
the edited file. On Unix, a dot is prepended to the file name, so 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" it doesn't show in a directory listing. On MS-Windows the "hidden"
attribute is set and a dot prepended if possible. attribute is set and a dot prepended if possible.
- A directory starting with "./" (or ".\" for MS-DOS et al.) means to - A directory starting with "./" (or ".\" for MS-Windows) means to put
put the swap file relative to where the edited file is. The leading the swap file relative to where the edited file is. The leading "."
"." is replaced with the path name of the edited file. is replaced with the path name of the edited file.
- For Unix and Win32, if a directory ends in two path separators "//", - 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 the swap file name will be built from the complete path to the file
with all path separators substituted to percent '%' signs. This will with all path separators substituted to percent '%' signs. This will
@ -2907,6 +2945,9 @@ A jump table for the options with a short description can be found at |Q_op|.
won't work by default. won't work by default.
NOTE: This option is set to the Vi default value when 'compatible' is NOTE: This option is set to the Vi default value when 'compatible' is
set and to the Vim default value when 'compatible' is reset. set and to the Vim default value when 'compatible' is reset.
NOTE: when this option is off then the |modifyOtherKeys| functionality
is disabled while in Insert mode to avoid ending Insert mode with any
key that has a modifier.
*'eventignore'* *'ei'* *'eventignore'* *'ei'*
'eventignore' 'ei' string (default "") 'eventignore' 'ei' string (default "")
@ -3550,17 +3591,16 @@ A jump table for the options with a short description can be found at |Q_op|.
r-cr:hor20-Cursor/lCursor, r-cr:hor20-Cursor/lCursor,
sm:block-Cursor sm:block-Cursor
-blinkwait175-blinkoff150-blinkon175", -blinkwait175-blinkoff150-blinkon175",
for MS-DOS and Win32 console: for Win32 console:
"n-v-c:block,o:hor50,i-ci:hor15, "n-v-c:block,o:hor50,i-ci:hor15,
r-cr:hor30,sm:block") r-cr:hor30,sm:block")
global global
{only available when compiled with GUI enabled, and {only available when compiled with GUI enabled, and
for MS-DOS and Win32 console} for Win32 console}
This option tells Vim what the cursor should look like in different This option tells Vim what the cursor should look like in different
modes. It fully works in the GUI. In an MSDOS or Win32 console, only modes. It fully works in the GUI. In a Win32 console, only the
the height of the cursor can be changed. This can be done by height of the cursor can be changed. This can be done by specifying a
specifying a block cursor, or a percentage for a vertical or block cursor, or a percentage for a vertical or horizontal cursor.
horizontal cursor.
For a console the 't_SI', 't_SR', and 't_EI' escape sequences are For a console the 't_SI', 't_SR', and 't_EI' escape sequences are
used. used.
@ -3720,6 +3760,9 @@ A jump table for the options with a short description can be found at |Q_op|.
*'go-c'* *'go-c'*
'c' Use console dialogs instead of popup dialogs for simple 'c' Use console dialogs instead of popup dialogs for simple
choices. choices.
*'go-d'*
'd' Use dark theme variant if available. Currently only works for
GTK+ GUI.
*'go-e'* *'go-e'*
'e' Add tab pages when indicated with 'showtabline'. 'e' Add tab pages when indicated with 'showtabline'.
'guitablabel' can be used to change the text in the labels. 'guitablabel' can be used to change the text in the labels.
@ -3834,7 +3877,7 @@ A jump table for the options with a short description can be found at |Q_op|.
< <
*'helpfile'* *'hf'* *'helpfile'* *'hf'*
'helpfile' 'hf' string (default (MSDOS) "$VIMRUNTIME\doc\help.txt" 'helpfile' 'hf' string (default (MS-Windows) "$VIMRUNTIME\doc\help.txt"
(others) "$VIMRUNTIME/doc/help.txt") (others) "$VIMRUNTIME/doc/help.txt")
global global
Name of the main help file. All distributed help files should be Name of the main help file. All distributed help files should be
@ -3894,6 +3937,7 @@ A jump table for the options with a short description can be found at |Q_op|.
"8:SpecialKey,~:EndOfBuffer,@:NonText, "8:SpecialKey,~:EndOfBuffer,@:NonText,
d:Directory,e:ErrorMsg,i:IncSearch, d:Directory,e:ErrorMsg,i:IncSearch,
l:Search,m:MoreMsg,M:ModeMsg,n:LineNr, l:Search,m:MoreMsg,M:ModeMsg,n:LineNr,
a:LineNrAbove,b:LineNrBelow,
N:CursorLineNr,r:Question,s:StatusLine, N:CursorLineNr,r:Question,s:StatusLine,
S:StatusLineNC,c:VertSplit,t:Title, S:StatusLineNC,c:VertSplit,t:Title,
v:Visual,V:VisualNOS,w:WarningMsg, v:Visual,V:VisualNOS,w:WarningMsg,
@ -3925,6 +3969,10 @@ A jump table for the options with a short description can be found at |Q_op|.
|hl-ModeMsg| M Mode (e.g., "-- INSERT --") |hl-ModeMsg| M Mode (e.g., "-- INSERT --")
|hl-LineNr| n line number for ":number" and ":#" commands, and |hl-LineNr| n line number for ":number" and ":#" commands, and
when 'number' or 'relativenumber' option is set. when 'number' or 'relativenumber' option is set.
|hl-LineNrAbove| a line number above the cursor for when the
'relativenumber' option is set.
|hl-LineNrBelow| b line number below the cursor for when the
'relativenumber' option is set.
|hl-CursorLineNr| N like n for when 'cursorline' or 'relativenumber' is |hl-CursorLineNr| N like n for when 'cursorline' or 'relativenumber' is
set. set.
|hl-Question| r |hit-enter| prompt and yes/no questions |hl-Question| r |hit-enter| prompt and yes/no questions
@ -4398,7 +4446,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. NOTE: This option is reset when 'compatible' is set.
*'isfname'* *'isf'* *'isfname'* *'isf'*
'isfname' 'isf' string (default for MS-DOS, Win32 and OS/2: 'isfname' 'isf' string (default for Win32:
"@,48-57,/,\,.,-,_,+,,,#,$,%,{,},[,],:,@-@,!,~,=" "@,48-57,/,\,.,-,_,+,,,#,$,%,{,},[,],:,@-@,!,~,="
for AMIGA: "@,48-57,/,.,-,_,+,,,$,:" for AMIGA: "@,48-57,/,.,-,_,+,,,$,:"
for VMS: "@,48-57,/,.,-,_,+,,,#,$,%,<,>,[,],:,;,~" for VMS: "@,48-57,/,.,-,_,+,,,#,$,%,<,>,[,],:,;,~"
@ -4452,7 +4500,7 @@ A jump table for the options with a short description can be found at |Q_op|.
See |option-backslash| about including spaces and backslashes. See |option-backslash| about including spaces and backslashes.
*'isident'* *'isi'* *'isident'* *'isi'*
'isident' 'isi' string (default for MS-DOS, Win32 and OS/2: 'isident' 'isi' string (default for Win32:
"@,48-57,_,128-167,224-235" "@,48-57,_,128-167,224-235"
otherwise: "@,48-57,_,192-255") otherwise: "@,48-57,_,192-255")
global global
@ -4466,7 +4514,7 @@ A jump table for the options with a short description can be found at |Q_op|.
expand "$HOME/.viminfo". Maybe you should change 'iskeyword' instead. expand "$HOME/.viminfo". Maybe you should change 'iskeyword' instead.
*'iskeyword'* *'isk'* *'iskeyword'* *'isk'*
'iskeyword' 'isk' string (Vim default for MS-DOS and Win32: 'iskeyword' 'isk' string (Vim default for Win32:
"@,48-57,_,128-167,224-235" "@,48-57,_,128-167,224-235"
otherwise: "@,48-57,_,192-255" otherwise: "@,48-57,_,192-255"
Vi default: "@,48-57,_") Vi default: "@,48-57,_")
@ -4486,7 +4534,7 @@ A jump table for the options with a short description can be found at |Q_op|.
set and to the Vim default value when 'compatible' is reset. set and to the Vim default value when 'compatible' is reset.
*'isprint'* *'isp'* *'isprint'* *'isp'*
'isprint' 'isp' string (default for MS-DOS, Win32, OS/2 and Macintosh: 'isprint' 'isp' string (default for Win32 and Macintosh:
"@,~-255"; otherwise: "@,161-255") "@,~-255"; otherwise: "@,161-255")
global global
The characters given by this option are displayed directly on the The characters given by this option are displayed directly on the
@ -4817,9 +4865,9 @@ A jump table for the options with a short description can be found at |Q_op|.
off and the line continues beyond the right of the off and the line continues beyond the right of the
screen. screen.
*lcs-precedes* *lcs-precedes*
precedes:c Character to show in the first column, when 'wrap' precedes:c Character to show in the first visible column of the
is off and there is text preceding the character physical line, when there is text preceding the
visible in the first column. character visible in the first column.
*lcs-conceal* *lcs-conceal*
conceal:c Character to show in place of concealed text, when conceal:c Character to show in place of concealed text, when
'conceallevel' is set to 1. 'conceallevel' is set to 1.
@ -5161,14 +5209,13 @@ A jump table for the options with a short description can be found at |Q_op|.
set and to the Vim default value when 'compatible' is reset. set and to the Vim default value when 'compatible' is reset.
*'mouse'* *E538* *'mouse'* *E538*
'mouse' string (default "", "a" for GUI, MS-DOS and Win32, 'mouse' string (default "", "a" for GUI and Win32,
set to "a" in |defaults.vim|) set to "a" or "nvi" in |defaults.vim|)
global global
Enable the use of the mouse. Only works for certain terminals Enable the use of the mouse. Works for most terminals (xterm, Win32
(xterm, MS-DOS, Win32 |win32-mouse|, QNX pterm, *BSD console with |win32-mouse|, QNX pterm, *BSD console with sysmouse and Linux console
sysmouse and Linux console with gpm). For using the mouse in the with gpm). For using the mouse in the GUI, see |gui-mouse|. The
GUI, see |gui-mouse|. mouse can be enabled for different modes:
The mouse can be enabled for different modes:
n Normal mode and Terminal modes n Normal mode and Terminal modes
v Visual mode v Visual mode
i Insert mode i Insert mode
@ -5178,7 +5225,15 @@ A jump table for the options with a short description can be found at |Q_op|.
r for |hit-enter| and |more-prompt| prompt r for |hit-enter| and |more-prompt| prompt
Normally you would enable the mouse in all five modes with: > Normally you would enable the mouse in all five modes with: >
:set mouse=a :set mouse=a
< When the mouse is not enabled, the GUI will still use the mouse for < If your terminal can't overrule the mouse events going to the
application, use: >
:set mouse=nvi
< The you can press ":", select text for the system, and press Esc to go
back to Vim using the mouse events.
In |defaults.vim| "nvi" is used if the 'term' option is not matching
"xterm".
When the mouse is not enabled, the GUI will still use the mouse for
modeless selection. This doesn't move the text cursor. modeless selection. This doesn't move the text cursor.
See |mouse-using|. Also see |'clipboard'|. See |mouse-using|. Also see |'clipboard'|.
@ -5197,6 +5252,8 @@ A jump table for the options with a short description can be found at |Q_op|.
mouse pointer is moved to the window with keyboard focus. Off is the mouse pointer is moved to the window with keyboard focus. Off is the
default because it makes using the pull down menus a little goofy, as default because it makes using the pull down menus a little goofy, as
a pointer transit may activate a window unintentionally. a pointer transit may activate a window unintentionally.
MS-Windows: Also see 'scrollfocus' for what window is scrolled when
using the mouse scroll wheel.
*'mousehide'* *'mh'* *'nomousehide'* *'nomh'* *'mousehide'* *'mh'* *'nomousehide'* *'nomh'*
'mousehide' 'mh' boolean (default on) 'mousehide' 'mh' boolean (default on)
@ -5206,7 +5263,7 @@ A jump table for the options with a short description can be found at |Q_op|.
The mouse pointer is restored when the mouse is moved. The mouse pointer is restored when the mouse is moved.
*'mousemodel'* *'mousem'* *'mousemodel'* *'mousem'*
'mousemodel' 'mousem' string (default "extend", "popup" for MS-DOS and Win32) 'mousemodel' 'mousem' string (default "extend", "popup" for Win32)
global global
Sets the model to use for the mouse. The name mostly specifies what Sets the model to use for the mouse. The name mostly specifies what
the right mouse button is used for: the right mouse button is used for:
@ -5309,7 +5366,7 @@ A jump table for the options with a short description can be found at |Q_op|.
*'mousetime'* *'mouset'* *'mousetime'* *'mouset'*
'mousetime' 'mouset' number (default 500) 'mousetime' 'mouset' number (default 500)
global global
Only for GUI, MS-DOS, Win32 and Unix with xterm. Defines the maximum Only for GUI, Win32 and Unix with xterm. Defines the maximum
time in msec between two mouse clicks for the second click to be time in msec between two mouse clicks for the second click to be
recognized as a multi click. recognized as a multi click.
@ -5431,7 +5488,7 @@ A jump table for the options with a short description can be found at |Q_op|.
*'opendevice'* *'odev'* *'noopendevice'* *'noodev'* *'opendevice'* *'odev'* *'noopendevice'* *'noodev'*
'opendevice' 'odev' boolean (default off) 'opendevice' 'odev' boolean (default off)
global global
{only for MS-DOS, MS-Windows and OS/2} {only for MS-Windows}
Enable reading and writing from devices. This may get Vim stuck on a Enable reading and writing from devices. This may get Vim stuck on a
device that can be opened but doesn't actually do the I/O. Therefore device that can be opened but doesn't actually do the I/O. Therefore
it is off by default. it is off by default.
@ -5563,7 +5620,6 @@ A jump table for the options with a short description can be found at |Q_op|.
*'path'* *'pa'* *E343* *E345* *E347* *E854* *'path'* *'pa'* *E343* *E345* *E347* *E854*
'path' 'pa' string (default on Unix: ".,/usr/include,," 'path' 'pa' string (default on Unix: ".,/usr/include,,"
on OS/2: ".,/emx/include,,"
other systems: ".,,") other systems: ".,,")
global or local to buffer |global-local| global or local to buffer |global-local|
This is a list of directories which will be searched when using the This is a list of directories which will be searched when using the
@ -6024,7 +6080,7 @@ A jump table for the options with a short description can be found at |Q_op|.
*'restorescreen'* *'rs'* *'norestorescreen'* *'nors'* *'restorescreen'* *'rs'* *'norestorescreen'* *'nors'*
'restorescreen' 'rs' boolean (default on) 'restorescreen' 'rs' boolean (default on)
global 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 When set, the screen contents is restored when exiting Vim. This also
happens when executing external commands. happens when executing external commands.
@ -6142,7 +6198,7 @@ A jump table for the options with a short description can be found at |Q_op|.
$VIMRUNTIME, $VIMRUNTIME,
$VIM/vimfiles/after, $VIM/vimfiles/after,
home:vimfiles/after" home:vimfiles/after"
PC, OS/2: "$HOME/vimfiles, PC: "$HOME/vimfiles,
$VIM/vimfiles, $VIM/vimfiles,
$VIMRUNTIME, $VIMRUNTIME,
$VIM/vimfiles/after, $VIM/vimfiles/after,
@ -6150,9 +6206,6 @@ A jump table for the options with a short description can be found at |Q_op|.
Macintosh: "$VIM:vimfiles, Macintosh: "$VIM:vimfiles,
$VIMRUNTIME, $VIMRUNTIME,
$VIM:vimfiles:after" $VIM:vimfiles:after"
RISC-OS: "Choices:vimfiles,
$VIMRUNTIME,
Choices:vimfiles/after"
VMS: "sys$login:vimfiles, VMS: "sys$login:vimfiles,
$VIM/vimfiles, $VIM/vimfiles,
$VIMRUNTIME, $VIMRUNTIME,
@ -6168,6 +6221,7 @@ A jump table for the options with a short description can be found at |Q_op|.
compiler/ compiler files |:compiler| compiler/ compiler files |:compiler|
doc/ documentation |write-local-help| doc/ documentation |write-local-help|
ftplugin/ filetype plugins |write-filetype-plugin| ftplugin/ filetype plugins |write-filetype-plugin|
import/ files that are found by `:import`
indent/ indent scripts |indent-expression| indent/ indent scripts |indent-expression|
keymap/ key mapping files |mbyte-keymap| keymap/ key mapping files |mbyte-keymap|
lang/ menu translations |:menutrans| lang/ menu translations |:menutrans|
@ -6241,6 +6295,15 @@ A jump table for the options with a short description can be found at |Q_op|.
file. This means that ":split | edit file" results in two windows file. This means that ":split | edit file" results in two windows
with scroll-binding, but ":split file" does not. with scroll-binding, but ":split file" does not.
*'scrollfocus'* *'scf'* *'noscrollfocus'* *'noscf'*
'scrollfocus' 'scf' boolean (default off)
global
{only for MS-Windows GUI}
When using the scroll wheel and this option is set, the window under
the mouse pointer is scrolled. With this option off the current
window is scrolled.
Systems other than MS-Windows always behave like this option is on.
*'scrolljump'* *'sj'* *'scrolljump'* *'sj'*
'scrolljump' 'sj' number (default 1) 'scrolljump' 'sj' number (default 1)
global global
@ -6401,9 +6464,7 @@ A jump table for the options with a short description can be found at |Q_op|.
but the Windows version of Vim can source unix format scripts. but the Windows version of Vim can source unix format scripts.
*'shell'* *'sh'* *E91* *'shell'* *'sh'* *E91*
'shell' 'sh' string (default $SHELL or "sh", 'shell' 'sh' string (default $SHELL or "sh", Win32: "cmd.exe")
MS-DOS and Win32: "command.com" or
"cmd.exe", OS/2: "cmd")
global global
Name of the shell to use for ! and :! commands. When changing the Name of the shell to use for ! and :! commands. When changing the
value also check these options: 'shelltype', 'shellpipe', 'shellslash' value also check these options: 'shelltype', 'shellpipe', 'shellslash'
@ -6412,8 +6473,8 @@ A jump table for the options with a short description can be found at |Q_op|.
See |option-backslash| about including spaces and backslashes. See |option-backslash| about including spaces and backslashes.
Environment variables are expanded |:set_env|. Environment variables are expanded |:set_env|.
If the name of the shell contains a space, you might need to enclose If the name of the shell contains a space, you need to enclose it in
it in quotes or escape the space. Example with quotes: > quotes and escape the space. Example with quotes: >
:set shell=\"c:\program\ files\unix\sh.exe\"\ -f :set shell=\"c:\program\ files\unix\sh.exe\"\ -f
< Note the backslash before each quote (to avoid starting a comment) and < Note the backslash before each quote (to avoid starting a comment) and
each space (to avoid ending the option value). Also note that the each space (to avoid ending the option value). Also note that the
@ -6438,22 +6499,23 @@ A jump table for the options with a short description can be found at |Q_op|.
*'shellcmdflag'* *'shcf'* *'shellcmdflag'* *'shcf'*
'shellcmdflag' 'shcf' string (default: "-c"; 'shellcmdflag' 'shcf' string (default: "-c";
MS-DOS and Win32, when 'shell' does not Win32, when 'shell' does not contain "sh"
contain "sh" somewhere: "/c") somewhere: "/c")
global global
Flag passed to the shell to execute "!" and ":!" commands; e.g., Flag passed to the shell to execute "!" and ":!" commands; e.g.,
"bash.exe -c ls" or "command.com /c dir". For the MS-DOS-like "bash.exe -c ls" or "cmd.exe /c dir". For MS-Windows, the default is
systems, the default is set according to the value of 'shell', to set according to the value of 'shell', to reduce the need to set this
reduce the need to set this option by the user. option by the user.
On Unix it can have more than one flag. Each white space separated On Unix it can have more than one flag. Each white space separated
part is passed as an argument to the shell command. part is passed as an argument to the shell command.
See |option-backslash| about including spaces and backslashes. See |option-backslash| about including spaces and backslashes.
Also see |dos-shell| for MS-DOS and MS-Windows. Also see |dos-shell| for MS-Windows.
This option cannot be set from a |modeline| or in the |sandbox|, for This option cannot be set from a |modeline| or in the |sandbox|, for
security reasons. security reasons.
*'shellpipe'* *'sp'* *'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 global
{not available when compiled without the |+quickfix| {not available when compiled without the |+quickfix|
feature} feature}
@ -6463,15 +6525,16 @@ 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 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 (the file name is appended automatically if no %s appears in the value
of this option). of this option).
For the Amiga and MS-DOS the default is ">". The output is directly For the Amiga the default is ">". For MS-Windows the default is
saved in a file and not echoed to the screen. ">%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 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 in a file and echoed to the screen. If the 'shell' option is "csh" or
"tcsh" after initializations, the default becomes "|& tee". If the "tcsh" after initializations, the default becomes "|& tee". If the
'shell' option is "sh", "ksh", "mksh", "pdksh", "zsh" or "bash" the 'shell' option is "sh", "ksh", "mksh", "pdksh", "zsh", "zsh-beta",
default becomes "2>&1| tee". This means that stderr is also included. "bash" or "fish" the default becomes "2>&1| tee". This means that
Before using the 'shell' option a path is removed, thus "/bin/sh" uses stderr is also included. Before using the 'shell' option a path is
"sh". removed, thus "/bin/sh" uses "sh".
The initialization of this option is done after reading the ".vimrc" The initialization of this option is done after reading the ".vimrc"
and the other initializations, so that when the 'shell' option is set and the other initializations, so that when the 'shell' option is set
there, the 'shellpipe' option changes automatically, unless it was there, the 'shellpipe' option changes automatically, unless it was
@ -6487,7 +6550,7 @@ A jump table for the options with a short description can be found at |Q_op|.
security reasons. security reasons.
*'shellquote'* *'shq'* *'shellquote'* *'shq'*
'shellquote' 'shq' string (default: ""; MS-DOS and Win32, when 'shell' 'shellquote' 'shq' string (default: ""; Win32, when 'shell'
contains "sh" somewhere: "\"") contains "sh" somewhere: "\"")
global global
Quoting character(s), put around the command passed to the shell, for Quoting character(s), put around the command passed to the shell, for
@ -6495,10 +6558,10 @@ A jump table for the options with a short description can be found at |Q_op|.
quoting. See 'shellxquote' to include the redirection. It's quoting. See 'shellxquote' to include the redirection. It's
probably not useful to set both options. probably not useful to set both options.
This is an empty string by default. Only known to be useful for This is an empty string by default. Only known to be useful for
third-party shells on MS-DOS-like systems, such as the MKS Korn Shell third-party shells on MS-Windows-like systems, such as the MKS Korn
or bash, where it should be "\"". The default is adjusted according Shell or bash, where it should be "\"". The default is adjusted
the value of 'shell', to reduce the need to set this option by the according the value of 'shell', to reduce the need to set this option
user. See |dos-shell|. by the user. See |dos-shell|.
This option cannot be set from a |modeline| or in the |sandbox|, for This option cannot be set from a |modeline| or in the |sandbox|, for
security reasons. security reasons.
@ -6511,13 +6574,13 @@ 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 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 (the file name is appended automatically if no %s appears in the value
of this option). of this option).
The default is ">". For Unix, if the 'shell' option is "csh", "tcsh" The default is ">". For Unix, if the 'shell' option is "csh" or
or "zsh" during initializations, the default becomes ">&". If the "tcsh" during initializations, the default becomes ">&". If the
'shell' option is "sh", "ksh" or "bash" the default becomes 'shell' option is "sh", "ksh", "mksh", "pdksh", "zsh", "zsh-beta",
">%s 2>&1". This means that stderr is also included. "bash" or "fish", the default becomes ">%s 2>&1". This means that
For Win32, the Unix checks are done and additionally "cmd" is checked stderr is also included. For Win32, the Unix checks are done and
for, which makes the default ">%s 2>&1". Also, the same names with additionally "cmd" is checked for, which makes the default ">%s 2>&1".
".exe" appended are checked for. Also, the same names with ".exe" appended are checked for.
The initialization of this option is done after reading the ".vimrc" The initialization of this option is done after reading the ".vimrc"
and the other initializations, so that when the 'shell' option is set and the other initializations, so that when the 'shell' option is set
there, the 'shellredir' option changes automatically unless it was there, the 'shellredir' option changes automatically unless it was
@ -6530,11 +6593,11 @@ A jump table for the options with a short description can be found at |Q_op|.
*'shellslash'* *'ssl'* *'noshellslash'* *'nossl'* *'shellslash'* *'ssl'* *'noshellslash'* *'nossl'*
'shellslash' 'ssl' boolean (default off) 'shellslash' 'ssl' boolean (default off)
global global
{only for MSDOS, MS-Windows and OS/2} {only for MS-Windows}
When set, a forward slash is used when expanding file names. This is 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 useful when a Unix-like shell is used instead of cmd.exe. Backward
cmd.exe. Backward slashes can still be typed, but they are changed to slashes can still be typed, but they are changed to forward slashes by
forward slashes by Vim. Vim.
Note that setting or resetting this option has no effect for some Note that setting or resetting this option has no effect for some
existing file names, thus this option needs to be set before opening existing file names, thus this option needs to be set before opening
any file for best results. This might change in the future. any file for best results. This might change in the future.
@ -6579,7 +6642,7 @@ A jump table for the options with a short description can be found at |Q_op|.
*'shellxescape'* *'sxe'* *'shellxescape'* *'sxe'*
'shellxescape' 'sxe' string (default: ""; 'shellxescape' 'sxe' string (default: "";
for MS-DOS and MS-Windows: "\"&|<>()@^") for MS-Windows: "\"&|<>()@^")
global global
When 'shellxquote' is set to "(" then the characters listed in this When 'shellxquote' is set to "(" then the characters listed in this
option will be escaped with a '^' character. This makes it possible option will be escaped with a '^' character. This makes it possible
@ -6689,15 +6752,13 @@ A jump table for the options with a short description can be found at |Q_op|.
Filenames are assumed to be 8 characters plus one extension of 3 Filenames are assumed to be 8 characters plus one extension of 3
characters. Multiple dots in file names are not allowed. When this characters. Multiple dots in file names are not allowed. When this
option is on, dots in file names are replaced with underscores when option is on, dots in file names are replaced with underscores when
adding an extension (".~" or ".swp"). This option is not available adding an extension (".~" or ".swp"). This option is useful
for MS-DOS, because then it would always be on. This option is useful
when editing files on an MS-DOS compatible filesystem, e.g., messydos when editing files on an MS-DOS compatible filesystem, e.g., messydos
or crossdos. When running the Win32 GUI version under Win32s, this or crossdos.
option is always on by default.
*'showbreak'* *'sbr'* *E595* *'showbreak'* *'sbr'* *E595*
'showbreak' 'sbr' string (default "") 'showbreak' 'sbr' string (default "")
global global or local to window |global-local|
{not available when compiled without the |+linebreak| {not available when compiled without the |+linebreak|
feature} feature}
String to put at the start of lines that have been wrapped. Useful String to put at the start of lines that have been wrapped. Useful
@ -6714,7 +6775,10 @@ A jump table for the options with a short description can be found at |Q_op|.
Note that tabs after the showbreak will be displayed differently. Note that tabs after the showbreak will be displayed differently.
If you want the 'showbreak' to appear in between line numbers, add the If you want the 'showbreak' to appear in between line numbers, add the
"n" flag to 'cpoptions'. "n" flag to 'cpoptions'.
A window-local value overrules a global value. If the global value is
set and you want no value in the current window use NONE: >
:setlocal showbreak=NONE
<
*'showcmd'* *'sc'* *'noshowcmd'* *'nosc'* *'showcmd'* *'sc'* *'noshowcmd'* *'nosc'*
'showcmd' 'sc' boolean (Vim default: on, off for Unix, 'showcmd' 'sc' boolean (Vim default: on, off for Unix,
Vi default: off, set in |defaults.vim|) Vi default: off, set in |defaults.vim|)
@ -7190,7 +7254,7 @@ A jump table for the options with a short description can be found at |Q_op|.
{ NF Evaluate expression between '%{' and '}' and substitute result. { NF Evaluate expression between '%{' and '}' and substitute result.
Note that there is no '%' before the closing '}'. The Note that there is no '%' before the closing '}'. The
expression cannot contain a '}' character, call a function to expression cannot contain a '}' character, call a function to
work around that. work around that. See |stl-%{| below.
( - Start of item group. Can be used for setting the width and ( - Start of item group. Can be used for setting the width and
alignment of a section. Must be followed by %) somewhere. alignment of a section. Must be followed by %) somewhere.
) - End of item group. No width fields allowed. ) - End of item group. No width fields allowed.
@ -7224,13 +7288,13 @@ A jump table for the options with a short description can be found at |Q_op|.
:set statusline=...%(\ [%M%R%H]%)... :set statusline=...%(\ [%M%R%H]%)...
< Beware that an expression is evaluated each and every time the status < Beware that an expression is evaluated each and every time the status
line is displayed. line is displayed.
*g:actual_curbuf* *g:actual_curwin* *stl-%{* *g:actual_curbuf* *g:actual_curwin*
The current buffer and current window will be set temporarily to that While evaluating %{} the current buffer and current window will be set
of the window (and buffer) whose statusline is currently being drawn. temporarily to that of the window (and buffer) whose statusline is
The expression will evaluate in this context. The variable currently being drawn. The expression will evaluate in this context.
"g:actual_curbuf" is set to the `bufnr()` number of the real current The variable "g:actual_curbuf" is set to the `bufnr()` number of the
buffer and "g:actual_curwin" to the |window-ID| of the real current real current buffer and "g:actual_curwin" to the |window-ID| of the
window. These values are strings. real current window. These values are strings.
The 'statusline' option will be evaluated in the |sandbox| if set from The 'statusline' option will be evaluated in the |sandbox| if set from
a modeline, see |sandbox-option|. a modeline, see |sandbox-option|.
@ -7352,6 +7416,8 @@ A jump table for the options with a short description can be found at |Q_op|.
vsplit Just like "split" but split vertically. vsplit Just like "split" but split vertically.
newtab Like "split", but open a new tab page. Overrules newtab Like "split", but open a new tab page. Overrules
"split" when both are present. "split" when both are present.
uselast If included, jump to the previously used window when
jumping to errors with |quickfix| commands.
*'synmaxcol'* *'smc'* *'synmaxcol'* *'smc'*
'synmaxcol' 'smc' number (default 3000) 'synmaxcol' 'smc' number (default 3000)
@ -7600,8 +7666,6 @@ A jump table for the options with a short description can be found at |Q_op|.
on BeOS: "beos-ansi" on BeOS: "beos-ansi"
on Mac: "mac-ansi" on Mac: "mac-ansi"
on MiNT: "vt52" on MiNT: "vt52"
on MS-DOS: "pcterm"
on OS/2: "os2ansi"
on Unix: "ansi" on Unix: "ansi"
on VMS: "ansi" on VMS: "ansi"
on Win 32: "win32") on Win 32: "win32")
@ -7637,7 +7701,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 the GUI it only applies to the keyboard ('encoding' is used for the
display). Except for the Mac when 'macatsui' is off, then display). Except for the Mac when 'macatsui' is off, then
'termencoding' should be "macroman". 'termencoding' should be "macroman".
*E617* *E617* *E950*
Note: This does not apply to the GTK+ GUI. After the GUI has been Note: This does not apply to the GTK+ GUI. After the GUI has been
successfully initialized, 'termencoding' is forcibly set to "utf-8". successfully initialized, 'termencoding' is forcibly set to "utf-8".
Any attempts to set a different value will be rejected, and an error Any attempts to set a different value will be rejected, and an error
@ -7760,7 +7824,7 @@ A jump table for the options with a short description can be found at |Q_op|.
set and to the Vim default value when 'compatible' is reset. set and to the Vim default value when 'compatible' is reset.
*'textmode'* *'tx'* *'notextmode'* *'notx'* *'textmode'* *'tx'* *'notextmode'* *'notx'*
'textmode' 'tx' boolean (MS-DOS, Win32 and OS/2: default on, 'textmode' 'tx' boolean (Win32: default on,
others: default off) others: default off)
local to buffer local to buffer
This option is obsolete. Use 'fileformat'. This option is obsolete. Use 'fileformat'.
@ -8148,12 +8212,11 @@ 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. NOTE: This option is reset when 'compatible' is set.
*'undolevels'* *'ul'* *'undolevels'* *'ul'*
'undolevels' 'ul' number (default 100, 1000 for Unix, VMS, 'undolevels' 'ul' number (default 100, 1000 for Unix, VMS and Win32)
Win32 and OS/2)
global or local to buffer |global-local| global or local to buffer |global-local|
Maximum number of changes that can be undone. Since undo information Maximum number of changes that can be undone. Since undo information
is kept in memory, higher numbers will cause more memory to be used is kept in memory, higher numbers will cause more memory to be used.
(nevertheless, a single change can use an unlimited amount of memory). Nevertheless, a single change can already use a large amount of memory.
Set to 0 for Vi compatibility: One level of undo and "u" undoes Set to 0 for Vi compatibility: One level of undo and "u" undoes
itself: > itself: >
set ul=0 set ul=0
@ -8276,12 +8339,11 @@ A jump table for the options with a short description can be found at |Q_op|.
displayed when 'verbosefile' is set. displayed when 'verbosefile' is set.
*'viewdir'* *'vdir'* *'viewdir'* *'vdir'*
'viewdir' 'vdir' string (default for Amiga, MS-DOS, OS/2 and Win32: 'viewdir' 'vdir' string (default for Amiga and Win32:
"$VIM/vimfiles/view", "$VIM/vimfiles/view",
for Unix: "~/.vim/view", for Unix: "~/.vim/view",
for Macintosh: "$VIM:vimfiles:view" for Macintosh: "$VIM:vimfiles:view"
for VMS: "sys$login:vimfiles/view" for VMS: "sys$login:vimfiles/view")
for RiscOS: "Choices:vimfiles/view")
global global
{not available when compiled without the |+mksession| {not available when compiled without the |+mksession|
feature} feature}
@ -8306,16 +8368,16 @@ A jump table for the options with a short description can be found at |Q_op|.
slash backslashes in file names replaced with forward slash backslashes in file names replaced with forward
slashes slashes
unix with Unix end-of-line format (single <NL>), even when unix with Unix end-of-line format (single <NL>), even when
on Windows or DOS on MS-Windows
curdir the window-local directory, if set with `:lcd` curdir the window-local directory, if set with `:lcd`
"slash" and "unix" are useful on Windows when sharing view files "slash" and "unix" are useful on MS-Windows when sharing view files
with Unix. The Unix version of Vim cannot source dos format scripts, with Unix. The Unix version of Vim cannot source dos format scripts,
but the Windows version of Vim can source unix format scripts. but the MS-Windows version of Vim can source unix format scripts.
*'viminfo'* *'vi'* *E526* *E527* *E528* *'viminfo'* *'vi'* *E526* *E527* *E528*
'viminfo' 'vi' string (Vi default: "", Vim default for MS-DOS, 'viminfo' 'vi' string (Vi default: "", Vim default for
Windows and OS/2: '100,<50,s10,h,rA:,rB:, MS-Windows: '100,<50,s10,h,rA:,rB:,
for Amiga: '100,<50,s10,h,rdf0:,rdf1:,rdf2: for Amiga: '100,<50,s10,h,rdf0:,rdf1:,rdf2:
for others: '100,<50,s10,h) for others: '100,<50,s10,h)
global global
@ -8397,7 +8459,7 @@ A jump table for the options with a short description can be found at |Q_op|.
r Removable media. The argument is a string (up to the next r Removable media. The argument is a string (up to the next
','). This parameter can be given several times. Each ','). This parameter can be given several times. Each
specifies the start of a path for which no marks will be specifies the start of a path for which no marks will be
stored. This is to avoid removable media. For MS-DOS you stored. This is to avoid removable media. For MS-Windows you
could use "ra:,rb:", for Amiga "rdf0:,rdf1:,rdf2:". You can could use "ra:,rb:", for Amiga "rdf0:,rdf1:,rdf2:". You can
also use it for temp files, e.g., for Unix: "r/tmp". Case is also use it for temp files, e.g., for Unix: "r/tmp". Case is
ignored. Maximum length of each 'r' argument is 50 ignored. Maximum length of each 'r' argument is 50
@ -8540,8 +8602,8 @@ A jump table for the options with a short description can be found at |Q_op|.
":map <BS> X" to make backspace delete the character in front of the ":map <BS> X" to make backspace delete the character in front of the
cursor. cursor.
When 'l' is included and it is used after an operator at the end of a When 'l' is included and it is used after an operator at the end of a
line then it will not move to the next line. This makes "dl", "cl", line (not an empty line) then it will not move to the next line. This
"yl" etc. work normally. makes "dl", "cl", "yl" etc. work normally.
NOTE: This option is set to the Vi default value when 'compatible' is NOTE: This option is set to the Vi default value when 'compatible' is
set and to the Vim default value when 'compatible' is reset. set and to the Vim default value when 'compatible' is reset.
@ -8659,6 +8721,8 @@ A jump table for the options with a short description can be found at |Q_op|.
complete first match. complete first match.
"list:longest" When more than one match, list all matches and "list:longest" When more than one match, list all matches and
complete till longest common string. complete till longest common string.
"list:lastused" When more than one buffer matches, sort buffers
by time last used (other than the current buffer).
When there is only a single match, it is fully completed in all cases. When there is only a single match, it is fully completed in all cases.
Examples: > Examples: >
@ -8882,6 +8946,8 @@ A jump table for the options with a short description can be found at |Q_op|.
fail (and make sure not to exit Vim until the write was successful). fail (and make sure not to exit Vim until the write was successful).
See |backup-table| for another explanation. See |backup-table| for another explanation.
When the 'backupskip' pattern matches, a backup is not made anyway. When the 'backupskip' pattern matches, a backup is not made anyway.
Depending on 'backupcopy' the backup is a new file or the original
file renamed (and a new file is written).
NOTE: This option is set to the default value when 'compatible' is NOTE: This option is set to the default value when 'compatible' is
set. set.
@ -8890,6 +8956,6 @@ A jump table for the options with a short description can be found at |Q_op|.
global global
The number of milliseconds to wait for each character sent to the The number of milliseconds to wait for each character sent to the
screen. When non-zero, characters are sent to the terminal one by screen. When non-zero, characters are sent to the terminal one by
one. For MS-DOS pcterm this does not work. For debugging purposes. one. For debugging purposes.
vim:tw=78:ts=8:noet:ft=help:norl: vim:tw=78:ts=8:noet:ft=help:norl:

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