Compare commits

...

694 Commits

Author SHA1 Message Date
2bede173a1 patch 8.2.2015: Vim9: literal dict #{} is not like any other language
Problem:    Vim9: literal dict #{} is not like any other language.
Solution:   Support the JavaScript syntax.
2020-11-19 18:53:18 +01:00
ee8b787bcd patch 8.2.2014: using CTRL-O in a prompt buffer moves cursor to start
Problem:    Using CTRL-O in a prompt buffer moves cursor to start of the line.
Solution:   Do not move the cursor when restarting edit. (closes #7330)
2020-11-19 18:46:25 +01:00
79cdf80bed patch 8.2.2013: Vim9: not skipping white space after unary minus
Problem:    Vim9: not skipping white space after unary minus.
Solution:   Skip whitespace. (closes #7324)
2020-11-18 17:39:05 +01:00
d92cc130fb patch 8.2.2012: Vim9: confusing error message when using bool wrongly
Problem:    Vim9: confusing error message when using bool wrongly.
Solution:   Mention "Bool" instead of "Special". (closes #7323)
2020-11-18 17:17:15 +01:00
9950280d37 patch 8.2.2011: "syn sync" reports a very large number
Problem:    "syn sync" reports a very large number.
Solution:   Use "at the first line".
2020-11-18 16:53:23 +01:00
8e02faf4e9 patch 8.2.2010: Vim9: compiling fails for unreachable return statement
Problem:    Vim9: compiling fails for unreachable return statement.
Solution:   Fix it. (closes #7319)
2020-11-18 16:35:02 +01:00
382319211a patch 8.2.2009: MS-Windows: setting $LANG in gvimext only causes problems
Problem:    MS-Windows: setting $LANG in gvimext only causes problems.
Solution:   Do not set $LANG. (Ken Takata, closes #7325)
2020-11-18 15:30:09 +01:00
032f40afb8 patch 8.2.2008: MS-Windows GUI: handling channel messages lags
Problem:    MS-Windows GUI: handling channel messages lags.
Solution:   Reduce the wait time from 100 to 10 msec. (closes #7097)
2020-11-18 15:21:50 +01:00
17ab28daa0 patch 8.2.2007: test for insert mode in popup is not reliable
Problem:    Test for insert mode in popup is not reliable.
Solution:   Wait for the popup to disappear. (Ozaki Kiichi, closes #7321)
2020-11-18 12:24:01 +01:00
88774a30c0 patch 8.2.2006: .pbtxt files are not recognized
Problem:    .pbtxt files are not recognized.
Solution:   Recognize .pbtxt as protobuf text buffers. (closes #7326)
2020-11-18 12:12:39 +01:00
c77534c303 patch 8.2.2005: redoing a mapping with <Cmd> doesn't work properly
Problem:    Redoing a mapping with <Cmd> doesn't work properly.
Solution:   Fill the redo buffer.  Use "<SNR>" instead of a key code.
            (closes #7282)
2020-11-18 11:34:37 +01:00
b3a01946b3 patch 8.2.2004: compiler warning for uninitialized variable
Problem:    Compiler warning for uninitialized variable.
Solution:   Initialize "ufunc". (John Marriott)
2020-11-17 19:56:09 +01:00
1efefda623 patch 8.2.2003: build error with +conceal but without +popupwin
Problem:    Build error with +conceal but without +popupwin.
Solution:   Add #ifdef. (Tom Ryder, closes #7316)
2020-11-17 19:22:06 +01:00
52bf81c2d5 patch 8.2.2002: Vim9: lambda argument shadowed by function name
Problem:    Vim9: lambda argument shadowed by function name.
Solution:   Let function name be shadowed by lambda argument. (closes #7313)
2020-11-17 18:50:44 +01:00
0ba48e8c27 patch 8.2.2001: Vim9: :def function does not apply 'maxfuncdepth'
Problem:    Vim9: :def function does not apply 'maxfuncdepth'.
Solution:   Use 'maxfuncdepth'. (issue #7313)
2020-11-17 18:23:19 +01:00
fc74d03e76 patch 8.2.2000: Vim9: dict.key assignment not implemented yet
Problem:    Vim9: dict.key assignment not implemented yet.
Solution:   Implement dict.key assignment. (closes #7312)
2020-11-16 22:11:49 +01:00
e6329e4c55 patch 8.2.1999: terminal popup test sometimes fails
Problem:    Terminal popup test sometimes fails.
Solution:   Wait for the popup to close.
2020-11-16 21:10:34 +01:00
27f4f6baee patch 8.2.1998: terminal Cmd test sometimes fails to close popup
Problem:    Terminal Cmd test sometimes fails to close popup.
Solution:   Add "term_finish" option.
2020-11-16 21:02:28 +01:00
8adc8d9b73 patch 8.2.1997: window changes when using bufload() while in a terminal popup
Problem:    Window changes when using bufload() while in a terminal popup.
Solution:   When searching for a window by ID also find a popup window.
            (closes #7307)
2020-11-16 20:47:31 +01:00
193f6201b4 patch 8.2.1996: Vim9: invalid error for argument of extend()
Problem:    Vim9: invalid error for argument of extend().
Solution:   Check if the type could match. (closes #7299)
2020-11-16 20:08:35 +01:00
714cbe5b21 patch 8.2.1995: the popup menu can cause too much redrawing
Problem:    The popup menu can cause too much redrawing.
Solution:   Reduce the length of the displayed text. (Yasuhiro Matsumoto,
            closes #7306)
2020-11-16 19:12:00 +01:00
c4390fe6c0 patch 8.2.1994: MS-Windows: MinGW always does a full build
Problem:    MS-Windows: MinGW always does a full build.
Solution:   Only check if $OUTDIR exists. (Masamichi Abe, closes #7311)
2020-11-16 18:49:47 +01:00
50dc3ecc64 patch 8.2.1993: occasional failure of the netbeans test
Problem:    Occasional failure of the netbeans test.
Solution:   Add "silent!". (Yegappan Lakshmanan, closes #7304)
2020-11-16 18:39:43 +01:00
4792a679f9 patch 8.2.1992: build fails with small features
Problem:    Build fails with small features.
Solution:   Add #ifdef.
2020-11-15 21:11:18 +01:00
ca359cbedd patch 8.2.1991: Coverity warns for not using the ga_grow() return value
Problem:    Coverity warns for not using the ga_grow() return value.
Solution:   Bail out if ga_grow() fails. (Yegappan Lakshmanan, closes #7303)
2020-11-15 20:49:41 +01:00
6a07644db3 patch 8.2.1990: cursor position wrong in terminal popup with finished job
Problem:    Cursor position wrong in terminal popup with finished job.
Solution:   Only add the top and left offset when not done already.
            (closes #7298)
2020-11-15 20:32:58 +01:00
2dfae04f37 patch 8.2.1989: info popup triggers WinEnter and WinLeave autocommands
Problem:    Info popup triggers WinEnter and WinLeave autocommands.
Solution:   Suppress autocommands for the info popup. (closes #7296)
2020-11-15 14:09:37 +01:00
e41decc892 patch 8.2.1988: still in Insert mode when opening terminal popup
Problem:    Still in Insert mode when opening terminal popup with a <Cmd>
            mapping in Insert mode.
Solution:   Exit Insert mode. (closes #7295)
2020-11-14 21:34:59 +01:00
6453cc8078 patch 8.2.1987: MS-Windows: Win32.mak is no longer needed
Problem:    MS-Windows: Win32.mak is no longer needed.
Solution:   Do not include Win32.mak. (Jason McHugh, closes #7290)
2020-11-14 21:04:33 +01:00
a065a14115 patch 8.2.1986: expression test is flaky on Appveyor
Problem:    Expression test is flaky on Appveyor.
Solution:   Temporarily disable the test in MS-Windows.
2020-11-14 20:57:20 +01:00
02764713a7 patch 8.2.1985: crash when closing terminal popup with <Cmd> mapping
Problem:    Crash when closing terminal popup with <Cmd> mapping.
Solution:   Check b_term is not NULL. (closes #7294)
2020-11-14 20:21:55 +01:00
33aecb1f2c patch 8.2.1984: cannot use :vimgrep in omni completion
Problem:    Cannot use :vimgrep in omni completion, causing C completion to
            fail.
Solution:   Add the EX_LOCK_OK flag to :vimgrep. (closes #7292)
2020-11-14 17:25:51 +01:00
f4d61bc559 patch 8.2.1983: ml_get error when using <Cmd> to open a terminal
Problem:    ml_get error when using <Cmd> to open a terminal.
Solution:   If the window changed reset the incsearch state. (closes #7289)
2020-11-14 14:22:28 +01:00
2ce7790348 patch 8.2.1982: quickfix window now updated when adding invalid entries
Problem:    Quickfix window now updated when adding invalid entries.
Solution:   Update the quickfix buffer properly. (Yegappan Lakshmanan, closes
            #7291, closes #7271)
2020-11-14 13:15:24 +01:00
8496c9eadb patch 8.2.1981: MinGW: parallel compilation might fail
Problem:    MinGW: parallel compilation might fail.
Solution:   Add dependencies on $(OUTDIR). (Masamichi Abe, closes #7287)
2020-11-13 17:47:33 +01:00
659bb2275e patch 8.2.1980: Vim9: some tests are not done at the script level
Problem:    Vim9: some tests are not done at the script level.
Solution:   Use CheckDefAndScriptSuccess() in more places.  Fix uncovered
            problems.
2020-11-12 20:16:39 +01:00
47c5ea44b9 patch 8.2.1979: "term_opencmd" option of term_start() is truncated
Problem:    "term_opencmd" option of term_start() is truncated. (Sergey
            Vlasov)
Solution:   Allocate the buffer to hold the command. (closes #7284)
2020-11-12 15:12:15 +01:00
957cf67d50 patch 8.2.1978: making a mapping work in all modes is complicated
Problem:    Making a mapping work in all modes is complicated.
Solution:   Add the <Cmd> special key. (Yegappan Lakshmanan, closes #7282,
            closes 4784, based on patch by Bjorn Linse)
2020-11-12 14:21:06 +01:00
ea2d407f9c patch 8.2.1977: Vim9: error for using a string in a condition is confusing
Problem:    Vim9: error for using a string in a condition is confusing.
Solution:   Give a more specific error.  Also adjust the compile time type
            checking for || and &&.
2020-11-12 12:08:51 +01:00
6f6244855f patch 8.2.1976: cannot backspace in prompt buffer after using cursor-left
Problem:    Cannot backspace in prompt buffer after using cursor-left. (Maxim
            Kim)
Solution:   Ignore "arrow_used" in a prompt buffer. (closes #7281)
2020-11-11 20:52:40 +01:00
bbf9f344af patch 8.2.1975: Win32: memory leak when encoding conversion fails
Problem:    Win32: memory leak when encoding conversion fails.
Solution:   Free the allocated memory. (Ken Takata, closes #7277)
2020-11-10 22:03:40 +01:00
29b281ba8d patch 8.2.1974: Vim9: test for has('gui_running') fails with VIMDLL
Problem:    Vim9: test for has('gui_running') fails with VIMDLL.
Solution:   Adjust the #ifdef. (Ken Takata, closes #7276)
2020-11-10 20:58:00 +01:00
232f4612e2 patch 8.2.1973: finding a patch number can be a bit slow
Problem:    Finding a patch number can be a bit slow.
Solution:   Use binary search. (closes #7279)
2020-11-10 20:54:29 +01:00
5e1f22ff61 patch 8.2.1972: crash when recreating nested fold
Problem:    Crash when recreating nested fold.
Solution:   Check for empty growarray. (closes #7278)
2020-11-10 18:23:52 +01:00
c56936e2ba patch 8.2.1971: memory leak when map() fails
Problem:    Memory leak when map() fails.
Solution:   Clear the typval.
2020-11-10 11:43:56 +01:00
f883508e36 patch 8.2.1970: it is easy to make mistakes when cleaning up swap files
Problem:    It is easy to make mistakes when cleaning up swap files after the
            system crashed.
Solution:   Warn for the process still running after recovery.  Do not
            automatically delete a swap file created on another system.
            (David Fries, closes #7273)
2020-11-09 21:04:17 +01:00
ea696852e7 patch 8.2.1969: Vim9: map() may change the list or dict item type
Problem:    Vim9: map() may change the list or dict item type.
Solution:   Add mapnew().
2020-11-09 18:31:39 +01:00
8cebd43e97 patch 8.2.1968: Vim9: has() assumes a feature does not change dynamically
Problem:    Vim9: has() assumes a feature does not change dynamically.
Solution:   Check whether a feature may change dynamically. (closes #7265)
2020-11-08 12:49:47 +01:00
59d8e56e04 patch 8.2.1967: the session file does not restore the alternate file
Problem:    The session file does not restore the alternate file.
Solution:   Add ":balt".  Works like ":badd" and also sets the buffer as the
            alternate file.  Use it in the session file. (closes #7269,
            closes #6714)
2020-11-07 18:41:10 +01:00
cbcd9cbd77 patch 8.2.1966: popup becomes current window after closing a terminal window
Problem:    Popup becomes current window after closing a terminal window.
Solution:   When restoring the window after executing autocommands, check that
            the window ID is still the same.  (Naruhiko Nishino,
            closes #7272)
2020-11-07 16:58:59 +01:00
46f479c756 patch 8.2.1965: Vim9: tests fail without the channel feature
Problem:    Vim9: tests fail without the channel feature.
Solution:   Check if the channel feature is present. (Dominique Pellé,
            closes 7270)
2020-11-07 13:09:18 +01:00
faebda8cc1 patch 8.2.1964: not all ConTeXt files are recognized
Problem:    Not all ConTeXt files are recognized.
Solution:   Add two patterns. (closes #7263)
2020-11-06 18:52:55 +01:00
927495b1fe patch 8.2.1963: crash when using a popup window with "latin1" encoding
Problem:    Crash when using a popup window with "latin1" encoding.
Solution:   Don't use ScreenLinesUC when enc_utf8 is false. (closes #7241)
2020-11-06 17:58:35 +01:00
32e5ec0b01 patch 8.2.1962: netbeans may access freed memory
Problem:    Netbeans may access freed memory.
Solution:   Check the buffer pointer is still valid.  Add a test. (Yegappan
            Lakshmanan, closes #7248)
2020-11-06 13:44:21 +01:00
85d9b03f84 Correct list of patches. 2020-11-06 12:03:08 +01:00
22286895fc patch 8.2.1961: various comments can be improved
Problem:    Various comments can be improved.
Solution:   Various comment adjustments.
2020-11-05 20:50:51 +01:00
0fd797eacd patch 8.2.1960: warning for uninitialized variable
Problem:    Warning for uninitialized variable.
Solution:   Initialize the variable.
2020-11-05 20:46:32 +01:00
3132cddd20 Update runtime files 2020-11-05 20:41:49 +01:00
00806bceb6 patch 8.2.1959: crash when terminal buffer name is made empty
Problem:    Crash when terminal buffer name is made empty. (Dhiraj Mishra)
Solution:   Fall back to "[No Name]". (closes #7262)
2020-11-05 19:36:38 +01:00
b885b435d1 patch 8.2.1958: build failure with timers
Problem:    Build failure with timers.
Solution:   Add missing change.
2020-11-05 19:34:41 +01:00
fabc3ca896 patch 8.2.1957: diff and cursorcolumn highlighting don't mix
Problem:    Diff and cursorcolumn highlighting don't mix.
Solution:   Fix condition for what attribute to use. (Christian Brabandt,
            closes #7258, closes #7260)
2020-11-05 19:07:21 +01:00
b4d16cb11d patch 8.2.1956: Vim9: cannot specify argument types for lambda
Problem:    Vim9: cannot specify argument types for lambda.
Solution:   Allow adding argument types.  Check arguments when calling a
            function reference.
2020-11-05 18:45:46 +01:00
66669fc664 patch 8.2.1955: Vim9: not all command modifiers are tested
Problem:    Vim9: not all command modifiers are tested.
Solution:   Add tests for remaining modifiers.
2020-11-04 18:53:35 +01:00
f65b35b446 patch 8.2.1954: Vim9: not all command modifiers are tested
Problem:    Vim9: not all command modifiers are tested.
Solution:   Add tests for "keep" modifiers.  Fix that marks are lost even
            though ":lockmarks" is used.
2020-11-04 18:02:44 +01:00
631e8f9345 patch 8.2.1953: Vim9: extra "unknown" error after other error
Problem:    Vim9: extra "unknown" error after other error.
Solution:   Restore did_emsg count after EXEC instruction. (closes #7254)
            Improve error message from assert_fails()
2020-11-04 15:07:16 +01:00
c7f7f6db3e patch 8.2.1952: Vim9: crash when using a NULL dict key
Problem:    Vim9: crash when using a NULL dict key.
Solution:   Use a NULL dict key like an empty string. (closes #7249)
2020-11-04 13:38:28 +01:00
64ffa9b5fb patch 8.2.1951: test for list and dict fails
Problem:    Test for list and dict fails.
Solution:   Adjust for using an empty list/dict for a null one.
2020-11-04 12:23:06 +01:00
9c13f76275 patch 8.2.1950: Vim9: crash when compiling function fails when getting type
Problem:    Vim9: crash when compiling function fails when getting type.
Solution:   Handle NULL type. (closes #7253)
2020-11-04 12:00:53 +01:00
348be7ed07 patch 8.2.1949: Vim9: using extend() on null dict is silently ignored
Problem:    Vim9: using extend() on null dict is silently ignored.
Solution:   Give an error message.  Initialize a dict variable with an empty
            dictionary. (closes #7251)
2020-11-04 11:36:35 +01:00
4778b4d0e1 patch 8.2.1948: GUI: crash when handling message while closing a window
Problem:    GUI: crash when handling message while closing a window. (Srinath
            Avadhanula)
Solution:   Don't handle message while closing a window. (closes #7250)
2020-11-04 11:03:12 +01:00
c136a3528b patch 8.2.1947: crash when using "zj" without folds
Problem:    Crash when using "zj" without folds. (Sean Dewar)
Solution:   Check for at least one fold. (closes #7245)
2020-11-03 20:05:40 +01:00
35efa22ff2 patch 8.2.1946: sort() with NULL string not tested
Problem:    sort() with NULL string not tested.
Solution:   Add a test.  use v:collate. (Dominique Pellé, closes #7247)
2020-11-03 18:51:54 +01:00
0d90e728fe patch 8.2.1945: crash when passing NULL function to reduce()
Problem:    Crash when passing NULL function to reduce().
Solution:   Check for NULL pointer and give an error. (Dominique Pellé,
            closes #7243)
2020-11-03 18:20:19 +01:00
6fd3a4ba23 patch 8.2.1944: Netbeans test is flaky
Problem:    Netbeans test is flaky.
Solution:   Add a short delay. (Yegappan Lakshmanan, closes #7246)
2020-11-03 11:53:29 +01:00
36113e46b4 patch 8.2.1943: Vim9: wrong error message when colon is missing
Problem:    Vim9: wrong error message when colon is missing.
Solution:   Check for a missing colon. (issue #7239)
2020-11-02 21:08:47 +01:00
dbfa795d8b patch 8.2.1942: insufficient test coverage for the Netbeans interface
Problem:    Insufficient test coverage for the Netbeans interface.
Solution:   Add more tests. Fix an uncovered bug. (Yegappan Lakshmanan,
            closes #7240)
2020-11-02 20:04:22 +01:00
399db046ed patch 8.2.1941: Ex mode test fails on MS-Windows with GUI
Problem:    Ex mode test fails on MS-Windows with GUI.
Solution:   Skip the test when using gvim.
2020-11-01 22:31:08 +01:00
97a19005e1 patch 8.2.1940: Vim9: browse modifier test fails on Mac
Problem:    Vim9: browse modifier test fails on Mac.
Solution:   Only test when the +browse feature is available.
2020-11-01 22:15:44 +01:00
3b6d57f2ce patch 8.2.1939: invalid memory access in Ex mode with global command
Problem:    Invalid memory access in Ex mode with global command.
Solution:   Make sure the cursor is on a valid line. (closes #7238)
2020-11-01 21:56:40 +01:00
a46765a797 patch 8.2.1938: wiping out a terminal buffer makes some tests fail
Problem:    Wiping out a terminal buffer makes some tests fail.
Solution:   Do not wipe out the terminal buffer unless wanted.
2020-11-01 20:58:26 +01:00
645cd3eb1f patch 8.2.1937: Vim9: test for confirm modifier fails in some situations
Problem:    Vim9: test for confirm modifier fails in some situations.
Solution:   Add a short wait.  Handle failure better.
2020-11-01 20:04:57 +01:00
388908352f patch 8.2.1936: session sets the local 'scrolloff' value to the global value
Problem:    Session sets the local 'scrolloff' value to the global value.
Solution:   Do not let restoring the global option value change the local
            value.
2020-11-01 17:40:54 +01:00
578f4cc7d0 patch 8.2.1935: sort test fails on Mac
Problem:    Sort test fails on Mac.
Solution:   Disable the sort test with locale on Mac.
2020-11-01 17:19:07 +01:00
e88c8e802c patch 8.2.1934: Vim9: command modifiers in :def function not tested
Problem:    Vim9: command modifiers in :def function not tested.
Solution:   Add tests.  Fix using modifier before filter command.
2020-11-01 17:03:37 +01:00
55e29611d2 patch 8.2.1933: cannot sort using locale ordering
Problem:    Cannot sort using locale ordering.
Solution:   Add a flag for :sort and sort() to use the locale. (Dominique
            Pellé, closes #7237)
2020-11-01 13:57:44 +01:00
963734e316 patch 8.2.1932: compiler warnings when building with Athena GUI
Problem:    Compiler warnings when building with Athena GUI.
Solution:   Fix function signatures.
2020-11-01 13:33:49 +01:00
fbcbffe1ad patch 8.2.1931: Vim9: arguments of extend() not checked at compile time
Problem:    Vim9: arguments of extend() not checked at compile time.
Solution:   Add argument type checking for extend().
2020-10-31 19:33:38 +01:00
749bc9521d patch 8.2.1930: wrong input if removing shift results in special key code
Problem:    Wrong input if removing shift results in special key code.
Solution:   Handle special key codes. (closes #7189)
2020-10-31 16:33:47 +01:00
0289065e41 patch 8.2.1929: MS-Windows: problem loading Perl 5.32
Problem:    MS-Windows: problem loading Perl 5.32.
Solution:   Define NO_THREAD_SAFE_LOCALE. (Ken Takata, closes #7234)
2020-10-31 13:05:11 +01:00
cd030c4b60 patch 8.2.1928: Vim9: "silent!" not effective when list index is wrong
Problem:    Vim9: "silent!" not effective when list index is wrong.
Solution:   Ignore list indes failure when emsg_silent is set. (closes #7232)
2020-10-30 21:49:40 +01:00
d66960bf57 patch 8.2.1927: Vim9: get unknown error with an error in a timer function
Problem:    Vim9: get unknown error with an error in a timer function.
Solution:   Use did_emsg instead of called_emsg. (closes #7231)
2020-10-30 20:46:26 +01:00
b2620202c7 patch 8.2.1926: cannot use a space in 'spellfile'
Problem:    Cannot use a space in 'spellfile'. (Filipe Brandenburger)
Solution:   Permit using a space. (closes #7230)
2020-10-30 19:25:09 +01:00
6d967125ad patch 8.2.1925: list/dict test fails
Problem:    List/dict test fails.
Solution:   Correct expected exception.
2020-10-30 19:06:18 +01:00
086fc9a585 patch 8.2.1924: Vim9: crash when indexing dict with NULL key
Problem:    Vim9: crash when indexing dict with NULL key.
Solution:   Use empty string instead of NULL. (closes #7229)  Make error
            message more useful for empty string.
2020-10-30 18:33:02 +01:00
4f6b6ed208 patch 8.2.1923: Vim9: "filter" command modifier doesn't work
Problem:    Vim9: "filter" command modifier doesn't work.
Solution:   Check for space on char before argument. (closes #7216,
            closes #7222)
2020-10-29 20:24:34 +01:00
185577e47e patch 8.2.1922: Win32: scrolling problems when part of window is off-screen
Problem:    Win32: scrolling doesn't work properly when part of window is
            off-screen.
Solution:   Fall back to GDI scrolling if part of the window is off-screen.
            Handle multi-monitor setup better. (Ken Takata, closes #7219)
2020-10-29 20:08:21 +01:00
dcdd42a8cc patch 8.2.1921: fuzzy matching does not recognize path separators
Problem:    Fuzzy matching does not recognize path separators.
Solution:   Add a bonus for slash and backslash. (Yegappan Lakshmanan,
            closes #7225)
2020-10-29 18:58:01 +01:00
cf4d454df0 patch 8.2.1920: listlbr test fails when run after another test
Problem:    Listlbr test fails when run after another test.
Solution:   Add test separately to list of test targets.
2020-10-28 22:46:42 +01:00
28ee892ac4 patch 8.2.1919: assert_fails() setting emsg_silent changes normal execution
Problem:    Assert_fails() setting emsg_silent changes normal execution.
Solution:   Use a separate flag in_assert_fails.
2020-10-28 20:20:00 +01:00
3e2534ed1a patch 8.2.1918: Vim9: E1100 mentions :let
Problem:    Vim9: E1100 mentions :let.
Solution:   Mention "var". (closes #7207)
2020-10-28 17:55:31 +01:00
159563b439 patch 8.2.1917: no test for improved Man command
Problem:    No test for improved Man command.
Solution:   Test that shell arguments are properly escaped.
2020-10-28 17:21:26 +01:00
171fb923b8 patch 8.2.1916: Vim9: function call is aborted even when "silent!" is used
Problem:    Vim9: function call is aborted even when "silent!" is used.
Solution:   Use did_emsg instead of called_emsg. (closes #7213)
2020-10-28 16:54:47 +01:00
6cf7e3b026 patch 8.2.1915: Vim9: error for wrong number of arguments is not useful
Problem:    Vim9: error for wrong number of arguments is not useful.
Solution:   Mention whatever we have for the name. (closes #7208)
2020-10-28 14:31:16 +01:00
b4bcea474d patch 8.2.1914: Vim9: cannot put line break in expression for '=' register
Problem:    Vim9: cannot put line break in expression for '=' register.
Solution:   Pass fgetline to set_expr_line(). (closes #7209)
2020-10-28 13:53:50 +01:00
70cf45810c patch 8.2.1913: GTK GUI: rounding for the cell height is too strict
Problem:    GTK GUI: rounding for the cell height is too strict.
Solution:   Round up above 15/16 of a pixel. (closes #7203)
2020-10-27 20:43:26 +01:00
68a48ee55e patch 8.2.1912: with Python 3.9 some tests fail
Problem:    With Python 3.9 some tests fail.
Solution:   Take into account the different error message. (James McCoy,
            closes #7210)
2020-10-27 19:59:10 +01:00
977fd0b327 patch 8.2.1911: tiny build fails
Problem:    Tiny build fails.
Solution:   Add #ifdef.
2020-10-27 09:12:45 +01:00
caf73dcfad patch 8.2.1910: reading past the end of the command line
Problem:    Reading past the end of the command line.
Solution:   Check for NUL. (closes #7204)
2020-10-26 21:39:13 +01:00
cb80aa2d53 Update runtime files. 2020-10-26 21:12:46 +01:00
8133cc6bf4 patch 8.2.1909: number of status line items is limited to 80
Problem:    Number of status line items is limited to 80.
Solution:   Dynamically allocate the arrays. (Rom Grk, closes #7181)
2020-10-26 21:05:27 +01:00
c8970b9464 patch 8.2.1908: Lua is initialized even when not used
Problem:    Lua is initialized even when not used.
Solution:   Put lua_init() after check for "eap->skip". (Christian Brabandt,
            closes #7191).  Avoid compiler warnings.
2020-10-26 20:18:08 +01:00
f9d51354de patch 8.2.1907: complete_info().selected may be wrong
Problem:    Complete_info().selected may be wrong.
Solution:   Update cp_number if it was never set. (issue #6945)
2020-10-26 19:22:42 +01:00
a360dbe3b6 patch 8.2.1906: warning for signed/unsigned
Problem:    Warning for signed/unsigned.
Solution:   Use size_t instead of int. (Mike Williams)
2020-10-26 18:46:53 +01:00
4882d98339 patch 8.2.1905: the wininfo list may contain stale entries
Problem:    The wininfo list may contain stale entries.
Solution:   When closing a window remove any other entry where the window
            pointer is NULL.
2020-10-25 17:55:09 +01:00
89b693e562 patch 8.2.1904: still using default option values after using ":badd +1"
Problem:    Still using default option values after using ":badd +1".
Solution:   Find a window where options were set.  Don't set the window when
            using ":badd".
2020-10-25 17:09:50 +01:00
37e4e03c67 patch 8.2.1903: buffer test fails with normal features
Problem:    Buffer test fails with normal features.
Solution:   Use 'numberwidth' instead of 'conceallevel' in the test.
2020-10-25 16:18:26 +01:00
e974fa7b2b patch 8.2.1902: default option values changed with :badd for existing buffer
Problem:    Default option values are changed when using :badd for an existing
            buffer.
Solution:   When calling buflist_new() pass a zero line number. (closes #7195)
2020-10-25 15:02:51 +01:00
4ff2f2fb6b patch 8.2.1901: variable completion does not work in command line window
Problem:    Variable completion does not work in command line window.
Solution:   Use the "prevwin". (closes #7198)
2020-10-25 13:22:42 +01:00
02194d2bd5 patch 8.2.1900: Vim9: command modifiers do not work
Problem:    Vim9: command modifiers do not work.
Solution:   Make most command modifiers work.
2020-10-24 23:08:38 +02:00
67def64a4e patch 8.2.1899: crash in out-of-memory situation
Problem:    Crash in out-of-memory situation.
Solution:   Bail out if shell_name is NULL. (Dominique Pellé, closes #7196)
2020-10-24 20:58:06 +02:00
e100440158 patch 8.2.1898: command modifier parsing always uses global cmdmod
Problem:    Command modifier parsing always uses global cmdmod.
Solution:   Pass in cmdmod_T to use.  Rename struct fields consistently.
2020-10-24 20:49:43 +02:00
5661ed6c83 patch 8.2.1897: command modifiers are saved and set inconsistently
Problem:    Command modifiers are saved and set inconsistently.
Solution:   Separate parsing and applying command modifiers.  Save values in
            cmdmod_T.
2020-10-24 17:19:16 +02:00
e1be11864d patch 8.2.1896: valgrind warns for using uninitialized memory
Problem:    Valgrind warns for using uninitialized memory.
Solution:   NUL terminate the SmcOpenConnection() error message. (Dominique
            Pellé, closes #7194)
2020-10-24 13:30:51 +02:00
210681c509 patch 8.2.1895: Vim9: silent command modifier test fails
Problem:    Vim9: silent command modifier test fails.
Solution:   Add missing changes.
2020-10-23 18:51:06 +02:00
f4c6e1e75c patch 8.2.1894: Vim9: command modifiers are not supported
Problem:    Vim9: command modifiers are not supported.
Solution:   Support "silent" and "silent!".
2020-10-23 18:02:32 +02:00
8ded5b647a patch 8.2.1893: fuzzy matching does not support multiple words
Problem:    Fuzzy matching does not support multiple words.
Solution:   Add support for matching white space separated words. (Yegappan
            Lakshmanan, closes #7163)
2020-10-23 16:50:30 +02:00
9c24cd11e2 patch 8.2.1892: valgrind warns for using uninitialized access in tests
Problem:    Valgrind warns for using uninitialized access in tests.
Solution:   Fix condition for breaking out of loop. (Dominique Pellé,
            closes #7187)
2020-10-23 15:40:39 +02:00
683581eb49 patch 8.2.1891: Vim9: skipping over expression doesn't handle line breaks
Problem:    Vim9: skipping over expression doesn't handle line breaks.
Solution:   Pass evalarg to skip_expr(). (closes #7157)
2020-10-22 21:22:58 +02:00
081db1a66d patch 8.2.1890: Vim9: strange error for subtracting from a list
Problem:    Vim9: strange error for subtracting from a list.
Solution:   Check getting a number, not a string. (closes #7167)
2020-10-22 20:09:43 +02:00
b07a39de48 patch 8.2.1889: Vim9: errornous error for missing white space after {}
Problem:    Vim9: errornous error for missing white space after {}.
Solution:   Don't skip over white space after {}. (issue #7167)
2020-10-22 19:00:01 +02:00
e6e70a10f1 patch 8.2.1888: Vim9: getbufline(-1, 1, '$') gives an error
Problem:    Vim9: Getbufline(-1, 1, '$') gives an error.
Solution:   Return an empty list. (closes #7180)
2020-10-22 18:23:38 +02:00
15ab48f088 patch 8.2.1887: Github actions not optimally configured
Problem:    Github actions not optimally configured.
Solution:   Run CI on any pushed branches. Set fail-fast. (Ozaki Kiichi,
            closes #7184)
2020-10-22 17:33:17 +02:00
371806e164 patch 8.2.1886: using ":silent!" in a popup filter has unexpected effect
Problem:    Using ":silent!" in a popup filter has unexpected effect.
Solution:   Use did_emsg instead of called_emsg. (closes #7178)
2020-10-22 13:44:54 +02:00
2733779a1a patch 8.2.1885: filetype tests unnessarily creates swap files
Problem:    Filetype tests unnessarily creates swap files.
Solution:   Disable 'swapfile'. (Ken Takata, closes #7183)
2020-10-22 12:33:32 +02:00
a1224cb706 patch 8.2.1884: compiler warning for uninitialized variable
Problem:    Compiler warning for uninitialized variable. (John Marriott)
Solution:   Initialize with NULL.
2020-10-22 12:31:49 +02:00
4ce5fe4c87 patch 8.2.1883: compiler warnings when using Python
Problem:    Compiler warnings when using Python.
Solution:   Adjust PyCFunction to also have the second argument.  Use "int"
            return type for some functions.  Insert "(void *)" to get rid of
            the remaining warnings.
2020-10-21 21:01:59 +02:00
c58f5456e5 patch 8.2.1882: Vim9: v:disallow_let is no longer needed
Problem:    Vim9: v:disallow_let is no longer needed.
Solution:   Remove v:disallow_let.
2020-10-21 20:58:52 +02:00
692d1a51e7 patch 8.2.1881: cannot build with GTK3
Problem:    Cannot build with GTK3.
Solution:   Adjust form functions.
2020-10-21 17:28:27 +02:00
af7a9066a9 patch 8.2.1880: Vim9: asan complains about adding zero to NULL
Problem:    Vim9: Asan complains about adding zero to NULL.
Solution:   Check for argument count first.
2020-10-21 16:49:17 +02:00
ca17453e73 patch 8.2.1879: Vim9: argument types of insert() not checked when compiling
Problem:    Vim9: argument types of insert() not checked when compiling.
Solution:   Add argument type checks for insert().
2020-10-21 16:42:22 +02:00
8a99e66b4f patch 8.2.1878: GTK: error for redefining function
Problem:    GTK: error for redefining function. (Tony Mechelynck)
Solution:   Remove "gtk_" prefix from local functions and prepend "gui_" to
            global functions.
2020-10-21 16:10:21 +02:00
b8f519e538 patch 8.2.1877: test for function list fails
Problem:    Test for function list fails.
Solution:   Move "obsolete" comments one line up.
2020-10-21 14:49:08 +02:00
94738d8fab patch 8.2.1876: Vim9: argument types are not checked at compile time
Problem:    Vim9: argument types for builtin functions are not checked at
            compile time.
Solution:   Add an argument type checking mechanism. Implement type checks for
            one function.
2020-10-21 14:25:07 +02:00
3da855c8e2 patch 8.2.1875: warning when building GTK gui
Problem:    Warning when building GTK gui.
Solution:   Add missing function parameter.
2020-10-21 12:38:00 +02:00
b53e13a91a patch 8.2.1874: can't do something just before leaving Insert mode
Problem:    Can't do something just before leaving Insert mode.
Solution:   Add the InsertLeavePre autocommand event. (closes #7177)
2020-10-21 12:19:53 +02:00
20d89e0ac6 patch 8.2.1873: Vim9: missing white space when using <f-args>
Problem:    Vim9: missing white space when using <f-args>.
Solution:   Add spaces. (Christian J. Robinson)
2020-10-20 23:11:33 +02:00
e9f9f16387 patch 8.2.1872: matchfuzzy() does not prefer sequential matches
Problem:    Matchfuzzy() does not prefer sequential matches.
Solution:   Give sequential matches a higher bonus. (Christian Brabandt,
            closes #7140)
2020-10-20 19:01:30 +02:00
c95940c06a patch 8.2.1871: using %v in 'errorformat' may fail before %Z
Problem:    Using %v in 'errorformat' may fail before %Z.
Solution:   Set qf_viscol only when qf_col is set. (closes #7169)
2020-10-20 14:59:12 +02:00
39ca4127a0 patch 8.2.1870: Vim9: no need to keep all script variables
Problem:    Vim9: no need to keep all script variables.
Solution:   Only keep script variables when a function was defined that could
            use them.  Fix freeing static string on exit.
2020-10-20 14:25:07 +02:00
955347cc7e patch 8.2.1869: Vim9: memory leak when using add()
Problem:    Vim9: memory leak when using add().
Solution:   Free the added item.
2020-10-19 23:01:46 +02:00
9a13e185e5 patch 8.2.1868: Vim9: no error for missing space after comma in dict
Problem:    Vim9: no error for missing space after comma in dict.
Solution:   Check for white space. (closes #6672)
2020-10-19 21:45:07 +02:00
80b0e5ea11 patch 8.2.1867: Vim9: argument to add() not checked for blob
Problem:    Vim9: argument to add() not checked for blob.
Solution:   Add the BLOBAPPEND instruction.
2020-10-19 20:45:36 +02:00
66fa5fd54f patch 8.2.1866: Vim9: appending to pushed blob gives wrong result
Problem:    Vim9: appending to pushed blob gives wrong result.
Solution:   Set ga_maxlen when copying a blob.
2020-10-19 20:21:03 +02:00
1dcae59957 patch 8.2.1865: Vim9: add() does not check type of argument
Problem:    Vim9: add() does not check type of argument.
Solution:   Inline the add() call. (closes #7160)
2020-10-19 19:02:42 +02:00
334a8b4bde patch 8.2.1864: Vim9: no error for wrong list type
Problem:    Vim9: no error for wrong list type.
Solution:   Add flag to indicate a constant. (closes #7160)
2020-10-19 16:07:42 +02:00
e3c65ce4e5 patch 8.2.1863: json code not sufficiently tested
Problem:    Json code not sufficiently tested.
Solution:   Add more test cases. (Dominique Pellé, closes #7166)
2020-10-19 13:12:33 +02:00
2ea79ad835 patch 8.2.1862: vim9: memory leak when compiling lambda fails
Problem:    vim9: memory leak when compiling lambda fails.
Solution:   Call clear_evalarg().
2020-10-18 23:32:13 +02:00
a2c026d0fd patch 8.2.1861: Vim9: no specific error when parsing lambda fails
Problem:    Vim9: no specific error when parsing lambda fails.
Solution:   Also give syntax errors when not evaluating. (closes #7154)
2020-10-18 18:03:17 +02:00
335e671322 patch 8.2.1860: Vim9: memory leak when throwing empty string
Problem:    Vim9: memory leak when throwing empty string.
Solution:   Free the empty string.
2020-10-17 22:58:21 +02:00
352134bbfb patch 8.2.1859: Vim9: crash in unpack assignment
Problem:    Vim9: crash in unpack assignment.
Solution:   Make sure an error message is turned into an exception.
            (closes #7159)
2020-10-17 22:04:08 +02:00
403dc31f5a patch 8.2.1858: Vim9: filter functions return number instead of bool
Problem:    Vim9: filter functions return number instead of bool.
Solution:   Return v:true instead of one. (closes #7144)
2020-10-17 19:29:51 +02:00
218450ad5e patch 8.2.1857: Vim9: using job_status() on an unused var gives an error
Problem:    Vim9: using job_status() on an unused var gives an error.
Solution:   Return "fail". (closes #7158)
2020-10-17 18:51:52 +02:00
9668cc57a1 patch 8.2.1856: "2resize" uses size of current window
Problem:    "2resize" uses size of current window.
Solution:   Use size of resized window. (Yasuhiro Matsumoto, closes #7152)
2020-10-17 17:39:55 +02:00
e13bdec6b9 patch 8.2.1855: Vim9: get error message when nothing is wrong
Problem:    Vim9: get error message when nothing is wrong.
Solution:   Check called_emsg instead of did_emsg. (closes #7143)
2020-10-16 23:16:47 +02:00
1e021e63c5 patch 8.2.1854: Vim9: crash when throwing exception for NULL string
Problem:    Vim9: crash when throwing exception for NULL string. (Dhiraj
            Mishra)
Solution:   Handle NULL string like empty string. (closes #7139)
2020-10-16 20:25:23 +02:00
7a66a17190 patch 8.2.1853: "to_f" is recognized at "topleft" modifier
Problem:    "to_f" is recognized at "topleft" modifier.
Solution:   Do not recognize modifer when "_" follows. (closes #7019)
2020-10-16 19:56:12 +02:00
ffdf8adfa8 patch 8.2.1852: map() returing zero for NULL list is unexpected
Problem:    map() returing zero for NULL list is unexpected.
Solution:   Return the empty list. (closes #7133)
2020-10-15 22:29:17 +02:00
27491cd3ef patch 8.2.1851: Vim9: "!" followed by space incorrectly used
Problem:    Vim9: "!" followed by space incorrectly used.
Solution:   Skip over trailing spaces. (closes #7131)
2020-10-15 21:54:56 +02:00
a604ccc959 patch 8.2.1850: "vat" does not select tags correctly over line break
Problem:    "vat" does not select tags correctly over line break.
Solution:   Adjust the search pattern. (Aufar Gilbran, closes #7136)
2020-10-15 21:23:28 +02:00
ed234f24f3 patch 8.2.1849: Vim9: garbage collection frees block-local variables
Problem:    Vim9: garbage collection frees block-local variables.
Solution:   Mark all script variables as used.
2020-10-15 20:42:20 +02:00
74f8eece5e patch 8.2.1848: crash when passing a NULL string or list to popup_settext()
Problem:    Crashyyyyy passing a NULL string or list to popup_settext().
Solution:   Check for NULL pointers. (closes #7132)
2020-10-15 19:10:56 +02:00
209f0208f7 patch 8.2.1847: Vim9: using negative value for unsigned type
Problem:    Vim9: using negative value for unsigned type.
Solution:   Use zero instead of -1.
2020-10-15 13:57:56 +02:00
fbbcd00367 patch 8.2.1846: Vim9: block variables are not found in compiled function
Problem:    Vim9: variables declared in a local block are not found in
            when a function is compiled.
Solution:   Look for script variables in sn_all_vars.
2020-10-15 12:46:44 +02:00
8d739de43b patch 8.2.1845: Vim9: function defined in a block can't use block variables
Problem:    Vim9: function defined in a block can't use variables defined in
            that block.
Solution:   First step: Make a second hashtab that holds all script variables,
            also block-local ones, with more information.
2020-10-14 19:39:19 +02:00
3d30af8783 patch 8.2.1844: using "q" at the more prompt doesn't stop a long message
Problem:    Using "q" at the more prompt doesn't stop a long message.
Solution:   Check for "got_int". (closes #7122)
2020-10-13 22:15:56 +02:00
b9616af23f patch 8.2.1843: Netbeans: with huge buffer number memory allocation may fail
Problem:    Netbeans: with huge buffer number memory allocation may fail.
Solution:   Check for size overflow.
2020-10-13 21:11:13 +02:00
21cbe175ee patch 8.2.1842: crash when USE_FNAME_CASE is defined and using :browse
Problem:    Crash when USE_FNAME_CASE is defined and using :browse.
Solution:   Don't use read-only memory for ".". (Yegappan Lakshmanan,
            closes #7123)
2020-10-13 19:08:24 +02:00
2b9b17ea5d patch 8.2.1841: Vim9: test for compilation error fails in normal build
Problem:    Vim9: test for compilation error fails in normal build.
Solution:   Invoke CheckRunVimInTerminal in a separate function.
2020-10-13 18:38:11 +02:00
f4e8cdd3d2 patch 8.2.1840: Vim9: error message is not clear about compilation error
Problem:    Vim9: error message is not clear about compilation error.
Solution:   Say "compiling" instead of "processing".
2020-10-12 22:07:13 +02:00
fc8aa6d02d patch 8.2.1839: Vim9: memory leaks reported in assign test
Problem:    Vim9: memory leaks reported in assign test.
Solution:   Move the failing job_start() call to separate test files, it
            causes false leak reports.
2020-10-12 20:31:26 +02:00
93be1644db patch 8.2.1838: Vim9: cannot insert a comment line in an expression
Problem:    Vim9: cannot insert a comment line in an expression.
Solution:   Skip comment lines at the script level. (closes #7111)
2020-10-11 21:34:41 +02:00
c07b7f701f patch 8.2.1837: using "gn" after "gN" does not work
Problem:    Using "gn" after "gN" does not work.
Solution:   Extend the other end of the Visual area. (closes #7109)
2020-10-11 20:44:15 +02:00
62cd26a229 patch 8.2.1836: autocmd test fails on pacifist systems
Problem:    Autocmd test fails on pacifist systems.
Solution:   Check that /bin/kill exists. (James McCoy, closes #7117)
            Tune the timing, make the autocmd test run faster.
2020-10-11 20:08:44 +02:00
6eb36ade98 patch 8.2.1835: ":help ??" finds the "!!" tag
Problem:    ":help ??" finds the "!!" tag.
Solution:   Do not translate "?" into ".".  (Naruhiko Nishino, closes #7114,
            closes #7115)
2020-10-11 19:08:33 +02:00
efc0d94afc patch 8.2.1834: PyEval_InitThreads() is deprecated in Python 3.9
Problem:    PyEval_InitThreads() is deprecated in Python 3.9.
Solution:   Do not call PyEval_InitThreads in Python 3.9 and later. (Ken
            Takata, closes #7113)  Avoid warnings for functions.
2020-10-11 18:05:02 +02:00
204ade6bcb patch 8.2.1833: when reading from stdin dup() is called twice
Problem:    When reading from stdin dup() is called twice.
Solution:   Remove the dup() in main.c. (Ken Takata, closes #7110)
2020-10-11 14:58:46 +02:00
aab9fada4a patch 8.2.1832: readdirex() error is displayed as a message
Problem:    readdirex() error is displayed as a message. (Yegappan Lakshmanan)
Solution:   Use semsg() instead of smsg().
2020-10-11 14:28:11 +02:00
ef16c90423 patch 8.2.1831: file missing from distribution
Problem:    File missing from distribution.
Solution:   Add the github code analyses file.
2020-10-11 14:22:22 +02:00
4f4d51a942 Update runtime files. 2020-10-11 13:57:40 +02:00
c6ed254d9f patch 8.2.1830: MS-Windows: Python3 issue with stdin
Problem:    MS-Windows: Python3 issue with stdin.
Solution:   Check if stdin is readable. (Ken Takata, closes #7106)
2020-10-10 23:26:28 +02:00
bd6428b9e7 patch 8.2.1829: warnings when executing Github actions
Problem:    Warnings when executing Github actions.
Solution:   Use another method to set environment variables. (Ken Takata,
            closes #7107)
2020-10-10 22:34:36 +02:00
1b1e9df78b patch 8.2.1828: build failure without the +eval feature
Problem:    Build failure without the +eval feature.
Solution:   Add dummys for ex_block and ex_endblock.
2020-10-10 22:26:52 +02:00
10a1a534d1 patch 8.2.1827: filetype detection does not test enough file names
Problem:    Filetype detection does not test enough file names.
Solution:   Test more file names. (Adam Stankiewicz, closes #7099)
2020-10-10 21:50:25 +02:00
9becdf2b98 patch 8.2.1826: Vim9: cannot use a {} block at script level
Problem:    Vim9: cannot use a {} block at script level.
Solution:   Recognize a {} block.
2020-10-10 21:33:48 +02:00
d747548c66 patch 8.2.1825: Vim9: accessing freed memory
Problem:    Vim9: accessing freed memory.
Solution:   Clear sv_name when the variable is deleted.
2020-10-10 20:31:37 +02:00
fcdc5d83fb patch 8.2.1824: Vim9: variables at the script level escape their scope
Problem:    Vim9: variables at the script level escape their scope.
Solution:   When leaving a scope remove variables declared in it.
2020-10-10 19:07:09 +02:00
28f224b2c1 patch 8.2.1823: "gN" does not select the matched string
Problem:    "gN" does not select the matched string.
Solution:   Move the cursor to the start of the match.
2020-10-10 16:45:25 +02:00
f57497276b patch 8.2.1822: list test doesn't fail
Problem:    List test doesn't fail.
Solution:   Adjust the test for NULL list handling.
2020-10-10 16:42:39 +02:00
1a73923705 patch 8.2.1821: Vim9: concatenating to a NULL list doesn't work
Problem:    Vim9: concatenating to a NULL list doesn't work.
Solution:   Handle a NULL list like an empty list. (closes #7064)
2020-10-10 15:37:58 +02:00
820d55a50b patch 8.2.1820: Vim9: crash when error happens in timer callback
Problem:    Vim9: crash when error happens in timer callback.
Solution:   Check that current_exception is not NULL. (closes #7100)
2020-10-10 15:05:23 +02:00
85d5e2b723 patch 8.2.1819: Vim9: Memory leak when using a closure
Problem:    Vim9: Memory leak when using a closure.
Solution:   Compute the mininal refcount in the funcstack.  Reenable disabled
            tests.
2020-10-10 14:13:01 +02:00
8956023920 patch 8.2.1818: SE Linux: deprecation warning for security_context_t
Problem:    SE Linux: deprecation warning for security_context_t.
Solution:   Use "char *" instead. (James McCoy, closes #7093)
2020-10-09 23:04:47 +02:00
e8211a33dc patch 8.2.1817: Vim9: wrong instruction when reusing a local variable spot
Problem:    Vim9: wrong instruction when reusing a local variable spot.
Solution:   Clear a newly allocated local variable. (closes #7080)
2020-10-09 22:04:29 +02:00
11416321ff patch 8.2.1816: Vim9: another memory leak when using function reference
Problem:    Vim9: another memory leak when using function reference.
Solution:   Temporarily disable the tests.
2020-10-09 10:20:53 +02:00
6a61421f64 patch 8.2.1815: Vim9: memory leak when using function reference
Problem:    Vim9: memory leak when using function reference.
Solution:   Temporarily disable the test.
2020-10-08 23:21:21 +02:00
922acbda3d patch 8.2.1814: missing change to remove "static"
Problem:    Missing change to remove "static".
Solution:   Add the change.
2020-10-08 21:30:40 +02:00
10c65860f8 patch 8.2.1813: Vim9: can assign wrong type to script dict
Problem:    Vim9: can assign wrong type to script dict. (Christian J.  Robinson)
Solution:   Check the type if known.
2020-10-08 21:16:42 +02:00
0876c78527 patch 8.2.1812: Vim9: nested closure throws an internal error
Problem:    Vim9: nested closure throws an internal error.
Solution:   Do not skip a local variable with a partial. (closes #7065)
2020-10-07 19:08:04 +02:00
9a033d7b18 patch 8.2.1811: mapping Ctrl-key does not work for '{', '}' and '|'
Problem:    Mapping Ctrl-key does not work for '{', '}' and '|'.
Solution:   Remove the shift modifier. (closes #6457)
2020-10-07 17:29:48 +02:00
d7e5e9430a patch 8.2.1810: some code in normal.c not covered by tests
Problem:    Some code in normal.c not covered by tests.
Solution:   Add normal mode tests. (Yegappan Lakshmanan, closes #7086)
2020-10-07 16:54:52 +02:00
4e2114e988 patch 8.2.1809: mapping some keys with Ctrl does not work properly
Problem:    Mapping some keys with Ctrl does not work properly.
Solution:   For terminal, GTK and Motif handle "@", "^" and "_" codes.
2020-10-07 16:12:37 +02:00
f12f0022e6 patch 8.2.1808: no test coverage for ":spelldump!"
Problem:    No test coverage for ":spelldump!".
Solution:   Add a test. (Dominique Pellé, closes #7089)
2020-10-07 12:58:44 +02:00
349f609f89 patch 8.2.1807: can use :help in a terminal popup window
Problem:    Can use :help in a terminal popup window.
Solution:   Give an error. (closes #7088)
2020-10-06 20:46:49 +02:00
253b16a4ab patch 8.2.1806: MS-Windows with Python: Vim freezes after import command
Problem:    MS-Windows with Python: Vim freezes after import command.
Solution:   Use either "NUL" or "CONIN$" when reopening stdin. (Yasuhiro
            Matsumoto, closes #7083)
2020-10-06 19:59:06 +02:00
80361a5f2b patch 8.2.1805: Unix: terminal mode changed when using ":shell"
Problem:    Unix: terminal mode changed when using ":shell".
Solution:   Avoid calling settmode() when not needed. (issue #7079)
2020-10-05 21:39:25 +02:00
50c4e9e08f patch 8.2.1804: resolve('/') returns an empty string
Problem:    resolve('/') returns an empty string.
Solution:   Don't remove single slash. (closes #7074)
2020-10-05 20:38:06 +02:00
afe8cf6170 patch 8.2.1803: a few failures are not tested
Problem:    A few failures are not tested.
Solution:   Test a few failures. (Dominique Pellé, closes #7075)
2020-10-05 20:07:18 +02:00
44aefffaad patch 8.2.1802: Vim9: crash with unterminated dict
Problem:    Vim9: crash with unterminated dict. (Dhiraj Mishra)
Solution:   Return empty string instead of NULL. (closes #7084)
2020-10-05 19:23:59 +02:00
55b419b871 patch 8.2.1801: undo file not found when using ":args" or ":next"
Problem:    Undo file not found when using ":args" or ":next".
Solution:   Handle like editing another file. (closes #7072)
2020-10-04 19:56:39 +02:00
dda749ce85 patch 8.2.1800: Vim9: memory leak if "if" condition is invalid
Problem:    Vim9: memory leak if "if" condition is invalid.
Solution:   Free ppconst earlier.
2020-10-04 17:24:29 +02:00
d1ad99b654 patch 8.2.1799: some Normal mode commands not fully tested
Problem:    Some Normal mode commands not fully tested.
Solution:   Add a few more tests. (Yegappan Lakshmanan, closes #7073)
2020-10-04 16:16:54 +02:00
1310660557 patch 8.2.1798: Vim9: trinary operator condition is too permissive
Problem:    Vim9: trinary operator condition is too permissive.
Solution:   Use tv_get_bool_chk().
2020-10-04 16:06:05 +02:00
6abd3dc257 patch 8.2.1797: Vim9: some parts of the code not tested
Problem:    Vim9: some parts of the code not tested.
Solution:   Add a few tests.
2020-10-04 14:17:32 +02:00
7b5d544269 patch 8.2.1796: Vim9: invalid memory access with weird function name
Problem:    Vim9: invalid memory access with weird function name. (Dhiraj
            Mishra)
Solution:   Check the name is valid.  Add a test.
2020-10-04 13:42:34 +02:00
2bb2658bef patch 8.2.1795: Vim9: operators && and || have a confusing result
Problem:    Vim9: operators && and || have a confusing result.
Solution:   Make the result a boolean.
2020-10-03 22:52:39 +02:00
92f26c256e patch 8.2.1794: no falsy Coalescing operator
Problem:    No falsy Coalescing operator.
Solution:   Add the "??" operator.  Fix mistake with function argument count.
2020-10-03 20:17:30 +02:00
c8fe645c19 patch 8.2.1793: not consistently giving the "is a directory" warning
Problem:    Not consistently giving the "is a directory" warning.
Solution:   Adjust check for illegal file name and directory. (Yasuhiro
            Matsumoto, closes #7067)
2020-10-03 17:04:37 +02:00
588d241d44 patch 8.2.1792: Configure does not recognize Racket 6.1+
Problem:    Configure does not recognize Racket 6.1+.
Solution:   Add a check for "rktio". (closes #7062)
2020-10-03 14:24:19 +02:00
1bdae40323 patch 8.2.1791: Vim9: debugger test fails
Problem:    Vim9: debugger test fails.
Solution:   Use "var" instead of "let".
2020-10-03 14:14:56 +02:00
794771cfd8 patch 8.2.1790: MS-Windows with Python: crash when executed from Vifm
Problem:    MS-Windows with Python: crash when executed from Vifm.
Solution:   Use NUL instead of CONIN. (Ken Takata, closes #7061, closes #7053)
2020-10-03 13:57:13 +02:00
c1f0066b64 patch 8.2.1789: Vim9: crash with invalid list constant
Problem:    Vim9: crash with invalid list constant. (Dhiraj Mishra)
Solution:   Return FAIL when compiling the list fails. (closes #7066)
2020-10-03 13:41:53 +02:00
016faaa1b2 patch 8.2.1788: Vim9: still allows :let for declarations
Problem:    Vim9: still allows :let for declarations.
Solution:   Make the default for v:disallow_let one.  It can still be set to
            zero to allow for using :let.
2020-10-03 12:57:27 +02:00
795aaa1e84 patch 8.2.1787: crash with 'incsearch' and very long line
Problem:    Crash with 'incsearch' and very long line.
Solution:   Check whether regprog becomes NULL. (closes #7063)
2020-10-02 20:36:01 +02:00
8a9bc95eae patch 8.2.1786: various Normal mode commands not fully tested
Problem:    Various Normal mode commands not fully tested.
Solution:   Add more tests. (Yegappan Lakshmanan, closes #7059)
2020-10-02 18:48:07 +02:00
3f974ff45e patch 8.2.1785: compiler warning for strcp() out of bounds
Problem:    Compiler warning for strcp() out of bounds. (Christian Brabandt)
Solution:   use memmove() instead.
2020-10-02 18:11:56 +02:00
fa79be6b10 patch 8.2.1784: commits are not scanned for security problems
Problem:    commits are not scanned for security problems
Solution:   Enable Github code scanning. (Christian Brabandt, closes #7057)
2020-10-02 10:29:45 +02:00
bdf931c25b patch 8.2.1783: try-catch test fails
Problem:    Try-catch test fails.
Solution:   Don't call win_enter(), only call enterering_window().
2020-10-01 22:37:40 +02:00
74273e6691 patch 8.2.1782: Vim9: cannot pass boolean to mapset()
Problem:    Vim9: cannot pass boolean to mapset().
Solution:   Use get_tv_bool(). (closes #7041)
2020-10-01 21:37:21 +02:00
4537bcc889 patch 8.2.1781: writing to prompt buffer interferes with insert mode
Problem:    Writing to prompt buffer interferes with insert mode.
Solution:   Use win_enter() instead of just setting "curwin". (Ben Jackson,
            closes #7035)
2020-10-01 20:03:04 +02:00
668008be66 patch 8.2.1780: statusline not updated when splitting windows
Problem:    Statusline not updated when splitting windows.
Solution:   Call status_redraw_all(). (Jason Franklin, closes #5496)
2020-10-01 19:06:35 +02:00
0022675aa3 patch 8.2.1779: some debian changelog files are not recognized
Problem:    Some debian changelog files are not recognized.
Solution:   Add */debian/changelog. (Jason Franklin)
2020-10-01 16:54:07 +02:00
5366e1aecf patch 8.2.1778: Vim9: returning from a partial call clears outer context
Problem:    Vim9: returning from a partial call clears outer context, causing
            a crash.
Solution:   Put the outer context in the stack frame. (closes #7044)
2020-10-01 13:01:34 +02:00
55759b5228 patch 8.2.1777: Vim9: some assignment tests in the wrong file
Problem:    Vim9: some assignment tests in the wrong file.
Solution:   Move assignment tests to test_vim9_assign.
2020-09-30 22:59:42 +02:00
17bb4d4607 patch 8.2.1776: filetype.vim may be loaded twice
Problem:    Filetype.vim may be loaded twice.
Solution:   Do "syntax on" after "filetype on". (Adam Stankiewicz,
            closes #7049)
2020-09-30 22:45:39 +02:00
8ec92c9779 patch 8.2.1775: MS-Windows: adding a long quickfix list is slow
Problem:    MS-Windows: adding a long quickfix list is slow.
Solution:   Shorten the buffer name only for the first entry. (Yegappan
            Lakshmanan, closes #7039, closes #7033)
2020-09-29 22:47:03 +02:00
32fbc4f247 patch 8.2.1774: GTK: hang when forced to exit
Problem:    GTK: hang when forced to exit.
Solution:   Do not clean up "mainwin" when really_exiting is set.
            (Zdenek Dohnal, closes #7042)
2020-09-29 22:16:09 +02:00
1b9129809d patch 8.2.1773: crash when calling mapset() with a list as first argument
Problem:    Crash when calling mapset() with a list as first argument.
Solution:   Check for NULL. (closes #7040)
2020-09-29 21:45:41 +02:00
f43e7ac4ee patch 8.2.1772: cannot use CTRL-W <Down> to move out of a terminal window
Problem:    Cannot use CTRL-W <Down> to move out of a terminal window.
Solution:   Use special_to_buf() instead of mb_char2bytes(). (closes #7045)
2020-09-29 21:23:25 +02:00
391c362794 patch 8.2.1771: synIDattr() cannot get the value of ctermul
Problem:    synIDattr() cannot get the value of ctermul.
Solution:   Add the "ul" value for "what". (closes #7037)
2020-09-29 20:59:17 +02:00
d569a9e746 patch 8.2.1770: invalid memory use when using SpellFileMissing autocmd
Problem:    Invalid memory use when using SpellFileMissing autocmd.
Solution:   Add test case. (Dominique Pellé, closes #7036)  Fix using a window
            that was closed.
2020-09-28 23:13:15 +02:00
4934ad0e44 patch 8.2.1769: popup filter interferes with using :normal to move the cursor
Problem:    A popup filter interferes with using :normal to move the cursor in
            a popup.
Solution:   Do not invoke the filter when ex_normal_busy is set.
2020-09-28 22:29:58 +02:00
d58a3bf7da Update runtime files. 2020-09-28 21:48:16 +02:00
b45cd36bd9 patch 8.2.1768: cannot use the help menu from a terminal window
Problem:    Cannot use the help menu from a terminal window.
Solution:   Add ":tlnoremenu" commands. (Yee Cheng Chin, closes #7023)
2020-09-28 21:41:49 +02:00
727345ebea patch 8.2.1767: Vim9: test fails with python support
Problem:    Vim9: test fails with python support.
Solution:   Use "let" in legacy function.
2020-09-27 23:33:59 +02:00
7a9cbca00a patch 8.2.1766: Vim9: Some tests are still using :let
Problem:    Vim9: Some tests are still using :let.
Solution:   Change the last few declarations to use :var.
2020-09-27 22:47:05 +02:00
9830938e77 patch 8.2.1765: Vim9: some tests use "var var"
Problem:    Vim9: some tests use "var var".
Solution:   Use "var name". (closes #7032)
2020-09-27 21:58:45 +02:00
06f9c6940a patch 8.2.1764: Vim9: no error when assigning to script var with wrong type
Problem:    Vim9: no error when assigning to script var with wrong type.
Solution:   Fix off-by-one error. (closes #7028)
2020-09-27 21:27:40 +02:00
6c542f77eb patch 8.2.1763: Vim9: cannot use "true" for popup window scrollbar option
Problem:    Vim9: cannot use "true" for popup window scrollbar option.
Solution:   use dict_get_bool(). (closes #7029)
2020-09-27 21:16:45 +02:00
d0e1b7103c patch 8.2.1762: when a timer uses :stopinsert completion isn't stopped
Problem:    When a timer uses :stopinsert Insert mode completion isn't
            stopped. (Stanley Chan)
Solution:   Call ins_compl_prep(ESC).
2020-09-27 20:13:03 +02:00
ac564082f1 patch 8.2.1761: Vim9: Some tests are still using :let
Problem:    Vim9: Some tests are still using :let.
Solution:   Change more declarations to use :var.
2020-09-27 19:05:33 +02:00
2914a20abc patch 8.2.1760: Vim9: crash when end marker is missing
Problem:    Vim9: crash when end marker is missing. (Dhiraj Mishra)
Solution:   Check for end of function lines. (closes #7031)
2020-09-27 18:24:03 +02:00
37ce6d3a6a patch 8.2.1759: Vim9: Some tests are still using :let
Problem:    Vim9: Some tests are still using :let.
Solution:   Change more declarations to use :var.
2020-09-27 17:57:43 +02:00
5597ba0467 patch 8.2.1758: Vim9: type of unmaterialized list is wrong
Problem:    Vim9: type of unmaterialized list is wrong.
Solution:   Use list<number>.
2020-09-27 17:45:03 +02:00
a5fe91e6dc patch 8.2.1757: Mac: default locale is lacking the encoding
Problem:    Mac: default locale is lacking the encoding.
Solution:   Add ".UTF-8 to the locale. (Yee Cheng Chin, closes #7022)
2020-09-27 16:03:15 +02:00
cfcd011fcd patch 8.2.1756: Vim9: :let will soon be disallowed
Problem:    Vim9: :let will soon be disallowed.
Solution:   Add v:disallow_let temporarily.  Fix tests.
2020-09-27 15:19:27 +02:00
c0e29010f6 patch 8.2.1755: Vim9: crash when using invalid heredoc marker
Problem:    Vim9: crash when using invalid heredoc marker. (Dhiraj Mishra)
Solution:   Check for NULL list. (closes #7027)  Fix comment character.
2020-09-27 14:22:48 +02:00
8c7ad3631a patch 8.2.1754: completion with spell checking not tested
Problem:    Completion with spell checking not tested.
Solution:   Add a test case. (Dominique Pellé, closes #7024)
2020-09-27 13:58:38 +02:00
f6a44f714a patch 8.2.1753: Vim9: crash when using import at script level
Problem:    Vim9: crash when using import at script level.
Solution:   Give a "not implemented yet" error. (closes #7026)
2020-09-27 13:51:14 +02:00
daff0fb738 patch 8.2.1752: GTK GUI: cannot map alt-? with <A-?>
Problem:    GTK GUI: cannot map alt-? with <A-?>. (Ingo Karkat)
Solution:   Adjust the characters for which the shift modifier is removed.
            (closes #7016)  Make Motif and Win32 use the same function as GTK.
2020-09-27 13:16:46 +02:00
bade44e5ca patch 8.2.1751: using 2 where bool is expected may throw an error
Problem:    Using 2 where bool is expected may throw an error.
Solution:   Make this backwards compatible.
2020-09-26 22:39:24 +02:00
3697c9bbae patch 8.2.1750: popup_setoptions() setting firstline fails if cursorline set
Problem:    Setting firstline with popup_setoptions() fails if cursorline is
            set.
Solution:   Use apply_options(). Update the popup before applying "zz".
            (closes #7010)
2020-09-26 22:03:00 +02:00
c70bdab0b8 patch 8.2.1749: Vim9: crash when closure fails in nested function
Problem:    Vim9: crash when closure fails in nested function.
Solution:   Handle function returns before dereferencing remaining closures.
            (closes #7008)
2020-09-26 19:59:38 +02:00
f3c51bbff1 patch 8.2.1748: closing split window in other tab may cause a crash
Problem:    Closing split window in other tab may cause a crash.
Solution:   Set tp_curwin properly. (Rob Pilling, closes #7018)
2020-09-26 19:11:39 +02:00
8f187fc630 patch 8.2.1747: result of expand() unexpectedly depends on 'completeslash'
Problem:    Result of expand() unexpectedly depends on 'completeslash'.
Solution:   Temporarily reset 'completeslash'. (Yasuhiro Matsumoto,
            closes #7021)
2020-09-26 18:47:11 +02:00
373863ed48 patch 8.2.1746: Vim9: cannot use "fina" for "finally"
Problem:    Vim9: Cannot use "fina" for "finally". (Naruhiko Nishino)
Solution:   Specifically check for "fina". (closes #7020)
2020-09-26 17:20:53 +02:00
d47f50b331 patch 8.2.1745: tiny version doesn't build
Problem:    Tiny version doesn't build.
Solution:   Add dummy ex_var() function.
2020-09-26 15:20:42 +02:00
30fd8204ce patch 8.2.1744: Vim9: using ":const!" is weird
Problem:    Vim9: using ":const!" is weird.
Solution:   Use "var" - "final" - "const" like Dart.  "let" still works for
            now.
2020-09-26 15:09:30 +02:00
273af497ca patch 8.2.1743: cannot build without the eval feature
Problem:    Cannot build without the eval feature.
Solution:   Move shorten_dir outside of #ifdef.
2020-09-25 23:49:01 +02:00
7e9210ea53 patch 8.2.1742: test still fails without the terminal feature
Problem:    Test still fails without the terminal feature.
Solution:   Put check for terminal feature in separate function.
2020-09-25 23:12:51 +02:00
6a33ef0deb patch 8.2.1741: pathshorten() only supports using one character
Problem:    pathshorten() only supports using one character.
Solution:   Add an argument to control the length. (closes #7006)
2020-09-25 22:42:48 +02:00
58dbef330c patch 8.2.1740: test fails without the terminal feature
Problem:    Test fails without the terminal feature.
Solution:   Skip test if the terminal feature is not available.
2020-09-25 22:13:05 +02:00
9c4f55204f patch 8.2.1739: Vim9: crash when compiling a manually defined function
Problem:    Vim9: crash when compiling a manually defined function. (Antony
            Scriven)
Solution:   Check that the script ID is positive. (closes #7012)
2020-09-25 21:47:28 +02:00
509f8031b2 patch 8.2.1738: Mac: str2float() recognizes comma instead of decimal point
Problem:    Mac: str2float() recognizes comma instead of decimal point.
Solution:   Set LC_NUMERIC to "C". (closes #7003)
2020-09-24 23:08:19 +02:00
10476521f5 patch 8.2.1737: cursor line highlight in popup window is not always updated
Problem:    Cursor line highlight in popup window is not always updated.
Solution:   Check if the cursor has moved. (closes #7010)
2020-09-24 22:57:31 +02:00
531be47ac5 patch 8.2.1736: failure to compile a pattern not tested much
Problem:    Failure to compile a pattern not tested much.
Solution:   Add tests where a pattern fails to compile. (Yegappan Lakshmanan,
            closes #7004)
2020-09-23 22:38:05 +02:00
851d108313 patch 8.2.1735: Github actions appear to timeout too soon
Problem:    Github actions appear to timeout too soon.
Solution:   use "timeout" instead of "ping".
2020-09-23 22:27:22 +02:00
148ce7ae62 patch 8.2.1734: Vim9: cannot use a funcref for a closure twice
Problem:    Vim9: cannot use a funcref for a closure twice.
Solution:   Instead of putting the funcref on the stack use a growarray on the
            execution context.
2020-09-23 21:57:23 +02:00
4ee711f213 patch 8.2.1733: Vim9: memory leaks when using nested function
Problem:    Vim9: memory leaks when using nested function.
Solution:   Free function when compilation fails.
2020-09-23 18:51:11 +02:00
6bf1b52ba2 patch 8.2.1732: stuck when win_execute() for a popup causes an error
Problem:    Stuck when win_execute() for a popup causes an error.
Solution:   Disable the filter callback on error. (issue #6999)
2020-09-23 17:41:26 +02:00
81ed496048 patch 8.2.1731: Vim9: cannot use += to append to empty NULL list
Problem:    Vim9: cannot use += to append to empty NULL list.
Solution:   Copy the list instead of extending it. (closes #6998)
2020-09-23 15:56:50 +02:00
04bdd573d0 patch 8.2.1730: Vim9: cannot use member of unknown type
Problem:    Vim9: cannot use member of unknown type.
Solution:   When type is unknown us "any". (closes #6997)
2020-09-23 13:25:32 +02:00
189832bf66 patch 8.2.1729: endless loop when ":normal" feeds popup window filter
Problem:    Endless loop when ":normal" feeds popup window filter.
Solution:   Add the ex_normal_busy_done flag.
2020-09-23 12:29:11 +02:00
c53e9c57a9 patch 8.2.1728: compiler warning for using uninitialized variable
Problem:    Compiler warning for using uninitialized variable. (John Marriott)
Solution:   Initialize "neighbor".
2020-09-22 22:08:32 +02:00
99ca9c4868 patch 8.2.1727: a popup created with "cursorline" will ignore "firstline"
Problem:    A popup created with "cursorline" will ignore "firstline".
Solution:   When both "cursorline" and "firstline" are present put the cursor
            on "firstline". (closes #7000)  Add the "winid" argument to
            getcurpos().
2020-09-22 21:55:41 +02:00
4f73b8e9cc patch 8.2.1726: fuzzy matching only works on strings
Problem:    Fuzzy matching only works on strings.
Solution:   Support passing a dict.  Add matchfuzzypos() to also get the match
            positions. (Yegappan Lakshmanan, closes #6947)
2020-09-22 20:33:50 +02:00
44aaf5416e patch 8.2.1725: not all Pascal files are recognized
Problem:    Not all Pascal files are recognized.
Solution:   Add filetype patterns. (Doug Kearns)
2020-09-22 19:15:31 +02:00
971caf53b8 patch 8.2.1724: Vim9: assignment tests spread out
Problem:    Vim9: assignment tests spread out.
Solution:   Create new test file for assignment tests.
2020-09-21 22:21:42 +02:00
280227270c patch 8.2.1723: Vim9: Variable argument name cannot start with underscore
Problem:    Vim9: Variable argument name cannot start with underscore.
Solution:   Use eval_isnamec1(). (closes #6988)
2020-09-21 22:02:49 +02:00
dbd759309b patch 8.2.1722: Vim9: cannot assign a lambda to a variable of type function
Problem:    Vim9: cannot assign a lambda to a variable of type function.
Solution:   Allow for assigning a partial to a variable of type function.
            (Naruhiko Nishino, closes #6996)
2020-09-21 21:48:21 +02:00
7f9c9c51a3 patch 8.2.1721: MS-Windows installer doesn't work
Problem:    MS-Windows installer doesn't work.
Solution:   Write "Russian" in ASCII. (closes #6995, see #).
2020-09-21 21:29:57 +02:00
078269bdce patch 8.2.1720: Vim9: memory leak with heredoc that isn't executed
Problem:    Vim9: memory leak with heredoc that isn't executed. (Dominique
            Pellé)
Solution:   Don't clear the list items. (closes #6991)
2020-09-21 20:35:55 +02:00
10e4f12bf4 patch 8.2.1719: Vim9: no error if comma is missing in between arguments
Problem:    Vim9: no error if comma is missing in between arguments.
Solution:   Give an error message.
2020-09-20 22:43:52 +02:00
b816dae16d patch 8.2.1718: Vim9: :def function disallows "firstline" for no good reason
Problem:    Vim9: :def function disallows "firstline" and "lastline" argument
            names for no good reason.
Solution:   Don't check the arguments for a :def function. (closes #6986)
2020-09-20 22:04:00 +02:00
809fcecddc patch 8.2.1717
Problem:    MS-Windows installer doesn't have Russian translations.
Solution:   Add Russian translations. (closes #6985)
2020-09-20 21:43:03 +02:00
b5cfff0b34 patch 8.2.1716: options window has duplicate translations
Problem:    Options window has duplicate translations.
Solution:   Make one entry for "global or local to buffer".  Fix wrong text.
            (closes #6983)
2020-09-20 21:32:03 +02:00
26cd3063b2 patch 8.2.1715: Motif GUI: commented out code missed {}
Problem:    Motif GUI: commented out code missed {}.
Solution:   Add {} and reenable the code. (similar to #6989)
2020-09-20 21:13:27 +02:00
8902b31f1b patch 8.2.1714: text properties corrupted with substitute command
Problem:    Text properties corrupted with substitute command. (Filipe
            Brandenburger)
Solution:   Get the changed line again after using u_savesub(). (closes #6984)
2020-09-20 21:04:35 +02:00
7795bfea6d patch 8.2.1713: Motif GUI: crash when setting menu colors
Problem:    Motif GUI: crash when setting menu colors. (Andrzej Bylicki)
Solution:   Add {} to make "n" incremented correctly. (closes #6989,
            closes #5948)
2020-09-20 19:57:15 +02:00
1d59aa1fdf Update runtime files. 2020-09-19 18:50:13 +02:00
a05e524f3a patch 8.2.1712: Vim9: leaking memory when calling a lambda
Problem:    Vim9: leaking memory when calling a lambda.
Solution:   Decrement function reference from ISN_DCALL.
2020-09-19 18:19:19 +02:00
fdeab65db6 patch 8.2.1711: Vim9: leaking memory when using partial
Problem:    Vim9: leaking memory when using partial.
Solution:   Do delete the function even when it was compiled.
2020-09-19 15:16:50 +02:00
77b20977dc patch 8.2.1710: Vim9: list of list type can be wrong
Problem:    Vim9: list of list type can be wrong.
Solution:   Use VAR_UNKNOWN for empty list.  Recognize VAR_UNKNOWN when
            looking for a common type. (closes #6979)
2020-09-19 14:12:34 +02:00
dec07510bb patch 8.2.1709: Vim9: memory leak when using multiple closures
Problem:    Vim9: memory leak when using multiple closures.
Solution:   Free the partial.
2020-09-18 23:11:10 +02:00
b185a40745 patch 8.2.1708: Vim9: error message for function has unpritable characters
Problem:    Vim9: error message for function has unpritable characters.
Solution:   use printable_func_name(). (closes #6965)
2020-09-18 22:42:00 +02:00
2bbada8116 patch 8.2.1707: small inconsitency in highlight test
Problem:    Small inconsitency in highlight test.
Solution:   Use one argument for :execute. (Antony Scriven, #6975)
2020-09-18 21:55:26 +02:00
7cbfaa51de patch 8.2.1706: Vim9: crash after running into the "Multiple closures" error
Problem:    Vim9: crash after running into the "Multiple closures" error.
Solution:   When a function fails still update any closures. (closes #6973)
2020-09-18 21:25:32 +02:00
e8df010498 patch 8.2.1705: "verbose hi Name" reports incorrect info after ":hi clear"
Problem:    "verbose hi Name" reports incorrect info after ":hi clear".
Solution:   Store the script context. (Antony Scriven, closes #6975)
2020-09-18 19:40:45 +02:00
77e5dcc36a patch 8.2.1704: Vim9: crash in for loop when autoload script has an error
Problem:    Vim9: crash in for loop when autoload script has an error.
Solution:   Reset suppress_errthrow.  Check for NULL list. (closes #6967)
2020-09-17 21:29:03 +02:00
213da551de patch 8.2.1703: ":highlight clear" does not restore default link
Problem:    ":highlight clear" does not restore default link.
Solution:   Remember the default link and restore it. (Antony Scriven,
            closes #6970, closes #4405)
2020-09-17 19:59:26 +02:00
da697645d5 patch 8.2.1702: crash when using undo after deleting folded lines
Problem:    Crash when using undo after deleting folded lines.
Solution:   Check for NULL pointer. (closes #6968)
2020-09-17 19:36:04 +02:00
08e51f446b patch 8.2.1701: Vim9: sort("i") does not work
Problem:    Vim9: sort("i") does not work.
Solution:   Don't try getting a number for a string argument. (closes #6958)
2020-09-16 23:23:36 +02:00
9939f57b7f patch 8.2.1700: Vim9: try/catch causes wrong value to be returned
Problem:    Vim9: try/catch causes wrong value to be returned.
Solution:   Reset tcd_return. (closes #6964)
2020-09-16 22:29:52 +02:00
916911f598 patch 8.2.1699: build failure due to missing error message
Problem:    Build failure due to missing error message.
Solution:   Add error message.
2020-09-16 21:41:53 +02:00
a187c43cfe patch 8.2.1698: cannot lock a variable in legacy Vim script like in Vim9
Problem:    Cannot lock a variable in legacy Vim script like in Vim9.
Solution:   Make ":lockvar 0" work.
2020-09-16 21:08:28 +02:00
7707228aac patch 8.2.1697: inconsistent capitalization of error messages
Problem:    Inconsistent capitalization of error messages.
Solution:   Always start with a capital.
2020-09-16 17:55:40 +02:00
2c12f89055 patch 8.2.1696: unused (duplicate) macros
Problem:    Unused (duplicate) macros.
Solution:   Remove the macros.
2020-09-16 17:30:27 +02:00
2f8cbc4b22 patch 8.2.1695: Vim9: crash when using varargs type "any"
Problem:    Vim9: crash when using varargs type "any".
Solution:   Check if uf_va_type is &t_any. (closes #6957)
2020-09-16 17:22:59 +02:00
573545a55a patch 8.2.1694: compiler warning for loss if data
Problem:    Compiler warning for loss if data.
Solution:   Add typecast.
2020-09-16 15:46:08 +02:00
05eb5b9cae patch 8.2.1693: "hi def" does not work for cleared highlight
Problem:    "hi def" does not work for cleared highlight.
Solution:   Check the "sg_cleared" flag. (Maxim Kim, closes #6956,
            closes #4405)
2020-09-16 15:43:21 +02:00
fb489af2ec patch 8.2.1692: build fails because TTFLAG_STATIC is missing
Problem:    Build fails because TTFLAG_STATIC is missing.
Solution:   Include missing change.
2020-09-16 15:41:09 +02:00
5e65423077 patch 8.2.1691: Vim9: list<any> is not accepted where list<number> is expected
Problem:    Vim9: list<any> is not accepted where list<number> is expected.
Solution:   Add functions to allocate and free a type_T, use it in
            ISN_CHECKTYPE. (closes #6959)
2020-09-16 15:22:00 +02:00
8b51b7f0f1 patch 8.2.1690: text properties not adjusted for "I" in Visual block mode
Problem:    Text properties not adjusted for "I" in Visual block mode.
Solution:   Call inserted_bytes().
2020-09-15 21:34:18 +02:00
ad5e5631c5 patch 8.2.1689: 'colorcolumn' doesn't show in indent
Problem:    'colorcolumn' doesn't show in indent.
Solution:   Also draw the column when draw_state is WL_BRI or WL_SBR.
            (Alexey Demin, closes #6948, closes #6619)
2020-09-15 20:52:26 +02:00
c8f12c9856 patch 8.2.1688: increment/decrement removes text property
Problem:    Increment/decrement removes text property.
Solution:   Insert the new number before deleting the old one. (closes #6962)
2020-09-15 20:34:10 +02:00
9b123d8590 patch 8.2.1687: Vim9: out of bounds error
Problem:    Vim9: out of bounds error.
Solution:   Check that cmdidx is not negative.
2020-09-14 22:39:11 +02:00
71abe48289 patch 8.2.1686: Vim9: "const!" not sufficiently tested
Problem:    Vim9: "const!" not sufficiently tested.
Solution:   Add a few more test cases.  Fix type checking.
2020-09-14 22:28:30 +02:00
0b4c66c67a patch 8.2.1685: Vim9: cannot declare a constant value
Problem:    Vim9: cannot declare a constant value.
Solution:   Introduce ":const!".
2020-09-14 21:39:44 +02:00
efd5d8a967 patch 8.2.1684: "gF" does not use line number after file in Visual mode
Problem:    "gF" does not use line number after file in Visual mode.
Solution:   Look for ":123" after the Visual area. (closes #6952)
2020-09-14 19:11:45 +02:00
2b22b113c6 patch 8.2.1683: Vim9: assignment test fails
Problem:    Vim9: assignment test fails.
Solution:   Include changes to find Ex command.
2020-09-14 18:35:18 +02:00
dbeecb2b6b patch 8.2.1682: Vim9: const works in an unexpected way
Problem:    Vim9: const works in an unexpected way.
Solution:   ":const" only disallows changing the variable, not the value.
            Make "list[0] = 9" work at the script level.
2020-09-14 18:15:09 +02:00
08052228a7 patch 8.2.1681: Vim9: unnessary :call commands in tests
Problem:    Vim9: unnessary :call commands in tests.
Solution:   Remove the commands. (issue #6936)
2020-09-14 17:04:31 +02:00
eb26f4331f patch 8.2.1680: Vim9: line number for compare error is wrong
Problem:    Vim9: line number for compare error is wrong.
Solution:   Set SOURCING_LNUM. (closes #6936)
2020-09-14 16:50:05 +02:00
3bd8de40b4 patch 8.2.1679: Vim9: ":*" is not recognized as a range
Problem:    Vim9: ":*" is not recognized as a range.
Solution:   Move recognizing "*" into skip_range(). (closes #6838)
2020-09-14 16:37:34 +02:00
d1f76afaf9 patch 8.2.1678: crash when using ":set" after ":ownsyntax"
Problem:    Crash when using ":set" after ":ownsyntax".
Solution:   Make sure 'spelloptions' is not NULL. (closes #6950)
2020-09-13 22:37:34 +02:00
4d170af0a9 patch 8.2.1677: memory access errors when calling setloclist() in autocommand
Problem:    Memory access errors when calling setloclist() in an autocommand.
Solution:   Give an error if the list was changed unexpectedly. (closes #6946)
2020-09-13 22:21:22 +02:00
a4224860a4 patch 8.2.1676: compiler warnings for function typecast
Problem:    Compiler warnings for function typecast.
Solution:   Add an intermediate cast to "void *".
2020-09-13 22:00:12 +02:00
05c1acd5e1 patch 8.2.1675: MinGW: testdir makefile deletes non-existing file
Problem:    MinGW: testdir makefile deletes non-existing file.
Solution:   Use another way to delete the output file if it already exists.
            (Michael Soyka)
2020-09-13 21:01:22 +02:00
f0afd9e182 patch 8.2.1674: Vim9: internal error when using variable that was not set
Problem:    Vim9: internal error when using variable that was not set.
Solution:   Give a meaningful error. (closes #6937)
2020-09-13 18:57:47 +02:00
b806aa5bd9 patch 8.2.1673: complete_info() selected index has an invalid value
Problem:    complete_info() selected index has an invalid value. (Ben Jackson)
Solution:   Set the index when there is only one match. (closes #6945)
            Add test for complete_info().
2020-09-12 22:52:57 +02:00
4a091b9978 patch 8.2.1672: v_lock is used when it is not initialized
Problem:    v_lock is used when it is not initialized. (Yegappan Lakshmanan)
Solution:   Initialize the typval in eval1().
2020-09-12 22:10:00 +02:00
c6e57b74fa patch 8.2.1671: Vim9: stray error for missing white space
Problem:    Vim9: stray error for missing white space.
Solution:   Do not skip over white space after member. (closes #6817)
2020-09-12 21:27:03 +02:00
8f13d82fa6 patch 8.2.1670: a couple of gcc compiler warnings
Problem:    A couple of gcc compiler warnings.
Solution:   Initialize local variables. (Dominique Pellé, closes #6944)
2020-09-12 21:04:23 +02:00
b0fa5e17c5 patch 8.2.1669: Vim9: memory leak when storing a value fails
Problem:    Vim9: memory leak when storing a value fails.
Solution:   Free the value when not storing it.
2020-09-12 19:51:42 +02:00
dadaddd59f patch 8.2.1668: Vim9: not accepting 0 or 1 as bool when type is any
Problem:    Vim9: not accepting 0 or 1 as bool when type is any.
Solution:   Convert the type with the CHECKTYPE instruction. (closes #6913)
2020-09-12 19:11:23 +02:00
0f769815c8 patch 8.2.1667: local function name cannot shadow a global function name
Problem:    Local function name cannot shadow a global function name.
Solution:   Ignore global functions when checking a script-local or scoped
            function name. (closes #6926)
2020-09-12 18:32:34 +02:00
b00ef0508b patch 8.2.1666: the initial value of 'backupskip' can have duplicate items
Problem:    The initial value of 'backupskip' can have duplicate items.
Solution:   Remove duplicates, like when it is set later. (Tom Ryder,
            closes #6940)
2020-09-12 14:53:53 +02:00
635414dd2f patch 8.2.1665: cannot do fuzzy string matching
Problem:    Cannot do fuzzy string matching.
Solution:   Add matchfuzzy(). (Yegappan Lakshmanan, closes #6932)
2020-09-11 22:25:15 +02:00
c2c8205634 patch 8.2.1664: memory leak when using :mkview with a terminal buffer
Problem:    Memory leak when using :mkview with a terminal buffer.
Solution:   Don't use a hastab for :mkview. (Rob Pilling, closes #6935)
2020-09-11 22:10:22 +02:00
14944c04bd patch 8.2.1663: options window entries cannot be translated
Problem:    Options window entries cannot be translated.
Solution:   Use AddOption() for all explanations. (closes #6800)
2020-09-11 20:51:26 +02:00
0e655111e9 patch 8.2.1662: :mksession does not restore shared terminal buffer properly
Problem:    :mksession does not restore shared terminal buffer properly.
Solution:   Keep a hashtab with terminal buffers. (Rob Pilling, closes #6930)
2020-09-11 20:36:36 +02:00
c6a67c92bc patch 8.2.1661: cannot connect to 127.0.0.1 for host with only IPv6 addresses
Problem:    Cannot connect to 127.0.0.1 for host with only IPv6 addresses.
Solution:   pass AI_V4MAPPED flag to getaddrinfo. (Filipe Brandenburger,
            closes #6931)
2020-09-11 19:28:19 +02:00
c0c71e9d98 patch 8.2.1660: assert functions require passing expected as first argument
Problem:    Assert functions require passing expected result as the first
            argument, which isn't obvious.
Solution:   Use a method, as in "runtest()->assert_equal(expected)".
2020-09-11 19:09:48 +02:00
96fdf4348a patch 8.2.1659: spellfile code not completely tested
Problem:    Spellfile code not completely tested.
Solution:   Add a few more test cases. (Yegappan Lakshmanan, closes #6929)
2020-09-11 18:11:50 +02:00
a810db3f17 patch 8.2.1658: expand('<stack>') has trailing ".."
Problem:    Expand('<stack>') has trailing "..".
Solution:   Remove the "..". (closes #6927)
2020-09-11 17:59:23 +02:00
8b848cafb0 patch 8.2.1657: Vim9: no proper error for nested ":def!"
Problem:    Vim9: no proper error for nested ":def!".
Solution:   Check for "!". (closes #6920)
2020-09-10 22:28:01 +02:00
dfa3d5524e patch 8.2.1656: Vim9: callstack wrong if :def function calls :def function
Problem:    Vim9: callstack wrong if :def function calls :def function.
Solution:   Set the line number before calling. (closes #6914)
2020-09-10 22:05:08 +02:00
895a7a472d patch 8.2.1655: cannot build with Strawberry Perl 5.32.0
Problem:    Cannot build with Strawberry Perl 5.32.0.
Solution:   Use Perl_sv_2pvbyte_flags. (closes #6921)
2020-09-10 21:36:11 +02:00
ad9ec5e799 patch 8.2.1654: when job writes to hidden buffer current window is wrong
Problem:    When job writes to hidden buffer current window has display
            errors.  (Johnny McArthur)
Solution:   Use aucmd_prepbuf() instead of switch_to_win_for_buf().
            (closes #6925)
2020-09-10 21:25:45 +02:00
4f25b1aba0 patch 8.2.1653: expand('<stack>') does not include the final line number
Problem:    Expand('<stack>') does not include the final line number.
Solution:   Add the line nuber. (closes #6927)
2020-09-10 19:25:05 +02:00
a953b5cf4f patch 8.2.1652: cannot translate lines in the options window
Problem:    Cannot translate lines in the options window.
Solution:   Use the AddOption() function to split descriptions where indicated
            by a line break. (issue #6800)
2020-09-10 14:25:25 +02:00
64e2db6dc6 patch 8.2.1651: spellfile code not completely tested
Problem:    Spellfile code not completely tested.
Solution:   Add a few more test cases. (Yegappan Lakshmanan, closes #6918)
2020-09-09 22:43:19 +02:00
c1ec0422e4 patch 8.2.1650: Vim9: result of && and || expression is not bool in script
Problem:    Vim9: result of && and || expression cannot be assigned to a bool
            at the script level.
Solution:   Add the VAR_BOOL_OK flag.  Convert to bool when needed.
2020-09-09 22:27:58 +02:00
3e4cc9671c patch 8.2.1649: GTK3: using old file chooser
Problem:    GTK3: using old file chooser.
Solution:   Use native file chooser on GTK 3.20 and above. (Yogeshwar
            Velingker, closes #6909)
2020-09-09 20:58:55 +02:00
a62372be1f patch 8.2.1648: Amiga: no common build file for Amiga (-like) systems
Problem:    Amiga: no common build file for Amiga (-like) systems.
Solution:   Turn Make_morph.mak into Make_ami.mak. (Ola Söder, closes #6805)
2020-09-09 20:41:40 +02:00
4ed124cc6c patch 8.2.1647: Vim9: result of expression with && and || is not a bool
Problem:    Vim9: result of expression with && and || cannot be assigned to a
            bool variable.
Solution:   Add the TTFLAG_BOOL_OK flag and convert the value if needed.
2020-09-09 20:03:46 +02:00
33e3346322 patch 8.2.1646: Amiga: Unnecessary #include
Problem:    Amiga: Unnecessary #include.
Solution:   Remove the #include. (Ola Söder, closes #6908)
2020-09-09 19:25:09 +02:00
81a4cf469a patch 8.2.1645: GTK3: icons become broken images when resized
Problem:    GTK3: icons become broken images when resized.
Solution:   Use gtk_image_new_from_icon_name(). (closes #6916)
            Fix compiler warnings.
2020-09-09 19:05:13 +02:00
ba7c0d7b4c patch 8.2.1644: Vim9: cannot assign 1 and 0 to bool at script level
Problem:    Vim9: cannot assign 1 and 0 to bool at script level.
Solution:   Add the TTFLAG_BOOL_OK flag to the type. Fix name of test
            function.
2020-09-09 18:54:42 +02:00
96f8f499ce patch 8.2.1643: Vim9: :defcompile compiles dead functions
Problem:    Vim9: :defcompile compiles dead functions.
Solution:   Skip over dead functions.
2020-09-09 17:08:51 +02:00
4507f6ada5 patch 8.2.1642: otions test fails
Problem:    Otions test fails.
Solution:   Correct call to OptionG().
2020-09-09 15:10:52 +02:00
29a86ffee7 patch 8.2.1641: Vim9: cannot use 0 or 1 where a bool is expected
Problem:    Vim9: cannot use 0 or 1 where a bool is expected.
Solution:   Allow using 0 and 1 for a bool type. (closes #6903)
2020-09-09 14:55:31 +02:00
f842cd9e28 patch 8.2.1640: Amiga: missing header for getgrgid()
Problem:    Amiga: missing header for getgrgid().
Solution:   Add the grp.h header. (Ola Söder, closes #6906)
2020-09-09 13:01:27 +02:00
64075b0ab1 patch 8.2.1639: options window cannot be translated
Problem:    Options window cannot be translated.
Solution:   Get the translation for "local to" texts once and use them in many
            places. Fix that 'whichwrap' is not a local option. (issue #6800)
2020-09-09 12:56:30 +02:00
8e9be208ea patch 8.2.1638: leaking memory when popup filter function can't be called
Problem:    Leaking memory when popup filter function can't be called.
Solution:   Don't return too soon.
2020-09-08 22:55:26 +02:00
c3516f7e45 patch 8.2.1637: Vim9: :put ={expr} does not work inside :def function
Problem:    Vim9: :put ={expr} does not work inside :def function.
Solution:   Add ISN_PUT. (closes #6397)
2020-09-08 22:45:35 +02:00
6defa7bf0a patch 8.2.1636: get stuck if a popup filter causes an error
Problem:    Get stuck if a popup filter causes an error.
Solution:   Check whether the function can be called and does not cause an
            error.  (closes #6902)
2020-09-08 22:06:44 +02:00
57ad94c5a9 patch 8.2.1635: no digraph for 0x2022 BULLET
Problem:    No digraph for 0x2022 BULLET.
Solution:   Use "oo". (Hans Ginzel, closes #6904)
2020-09-08 19:06:30 +02:00
1c6737b20a Update runtime files. 2020-09-07 22:18:52 +02:00
9c929713b7 patch 8.2.1634: loop to handle keys for the command line is too long
Problem:    Loop to handle keys for the command line is too long.
Solution:   Move a few more parts to separate functions. (Yegappan Lakshmanan,
            closes #6895)
2020-09-07 22:05:28 +02:00
e83cca2911 patch 8.2.1633: some error messages are internal but do not use iemsg()
Problem:    Some error messages are internal but do not use iemsg().
Solution:   Use iemsg(). (Dominique Pellé, closes #6894)
2020-09-07 18:53:21 +02:00
44d6652d56 patch 8.2.1632: not checking the context of test_fails()
Problem:    Not checking the context of test_fails().
Solution:   Add the line number and context arguments.  Give error if
            assert_fails() argument types are wrong.
2020-09-06 22:26:57 +02:00
9bd5d879c2 patch 8.2.1631: test_fails() does not check the context of the line number
Problem:    test_fails() does not check the context of the line number.
Solution:   Use another argument to specify the context of the line number.
2020-09-06 21:47:48 +02:00
c98cdb3bc9 patch 8.2.1630: terminal test fails
Problem:    Terminal test fails.
Solution:   Correct argument to term_start().  Correct error number.
2020-09-06 21:13:00 +02:00
63969ef07e patch 8.2.1629: test fails without terminal feature
Problem:    Test fails without terminal feature.
Solution:   Check for terminal feature.
2020-09-06 20:06:59 +02:00
418155def2 patch 8.2.1628: Vim9: cannot pass "true" to timer_paused()
Problem:    Vim9: cannot pass "true" to timer_paused().
Solution:   Use tv_get_bool(). (closes #6891)
2020-09-06 18:39:38 +02:00
ad30470610 patch 8.2.1627: Vim9: cannot pass "true" to submatch/term_gettty/term_start
Problem:    Vim9: cannot pass "true" to submatch(), term_gettty() and
            term_start()
Solution:   Use tv_get_bool_chk(). (closes #6888, closes #6890, closes #6889)
2020-09-06 18:22:53 +02:00
707be5f352 patch 8.2.1626: test for strchars() fails with different error number
Problem:    Test for strchars() fails with different error number.
Solution:   Adjust the error number.
2020-09-06 17:13:44 +02:00
30d6413782 patch 8.2.1625: compiler warning for use of fptr_T
Problem:    Compiler warning for use of fptr_T.
Solution:   Make the type less strict.
2020-09-06 17:09:12 +02:00
3986b94b09 patch 8.2.1624: Vim9: cannot pass "true" to split(), str2nr() and strchars()
Problem:    Vim9: cannot pass "true" to split(), str2nr() and strchars().
Solution:   Use tv_get_bool_chk(). (closes #6884, closes #6885, closes #6886)
2020-09-06 16:09:04 +02:00
d2c617055a patch 8.2.1623: Vim9: using :call where it is not needed
Problem:    Vim9: using :call where it is not needed.
Solution:   Remove :call. (closes #6892)
2020-09-06 15:58:36 +02:00
2f3cd2e4ec patch 8.2.1622: loop to handle keys for the command line is too long
Problem:    Loop to handle keys for the command line is too long.
Solution:   Move code to functions. (Yegappan Lakshmanan, closes #6880)
2020-09-06 15:54:00 +02:00
8a0dcf4330 patch 8.2.1621: crash when using submatch(0, 1) in substitute()
Problem:    Crash when using submatch(0, 1) in substitute().
Solution:   Increment reference count. (closes #6887)
2020-09-06 15:14:45 +02:00
4140c4f3ff patch 8.2.1620: searchcount() test fails
Problem:    searchcount() test fails.
Solution:   Restore default flag value.
2020-09-05 23:16:00 +02:00
7c27f337bf patch 8.2.1619: Vim9: cannot pass "true" to spellsuggest()
Problem:    Vim9: cannot pass "true" to spellsuggest().
Solution:   Use tv_get_bool_chk(). (closes #6883)
2020-09-05 22:45:55 +02:00
401f0c0798 patch 8.2.1618: Vim9: cannot pass "true" to setloclist()
Problem:    Vim9: cannot pass "true" to setloclist().
Solution:   Use dict_get_bool(). (closes #6882)
2020-09-05 22:37:39 +02:00
4b9bd692bd patch 8.2.1617: Vim9: cannot pass "true" to win_splitmove()
Problem:    Vim9: cannot pass "true" to win_splitmove().
Solution:   Use dict_get_bool(). (closes #6862)  Alphabetize test functions.
2020-09-05 21:57:53 +02:00
fcb6d7082d patch 8.2.1616: Vim9: cannot pass "true" to synID()
Problem:    Vim9: cannot pass "true" to synID().
Solution:   Use tv_get_bool_chk(). (closes #6860)
2020-09-05 21:41:56 +02:00
30788d3d37 patch 8.2.1615: Vim9: cannot pass "true" to searchdecl()
Problem:    Vim9: cannot pass "true" to searchdecl().
Solution:   use tv_get_bool_chk(). (closes #6881)
2020-09-05 21:35:16 +02:00
597aaac9d2 patch 8.2.1614: Vim9: cannot pass "true" to searchcount()
Problem:    Vim9: cannot pass "true" to searchcount().
Solution:   Use tv_get_bool_chk(). (closes #6854)
2020-09-05 21:21:16 +02:00
fa2e38df76 patch 8.2.1613: Vim9: cannot pass "true" to prop_type_add()
Problem:    Vim9: cannot pass "true" to prop_type_add().
Solution:   Use tv_get_bool(). (closes #6850)
2020-09-05 21:00:00 +02:00
a5a40c5696 patch 8.2.1612: Vim9: cannot pass "true" to prop_remove()
Problem:    Vim9: cannot pass "true" to prop_remove().
Solution:   Use dict_get_bool(). (closes #6853)
2020-09-05 20:50:49 +02:00
ed6a430fae patch 8.2.1611: Vim9: cannot pass "true" to nr2char()
Problem:    Vim9: cannot pass "true" to nr2char().
Solution:   use tv_get_bool_chk(). (closes #6878)
2020-09-05 20:29:41 +02:00
a48f786787 patch 8.2.1610: Vim9: cannot pass "true" to list2str() and str2list()
Problem:    Vim9: cannot pass "true" to list2str() and str2list().
Solution:   Use tv_get_bool_chk(). (closes #6877)
2020-09-05 20:16:57 +02:00
7918238528 patch 8.2.1609: Vim9: test fails when build without +channel
Problem:    Vim9: test fails when build without +channel.
Solution:   Add check for +channel. (closes #6879)
2020-09-05 20:06:33 +02:00
15183b41c4 patch 8.2.1608: Vim9: getchar() test fails with GUI
Problem:    Vim9: getchar() test fails with GUI.
Solution:   Avoid that getchar(0) gets stuck on K_IGNORE.
2020-09-05 19:59:39 +02:00
636c5d5399 patch 8.2.1607: Vim9: getchar() test fails on MS-Windows
Problem:    Vim9: getchar() test fails on MS-Windows.
Solution:   First consume any available input.
2020-09-05 18:48:57 +02:00
04637e243d patch 8.2.1606: Vim9: cannot use "true" with has()
Problem:    Vim9: cannot use "true" with has().
Solution:   Use tv_get_bool(). (closes #6876)
2020-09-05 18:45:29 +02:00
b02628b8a2 patch 8.2.1605: default maintainer on github is wrong
Problem:    Defyyyyyyyyyyyyyyyyyyyyyyyub is wrong.
Solution:   Use Bram's account.
2020-09-05 18:40:44 +02:00
d217a87755 patch 8.2.1604: Vim9: cannot use "true" with getcompletion()
Problem:    Vim9: cannot use "true" with getcompletion().
Solution:   use tv_get_bool_chk(). (closes #6875)
2020-09-05 18:31:33 +02:00
c08cc72947 patch 8.2.1603: Vim9: cannot use "true" with getchar()
Problem:    Vim9: cannot use "true" with getchar().
Solution:   use tv_get_bool_chk(). (closes #6874)
2020-09-05 17:51:23 +02:00
036c2cf719 patch 8.2.1602: Vim9: cannot use 'true" with getbufinfo()
Problem:    Vim9: cannot use 'true" with getbufinfo().
Solution:   Use dict_get_bool(). (closes #6873)
2020-09-05 17:37:07 +02:00
2df4731042 patch 8.2.1601: Vim9: cannot use 'true" with garbagecollect()
Problem:    Vim9: cannot use 'true" with garbagecollect().
Solution:   Use tv_get_bool(). (closes #6871)
2020-09-05 17:30:44 +02:00
44b4a246b6 patch 8.2.1600: Vim9: cannot use "true" with deepcopy()
Problem:    Vim9: cannot use "true" with deepcopy().
Solution:   Use tv_get_bool_chk(). (closes #6867)
2020-09-05 17:18:28 +02:00
59941cbd80 patch 8.2.1599: missing line end when skipping a long line with :cgetfile
Problem:    Missing line end when skipping a long line with :cgetfile.
Solution:   Fix off-by-one error. (closes #6870)
2020-09-05 17:03:40 +02:00
2ce14589f2 patch 8.2.1598: starting a hidden terminal resizes the current window
Problem:    Starting a hidden terminal resizes the current window.
Solution:   Do not resize the current window for a hidden terminal.
            (closes #6872)
2020-09-05 16:08:49 +02:00
8b5866ded6 patch 8.2.1597: the channel source file is too big
Problem:    The channel source file is too big.
Solution:   Move job related code to a new source file.
2020-09-05 15:48:51 +02:00
7dfc5ce7cf patch 8.2.1596: using win_screenpos('.') in tests works but is wrong
Problem:    Using win_screenpos('.') in tests works but is wrong.
Solution:   Use win_screenpos(0).
2020-09-05 15:05:30 +02:00
86394aa972 patch 8.2.1595: cannot easily see what Vim sends to the terminal
Problem:    Cannot easily see what Vim sends to the terminal.
Solution:   Write output to the channel log if it contains terminal control
            sequences.  Avoid warnings for tputs() argument.
2020-09-05 14:27:24 +02:00
cf8aa6448b patch 8.2.1594: pull requests on github do not notify a maintainer
Problem:    Pull requests on github do not notify a maintainer.
Solution:   Add a CODEOWNERS file with a few initial entries.
2020-09-05 13:48:58 +02:00
e2e4075fad patch 8.2.1593: tests do not check the error number properly
Problem:    Tests do not check the error number properly.0
Solution:   Add a colon after the error number. (closes #6869)
2020-09-04 21:18:46 +02:00
24f7750ffa patch 8.2.1592: Vim9: passing "true" to char2nr() fails
Problem:    Vim9: passing "true" to char2nr() fails.
Solution:   Use tv_get_bool_chk(). (closes #6865)
2020-09-04 19:50:57 +02:00
c05d1c043a patch 8.2.1591: using winheight('.') in tests works but is wrong
Problem:    Using winheight('.') in tests works but is wrong.
Solution:   Use winheight(0). (issue #6863)
2020-09-04 18:38:06 +02:00
fe136c9a85 patch 8.2.1590: Vim9: bufnr() doesn't take "true" argument
Problem:    Vim9: bufnr() doesn't take "true" argument.
Solution:   use tv_get_bool_chk(). (closes #6863)
2020-09-04 18:35:26 +02:00
b936b79424 patch 8.2.1589: term_start() options for size are overruled by 'termwinsize'
Problem:    Term_start() options for size are overruled by 'termwinsize'.
            (Sergey Vlasov)
Solution:   Set 'termwinsize' to the specified size.
2020-09-04 18:34:09 +02:00
077cc7aa0e patch 8.2.1588: cannot read back the prompt of a prompt buffer
Problem:    Cannot read back the prompt of a prompt buffer.
Solution:   Add prompt_getprompt(). (Ben Jackson, closes #6851)
2020-09-04 16:35:35 +02:00
eadee486c7 patch 8.2.1587: loop for handling keys for the command line is too long
Problem:    Loop for handling keys for the command line is too long.
Solution:   Move wild menu handling to separate functions. (Yegappan
            Lakshmanan, closes #6856)
2020-09-04 15:37:31 +02:00
fe6dce8739 patch 8.2.1586: :resize command not fully tested
Problem:    :resize command not fully tested.
Solution:   Add a couple of tests. (Dominique Pellé, closes #6857)
2020-09-04 14:41:21 +02:00
fa57335e53 patch 8.2.1585: messages in globals.h not translated
Problem:    Messages in globals.h not translated, xgettext on MS-Windows not
            fully supported.
Solution:   Add globals.h to list of input files.  Update MS-Windows makefiles
            to improve message translations. (Ken Takata, closes #6858)
2020-09-04 13:53:00 +02:00
eb24556df3 patch 8.2.1584: Vim9: cannot use "true" for "skipstart" in prop_find()
Problem:    Vim9: cannot use "true" for "skipstart" in prop_find().
Solution:   Use dict_get_bool() instead of tv_get_number(). (closes #6852)
2020-09-03 22:33:44 +02:00
18eedfa40b patch 8.2.1583: MS-Windows: cannot easily measure code coverage
Problem:    MS-Windows: cannot easily measure code coverage.
Solution:   Add the COVERAGE option. (Ken Takata, closes #6842)
2020-09-03 19:50:05 +02:00
7ca86fe8dc patch 8.2.1582: the channel log does not show typed text
Problem:    The channel log does not show typed text.
Solution:   Add raw typed text to the log file.
2020-09-03 19:25:11 +02:00
1f42f5a675 patch 8.2.1581: using line() for global popup window doesn't work
Problem:    Using line() for global popup window doesn't work.
Solution:   Set tabpage to "curtab". (closes #6847)
2020-09-03 18:52:24 +02:00
a60053b8f4 patch 8.2.1580: wildmenu does not work properly
Problem:    Wildmenu does not work properly.
Solution:   Do not call may_do_incsearch_highlighting() if completion is in
            progress.
2020-09-03 16:50:13 +02:00
5b5aa11801 patch 8.2.1579: reports from asan are not optimal
Problem:    Reports from asan are not optimal.
Solution:   Use clang with ubsan. (James McCoy, closes #6811)
2020-09-03 16:05:04 +02:00
62f93f4ec9 patch 8.2.1578: Vim9: popup_clear() does not take "true" as argument
Problem:    Vim9: popup_clear() does not take "true" as argument.
Solution:   Use tv_get_bool(). (closes #6826)
2020-09-02 22:33:24 +02:00
04d594b9c1 patch 8.2.1577: Vim9: hasmapto()/mapcheck()/maparg() do nottake "true" arg
Problem:    Vim9: hasmapto(), mapcheck() and maparg() do not take "true" as
            argument.
Solution:   Use tv_get_bool(). (closes #6822, closes #6824)
2020-09-02 22:25:35 +02:00
6c553f9c04 patch 8.2.1576: Vim9: index() does not take "true" as argument
Problem:    Vim9: index() does not take "true" as argument.
Solution:   Use tv_get_bool_chk(). (closes #6823)
2020-09-02 22:10:34 +02:00
f966ce5ea2 patch 8.2.1575: Vim9: globpath() doesnot take "true" as argument
Problem:    Vim9: globpath() doesnot take "true" as argument.
Solution:   Use tv_get_bool_chk(). (closes #6821)
2020-09-02 21:57:07 +02:00
5892ea1511 patch 8.2.1574: Vim9: glob() doesnot take "true" as argument
Problem:    Vim9: glob() doesnot take "true" as argument.
Solution:   Use tv_get_bool_chk(). (closes #6821)
2020-09-02 21:53:11 +02:00
67ff97ded7 patch 8.2.1573: Vim9: getreg() does not take "true" as argument
Problem:    Vim9: getreg() does not take "true" as argument.
Solution:   Use tv_get_bool_chk().  (closes #6820)
2020-09-02 21:45:54 +02:00
551d25e765 patch 8.2.1572: Vim9: expand() does not take "true" as argument
Problem:    Vim9: expand() does not take "true" as argument.
Solution:   Use tv_get_bool_chk().  (closes #6819)
2020-09-02 21:37:56 +02:00
119f557230 patch 8.2.1571: Vim9: count() third argument cannot be "true"
Problem:    Vim9: count() third argument cannot be "true".
Solution:   use tv_get_bool_chk(). (closes #6818)
2020-09-02 21:31:22 +02:00
9d8bfae50f patch 8.2.1570: configure check for dirfd() does not work on HPUX
Problem:    Configure check for dirfd() does not work on HPUX. (Michael Osipov)
Solution:   Use AC_TRY_LINK instead of AC_TRY_COMPILE. (closes #6838)
2020-09-02 21:21:35 +02:00
a5d3841177 patch 8.2.1569: Vim9: fixes not tested; failure in getchangelist()
Problem:    Vim9: fixes for functions not tested; failure in getchangelist().
Solution:   Add tests. (closes #6813, closes #6815, closes #6817)
2020-09-02 21:02:35 +02:00
4da7a259f6 patch 8.2.1568: prop_find() skips properties in the same line
Problem:    prop_find() skips properties in the same line if "skipstart" is
            used.
Solution:   Use "continue" instead of "break". (closes #6840)
2020-09-02 19:59:00 +02:00
6efa46f4ef patch 8.2.1567: no example to use ubsan with clang
Problem:    No example to use ubsan with clang.
Solution:   Add example commands. (Dominique Pellé, issue #6811)
2020-09-02 19:23:06 +02:00
4488f5a545 patch 8.2.1566: not all Bazel files are recognized
Problem:    Not all Bazel files are recognized.
Solution:   Add *.bazel and *.BUILD. (closes #6836)
2020-09-02 17:08:59 +02:00
e90d63ea90 patch 8.2.1565: spellfile test sometimes fails
Problem:    Spellfile test sometimes fails.
Solution:   Check running into the end of the file.
2020-09-02 12:58:48 +02:00
4ad739fc05 patch 8.2.1564: a few remaining errors from ubsan
Problem:    A few remaining errors from ubsan.
Solution:   Avoid the warnings. (Dominique Pellé, closes #6837)
2020-09-02 10:25:45 +02:00
6f84b6db10 patch 8.2.1563: Vim9: error when using '%" with setbufvar() r getbufvar()
Problem:    Vim9: error when using '%" with setbufvar() or getbufvar().
Solution:   Use tv_get_buf_from_arg(). (closes #6816)
2020-09-01 23:16:32 +02:00
3767e3a330 patch 8.2.1562: Vim9: error when using "%" where a buffer is expected
Problem:    Vim9: error when using "%" where a buffer is expected.
Solution:   Add tv_get_buf_from_arg(). (closes #6814)
2020-09-01 23:06:01 +02:00
81fcb67fb3 patch 8.2.1561: using NULL pointers in fold code
Problem:    Using NULL pointers in fold code.
Solution:   Avoid using a NULL pointer. (Dominique Pellé, closes #6831,
            closes #6831)
2020-09-01 21:21:24 +02:00
9c2b06637b patch 8.2.1560: using NULL pointers in some code
Problem:    Using NULL pointers in some code. (James McCoy)
Solution:   Avoid adding to a NULL pointer.  Use byte as unsigned.
2020-09-01 19:56:15 +02:00
ca563b9b94 patch 8.2.1559: s390x tests work again
Problem:    s390x tests work again.
Solution:   re-enable s390x tests. (James McCoy, closes #6829)
2020-09-01 17:50:51 +02:00
2f1228463a patch 8.2.1558: signs test fails
Problem:    Signs test fails.
Solution:   Add missing change to sign.c.
2020-08-31 23:18:00 +02:00
997cd1a17f patch 8.2.1557: crash in :vimgrep when started as "vim -n"
Problem:    Crash in :vimgrep when started as "vim -n". (Raul Segura)
Solution:   Check mfp pointer. (Yegappan Lakshmanan, closes #6827)
2020-08-31 22:16:08 +02:00
39f7aa3c31 patch 8.2.1556: cursorline highlighting always overrules sign highlighting
Problem:    Cursorline highlighting always overrules sign highlighting.
Solution:   Combine the highlighting, use the priority to decide how.
            (closes #6812)
2020-08-31 22:00:05 +02:00
7d6979608e patch 8.2.1555: not all tests are executed on Github Actions
Problem:    Not all tests are executed on Github Actions.
Solution:   Copy "src" to "src2" earlier. Recognize "src2" in a couple more
            places.  Add two tests to the list of flaky tests. (Ken Takata,
            closes #6798)
2020-08-31 21:30:32 +02:00
07e87e9eb5 patch 8.2.1554: crash in normal test
Problem:    Crash in normal test.
Solution:   Skip adjusting marks if there are no folds.
2020-08-31 21:22:40 +02:00
2c93c685e3 patch 8.2.1553: crash in edit test
Problem:    Crash in edit test.
Solution:   Avoid using invalid pointer.
2020-08-31 21:15:02 +02:00
64f37d3090 patch 8.2.1552: warnings from asan with clang-11
Problem:    Warnings from asan with clang-11. (James McCoy)
Solution:   Avoid using a NULL pointer. (issue #6811)
2020-08-31 19:58:13 +02:00
8b565c2c15 patch 8.2.1551: Vim9: error for argument type does not mention the number
Problem:    Vim9: error for argument type does not mention the number.
Solution:   Pass the argument number to where the error is given.
2020-08-30 23:24:20 +02:00
02aaad9109 patch 8.2.1550: Vim9: bufname('%') gives an error
Problem:    Vim9: bufname('%') gives an error.
Solution:   Only give an error for wrong argument type. (closes #6807)
2020-08-30 21:26:57 +02:00
ca774f6753 patch 8.2.1549: "r" fails if 'esckeys' is off and modifyOtherKeys is used
Problem:    The "r" command fails for keys with modifiers if 'esckeys' is off
            and modifyOtherKeys is used. (Lauri Tirkkonen)
Solution:   Temporarily disable bracketed paste and modifyOtherKeys if
            'esckeys' is off. (closes #6809)
2020-08-30 20:46:38 +02:00
0b8cf278ec patch 8.2.1548: cannot move position of "%%" in message translations
Problem:    Cannot move position of "%%" in message translations. (Emir Sarı)
Solution:   Improve the check script.
2020-08-30 19:42:06 +02:00
02c037a4be patch 8.2.1547: various comment problems
Problem:    Various comment problems.
Solution:   Update comments.
2020-08-30 19:26:45 +02:00
cd80006ecb patch 8.2.1546: build rule for Vim.app is unused
Problem:    Build rule for Vim.app is unused.
Solution:   Delete the related build rules.
2020-08-30 18:11:54 +02:00
76603baac5 patch 8.2.1545: ch_logfile() is unclear about closing when forking
Problem:    ch_logfile() is unclear about closing when forking.
Solution:   Adjust the log messages.
2020-08-30 17:24:37 +02:00
207f009326 Update runtime files. 2020-08-30 17:20:20 +02:00
0b39c3fd4c patch 8.2.1544: cannot translate messages in a Vim script
Problem:    Cannot translate messages in a Vim script.
Solution:   Add gettext().  Try it out for a few messages in the options
            window.
2020-08-30 15:52:10 +02:00
25859dd74c patch 8.2.1543: Vim9: test with invalid SID is skipped in the GUI
Problem:    Vim9: test with invalid SID is skipped in the GUI.
Solution:   Read the CTRL-C that feedkeys() put in typeahead.
2020-08-30 12:54:53 +02:00
a5639848cc patch 8.2.1542: Vim9: test with invalid SID does not work in the GUI
Problem:    Vim9: test with invalid SID does not work in the GUI.
Solution:   Skip the test in the GUI.
2020-08-29 22:59:17 +02:00
95006e3dca patch 8.2.1541: Vim9: cannot find function reference for s:Func
Problem:    Vim9: cannot find function reference for s:Func.
Solution:   Recognize <SNR> prefix. (closes #6805)
2020-08-29 17:47:08 +02:00
98945560c1 patch 8.2.1540: the user cannot try out emoji character widths
Problem:    The user cannot try out emoji character widths.
Solution:   Move the emoji script to the runtime/tools directory.
2020-08-29 16:41:27 +02:00
e3d4685f1f patch 8.2.1539: using invalid script ID causes a crash
Problem:    Using invalid script ID causes a crash.
Solution:   Check the script ID to be valid. (closes #6804)
2020-08-29 13:39:17 +02:00
423a85a11a patch 8.2.1538: Python: iteration over vim objects fails to keep reference
Problem:    Python: iteration over vim objects fails to keep reference.
Solution:   Keep a reference for the object. (Paul Ollis, closes #6803,
            closes #6806)
2020-08-29 12:57:16 +02:00
b06a6d59d1 patch 8.2.1537: memory acccess error when using setcellwidths()
Problem:    Memory acccess error when using setcellwidths().
Solution:   Use array and pointers correctly.
2020-08-28 23:27:20 +02:00
4e4473c927 patch 8.2.1536: cannot get the class of a character; emoji widths are wrong
Problem:    Cannot get the class of a character; emoji widths are wrong in
            some environments.
Solution:   Add charclass(). Update some emoji widths.  Add script to check
            emoji widths.
2020-08-28 22:24:57 +02:00
08aac3c619 patch 8.2.1535: it is not possible to specify cell widths of characters
Problem:    It is not possible to specify cell widths of characters.
Solution:   Add setcellwidths().
2020-08-28 21:04:24 +02:00
ee8580e52e patch 8.2.1534: Vim9: type error for argument type is not at call position
Problem:    Vim9: type error for argument type is not at call position.
Solution:   Set the context and stack after checking the arguments.
            (issue #6785)
2020-08-28 17:19:07 +02:00
6a950581da patch 8.2.1533: Vim9: error when passing getreginfo() result to setreg()
Problem:    Vim9: error when passing getreginfo() result to setreg().
Solution:   Use dict_get_bool() for "isunnamed". (closes #6784)
2020-08-28 16:39:33 +02:00
2566054a7f patch 8.2.1532: compiler warning for conversion of size_t to long
Problem:    Compiler warning for conversion of size_t to long.
Solution:   Add type cast.
2020-08-28 16:38:11 +02:00
7a3330fc57 patch 8.2.1531: Vim9: test still fails on MS-Windows
Problem:    Vim9: test still fails on MS-Windows.
Solution:   When skipping expect function to be NULL.
2020-08-27 23:57:57 +02:00
5163fcce79 patch 8.2.1530: Vim9: test fails on MS-Windows
Problem:    Vim9: test fails on MS-Windows.
Solution:   Skip Ex command inside "if false".
2020-08-27 23:37:09 +02:00
749639ec72 patch 8.2.1529: Vim9: :elseif may be compiled when not needed
Problem:    Vim9: :elseif may be compiled when not needed.
Solution:   Do evaluate the :elseif expression.
2020-08-27 23:08:47 +02:00
3988f64f9d patch 8.2.1528: Vim9: :endif not found after "if false"
Problem:    Vim9: :endif not found after "if false".
Solution:   When skipping still check for a following command. (closes #6797)
2020-08-27 22:43:03 +02:00
601e76ac3c patch 8.2.1527: Vim9: cannot use a function name at script level
Problem:    Vim9: cannot use a function name as a function reference at script
            level.
Solution:   Check if a name is a function name. (closes #6789)
2020-08-27 21:33:10 +02:00
228e62975e patch 8.2.1526: line in testdir Makefile got commented out
Problem:    Line in testdir Makefile got commented out. (Christian Brabandt)
Solution:   Revert.
2020-08-27 16:06:46 +02:00
6e3aeec846 patch 8.2.1525: messages from tests were not always displayed
Problem:    Messages from tests were not always displayed.
Solution:   Always show messages, the timing is always useful. (Ken Takata,
            closes #6792)
2020-08-26 22:29:57 +02:00
2e0866128b patch 8.2.1524: no longer get an error for string concatenation with float
Problem:    No longer get an error for string concatenation with float.
            (Tsuyoshi Cho)
Solution:   Only convert float for Vim9 script. (closes #6787)
2020-08-25 22:37:48 +02:00
b9fc192f92 patch 8.2.1523: still not enough test coverage for the spell file handling
Problem:    Still not enough test coverage for the spell file handling.
Solution:   Add spell file tests. (Yegappan Lakshmanan, closes #6790)
2020-08-25 21:19:36 +02:00
c8ec5fe56f patch 8.2.1522: not enough test coverage for the spell file handling
Problem:    Not enough test coverage for the spell file handling.
Solution:   Add spell file tests. (Yegappan Lakshmanan, closes #6763)
2020-08-24 20:28:56 +02:00
07399e7f07 patch 8.2.1521: reading past end of buffer when reading spellfile
Problem:    Reading past end of buffer when reading spellfile. (Yegappan
            Lakshmanan)
Solution:   Store the byte length and check for it.
2020-08-24 20:05:50 +02:00
b3ea36c5bc patch 8.2.1520: Vim9: CTRL-] used in :def function does not work
Problem:    Vim9: CTRL-] used in :def function does not work.
Solution:   Omit count or prepend colon. (closes #6769)
2020-08-23 21:46:32 +02:00
c2af0afff5 patch 8.2.1519: Vim9: Ex command default range is not set
Problem:    Vim9: Ex command default range is not set.
Solution:   When range is not given use default. (closes #6779)
2020-08-23 21:06:02 +02:00
2e80095501 patch 8.2.1518: Vim9: cannot assign to local option
Problem:    Vim9: cannot assign to local option.
Solution:   Skip over "&l:" and "&g:". (closes #6749)
2020-08-23 19:34:48 +02:00
6c53fca023 patch 8.2.1517: cannot easily get the character under the cursor
Problem:    Cannot easily get the character under the cursor.
Solution:   Add the {chars} argument to strpart().
2020-08-23 17:34:46 +02:00
430deb1945 patch 8.2.1516: Vim9: error for :exe has wrong line number
Problem:    Vim9: error for :exe has wrong line number.
Solution:   Set line number before calling do_cmdline_cmd(). (closes #6774)
2020-08-23 16:29:11 +02:00
8436773fad patch 8.2.1515: Vim9: can create s:var in legacy script but cannot unlet
Problem:    Vim9: can create s:var in legacy script but cannot unlet.
Solution:   Allow :unlet for legacy script var.
2020-08-23 15:21:55 +02:00
dc0cf1db3e patch 8.2.1514: multibyte vertical separator is cleared when dragging popup
Problem:    Multibyte vertical separator is cleared when dragging a popup
            window using a multi-byte character for the border.
Solution:   Only clear the character before the window if it is double width.
            (closes #6766)
2020-08-23 15:09:36 +02:00
0981c8729e patch 8.2.1513: cannot interrupt shell used for filename expansion
Problem:    Cannot interrupt shell used for filename expansion. (Dominique
            Pellé)
Solution:   Do set tmode in mch_delay(). (closes #6770)
2020-08-23 14:28:37 +02:00
69e44552c5 patch 8.2.1512: failure after trinary expression fails
Problem:    Failure after trinary expression fails.
Solution:   Restore eval_flags. (Yasuhiro Matsumoto, closes #6776)
2020-08-22 22:37:20 +02:00
cd94277f72 patch 8.2.1511: putting a string in Visual block mode ignores multi-byte
Problem:    Putting a string in Visual block mode ignores multi-byte
            characters.
Solution:   Adjust the column for Visual block mode. (closes #6767)
2020-08-22 21:08:44 +02:00
5390099a97 patch 8.2.1510: using "var" in :def function may refer to legacy script var
Problem:    Using "var" in a :def function may refer to a legacy Vim script
            variable.
Solution:   Require using "s:" to refer to a legacy Vim script variable.
            (closes #6771)
2020-08-22 19:02:02 +02:00
9943b3d979 patch 8.2.1509: vertical separator is cleared when dragging a popup window
Problem:    Vertical separator is cleared when dragging a popup window using a
            multi-byte character for the border.
Solution:   Only clear the character before the window if it is using a
            multi-byte character. (closes #6766)
2020-08-22 17:21:14 +02:00
c63b72b6dc patch 8.2.1508: not all debugger commands covered by tests
Problem:    Not all debugger commands covered by tests.
Solution:   Add tests for going up/down in the stack. (Ben Jackson,
            closes #6765)
2020-08-22 16:04:52 +02:00
51b6eb47b3 patch 8.2.1507: using malloc() directly
Problem:    Using malloc() directly.
Solution:   Use ALLOC_ONE().  Remove superfluous typecast.  (Hussam al-Homsi,
            closes #6768)
2020-08-22 15:19:18 +02:00
d70840ed68 patch 8.2.1506: Vim9: no error when using a number other than 0 or 1 as bool
Problem:    Vim9: no error when using a number other than 0 or 1 as bool.
Solution:   Check the number is 0 or 1.
2020-08-22 15:06:35 +02:00
1b04ce2d40 patch 8.2.1505: not all file read and writecode is tested
Problem:    Not all file read and writecode is tested.
Solution:   Add a few tests. (Dominique Pellé, closes #6764)
2020-08-21 22:46:11 +02:00
7cb6fc29d0 patch 8.2.1504: Vim9: white space checks are only done for a :def function
Problem:    Vim9: white space checks are only done for a :def function.
Solution:   Also do checks at the script level.  Adjust the name of a few
            error messages.
2020-08-21 22:36:47 +02:00
81e17fbe00 patch 8.2.1503: Vim9: error for autocmd defined in :def in legacy script
Problem:    Vim9: error for an autocmd defined in a :def function in legacy
            Vim script.
Solution:   Don't check the variable type. (closes #6758)
2020-08-21 21:55:43 +02:00
122616d9c1 patch 8.2.1502: Vim9: can use += with a :let command at script level
Problem:    Vim9: can use += with a :let command at script level.
Solution:   Give an error.
2020-08-21 21:32:50 +02:00
3fc71285d5 patch 8.2.1501: Vim9: concatenating to constant reverses order
Problem:    Vim9: concatenating to constant reverses order.
Solution:   Generate constant before option, register and environment
            variable. (closes #6757)
2020-08-21 20:43:17 +02:00
5d72ce69c8 patch 8.2.1500: Vim9: error when using address without a command
Problem:    Vim9: error when using address without a command.
Solution:   Execute the range itself. (closes #6747)
2020-08-20 23:04:06 +02:00
ec65d77fa2 patch 8.2.1499: Vim9: error when using "$" with col()
Problem:    Vim9: error when using "$" with col().
Solution:   Reorder getting the column value. (closes #6744)
2020-08-20 22:29:12 +02:00
733d259a83 patch 8.2.1498: on slow systems tests can be flaky
Problem:    On slow systems tests can be flaky.
Solution:   Use TermWait() instead of term-wait(). (Yegappan Lakshmanan,
            closes #6756)
2020-08-20 18:59:06 +02:00
17f67547f3 patch 8.2.1497: CursorHold test is flaky
Problem:    CursorHold test is flaky. (Jakub Kądziołka)
Solution:   Use WaitForAssert() (closes #6754)
2020-08-20 18:29:13 +02:00
b8a9296ced patch 8.2.1496: Vim9: cannot use " #" in a mapping
Problem:    Vim9: cannot use " #" in a mapping.
Solution:   Do not remove a comment with the EX_NOTRLCOM flag. (closes #6746)
2020-08-20 18:02:47 +02:00
df2524bbb4 patch 8.2.1495: "make clean" may delete too many files
Problem:    "make clean" may delete too many files.
Solution:   Do not delete $APPDIR. (closes #6751)
2020-08-20 16:16:27 +02:00
825b54415f patch 8.2.1494: missing change to calling eval_getline()
Problem:    Missing change to calling eval_getline().
Solution:   Change last argument.
2020-08-20 15:52:21 +02:00
fc2a47ffc4 patch 8.2.1493: not enough test coverage for the spell file handling
Problem:    Not enough test coverage for the spell file handling.
Solution:   Add spell file tests. (Yegappan Lakshmanan, closes #6728)
2020-08-20 15:41:55 +02:00
20b23c6358 patch 8.2.1492: build failures
Problem:    Build failures.
Solution:   Move typedef out of #ifdef.  Adjust argument types.  Discover
            America.
2020-08-20 15:25:00 +02:00
66250c932e patch 8.2.1491: Vim9: crash when compiling heredoc lines start with comment
Problem:    Vim9: crash when compiling heredoc lines start with comment.
Solution:   Skip over NULL pointers. Do not remove comment and empty lines
            when fetching function lines. (closes #6743)
2020-08-20 15:02:42 +02:00
93ad14710b patch 8.2.1490: Vim9: using /= with float and number doesn't work
Problem:    Vim9: using /= with float and number doesn't work.
Solution:   Better support assignment with operator. (closes #6742)
2020-08-19 22:02:41 +02:00
191929b182 patch 8.2.1489: Vim9: error when setting an option with setbufvar()
Problem:    Vim9: error when setting an option with setbufvar().
Solution:   Do not get a number from a string value. (closes #6740)
2020-08-19 21:20:49 +02:00
9dc1917f42 patch 8.2.1488: text does not scroll when inserting above first line
Problem:    Text does not scroll when inserting above first line.
Solution:   Adjust off-by-one error. (Ken Takata, closes #6739)
2020-08-19 20:19:48 +02:00
a7c4e74763 patch 8.2.1487: Travis: installing snd-dummy is not always useful
Problem:    Travis: installing snd-dummy is not always useful.
Solution:   Only install snd-dummy on amd64. (Ozaki Kiichi, closes #6738)
2020-08-19 19:46:12 +02:00
f8abbf37d6 patch 8.2.1486: Vim9: readdir() expression doesn't accept bool
Problem:    Vim9: readdir() expression doesn't accept bool.
Solution:   Merge with code for readdirex(). (closes #6737)
2020-08-19 16:00:06 +02:00
af8822ce08 patch 8.2.1485: Vim9: readdirex() expression doesn't accept bool
Problem:    Vim9: readdirex() expression doesn't accept bool.
Solution:   Accept both -1 and bool. (closes #6737)
2020-08-19 13:55:01 +02:00
9b02d64cff patch 8.2.1484: flaky failure in assert_fails()
Problem:    Flaky failure in assert_fails().
Solution:   Only used fourth argument if there is a third argument.
2020-08-18 23:24:13 +02:00
165036ddba patch 8.2.1483: Vim9: error for using special as number
Problem:    Vim9: error for using special as number when returning "false"
            from a popup filter.
Solution:   Use tv_get_bool(). (closes #6733)
2020-08-18 22:50:38 +02:00
aeb2bdd0de patch 8.2.1482: Vim9: crash when using a nested lambda
Problem:    Vim9: crash when using a nested lambda.
Solution:   Do not clear the growarray when not evaluating.  Correct pointer
when getting the next line. (closes #6731)
2020-08-18 22:32:03 +02:00
3affe7a6c6 patch 8.2.1481: Vim9: line number reported with error may be wrong
Problem:    Vim9: line number reported with error may be wrong.
Solution:   Check line number in tests.
2020-08-18 20:34:13 +02:00
e15eebd202 patch 8.2.1480: Vim9: skip expression in search() gives error
Problem:    Vim9: skip expression in search() gives error.
Solution:   use tv_get_bool() eval_expr_to_bool(). (closes #6729)
2020-08-18 19:11:38 +02:00
1d634542cf patch 8.2.1479: Vim9: error for list index uses wrong line number
Problem:    Vim9: error for list index uses wrong line number.
Solution:   Set source line number. (closes #6724)  Add a way to assert the
            line number of the error with assert_fails().
2020-08-18 13:41:50 +02:00
558813314d patch 8.2.1478: Vim9: cannot use "true" for some popup options
Problem:    Vim9: cannot use "true" for some popup options.
Solution:   Add dict_get_bool(). (closes #6725)
2020-08-18 13:04:15 +02:00
f39397e515 patch 8.2.1477: Vim9: error when using bufnr('%')
Problem:    Vim9: error when using bufnr('%').
Solution:   Don't give an error for using a string argument. (closes #6723)
2020-08-17 22:21:36 +02:00
aa9675a61d patch 8.2.1476: filetype test fails on MS-Windows
Problem:    Filetype test fails on MS-Windows.
Solution:   Remove "^" from pattern.
2020-08-17 21:57:09 +02:00
36967b32fd patch 8.2.1475: Vim9: can't use v:true for option flags
Problem:    Vim9: can't use v:true for option flags.
Solution:   Add tv_get_bool_chk(). (closes #6725)
2020-08-17 21:41:02 +02:00
624b6eaf20 patch 8.2.1474: /usr/lib/udef/rules.d not recognized as udevrules
Problem:    /usr/lib/udef/rules.d not recognized as udevrules.
Solution:   Adjust match pattern. (Haochen Tong, closes 36722)
2020-08-17 21:17:25 +02:00
021bda5671 patch 8.2.1473: items in a list given to :const can still be modified
Problem:    Items in a list given to :const can still be modified.
Solution:   Work like ":lockvar! name" but don't lock referenced items.
            Make locking a blob work.
2020-08-17 21:07:22 +02:00
7b22117c4e patch 8.2.1472: ":argdel" does not work like ":.argdel" as documented
Problem:    ":argdel" does not work like ":.argdel" as documented. (Alexey
            Demin)
Solution:   Make ":argdel" work like ":.argdel". (closes #6727)
            Also fix giving the error "0 more files to edit".
2020-08-17 19:34:10 +02:00
241572794f patch 8.2.1471: :const only locks the variable, not the value
Problem:    :const only locks the variable, not the value.
Solution:   Lock the value as ":lockvar 1 var" would do. (closes #6719)
2020-08-16 22:50:01 +02:00
c0f8823ee4 patch 8.2.1470: errors in spell file not tested
Problem:    Errors in spell file not tested.
Solution:   Add test for spell file errors. (Yegappan Lakshmanan,
            closes #6721)
2020-08-16 21:51:49 +02:00
0aae4809fd patch 8.2.1469: Vim9: cannot assign string to string option
Problem:    Vim9: cannot assign string to string option.
Solution:   Change checks for option value. (closes #6720)
2020-08-16 21:29:05 +02:00
f923571ec1 patch 8.2.1468: Vim9: invalid error for missing white space
Problem:    Vim9: invalid error for missing white space.
Solution:   Don't skip over white space after index. (closes #6718)
2020-08-16 18:42:53 +02:00
e5abf7af08 patch 8.2.1467: Vim9: :echomsg doesn't like a dict argument
Problem:    Vim9: :echomsg doesn't like a dict argument.
Solution:   Convert arguments like in legacy script. (closes #6717)
2020-08-16 18:29:35 +02:00
cc673e746a patch 8.2.1466: Vim9: cannot index or slice a variable with type "any"
Problem:    Vim9: cannot index or slice a variable with type "any".
Solution:   Add runtime index and slice.
2020-08-16 17:33:35 +02:00
56acb0943e patch 8.2.1465: Vim9: subscript not handled properly
Problem:    Vim9: subscript not handled properly.
Solution:   Adjust error message.  Remove dead code.  Disallow string to
            number conversion in scripts.
2020-08-16 14:48:19 +02:00
829ac868b7 patch 8.2.1464: Vim9: build warning for unused variable
Problem:    Vim9: build warning for unused variable.
Solution:   Delete the variable declaration.
2020-08-15 22:48:48 +02:00
ed5918771f patch 8.2.1463: Vim9: list slice not supported yet
Problem:    Vim9: list slice not supported yet.
Solution:   Add support for list slicing.
2020-08-15 22:14:53 +02:00
11107bab7e patch 8.2.1462: Vim9: string slice not supported yet
Problem:    Vim9: string slice not supported yet.
Solution:   Add support for string slicing.
2020-08-15 21:10:16 +02:00
3d1cde8a2f Update runtime files. 2020-08-15 18:55:18 +02:00
e3c37d8ebf patch 8.2.1461: Vim9: string indexes are counted in bytes
Problem:    Vim9: string indexes are counted in bytes.
Solution:   Use character indexes. (closes #6574)
2020-08-15 18:39:05 +02:00
451c2e3536 patch 8.2.1460: error messages are spread out
Problem:    Error messages are spread out.
Solution:   Move more messages into errors.h.
2020-08-15 16:33:28 +02:00
53b29e4845 patch 8.2.1459: Vim9: declaring script var in script does not infer the type
Problem:    Vim9: declaring ascript variable at the script level does not
            infer the type.
Solution:   Get the type from the value. (closes #6716)
2020-08-15 14:31:20 +02:00
9a5c553f79 patch 8.2.1458: .gawk files not recognized
Problem:    .gawk files not recognized.
Solution:   Recognize .gawk files. (Doug Kearns)
2020-08-15 14:07:23 +02:00
793dcc540d patch 8.2.1457: Vim9: the output of :disassemble cannot be interrupted
Problem:    Vim9: the output of :disassemble cannot be interrupted.
Solution:   Check got_int. (closes #6715)
2020-08-15 13:49:17 +02:00
1623619119 patch 8.2.1456: MS-Windows: test files are not deleted
Problem:    MS-Windows: test files are not deleted.
Solution:   use "del" instead of $(DEL).
2020-08-14 23:08:22 +02:00
d1103587cf patch 8.2.1455: Vim9: crash when using typecast before constant
Problem:    Vim9: crash when using typecast before constant.
Solution:   Generate constant before checking type.  Add tets.
2020-08-14 22:44:25 +02:00
79e8db9a21 patch 8.2.1454: Vim9: failure invoking lambda with wrong arguments
Problem:    Vim9: failure invoking lambda with wrong arguments.
Solution:   Handle invalid arguments.  Add a test.
2020-08-14 22:16:33 +02:00
8de2f44ac6 patch 8.2.1453: Vim9: failure to compile lambda not tested
Problem:    Vim9: failure to compile lambda not tested.
Solution:   Add a test case.
2020-08-14 21:49:08 +02:00
8d56622944 patch 8.2.1452: Vim9: dead code in to_name_end()
Problem:    Vim9: dead code in to_name_end().
Solution:   Remove check for lambda and dict, it won't be used.
2020-08-14 21:42:54 +02:00
41fab3eac8 patch 8.2.1451: Vim9: list type at script level only uses first item
Problem:    Vim9: list type at script level only uses first item.
Solution:   Use all members, like in a compiled function. (closes #6712)
            Also for dictionary.
2020-08-14 21:27:37 +02:00
7d6997015d patch 8.2.1450: Vim9: no check that script-local items don't become global
Problem:    Vim9: no check that script-local items don't become global.
Solution:   Add a test.
2020-08-14 20:52:28 +02:00
32a23ac615 patch 8.2.1449: some test makefiles delete files that are not generated
Problem:    Some test makefiles delete files that are not generated.
Solution:   Remove the deletion commands.
2020-08-14 19:20:23 +02:00
4ac97f4761 patch 8.2.1448: test 77a for VMS depends on small.vim which does not exist
Problem:    Test 77a for VMS depends on small.vim which does not exist.
Solution:   Use the 'silent while 0" trick. (issue #6696)
2020-08-14 19:11:03 +02:00
32f335f75c patch 8.2.1447: Vim9: return type of keys() is list<any>
Problem:    Vim9: return type of keys() is list<any>.
Solution:   Should be list<string>. (closes #6711)
2020-08-14 18:56:45 +02:00
7517ffdbb5 patch 8.2.1446: Vim9: line number in error message is not correct
Problem:    Vim9: line number in error message is not correct.
Solution:   Set SOURCING_LNUM before calling emsg(). (closes #6708)
2020-08-14 18:35:07 +02:00
c4ce36d486 patch 8.2.1445: Vim9: function expanded name is cleared when sourcing again
Problem:    Vim9: function expanded name is cleared when sourcing a script
            again.
Solution:   Only clear the expanded name when deleting the function.
            (closes #6707)
2020-08-14 17:08:15 +02:00
bc4c505166 patch 8.2.1444: error messages are spread out and names can be confusing
Problem:    Error messages are spread out and names can be confusing.
Solution:   Start moving error messages to a separate file and use clear
            names.
2020-08-13 22:47:35 +02:00
cdd70f09a5 patch 8.2.1443: Vim9: crash when interrupting a nested :def function
Problem:    Vim9: crash when interrupting a nested :def function.
Solution:   Push a dummy return value onto the stack. (closes #6701)
2020-08-13 21:40:18 +02:00
be7529e889 patch 8.2.1442: outdated references to the Mac Carbon GUI
Problem:    Outdated references to the Mac Carbon GUI.
Solution:   Remove or update references. (Yee Cheng Chin, closes #6703)
2020-08-13 21:05:39 +02:00
c771908681 patch 8.2.1441: running tests in tiny version gives error for summarize.vim
Problem:    Running tests in tiny version gives error for summarize.vim.
Solution:   Set 'cpoptions' to allow for line continuation.  Restore
            redirecting test output to /dev/null.
2020-08-13 19:42:39 +02:00
16c6232cad patch 8.2.1440: debugger code insufficiently tested
Problem:    Debugger code insufficiently tested.
Solution:   Add a few more tests. (Yegappan Lakshmanan, closes #6700)
2020-08-13 19:20:04 +02:00
b96a32ef1a patch 8.2.1439: tiny and small builds have no test coverage
Problem:    Tiny and small builds have no test coverage.
Solution:   Restore tests that do not depend on the +eval feature.
            (Ken Takata, closes #6696)
2020-08-13 18:59:55 +02:00
7ac616cb0a patch 8.2.1438: missing tests for interrupting script execution from debugger
Problem:    Missing tests for interrupting script execution from debugger.
Solution:   Add tests. (Yegappan Lakshmanan, closes #6697)
2020-08-12 22:22:09 +02:00
c9edd6b582 patch 8.2.1437: Vim9: 'statusline' is evaluated using Vim9 script syntax
Problem:    Vim9: 'statusline' is evaluated using Vim9 script syntax.
Solution:   Always use legacy script syntax.
2020-08-12 22:18:23 +02:00
66e0014ba6 patch 8.2.1436: function implementing :substitute has unexpected name
Problem:    Function implementing :substitute has unexpected name.
Solution:   Rename from do_sub() to ex_substitute().
2020-08-12 21:58:12 +02:00
418f1df547 patch 8.2.1435: Vim9: always converting to string for ".." leads to mistakes
Problem:    Vim9: always converting to string for ".." leads to mistakes.
Solution:   Only automatically convert simple types.
2020-08-12 21:34:49 +02:00
fd77748df2 patch 8.2.1434: Vim9: crash when lambda uses outer function argument
Problem:    Vim9: crash when lambda uses outer function argument.
Solution:   Set the flag that the outer context is used.
2020-08-12 19:42:01 +02:00
ba60cc45e7 patch 8.2.1433: Vim9: cannot mingle comments in multi-line lambda
Problem:    Vim9: cannot mingle comments in multi-line lambda.
Solution:   Skip over NULL lines. (closes #6694)
2020-08-12 19:15:33 +02:00
6d91bcb4d2 patch 8.2.1432: various inconsistencies in test files
Problem:    Various inconsistencies in test files.
Solution:   Add modelines where they were missing.  Use Check commands instead
            of silently skipping over tests.  Adjust indents and comments.
            (Ken Takata, closes #6695)
2020-08-12 18:50:36 +02:00
c3d6e8a46a patch 8.2.1431: Vim9: no error for white space before comma in dict
Problem:    Vim9: no error for white space before comma in dict.
Solution:   Check for extra white space. (closes #6674)
2020-08-12 18:34:28 +02:00
db199216e8 patch 8.2.1430: Vim9: error for missing comma instead of extra white space
Problem:    Vim9: error for missing comma instead of extra white space.
Solution:   Check if comma can be found after white space. (closes #6668)
            Also check for extra white space in literal dict. (closes #6670)
2020-08-12 18:01:53 +02:00
17a836cbee patch 8.2.1429: Vim9: no error for missing white after : in dict
Problem:    Vim9: no error for missing white after : in dict.
Solution:   Check for white space. (closes #6671)  Also check that there is no
            white before the :.
2020-08-12 17:35:58 +02:00
ed677f5587 patch 8.2.1428: Vim9: :def function does not abort on nested function error
Problem:    Vim9: :def function does not abort on nested function error.
Solution:   Check whether an error message was given. (closes #6691)
2020-08-12 16:38:10 +02:00
7c5ad34878 patch 8.2.1427: Vim9: cannot use a range with marks in :def function
Problem:    Vim9: cannot use a range with marks in :def function.
Solution:   Parse range after colon. (closes #6686)
2020-08-12 15:48:55 +02:00
a177344dc0 patch 8.2.1426: Vim9: cannot call autoload function in :def function
Problem:    Vim9: cannot call autoload function in :def function.
Solution:   Load the autoload script. (closes #6690)
2020-08-12 15:21:22 +02:00
575f24b3f3 patch 8.2.1425: Vim9: cannot use call() without :call
Problem:    Vim9: cannot use call() without :call.
Solution:   Do not skip over "call(". (closes #6689)
2020-08-12 14:21:11 +02:00
040f975fc1 patch 8.2.1424: Mac build fails
Problem:    Mac build fails.
Solution:   Adjust configure to not fall back to Athena.  Adjust some other
            files.
2020-08-11 23:08:48 +02:00
035d6e91bd patch 8.2.1423: Vim9: find global function when looking for script-local
Problem:    Vim9: find global function when looking for script-local.
Solution:   Don't strip prefix if name starts with "s:". (closes #6688)
2020-08-11 22:30:42 +02:00
097148e849 patch 8.2.1422: the Mac GUI implementation is outdated
Problem:    The Mac GUI implementation is outdated and probably doesn't even
            work.
Solution:   Remove the Mac GUI code.  The MacVim project provides the
            supported Vim GUI version.
2020-08-11 21:58:20 +02:00
4301a729ea patch 8.2.1421: Vim9: handling "+" and "-" before number differs from script
Problem:    Vim9: handling "+" and "-" before number differs from Vim script.
Solution:   Use the same sequence of commands.
2020-08-11 20:51:08 +02:00
f7c4d83609 patch 8.2.1420: test 49 is old style
Problem:    Test 49 is old style.
Solution:   Convert remaining parts to new style. Remove obsolete items.
            (Yegappan Lakshmanan, closes #6683)
2020-08-11 20:42:19 +02:00
59eccb92e3 patch 8.2.1419: Vim9: not operator applied too early
Problem:    Vim9: not operator applied too early.
Solution:   Implement the "numeric_only" argument. (closes #6680)
2020-08-10 23:09:37 +02:00
8294d49937 patch 8.2.1418: Vim9: invalid error for missing white space
Problem:    Vim9: invalid error for missing white space after function.
Solution:   Do not skip over white space. (closes #6679)
2020-08-10 22:40:56 +02:00
efb6482949 patch 8.2.1417: test 49 is old style
Problem:    Test 49 is old style.
Solution:   Convert more parts to new style test. (Yegappan Lakshmanan,
            closes #6682)
2020-08-10 22:15:30 +02:00
3e06a1e2a8 patch 8.2.1416: Vim9: boolean evaluation does not work as intended
Problem:    Vim9: boolean evaluation does not work as intended.
Solution:   Use tv2bool() in Vim9 script. (closes #6681)
2020-08-10 21:57:54 +02:00
6f8f7337c1 patch 8.2.1415: closing a popup window with CTRL-C interrupts 'statusline'
Problem:    Closing a popup window with CTRL-C interrupts 'statusline' if it
            calls a function.
Solution:   Reset got_int while redrawing. (closes #6675)
2020-08-10 21:19:23 +02:00
bf61fdd008 patch 8.2.1414: popupwindow missing last couple of lines
Problem:    Popupwindow missing last couple of lines when cursor is in the
            first line.
Solution:   Compute the max height also when top aligned. (closes #6664)
2020-08-10 20:39:17 +02:00
94f4ffa770 patch 8.2.1413: previous tab page not usable from an Ex command
Problem:    Previous tab page not usable from an Ex command.
Solution:   Add the "#" argument for :tabnext et al. (Yegappan Lakshmanan,
            closes #6677)
2020-08-10 19:21:15 +02:00
6e4cfffe80 patch 8.2.1412: Vim: not operator does not result in boolean
Problem:    Vim: not operator does not result in boolean.
Solution:   Make type depend on operator. (issue 6678)  Fix using "false" and
            "true" in Vim9 script.
2020-08-09 22:17:55 +02:00
a9a47d157a patch 8.2.1411: when splitting a window localdir is copied but prevdir is not
Problem:    when splitting a window localdir is copied but prevdir is not.
Solution:   Also copy prevdir. (closes #6667)
2020-08-09 21:45:52 +02:00
7f7a888869 patch 8.2.1410: adding compiler plugin requires test change
Problem:    Adding compiler plugin requires test change.
Solution:   Include compiler plugin and adjust test.
2020-08-09 20:05:41 +02:00
1e91eafc2e patch 8.2.1409: nmpmrc and php.ini filetypes not recognized
Problem:    Nmpmrc and php.ini filetypes not recognized.
Solution:   Add filetype detection. (Doug Kearns)
2020-08-09 19:32:39 +02:00
64d662d5fc patch 8.2.1408: Vim9: type casting not supported
Problem:    Vim9: type casting not supported.
Solution:   Introduce type casting.
2020-08-09 19:02:50 +02:00
127542bceb patch 8.2.1407: Vim9: type of list and dict only depends on first item
Problem:    Vim9: type of list and dict only depends on first item.
Solution:   Use all items to decide about the type.
2020-08-09 17:22:04 +02:00
a1b9b0cc01 patch 8.2.1406: popupwindow lacks scrollbar if no "maxheight" is used
Problem:    Popupwindow lacks scrollbar if no "maxheight" is used.
Solution:   Compute the max height depending on the position. (closes #6664)
2020-08-09 16:37:48 +02:00
a7cc9e697b patch 8.2.1405: Vim9: vim9compile.c is getting too big
Problem:    Vim9: vim9compile.c is getting too big.
Solution:   Split off type code to vim9type.c.
2020-08-09 15:25:14 +02:00
b3ca982407 patch 8.2.1404: Vim9: script test fails in the GUI
Problem:    Vim9: script test fails in the GUI.
Solution:   Use another key to map.  Improve cleanup.
2020-08-09 14:43:58 +02:00
3896a105eb patch 8.2.1403: Vim9: Vim highlighting may fail in cmdline window
Problem:    Vim9: Vim highlighting fails in cmdline window if it uses Vim9
            commands.
Solution:   Allow using :vim9script, :import and :export while in the cmdline
            window. (closes #6656)
2020-08-09 14:33:55 +02:00
94f6c06ac5 patch 8.2.1402: s390x tests always fail
Problem:    s390x tests always fail.
Solution:   Temporarily disable s390x tests.
2020-08-09 14:07:52 +02:00
62a232506d patch 8.2.1401: cannot jump to the last used tabpage
Problem:    Cannot jump to the last used tabpage.
Solution:   Add g<Tab> and tabpagnr('#'). (Yegappan Lakshmanan, closes #6661,
            neovim #11626)
2020-08-09 14:04:42 +02:00
730b248339 patch 8.2.1400: Vim9: test does not delete written files
Problem:    Vim9: test does not delete written files.
Solution:   Correct file names.
2020-08-09 13:02:10 +02:00
efa94447e8 patch 8.2.1399: Vim9: may find imported item in wrong script
Problem:    Vim9: may find imported item in wrong script.
Solution:   When looking up script-local function use the embedded script ID.
            (issue #6644)
2020-08-08 22:16:00 +02:00
daa2f36573 patch 8.2.1398: autoload script sourced twice if sourced directly
Problem:    Autoload script sourced twice if sourced directly.
Solution:   Do not source an autoload script again. (issue #6644)
2020-08-08 21:33:21 +02:00
4a6d1b660f patch 8.2.1397: Vim9: return type of maparg() not adjusted for fourth arg
Problem:    Vim9: return type of maparg() not adjusted for fourth argument.
Solution:   Check if fourth argument is present. (closes #6645)
2020-08-08 17:55:49 +02:00
5a849da57c patch 8.2.1396: Vim9: no error for unexpectedly returning a value
Problem:    Vim9: no error for unexpectedly returning a value.
Solution:   Only set the return type for lambda's.  Make using function type
            in a function reference work.
2020-08-08 16:47:30 +02:00
98b4f145eb patch 8.2.1395: Vim9: no error if declaring a funcref with lower case letter
Problem:    Vim9: no error if declaring a funcref with a lower case letter.
Solution:   Check the name after the type is inferred. Fix confusing name.
2020-08-08 15:46:01 +02:00
2dd0a2c39a patch 8.2.1394: Vim9: compiling a function interferes with command modifiers
Problem:    Vim9: compiling a function interferes with command modifiers.
Solution:   Save and restore command modifiers. (closes #6658)
2020-08-08 15:10:27 +02:00
b7f4fa5177 patch 8.2.1393: insufficient testing for script debugging
Problem:    Insufficient testing for script debugging.
Solution:   Add more tests. (Ben Jackson)
2020-08-08 14:41:52 +02:00
bf8feb5aeb patch 8.2.1392: Vim9: line number incorrect after skipping over comment lines
Problem:    Vim9: error line number incorrect after skipping over comment
            lines.
Solution:   Insert empty lines for skipped lines.
2020-08-08 14:26:31 +02:00
fa211f3c6d patch 8.2.1391: Vim9: no error for shadowing a script function
Problem:    Vim9: no error for shadowing a script function.
Solution:   Check for already defined items. (closes #6652)
2020-08-07 22:00:26 +02:00
1c199f9c70 patch 8.2.1390: Vim9: type error after storing an option value
Problem:    Vim9: type error after storing an option value.
Solution:   Drop the type after a STOREOPT instruction. (closes #6632)
2020-08-07 21:28:34 +02:00
74d95b5b58 patch 8.2.1389: file missing from the distribution
Problem:    File missing from the distribution.
Solution:   Add script_util.vim to the list of distributes files.
2020-08-07 20:47:39 +02:00
dd29f1b056 patch 8.2.1388: Vim9: += only works for numbers
Problem:    Vim9: += only works for numbers.
Solution:   Use += as concatenate for a list. (closes #6646)
2020-08-07 20:46:20 +02:00
e7b1ea0276 Update runtime files. 2020-08-07 19:54:59 +02:00
95dd9f2571 patch 8.2.1387: Vim9: cannot assign to single letter variable with type
Problem:    Vim9: cannot assign to single letter variable with type.
Solution:   Exclude the colon from the variable name. (closes #6647)
2020-08-07 19:28:08 +02:00
994b89d28d patch 8.2.1386: backslash not removed afer space with space in 'isfname'
Problem:    Backslash not removed afer space in option with space in
            'isfname'.
Solution:   Do remove backslash before space, also when it is in 'isfname'.
            (Yasuhiro Matsumoto, closes #6651)
2020-08-07 19:12:41 +02:00
de6804d871 patch 8.2.1385: no testing on ARM
Problem:    No testing on ARM.
Solution:   Add a test on Travis for ARM. (Ozaki Kiichi, closes #6615)
2020-08-07 18:33:19 +02:00
8ce4b7ed85 patch 8.2.1384: no ATTENTION prompt for :vimgrep first match file
Problem:    No ATTENTION prompt for :vimgrep first match file.
Solution:   When there is an existing swap file do not keep the dummy buffer.
            (closes #6649)
2020-08-07 18:12:18 +02:00
9470a4d88a patch 8.2.1383: test 49 is old style
Problem:    Test 49 is old style.
Solution:   Convert test cases to new style. (Yegappan Lakshmanan,
            closes #6638)
2020-08-07 16:49:11 +02:00
8e1986e389 patch 8.2.1382: Vim9: using :import in filetype plugin gives an error
Problem:    Vim9: using :import in filetype plugin gives an error.
Solution:   Allow commands with the EX_LOCK_OK flag. (closes #6636)
2020-08-06 22:11:06 +02:00
56b8dc331d patch 8.2.1381: MS-Windows: crash with Python 3.5 when stdin is redirected
Problem:    MS-Windows: crash with Python 3.5 when stdin is redirected.
Solution:   Reconnect stdin. (Yasuhiro Matsumoto, Ken Takata, closes #6641)
2020-08-06 21:47:11 +02:00
3d945cc925 patch 8.2.1380: Vim9: return type of getreg() is always a string
Problem:    Vim9: return type of getreg() is always a string.
Solution:   Use list of strings when there are three arguments. (closes #6633)
2020-08-06 21:26:59 +02:00
ae95a3946b patch 8.2.1379: curly braces expression ending in " }" does not work
Problem:    Curly braces expression ending in " }" does not work.
Solution:   Skip over white space when checking for "}". (closes #6634)
2020-08-06 16:38:12 +02:00
bbd3e3c357 patch 8.2.1378: cannot put space between function name and paren
Problem:    Cannot put space between function name and paren.
Solution:   Allow this for backwards compatibility.
2020-08-06 11:23:36 +02:00
b8d732e93e patch 8.2.1377: triggering the ATTENTION prompt causes typeahead mess up
Problem:    Triggering the ATTENTION prompt causes typeahead to be messed up.
Solution:   Increment tb_change_cnt. (closes #6541)
2020-08-05 22:07:26 +02:00
803af686e2 patch 8.2.1376: Vim9: expression mapping causes error for using :import
Problem:    Vim9: expression mapping causes error for using :import.
Solution:   Add EX_LOCK_OK to :import and :export. (closes 3606)
2020-08-05 16:20:03 +02:00
c5da1fb7ea patch 8.2.1375: Vim9: method name with digit not accepted
Problem:    Vim9: method name with digit not accepted.
Solution:   Use eval_isnamec() instead of eval_isnamec1(). (closes #6613)
2020-08-05 15:43:44 +02:00
a71e263320 patch 8.2.1374: Vim9: error for assigning empty list to script variable
Problem:    Vim9: error for assigning empty list to script variable.
Solution:   Use t_unknown for empty list member. (closes #6595)
2020-08-05 15:11:03 +02:00
f9b2b49663 patch 8.2.1373: Vim9: no error for assigning to non-existing script var
Problem:    Vim9: no error for assigning to non-existing script var.
Solution:   Check that in Vim9 script the variable was defined. (closes #6630)
2020-08-05 14:34:14 +02:00
fdac71c507 patch 8.2.1372: Vim9: no error for missing white space around operator
Problem:    Vim9: no error for missing white space around operator.
Solution:   Check for white space around ? and :.
2020-08-05 12:44:41 +02:00
3c1c9fd94b patch 8.2.1371: Vim9: no error for missing white space around operator
Problem:    Vim9: no error for missing white space around operator.
Solution:   Check for white space around && and ||.
2020-08-05 12:32:38 +02:00
c753478b82 patch 8.2.1370: MS-Windows: warning for using fstat() with stat_T
Problem:    MS-Windows: warning for using fstat() with stat_T.
Solution:   use _fstat64() if available. (Naruhiko Nishino, closes #6625)
2020-08-05 12:10:50 +02:00
14ddd226da patch 8.2.1369: MS-Windows: autocommand test sometimes fails
Problem:    MS-Windows: autocommand test sometimes fails.
Solution:   Do not rely on the cat command.
2020-08-05 12:02:40 +02:00
ff1cd39cfe patch 8.2.1368: Vim9: no error for missing white space around operator
Problem:    Vim9: no error for missing white space around operator.
Solution:   Check for white space around <, !=, etc.
2020-08-05 11:51:30 +02:00
b4caa163ff patch 8.2.1367: Vim9: no error for missing white space around operator
Problem:    Vim9: no error for missing white space around operator.
Solution:   Check for white space around *, / and %.
2020-08-05 11:36:52 +02:00
a6296200bd patch 8.2.1366: test 49 is old style
Problem:    Test 49 is old style.
Solution:   Convert several tests to new style. (Yegappan Lakshmanan,
            closes #6629)
2020-08-05 11:23:13 +02:00
bb1b5e24ec patch 8.2.1365: Vim9: no error for missing white space around operator
Problem:    Vim9: no error for missing white space around operator.
Solution:   Check for white space. (closes #6618)
2020-08-05 10:53:21 +02:00
282f9c64e5 patch 8.2.1364: invalid memory access when searching for raw string
Problem:    Invalid memory access when searching for raw string.
Solution:   Check for delimiter match before following quote. (closes #6578)
2020-08-04 21:46:18 +02:00
e46a2ed0d8 patch 8.2.1363: test trying to run terminal when it is not supported
Problem:    Test trying to run terminal when it is not supported.
Solution:   Check if Vim can be run in a terminal.
2020-08-04 21:04:57 +02:00
ecd34bf55d patch 8.2.1362: last entry of ":set term=xxx" overwritten by error message
Problem:    Last entry of ":set term=xxx" overwritten by error message when
            'cmdheight' is two or more. (Tony Mechelynck)
Solution:   Output extra line breaks.
2020-08-04 20:17:31 +02:00
6a25026262 patch 8.2.1361: error for white space after expression in assignment
Problem:    Error for white space after expression in assignment.
Solution:   Skip over white space. (closes #6617)
2020-08-04 15:53:01 +02:00
f96e9dec63 patch 8.2.1360: stray error for white space after expression
Problem:    Stray error for white space after expression.
Solution:   Ignore trailing white space. (closes #6608)
2020-08-03 22:39:28 +02:00
8314454648 patch 8.2.1359: Vim9: cannot assign to / register in Vim9 script
Problem:    Vim9: cannot assign to / register in Vim9 script.
Solution:   Adjust check for assignment in Vim9 script. (closes #6567)
2020-08-02 20:40:43 +02:00
434d72cbf2 patch 8.2.1358: Vim9: test fails with +dnd is not available
Problem:    Vim9: test fails with +dnd is not available.
Solution:   Add condition.
2020-08-02 20:03:25 +02:00
658217276f patch 8.2.1357: Vim9: cannot assign to / register
Problem:    Vim9: cannot assign to / register.
Solution:   Adjust check for assignment.
2020-08-02 18:58:54 +02:00
7226e5b19b patch 8.2.1356: Vim9: cannot get the percent register
Problem:    Vim9: cannot get the percent register.
Solution:   Check for readable registers instead of writable. (closes #6566)
2020-08-02 17:33:26 +02:00
c2ee44cc38 patch 8.2.1355: Vim9: no error using :let for options and registers
Problem:    Vim9: no error using :let for options and registers.
Solution:   Give an error. (closes #6568)
2020-08-02 16:59:00 +02:00
aa970abd0a patch 8.2.1354: test 59 is old style
Problem:    Test 59 is old style.
Solution:   Convert into a new style test. (Yegappan Lakshmanan, closes #6604)
2020-08-02 16:10:39 +02:00
8b89614e69 patch 8.2.1353: crash when drawing double-wide character in terminal window
Problem:    Crash when drawing double-wide character in terminal window.
            (Masato Nishihata)
Solution:   Check getcell() returning NULL. (issue #6141)
2020-08-02 15:05:05 +02:00
ad486a0f0d patch 8.2.1352: Vim9: no error for shadowing a script-local function
Problem:    Vim9: no error for shadowing a script-local function by a nested
            function.
Solution:   Check for script-local function. (closes #6586)
2020-08-01 23:22:18 +02:00
bcbf41395f patch 8.2.1351: Vim9: no proper error if using namespace for nested function
Problem:    Vim9: no proper error if using namespace for nested function.
Solution:   Specifically check for a namespace. (closes #6582)
2020-08-01 22:35:13 +02:00
b9a2cac3ef patch 8.2.1350: Vim9: no test for error message when redefining function
Problem:    Vim9: no test for error message when redefining function.
Solution:   Add a test.
2020-08-01 22:23:20 +02:00
eef2102e20 patch 8.2.1349: Vim9: can define a function with the name of an import
Problem:    Vim9: can define a function with the name of an import.
Solution:   Disallow using an existing name. (closes #6585)
2020-08-01 22:16:43 +02:00
e4218b9416 patch 8.2.1348: build failure without the eval feature
Problem:    Build failure without the eval feature.
Solution:   Add #ifdef.
2020-08-01 21:11:38 +02:00
909443028b patch 8.2.1347: cannot easily get the script ID
Problem:    Cannot easily get the script ID.
Solution:   Support expand('<SID>').
2020-08-01 20:45:11 +02:00
491799be50 patch 8.2.1346: small build fails
Problem:    Small build fails.
Solution:   Add #ifdef.
2020-08-01 19:23:43 +02:00
f8992d47cd patch 8.2.1345: Redraw error when using visual block and scroll
Problem:    Redraw error when using visual block and scroll.
Solution:   Add check for w_topline. ( closes #6597)
2020-08-01 19:14:13 +02:00
2c79e9d14d patch 8.2.1344: Vim9: No test for trying to redefine global function
Problem:    Vim9: No test for trying to redefine global function.
Solution:   Add a test.
2020-08-01 18:57:52 +02:00
333894b195 patch 8.2.1343: Vim9: cannot find global function when using g:
Problem:    Vim9: cannot find global function when using g: when local
            function with the same name exists.
Solution:   Find global function when using g:.
2020-08-01 18:53:07 +02:00
f5a48010ef patch 8.2.1342: Vim9: accidentally using "t" gives a confusing error
Problem:    Vim9: accidentally using "x" gives a confusing error.
Solution:   Disallow using ":t" in Vim9 script. (issue #6399)
2020-08-01 17:00:03 +02:00
2ec208172c patch 8.2.1341: build failures
Problem:    Build failures.
Solution:   Add missing error message.
2020-08-01 16:35:08 +02:00
b86abadf87 patch 8.2.1340: some tests fail on Cirrus CI and/or with FreeBSD
Problem:    Some tests fail on Cirrus CI and/or with FreeBSD.
Solution:   Make 'backupskip' empty. Do not run tests as root. Check for
            directory when using viminfo. (Ozaki Kiichi, closes #6596)
2020-08-01 16:08:19 +02:00
2caa1594e7 patch 8.2.1339: Vim9: assigning to global dict variable doesn't work
Problem:    Vim9: assigning to global dict variable doesn't work.
Solution:   Guess variable type based in index type. (issue #6591)
2020-08-01 15:53:19 +02:00
8e4c8c853e patch 8.2.1338: Vim9: assigning to script-local variable doesn't check type
Problem:    Vim9: assigning to script-local variable doesn't check type.
Solution:   Use the type. (issue #6591)
2020-08-01 15:38:38 +02:00
586268721d patch 8.2.1337: Vim9: cannot use empty key in dict assignment
Problem:    Vim9: cannot use empty key in dict assignment.
Solution:   Allow empty key. (closes #6591)
2020-08-01 14:06:38 +02:00
af50e899e7 patch 8.2.1336: build failure on non-Unix systems
Problem:    Build failure on non-Unix systems.
Solution:   Add #ifdef.
2020-08-01 13:22:10 +02:00
4e1d8bd79b patch 8.2.1335: CTRL-C in the GUI doesn't interrupt
Problem:    CTRL-C in the GUI doesn't interrupt. (Sergey Vlasov)
Solution:   Recognize "C" with CTRL modifier as CTRL-C. (issue #6565)
2020-08-01 13:10:14 +02:00
b53da7918c patch 8.2.1334: Github workflow timeout needs tuning
Problem:    Github workflow timeout needs tuning
Solution:   Use a 10 minute timeout. Fail when timing out. (Ken Takata,
            closes #6590)
2020-08-01 12:26:04 +02:00
af8edbb8dc patch 8.2.1333: Vim9: memory leak when using nested global function
Problem:    Vim9: memory leak when using nested global function.
Solution:   Swap from and to when copying the lines.
2020-08-01 00:03:09 +02:00
ce6583568f patch 8.2.1332: Vim9: memory leak when using nested global function
Problem:    Vim9: memory leak when using nested global function.
Solution:   Delete the function when deleting the instruction.  Disable test
            that still causes a leak.
2020-07-31 23:47:12 +02:00
721 changed files with 52813 additions and 31046 deletions

View File

@ -11,6 +11,9 @@ freebsd_12_task:
- NPROC=$(getconf _NPROCESSORS_ONLN)
- ./configure --with-features=${FEATURES}
- make -j${NPROC}
- src/vim --version
test_script:
- make test
- src/vim --version
# run tests as user "cirrus" instead of root
- pw useradd cirrus -m
- chown -R cirrus:cirrus .
- sudo -u cirrus make test

158
.github/CODEOWNERS vendored Normal file
View File

@ -0,0 +1,158 @@
# Lines starting with '#' are comments.
# Each line is a file pattern followed by one or more owners.
# You can use github users with @user or email addresses
# These owners will be the default owners for everything in the repo.
#* @brammool
# Order is important. The last matching pattern has the most precedence.
# So if a pull request only touches javascript files, only these owners
# will be requested to review.
src/iscygpty.* @k-takata
src/libvterm/ @leonerd
runtime/autoload/getscript.vim @cecamp
runtime/autoload/netrw.vim @cecamp
runtime/autoload/netrwFileHandlers.vim @cecamp
runtime/autoload/netrwSettings.vim @cecamp
runtime/autoload/rubycomplete.vim @segfault @dkearns
runtime/autoload/tar.vim @cecamp
runtime/autoload/vimball.vim @cecamp
runtime/autoload/zip.vim @cecamp
runtime/compiler/checkstyle.vim @dkearns
runtime/compiler/cucumber.vim @tpope
runtime/compiler/dart.vim @dkearns
runtime/compiler/dart2js.vim @dkearns
runtime/compiler/dart2native.vim @dkearns
runtime/compiler/dartanalyser.vim @dkearns
runtime/compiler/dartdevc.vim @dkearns
runtime/compiler/dartdoc.vim @dkearns
runtime/compiler/dartfmt.vim @dkearns
runtime/compiler/eruby.vim @dkearns
runtime/compiler/gawk.vim @dkearns
runtime/compiler/gjs.vim @dkearns
runtime/compiler/haml.vim @tpope
runtime/compiler/javac.vim @dkearns
runtime/compiler/jest.vim @dkearns
runtime/compiler/jjs.vim @dkearns
runtime/compiler/jshint.vim @dkearns
runtime/compiler/jsonlint.vim @dkearns
runtime/compiler/lazbuild.vim @dkearns
runtime/compiler/php.vim @dkearns
runtime/compiler/rake.vim @tpope @dkearns
runtime/compiler/rhino.vim @dkearns
runtime/compiler/rspec.vim @tpope @dkearns
runtime/compiler/rubocop.vim @dkearns
runtime/compiler/ruby.vim @tpope @dkearns
runtime/compiler/rubyunit.vim @dkearns
runtime/compiler/sass.vim @tpope
runtime/compiler/se.vim @dkearns
runtime/compiler/shellcheck.vim @dkearns
runtime/compiler/stylelint.vim @dkearns
runtime/compiler/tcl.vim @dkearns
runtime/compiler/tidy.vim @dkearns
runtime/compiler/ts-node.vim @dkearns
runtime/compiler/tsc.vim @dkearns
runtime/compiler/typedoc.vim @dkearns
runtime/compiler/xmllint.vim @dkearns
runtime/compiler/xo.vim @dkearns
runtime/doc/pi_getscript.txt @cecamp
runtime/doc/pi_logipat.txt @cecamp
runtime/doc/pi_netrw.txt @cecamp
runtime/doc/pi_tar.txt @cecamp
runtime/doc/pi_vimball.txt @cecamp
runtime/doc/pi_zip.txt @cecamp
runtime/ftplugin/awk.vim @dkearns
runtime/ftplugin/bst.vim @tpope
runtime/ftplugin/css.vim @dkearns
runtime/ftplugin/cucumber.vim @tpope
runtime/ftplugin/eiffel.vim @dkearns
runtime/ftplugin/eruby.vim @tpope @dkearns
runtime/ftplugin/git.vim @tpope
runtime/ftplugin/gitcommit.vim @tpope
runtime/ftplugin/gitconfig.vim @tpope
runtime/ftplugin/gitrebase.vim @tpope
runtime/ftplugin/gitsendemail.vim @tpope
runtime/ftplugin/haml.vim @tpope
runtime/ftplugin/hgcommit.vim @k-takata
runtime/ftplugin/javascript.vim @dkearns
runtime/ftplugin/javascriptreact.vim @dkearns
runtime/ftplugin/liquid.vim @tpope
runtime/ftplugin/markdown.vim @tpope
runtime/ftplugin/matlab.vim @cecamp
runtime/ftplugin/nsis.vim @k-takata
runtime/ftplugin/pdf.vim @tpope
runtime/ftplugin/ruby.vim @tpope @dkearns
runtime/ftplugin/sass.vim @tpope
runtime/ftplugin/scss.vim @tpope
runtime/ftplugin/tmux.vim @ericpruitt
runtime/ftplugin/typescript.vim @dkearns
runtime/ftplugin/typescriptreact.vim @dkearns
runtime/indent/bst.vim @tpope
runtime/indent/cucumber.vim @tpope
runtime/indent/dosbatch.vim @k-takata
runtime/indent/eruby.vim @tpope @dkearns
runtime/indent/gitconfig.vim @tpope
runtime/indent/haml.vim @tpope
runtime/indent/liquid.vim @tpope
runtime/indent/nsis.vim @k-takata
runtime/indent/ruby.vim @AndrewRadev @dkearns
runtime/indent/sass.vim @tpope
runtime/indent/scss.vim @tpope
runtime/indent/teraterm.vim @k-takata
runtime/plugin/getscriptPlugin.vim @cecamp
runtime/plugin/logiPat.vim @cecamp
runtime/plugin/netrwPlugin.vim @cecamp
runtime/plugin/tarPlugin.vim @cecamp
runtime/plugin/vimballPlugin.vim @cecamp
runtime/plugin/zipPlugin.vim @cecamp
runtime/syntax/amiga.vim @cecamp
runtime/syntax/asm.vim @dkearns
runtime/syntax/asmh8300.vim @dkearns
runtime/syntax/awk.vim @dkearns
runtime/syntax/bst.vim @tpope
runtime/syntax/csh.vim @cecamp
runtime/syntax/cucumber.vim @tpope
runtime/syntax/dcl.vim @cecamp
runtime/syntax/elmfilt.vim @cecamp
runtime/syntax/eruby.vim @tpope @dkearns
runtime/syntax/exports.vim @cecamp
runtime/syntax/git.vim @tpope
runtime/syntax/gitcommit.vim @tpope
runtime/syntax/gitconfig.vim @tpope
runtime/syntax/gitrebase.vim @tpope
runtime/syntax/haml.vim @tpope
runtime/syntax/hgcommit.vim @k-takata
runtime/syntax/lex.vim @cecamp
runtime/syntax/liquid.vim @tpope
runtime/syntax/lisp.vim @cecamp
runtime/syntax/lynx.vim @dkearns
runtime/syntax/mailcap.vim @dkearns
runtime/syntax/make.vim @rohieb
runtime/syntax/make.vim @rohieb
runtime/syntax/maple.vim @cecamp
runtime/syntax/markdown.vim @tpope
runtime/syntax/netrw.vim @cecamp
runtime/syntax/nsis.vim @k-takata
runtime/syntax/pdf.vim @tpope
runtime/syntax/php.vim @TysonAndre
runtime/syntax/privoxy.vim @dkearns
runtime/syntax/rpcgen.vim @cecamp
runtime/syntax/ruby.vim @dkearns
runtime/syntax/sass.vim @tpope
runtime/syntax/scss.vim @tpope
runtime/syntax/sh.vim @cecamp
runtime/syntax/sm.vim @cecamp
runtime/syntax/tags.vim @cecamp
runtime/syntax/teraterm.vim @k-takata
runtime/syntax/tex.vim @cecamp
runtime/syntax/tidy.vim @dkearns
runtime/syntax/tmux.vim @ericpruitt
runtime/syntax/vim.vim @cecamp
runtime/syntax/wget.vim @dkearns
runtime/syntax/xbl.vim @dkearns
runtime/syntax/xmath.vim @cecamp
runtime/syntax/xslt.vim @Boobies
runtime/syntax/xxd.vim @cecamp
runtime/syntax/yacc.vim @cecamp

View File

@ -3,7 +3,7 @@ name: GitHub CI
on:
push:
branches:
- '*'
- '**'
pull_request:
env:
@ -39,6 +39,7 @@ jobs:
runs-on: windows-latest
strategy:
fail-fast: false
matrix:
toolchain: [msvc, mingw]
arch: [x64, x86]
@ -74,8 +75,8 @@ jobs:
git config --global core.autocrlf input
python_dir=$(cat "/proc/${{ matrix.cygreg }}/HKEY_LOCAL_MACHINE/SOFTWARE/Python/PythonCore/${PYTHON_VER_DOT}/InstallPath/@")
python3_dir=$(cat "/proc/${{ matrix.cygreg }}/HKEY_LOCAL_MACHINE/SOFTWARE/Python/PythonCore/${PYTHON3_VER_DOT}${{ matrix.pyreg }}/InstallPath/@")
echo "::set-env name=PYTHON_DIR::$python_dir"
echo "::set-env name=PYTHON3_DIR::$python3_dir"
echo "PYTHON_DIR=$python_dir" >> $GITHUB_ENV
echo "PYTHON3_DIR=$python3_dir" >> $GITHUB_ENV
- uses: msys2/setup-msys2@v2
if: matrix.toolchain == 'mingw'
@ -127,6 +128,11 @@ jobs:
)
goto :eof
- name: Copy src directory to src2
shell: cmd
run: |
xcopy src src2\ /E > nul
- name: Build (MSVC)
if: matrix.toolchain == 'msvc'
shell: cmd
@ -196,10 +202,6 @@ jobs:
echo %COL_GREEN%vim version:%COL_RESET%
.\vim --version || exit 1
mkdir ..\src2
xcopy testdir ..\src2\testdir\ /E > nul || exit 1
copy evalfunc.c ..\src2 > nul
echo %COL_GREEN%Start testing vim in background.%COL_RESET%
start cmd /c "cd ..\src2\testdir & nmake -nologo -f Make_dos.mak VIMPROG=..\..\src\vim > nul & echo done>done.txt"
@ -210,14 +212,18 @@ jobs:
echo %COL_GREEN%Wait for vim tests to finish.%COL_RESET%
cd ..\src2\testdir
:: Wait about 5 minutes.
for /L %%i in (1,1,300) do (
:: Wait about 10 minutes.
for /L %%i in (1,1,60) do (
if exist done.txt goto exitloop
ping -n 2 localhost > nul
timeout 10
)
echo %COL_RED%Timed out.%COL_RESET%
set timeout=1
:exitloop
echo %COL_GREEN%Test results of vim:%COL_RESET%
if exist messages type messages
nmake -nologo -f Make_dos.mak report VIMPROG=..\..\src\vim || exit 1
if "%timeout%"=="1" (
echo %COL_RED%Timed out.%COL_RESET%
exit 1
)

71
.github/workflows/codeql-analysis.yml vendored Normal file
View File

@ -0,0 +1,71 @@
# For most projects, this workflow file will not need changing; you simply need
# to commit it to your repository.
#
# You may wish to alter this file to override the set of languages analyzed,
# or to provide custom queries or build logic.
name: "CodeQL"
on:
push:
branches: [master]
pull_request:
# The branches below must be a subset of the branches above
branches: [master]
schedule:
- cron: '0 18 * * 1'
jobs:
analyze:
name: Analyze
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
# Override automatic language detection by changing the below list
# Supported options are ['csharp', 'cpp', 'go', 'java', 'javascript', 'python']
language: ['cpp', 'python']
# Learn more...
# https://docs.github.com/en/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#overriding-automatic-language-detection
steps:
- name: Checkout repository
uses: actions/checkout@v2
with:
# We must fetch at least the immediate parents so that if this is
# a pull request then we can checkout the head.
fetch-depth: 2
# If this run was triggered by a pull request event, then checkout
# the head of the pull request instead of the merge commit.
- run: git checkout HEAD^2
if: ${{ github.event_name == 'pull_request' }}
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v1
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
# By default, queries listed here will override any specified in a config file.
# Prefix the list here with "+" to use these queries and those in the config file.
# queries: ./path/to/local/query, your-org/your-repo/queries@main
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@v1
# Command-line programs to run using the OS shell.
# 📚 https://git.io/JvXDl
# ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
# and modify them (or add more) to build your code if your project
# uses a compiled language
#- run: |
# make bootstrap
# make release
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v1

View File

@ -1,26 +1,32 @@
language: c
env:
global:
- BUILD=yes TEST=test CONFOPT= LEAK_CFLAGS="-DEXITFREE" SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=no LOG_DIR="$TRAVIS_BUILD_DIR/logs"
_anchors:
envs:
- &tiny-nogui
BUILD=yes TEST=test FEATURES=tiny CONFOPT="--disable-gui" LEAK_CFLAGS="-DEXITFREE" SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=no
FEATURES=tiny TEST=testtiny CONFOPT="--disable-gui"
- &tiny
BUILD=yes TEST=test FEATURES=tiny CONFOPT= LEAK_CFLAGS="-DEXITFREE" SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=no
FEATURES=tiny TEST=testtiny
- &small
BUILD=yes TEST=test FEATURES=small CONFOPT= LEAK_CFLAGS="-DEXITFREE" SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=no
FEATURES=small TEST=testtiny
- &normal
BUILD=yes TEST=test FEATURES=normal CONFOPT= LEAK_CFLAGS="-DEXITFREE" SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=no
FEATURES=normal
- &linux-huge
BUILD=yes TEST="scripttests test_libvterm" CFLAGS="--coverage -DUSE_GCOV_FLUSH" LDFLAGS=--coverage FEATURES=huge LEAK_CFLAGS="-DEXITFREE" SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=no
FEATURES=huge TEST="scripttests test_libvterm"
CONFOPT="--enable-perlinterp --enable-pythoninterp --enable-python3interp --enable-rubyinterp --enable-luainterp --enable-tclinterp"
- &osx-huge # macOS build
BUILD=yes TEST=test FEATURES=huge LEAK_CFLAGS="-DEXITFREE" SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=no
CONFOPT="--enable-perlinterp --enable-pythoninterp --enable-rubyinterp --enable-luainterp --enable-tclinterp"
FEATURES=huge
CONFOPT="--enable-perlinterp --enable-python3interp --enable-rubyinterp --enable-luainterp --enable-tclinterp"
- &unittests
BUILD=no TEST=unittests CFLAGS="--coverage -DUSE_GCOV_FLUSH" LDFLAGS=--coverage FEATURES=huge LEAK_CFLAGS="-DEXITFREE" SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=yes
BUILD=no TEST=unittests FEATURES=huge CHECK_AUTOCONF=yes
- &coverage
CFLAGS="--coverage -DUSE_GCOV_FLUSH" LDFLAGS=--coverage
- &asan # ASAN build
SANITIZER_CFLAGS="-g -O1 -DABORT_ON_INTERNAL_ERROR -DEXITFREE -fsanitize=address -fno-omit-frame-pointer"
ASAN_OPTIONS="print_stacktrace=1 log_path=asan" LSAN_OPTIONS="suppressions=$TRAVIS_BUILD_DIR/src/testdir/lsan-suppress.txt"
SANITIZER_CFLAGS="-g -O1 -DABORT_ON_INTERNAL_ERROR -DEXITFREE -fsanitize-recover=all -fsanitize=address -fsanitize=undefined -fno-omit-frame-pointer"
ASAN_OPTIONS="print_stacktrace=1 log_path=$LOG_DIR/asan" UBSAN_OPTIONS="print_stacktrace=1 log_path=$LOG_DIR/ubsan" LSAN_OPTIONS="suppressions=$TRAVIS_BUILD_DIR/src/testdir/lsan-suppress.txt"
- &shadowopt
SHADOWOPT="-C src/shadow" SRCDIR=./src/shadow
@ -29,7 +35,7 @@ _anchors:
dist: bionic
addons:
apt:
packages:
packages: &apt-packages
- autoconf
- clang
- lcov
@ -63,7 +69,11 @@ _anchors:
fi
before_script:
- sudo sysctl -w net.ipv6.conf.lo.disable_ipv6=0
- sudo bash ci/load-snd-dummy.sh || true
# It appears we can load "snd-dummy" on only amd64.
- |
if [[ "${TRAVIS_CPU_ARCH}" = amd64 ]]; then
sudo bash ci/load-snd-dummy.sh || true
fi
- sudo usermod -a -G audio $USER
- do_test() { sg audio "sg $(id -gn) '$*'"; }
@ -87,7 +97,7 @@ _anchors:
# Lua is not installed on macOS
- export LUA_PREFIX=/usr/local
coverage: &coverage
coverage: &eval-coverage
# needed for https support for coveralls building cffi only works with gcc,
# not with clang
- CC=gcc pip install --user cpp-coveralls pyopenssl ndg-httpsclient pyasn1
@ -98,13 +108,14 @@ _anchors:
# Update pyenv to fix the error "/opt/pyenv/libexec/pyenv: line 43: cd: asan_symbolize-6.0: Not a directory".
# https://github.com/pyenv/pyenv/issues/580
- (cd "${PYENV_ROOT}" && git fetch -p origin && git checkout "$(git rev-list --tags -n1)") &>/dev/null || true
- find . -type f -name 'asan.*' -size +0 2>/dev/null | xargs grep -l '^==[[:digit:]]*==ERROR:' | xargs -I{} -n1 -t asan_symbolize -l{}
- for f in $(grep -l '#[[:digit:]]* *0x[[:digit:]a-fA-F]*' "$LOG_DIR"/*); do asan_symbolize-11 -l "$f"; done
branches:
except:
- /^v[0-9]/
script:
- mkdir -p "$LOG_DIR"
- NPROC=$(getconf _NPROCESSORS_ONLN)
- set -o errexit
- echo -e "\\033[33;1mConfiguring Vim\\033[0m" && echo -en "travis_fold:start:configure\\r\\033[0K"
@ -125,7 +136,7 @@ script:
# Append various warning flags to CFLAGS.
# BSD sed needs backup extension specified.
sed -i.bak -f ci/config.mk.sed ${SRCDIR}/auto/config.mk
if [[ "${TRAVIS_OS_NAME}" = "osx" ]]; then
if [[ "${TRAVIS_OS_NAME}" = "osx" ]] || [[ "${CC}" = "clang-11" ]]; then
# On macOS, the entity of gcc is clang.
sed -i.bak -f ci/config.mk.clang.sed ${SRCDIR}/auto/config.mk
else
@ -145,6 +156,15 @@ script:
- echo -e "\\033[33;1mTesting Vim\\033[0m" && echo -en "travis_fold:start:test\\r\\033[0K"
- do_test make ${SHADOWOPT} ${TEST} && FOLD_MARKER=travis_fold
- echo -en "${FOLD_MARKER}:end:test\\r\\033[0K"
- |
# Not all sanitizers will cause the tests to fail. This helps since we can
# see all the failures instead of just the first one, but we still want the
# test phase to fail if any sanitizer issues are detected.
if [[ -n "${ASAN_OPTIONS}" ]]; then
if grep -q '#[[:digit:]]* *0x[[:digit:]a-fA-F]*' "$LOG_DIR"/*; then
false
fi
fi
# Instead of using all environments with both compilers on both systems,
# exclude some builds on mac os x and linux.
@ -208,22 +228,39 @@ jobs:
compiler: gcc
env: *linux-huge
services: []
- <<: *linux
arch: arm64
name: huge/gcc-arm64
compiler: gcc
env: *linux-huge
services: []
- <<: *linux
name: huge+coverage/clang
compiler: clang
env:
- *linux-huge
- *coverage
# Clang cannot compile test_libvterm with "--coverage" flag.
- TEST=scripttests
after_success: *coverage
after_success: *eval-coverage
- <<: *linux
name: huge+coverage/gcc
compiler: gcc
env: *linux-huge
after_success: *coverage
env:
- *linux-huge
- *coverage
after_success: *eval-coverage
- <<: *linux # ASAN
name: huge+asan/gcc
compiler: gcc
name: huge+asan/clang
compiler: clang-11
addons:
apt:
sources:
- sourceline: 'deb http://apt.llvm.org/bionic/ llvm-toolchain-bionic-11 main'
key_url: 'https://apt.llvm.org/llvm-snapshot.gpg.key'
packages:
- *apt-packages
- clang-11
env:
- *linux-huge
- *asan
@ -233,13 +270,16 @@ jobs:
compiler: gcc
env:
- *linux-huge
- *coverage
- TEST="-C src testgui"
after_success: *coverage
after_success: *eval-coverage
- <<: *linux
name: unittests+coverage/gcc
compiler: gcc
env: *unittests
after_success: *coverage
env:
- *unittests
- *coverage
after_success: *eval-coverage
- <<: *linux
name: vimtags/gcc
compiler: gcc

View File

@ -10,6 +10,8 @@ SRC_ALL = \
.travis.yml \
.cirrus.yml \
.github/workflows/ci-windows.yaml \
.github/workflows/codeql-analysis.yml \
.github/CODEOWNERS \
appveyor.yml \
ci/appveyor.bat \
ci/if_ver*.vim \
@ -45,6 +47,7 @@ SRC_ALL = \
src/drawline.c \
src/drawscreen.c \
src/edit.c \
src/errors.h \
src/eval.c \
src/evalbuffer.c \
src/evalfunc.c \
@ -73,6 +76,7 @@ SRC_ALL = \
src/highlight.c \
src/indent.c \
src/insexpand.c \
src/job.c \
src/json.c \
src/json_test.c \
src/kword_test.c \
@ -149,6 +153,7 @@ SRC_ALL = \
src/vim9compile.c \
src/vim9execute.c \
src/vim9script.c \
src/vim9type.c \
src/viminfo.c \
src/winclip.c \
src/window.c \
@ -172,12 +177,12 @@ SRC_ALL = \
src/testdir/setup_gui.vim \
src/testdir/shared.vim \
src/testdir/vim9.vim \
src/testdir/script_util.vim \
src/testdir/summarize.vim \
src/testdir/term_util.vim \
src/testdir/view_util.vim \
src/testdir/test[0-9]*.ok \
src/testdir/test[0-9]*a.ok \
src/testdir/test49.vim \
src/testdir/test77a.ok \
src/testdir/test83-tags? \
src/testdir/test77a.com \
src/testdir/test_*.vim \
@ -247,6 +252,7 @@ SRC_ALL = \
src/proto/highlight.pro \
src/proto/indent.pro \
src/proto/insexpand.pro \
src/proto/job.pro \
src/proto/json.pro \
src/proto/list.pro \
src/proto/locale.pro \
@ -303,6 +309,7 @@ SRC_ALL = \
src/proto/vim9compile.pro \
src/proto/vim9execute.pro \
src/proto/vim9script.pro \
src/proto/vim9type.pro \
src/proto/viminfo.pro \
src/proto/winclip.pro \
src/proto/window.pro \
@ -617,7 +624,7 @@ SRC_AMI = \
README_amisrc.txt.info \
src.info \
src/INSTALLami.txt \
src/Make_morph.mak \
src/Make_ami.mak \
src/os_amiga.c \
src/os_amiga.h \
src/proto/os_amiga.pro \
@ -638,13 +645,11 @@ SRC_HAIKU = \
SRC_MAC = \
src/INSTALLmac.txt \
src/dehqx.py \
src/gui_mac.c \
src/os_mac_rsrc/*.icns \
src/os_mac.h \
src/os_mac.rsr.hqx \
src/os_mac_conv.c \
src/os_macosx.m \
src/proto/gui_mac.pro \
src/proto/os_mac_conv.pro \
# source files for VMS (in the extra archive)
@ -1027,6 +1032,8 @@ LANG_SRC = \
src/po/README_mvc.txt \
src/po/check.vim \
src/po/cleanup.vim \
src/po/tojavascript.vim \
src/po/fixfilenames.vim \
src/po/Makefile \
src/po/Make_all.mak \
src/po/Make_cyg.mak \

View File

@ -32,7 +32,7 @@ first:
# Some make programs use the last target for the $@ default; put the other
# targets separately to always let $@ expand to "first" by default.
all install uninstall tools config configure reconfig proto depend lint tags types test scripttests test_libvterm unittests testclean clean distclean:
all install uninstall tools config configure reconfig proto depend lint tags types test scripttests testtiny test_libvterm unittests testclean clean distclean:
@if test ! -f src/auto/config.mk; then \
cp src/config.mk.dist src/auto/config.mk; \
fi

View File

@ -5,8 +5,8 @@
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!
WARNING: The Vim9 script features are still under development, anything can
break!
# Why Vim9?
@ -52,7 +52,7 @@ 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:
the text. For example, reindent all the lines:
``` vim
let totallen = 0
@ -80,7 +80,7 @@ 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
## 2. DEPRIORITIZE 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
@ -91,14 +91,14 @@ Instead of using script language support in Vim:
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.
* No priority for the built-in language interfaces. They will have to be kept
for backwards compatibility, but many users won't need a Vim build with these
interfaces.
* 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
Altogether 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
@ -140,6 +140,9 @@ 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!
To avoid having more variations, the syntax inside a compiled function is the
same as in Vim9 script. Thus you have legacy syntax and Vim9 syntax.
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

View File

@ -16,7 +16,6 @@ src/os_amiga.* Files for the Amiga port.
src/os_msdos.*
src/os_dos.* Files for the MS-DOS port.
src/gui_mac.*
src/os_mac.* Files for the Mac port.
src/os_vms* Files for the VMS port.

View File

@ -3,6 +3,6 @@ set -e
if ! modprobe snd-dummy; then
# snd-dummy is contained in linux-modules-extra (if exists)
apt install -y "linux-modules-extra-$(uname -r)"
apt-get install -yq --no-install-suggests --no-install-recommends "linux-modules-extra-$(uname -r)"
modprobe snd-dummy
fi

View File

@ -174,6 +174,7 @@ Page custom SetCustom ValidateCustom
!include "lang\german.nsi"
!include "lang\italian.nsi"
!include "lang\japanese.nsi"
!include "lang\russian.nsi"
!include "lang\simpchinese.nsi"
!include "lang\tradchinese.nsi"
!include "lang\turkish.nsi"

View File

@ -58,10 +58,10 @@ LangString str_desc_console ${LANG_ITALIAN} \
"Versione console di Vim (vim.exe)."
LangString str_section_batch ${LANG_ITALIAN} \
"Crea file di invocazione (MS-DOS) .bat"
"Crea file .bat"
LangString str_desc_batch ${LANG_ITALIAN} \
"Crea file di invocazione .bat per varianti di Vim nella directory \
di Windows, per utilizzo da linea di comando (MS-DOS)."
"Crea file .bat per varianti di Vim nella directory \
di Windows, per utilizzo da riga di comando."
LangString str_group_icons ${LANG_ITALIAN} \
"Crea icone per Vim"

287
nsis/lang/russian.nsi Normal file
View File

@ -0,0 +1,287 @@
# vi:set ts=8 sts=4 sw=4 et fdm=marker:
#
# russian.nsi: Russian language strings for gvim NSIS installer.
#
# Locale ID : 1049
# Locale name : ru-RU
# fileencoding : UTF-8
# Author : Restorer
!insertmacro MUI_LANGUAGE "Russian"
# Overwrite the default translation.
# These strings should be always English. Otherwise dosinst.c fails.
LangString ^SetupCaption ${LANG_RUSSIAN} \
"$(^Name) Setup"
LangString ^UninstallCaption ${LANG_RUSSIAN} \
"$(^Name) Uninstall"
##############################################################################
# MUI Configuration Strings {{{1
##############################################################################
#LangString str_dest_folder ${LANG_RUSSIAN} \
# "Маршрут к каталогу установки (должен оканчиваться каталогом $\"vim$\")"
LangString str_show_readme ${LANG_RUSSIAN} \
"После окончания установки ознакомиться с кратким описанием"
# Install types:
LangString str_type_typical ${LANG_RUSSIAN} \
"Стандартная"
LangString str_type_minimal ${LANG_RUSSIAN} \
"Минимальная"
LangString str_type_full ${LANG_RUSSIAN} \
"Полная"
##############################################################################
# Section Titles & Description {{{1
##############################################################################
LangString str_section_old_ver ${LANG_RUSSIAN} \
"Удаление предыдущих версий"
LangString str_desc_old_ver ${LANG_RUSSIAN} \
"Будут удалены предыдущие установленные версии программы"
LangString str_section_exe ${LANG_RUSSIAN} \
"Графический интерфейс и вспомогательные файлы"
LangString str_desc_exe ${LANG_RUSSIAN} \
"Графический интерфейс программы Vim и все необходимые для этого файлы. \
Это обязательный компонент"
LangString str_section_console ${LANG_RUSSIAN} \
"Консольная программа Vim"
LangString str_desc_console ${LANG_RUSSIAN} \
"Вариант редактора Vim (vim.exe), используемый в командной оболочке"
LangString str_section_batch ${LANG_RUSSIAN} \
"Создать командные файлы"
LangString str_desc_batch ${LANG_RUSSIAN} \
"Создание командных bat-файлов позволяющих работать с редактором \
Vim из командной строки Windows"
LangString str_group_icons ${LANG_RUSSIAN} \
"Создать ярлыки для редактора Vim"
LangString str_desc_icons ${LANG_RUSSIAN} \
"Создание ярлыков редактора Vim для облегчения запуска программы"
LangString str_section_desktop ${LANG_RUSSIAN} \
"На Рабочем столе"
LangString str_desc_desktop ${LANG_RUSSIAN} \
"Создание ярлыков программы Gvim на Рабочем столе"
LangString str_section_start_menu ${LANG_RUSSIAN} \
"В меню кнопки Пуск"
LangString str_desc_start_menu ${LANG_RUSSIAN} \
"Создание ярлыков программы Gvim в меню кнопки Пуск"
#LangString str_section_quick_launch ${LANG_RUSSIAN} \
# "На панели быстрого запуска"
#LangString str_desc_quick_launch ${LANG_RUSSIAN} \
# "Создание ярлыков программы GVim на панели быстрого запуска"
LangString str_section_edit_with ${LANG_RUSSIAN} \
"В контекстном меню"
LangString str_desc_edit_with ${LANG_RUSSIAN} \
"Добавление вызова программы Gvim в пункт $\"Открыть с помощью...$\" контекстного меню"
#LangString str_section_edit_with32 ${LANG_RUSSIAN} \
# "32-разрядная версия программы"
#LangString str_desc_edit_with32 ${LANG_RUSSIAN} \
# "Добавление вызова программы Gvim в пункт $\"Открыть с помощью...$\" контекстного меню \
# для 32-разрядных приложений"
#LangString str_section_edit_with64 ${LANG_RUSSIAN} \
# "64-разрядная версия программы"
#LangString str_desc_edit_with64 ${LANG_RUSSIAN} \
# "Добавление вызова программы Gvim в пункт $\"Открыть с помощью...$\" контекстного меню \
# для 64-разрядных приложений"
LangString str_section_vim_rc ${LANG_RUSSIAN} \
"Настройки программы по умолчанию"
LangString str_desc_vim_rc ${LANG_RUSSIAN} \
"Создание файла _vimrc с предустановленными настройками, если нет других \
файлов настроек"
LangString str_group_plugin ${LANG_RUSSIAN} \
"Создать каталог для подключаемых модулей"
LangString str_desc_plugin ${LANG_RUSSIAN} \
"Создание каталога для размещения подключаемых модулей, которые расширяют \
возможности редактора Vim"
LangString str_section_plugin_home ${LANG_RUSSIAN} \
"Личный каталог"
LangString str_desc_plugin_home ${LANG_RUSSIAN} \
"Создание каталога для подключаемых модулей в домашнем каталоге пользователя"
LangString str_section_plugin_vim ${LANG_RUSSIAN} \
"Общий каталог"
LangString str_desc_plugin_vim ${LANG_RUSSIAN} \
"Создание каталога для подключаемых модулей в каталоге установки редактора Vim. \
Модули в этом каталоге будут доступны для любого пользователя \
зарегистрировавшегося в системе"
LangString str_section_vis_vim ${LANG_RUSSIAN} \
"Подключаемый модуль VisVim"
LangString str_desc_vis_vim ${LANG_RUSSIAN} \
"Подключаемый модуль VisVim используется для интеграции с Microsoft Visual Studio"
LangString str_section_nls ${LANG_RUSSIAN} \
"Поддержка региональных языков"
LangString str_desc_nls ${LANG_RUSSIAN} \
"Установка файлов для поддержки региональных языков операционной системы"
LangString str_unsection_register ${LANG_RUSSIAN} \
"Отменить регистрацию компонентов программы Vim"
LangString str_desc_unregister ${LANG_RUSSIAN} \
"Отмена регистрации компонентов программы Vim в операционной системе"
LangString str_unsection_exe ${LANG_RUSSIAN} \
"Удалить файлы редактора Vim"
LangString str_desc_rm_exe ${LANG_RUSSIAN} \
"Удаление всех исполняемых и вспомогательных файлов редактора Vim"
LangString str_ungroup_plugin ${LANG_RUSSIAN} \
"Удалить каталог подключаемых модулей"
LangString str_desc_rm_plugin ${LANG_RUSSIAN} \
"Удаление каталога подключаемых модулей, если в нём нет файлов"
LangString str_unsection_plugin_home ${LANG_RUSSIAN} \
"Личный каталог"
LangString str_desc_rm_plugin_home ${LANG_RUSSIAN} \
"Удаление каталога подключаемых модулей из домашнего каталога пользователя"
LangString str_unsection_plugin_vim ${LANG_RUSSIAN} \
"Общий каталог"
LangString str_desc_rm_plugin_vim ${LANG_RUSSIAN} \
"Удаление каталога подключаемых модулей из каталога установки редактора Vim"
LangString str_unsection_rootdir ${LANG_RUSSIAN} \
"Удалить основной каталог программы Vim"
LangString str_desc_rm_rootdir ${LANG_RUSSIAN} \
"Удаление основного каталога программы Vim. В этом каталоге находятся файлы \
настроек!"
##############################################################################
# Messages {{{1
##############################################################################
#LangString str_msg_too_many_ver ${LANG_RUSSIAN} \
# "Обнаружено предыдущих версий программы Vim: $vim_old_ver_count.$\r$\n\
# Данная программа установки может удалить не более ${VIM_MAX_OLD_VER}.$\r$\n\
# Удалить лишние версии программы Vim и повторите установку"
#LangString str_msg_invalid_root ${LANG_RUSSIAN} \
# "Недопустимый каталог установки программы Vim $vim_install_root!$\r$\n\
# Маршрут установки должен оканчиваться каталогом $\"vim$\""
#LangString str_msg_bin_mismatch ${LANG_RUSSIAN} \
# "Недопустимый маршрут к каталогу с исполняемыми файлами!$\r$\n$\r$\n\
# Маршрут к каталогу с исполняемыми файлами должен быть $\"$vim_bin_path$\",$\r$\n\
# но от операционной системы получен как $\"$INSTDIR$\"."
#LangString str_msg_vim_running ${LANG_RUSSIAN} \
# "Программа Vim сейчас работает.$\r$\n\
# Прежде чем продолжить, закройте все работающие редакторы Vim"
#LangString str_msg_register_ole ${LANG_RUSSIAN} \
# "Попытка зарегистрировать компоненты программы Vim в пространстве OLE. \
# Но не получено уведомление об успешности данной операции"
#LangString str_msg_unreg_ole ${LANG_RUSSIAN} \
# "Попытка отменить регистрацию компонентов программы Vim в пространстве OLE. \
# Но не получено уведомление об успешности данной операции"
#LangString str_msg_rm_start ${LANG_RUSSIAN} \
# "Выполняется удаление следующих версий программы:"
#LangString str_msg_rm_fail ${LANG_RUSSIAN} \
# "Произошёл сбой при выполнении удаления следующих версий программы:"
#LangString str_msg_no_rm_key ${LANG_RUSSIAN} \
# "Не удалось найти раздел реестра, содержащий информацию об удалении программы"
#LangString str_msg_no_rm_reg ${LANG_RUSSIAN} \
# "Не удалось найти программу выполняющую удаление, указанную в разделе реестра"
#LangString str_msg_no_rm_exe ${LANG_RUSSIAN} \
# "Отсутствуют права на доступ к программе, выполняющей удаление"
#LangString str_msg_rm_copy_fail ${LANG_RUSSIAN} \
# "Произошла ошибка при копировании программы удаления во временный каталог"
#LangString str_msg_rm_run_fail ${LANG_RUSSIAN} \
# "Произошёл сбой при запуске программы, выполняющей удаление"
#LangString str_msg_abort_install ${LANG_RUSSIAN} \
# "Установка программы была отменена"
LangString str_msg_install_fail ${LANG_RUSSIAN} \
"Произошла ошибка при установке программы. Попробуйте повторить установку \
немного попозже"
# когда луна будет в другой фазе и ветер должен дуть с юго‐запада
LangString str_msg_rm_exe_fail ${LANG_RUSSIAN} \
"Некоторые файлы не были удалены из каталога $0 $\r$\n\
Необходимо выполнить их удаление самостоятельно"
#LangString str_msg_rm_root_fail ${LANG_RUSSIAN} \
# "Внимание! В каталоге $\"$vim_install_root$\" содержатся файлы. Удаление каталога не выполнено"
LangString str_msg_uninstalling ${LANG_RUSSIAN} \
"Удаление предыдущих версий программ..."
LangString str_msg_registering ${LANG_RUSSIAN} \
"Регистрация компонентов программы в системе..."
LangString str_msg_unregistering ${LANG_RUSSIAN} \
"Отмена регистрации компонентов программы в системе..."
##############################################################################
# Dialog Box {{{1
##############################################################################
LangString str_vimrc_page_title ${LANG_RUSSIAN} \
"Установка параметров программы"
LangString str_vimrc_page_subtitle ${LANG_RUSSIAN} \
"Параметры, используемые для клавиатуры, «мыши» и функциональности программы"
LangString str_msg_compat_title ${LANG_RUSSIAN} \
" Варианты использования программы "
LangString str_msg_compat_desc ${LANG_RUSSIAN} \
"Совместимость и функциональность программы"
LangString str_msg_compat_vi ${LANG_RUSSIAN} \
"Работа в варианте совместимости с редактором Vi"
LangString str_msg_compat_vim ${LANG_RUSSIAN} \
"Работа в варианте функциональности редактора Vim"
LangString str_msg_compat_defaults ${LANG_RUSSIAN} \
"Работа редактора Vim с некоторыми улучшениями (файл defaults.vim)"
LangString str_msg_compat_all ${LANG_RUSSIAN} \
"Работа редактора Vim со всеми улучшениями (файл vimrc_example.vim). \
Используется по умолчанию"
LangString str_msg_keymap_title ${LANG_RUSSIAN} \
" Клавиатурные команды "
LangString str_msg_keymap_desc ${LANG_RUSSIAN} \
"Клавиатурные команды используемые в ОС Windows (CTRL+V, CTRL+C, CTRL+S, CTRL+F и т. п.)"
LangString str_msg_keymap_default ${LANG_RUSSIAN} \
"Не изменять клавиатурные команды. Использовать принятые в редакторе Vim"
LangString str_msg_keymap_windows ${LANG_RUSSIAN} \
"Изменить указанные клавиатурные команды"
LangString str_msg_mouse_title ${LANG_RUSSIAN} \
" Манипулятор «мышь» "
LangString str_msg_mouse_desc ${LANG_RUSSIAN} \
"Действий правой и левой кнопки манипулятора «мышь»"
LangString str_msg_mouse_default ${LANG_RUSSIAN} \
"Правая кнопка — всплывающее меню, левая кнопка — режим визуальный"
LangString str_msg_mouse_windows ${LANG_RUSSIAN} \
"Правая кнопка — всплывающее меню, левая кнопка — режим выборки (как в ОС Windows)"
LangString str_msg_mouse_unix ${LANG_RUSSIAN} \
"Правая кнопка — расширяемый режим выбора, левая кнопка — режим визуальный (как в UNIXподобных ОС)"

View File

@ -1,7 +1,7 @@
" Vim functions for file type detection
"
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2020 Mar 30
" Last Change: 2020 Aug 17
" These functions are moved here from runtime/filetype.vim to make startup
" faster.
@ -575,7 +575,7 @@ endfunc
let s:ft_rules_udev_rules_pattern = '^\s*\cudev_rules\s*=\s*"\([^"]\{-1,}\)/*".*'
func dist#ft#FTRules()
let path = expand('<amatch>:p')
if path =~ '^/\(etc/udev/\%(rules\.d/\)\=.*\.rules\|lib/udev/\%(rules\.d/\)\=.*\.rules\)$'
if path =~ '/\(etc/udev/\%(rules\.d/\)\=.*\.rules\|\%(usr/\)\=lib/udev/\%(rules\.d/\)\=.*\.rules\)$'
setf udevrules
return
endif

View File

@ -1,7 +1,9 @@
" Vim completion script
" Language: Java Script
" Maintainer: Mikolaj Machowski ( mikmach AT wp DOT pl )
" Last Change: 2017 Mar 04
" Maintainer: Jay Sitter (jay@jaysitter.com)
" URL: https://github.com/jsit/javascriptcomplete.vim/
" Previous Maintainer: Mikolaj Machowski ( mikmach AT wp DOT pl )
" Last Change: 2020 Jul 30
function! javascriptcomplete#CompleteJS(findstart, base)
if a:findstart
@ -154,12 +156,30 @@ function! javascriptcomplete#CompleteJS(findstart, base)
\ 'text', 'vLink']
let bodys = bodyprop
" Document - document.
let docuprop = ['anchors', 'applets', 'childNodes', 'embeds', 'forms', 'images', 'links', 'stylesheets',
\ 'body', 'cookie', 'documentElement', 'domain', 'lastModified', 'referrer', 'title', 'URL']
let documeth = ['close', 'createAttribute', 'createElement', 'createTextNode', 'focus', 'getElementById',
\ 'getElementsByName', 'getElementsByTagName', 'open', 'write', 'writeln',
\ 'onClick', 'onDblClick', 'onFocus', 'onKeyDown', 'onKeyPress', 'onKeyUp',
\ 'onMouseDown', 'onMouseMove', 'onMouseOut', 'onMouseOver', 'onMouseUp', 'onResize']
let docuprop = ['anchors', 'body', 'characterSet', 'doctype',
\ 'documentElement', 'documentURI', 'embeds', 'fonts', 'forms',
\ 'head', 'hidden', 'images', 'implementation', 'lastStyleSheetSet',
\ 'links', 'plugins', 'preferredStyleSheetSet', 'scripts',
\ 'scrollingElement', 'selectedStyleSheetSet', 'styleSheetSets',
\ 'timeline', 'visibilityState', 'cookie', 'defaultView',
\ 'designMode', 'dir', 'domain', 'lastModified', 'location',
\ 'readyState', 'referrer', 'title', 'URL', 'activeElement',
\ 'fullscreenElement', 'styleSheets']
let documeth = ['adoptNode', 'close', 'createAttribute',
\ 'createAttributeNS', 'createCDATASection', 'createComment',
\ 'createDocumentFragment', 'createElement', 'createElementNS',
\ 'createEvent', 'createExpression', 'createNSResolver',
\ 'createNodeIterator', 'createProcessingInstruction', 'createRange',
\ 'createTextNode', 'createTouchList', 'createTreeWalker',
\ 'enableStyleSheetsForSet', 'evaluate', 'focus', 'getElementById',
\ 'getElementById', 'getElementsByClassName', 'getElementsByName',
\ 'getElementsByTagName', 'getElementsByTagNameNS',
\ 'hasStorageAccess', 'importNode', 'onClick', 'onDblClick',
\ 'onFocus', 'onKeyDown', 'onKeyPress', 'onKeyUp', 'onMouseDown',
\ 'onMouseMove', 'onMouseOut', 'onMouseOver', 'onMouseUp',
\ 'onResize', 'open', 'querySelector', 'querySelectorAll',
\ 'requestStorageAccess', 'write', 'writeln']
call map(documeth, 'v:val."("')
let docuxprop = ['attributes', 'childNodes', 'doctype', 'documentElement', 'firstChild',
\ 'implementation', 'namespaceURI', 'nextSibling', 'nodeName', 'nodeType',
@ -368,9 +388,11 @@ function! javascriptcomplete#CompleteJS(findstart, base)
let xdomelemprop = ['attributes', 'childNodes', 'firstChild', 'lastChild',
\ 'namespaceURI', 'nextSibling', 'nodeName', 'nodeType', 'nodeValue',
\ 'ownerDocument', 'parentNode', 'prefix', 'previousSibling', 'tagName']
let xdomelemmeth = ['appendChild', 'cloneNode', 'getAttribute', 'getAttributeNode',
\ 'getElementsByTagName', 'hasChildNodes', 'insertBefore', 'normalize',
\ 'removeAttribute', 'removeAttributeNode', 'removeChild', 'replaceChild',
let xdomelemmeth = ['appendChild', 'addEventListener', 'cloneNode',
\ 'dispatchEvent', 'getAttribute', 'getAttributeNode',
\ 'getElementsByTagName', 'hasChildNodes', 'insertBefore',
\ 'normalize', 'removeAttribute', 'removeAttributeNode',
\ 'removeChild', 'removeEventListener', 'replaceChild',
\ 'setAttribute', 'setAttributeNode']
call map(xdomelemmeth, 'v:val."("')
let xdomelems = xdomelemprop + xdomelemmeth

View File

@ -1,7 +1,7 @@
" netrw.vim: Handles file transfer and remote directory listing across
" AUTOLOAD SECTION
" Date: Jan 07, 2020
" Version: 168
" Date: Sep 18, 2020
" Version: 170
" Maintainer: Charles E Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
" GetLatestVimScripts: 1075 1 :AutoInstall: netrw.vim
" Copyright: Copyright (C) 2016 Charles E. Campbell {{{1
@ -43,7 +43,7 @@ if exists("s:needspatches")
endfor
endif
let g:loaded_netrw = "v168"
let g:loaded_netrw = "v170"
if !exists("s:NOTE")
let s:NOTE = 0
let s:WARNING = 1
@ -86,7 +86,16 @@ fun! netrw#ErrorMsg(level,msg,errnum)
endif
" call Decho("level=".level,'~'.expand("<slnum>"))
if g:netrw_use_errorwindow
if g:netrw_use_errorwindow == 2 && (v:version > 802 || (v:version == 802 && has("patch486")))
" use popup window
if type(a:msg) == 3
let msg = [level]+a:msg
else
let msg= level.a:msg
endif
let s:popuperr_id = popup_beval(msg,{})
let s:popuperr_text= ""
elseif g:netrw_use_errorwindow
" (default) netrw creates a one-line window to show error/warning
" messages (reliably displayed)
@ -203,7 +212,11 @@ let g:netrw_localrmdiropt = ""
" ---------------------------------------------------------------------
" Default values for netrw's global protocol variables {{{2
call s:NetrwInit("g:netrw_use_errorwindow",1)
if (v:version > 802 || (v:version == 802 && has("patch486"))) && has("balloon_eval") && !exists("s:initbeval") && !exists("g:netrw_nobeval") && has("syntax") && exists("g:syntax_on") && has("mouse")
call s:NetrwInit("g:netrw_use_errorwindow",2)
else
call s:NetrwInit("g:netrw_use_errorwindow",1)
endif
if !exists("g:netrw_dav_cmd")
if executable("cadaver")
@ -559,6 +572,7 @@ call s:NetrwInit("s:netrw_posn",'{}')
if v:version >= 700 && has("balloon_eval") && !exists("s:initbeval") && !exists("g:netrw_nobeval") && has("syntax") && exists("g:syntax_on")
" call Decho("installed beval events",'~'.expand("<slnum>"))
let &l:bexpr = "netrw#BalloonHelp()"
" call Decho("&l:bexpr<".&l:bexpr."> buf#".bufnr())
au FileType netrw setl beval
au WinLeave * if &ft == "netrw" && exists("s:initbeval")|let &beval= s:initbeval|endif
au VimEnter * let s:initbeval= &beval
@ -591,7 +605,18 @@ if v:version >= 700 && has("balloon_eval") && has("syntax") && exists("g:syntax_
if &ft != "netrw"
return ""
endif
if !exists("w:netrw_bannercnt") || v:beval_lnum >= w:netrw_bannercnt || (exists("g:netrw_nobeval") && g:netrw_nobeval)
if exists("s:popuperr_id") && popup_getpos(s:popuperr_id) != {}
" popup error window is still showing
" s:pouperr_id and s:popuperr_text are set up in netrw#ErrorMsg()
if exists("s:popuperr_text") && s:popuperr_text != "" && v:beval_text != s:popuperr_text
" text under mouse hasn't changed; only close window when it changes
call popup_close(s:popuperr_id)
unlet s:popuperr_text
else
let s:popuperr_text= v:beval_text
endif
let mesg= ""
elseif !exists("w:netrw_bannercnt") || v:beval_lnum >= w:netrw_bannercnt || (exists("g:netrw_nobeval") && g:netrw_nobeval)
let mesg= ""
elseif v:beval_text == "Netrw" || v:beval_text == "Directory" || v:beval_text == "Listing"
let mesg = "i: thin-long-wide-tree gh: quick hide/unhide of dot-files qf: quick file info %:open new file"
@ -1247,6 +1272,10 @@ fun! netrw#Lexplore(count,rightside,...)
setlocal winfixwidth
let g:netrw_altv = keep_altv
let t:netrw_lexbufnr = bufnr("%")
" done to prevent build-up of hidden buffers due to quitting and re-invocation of :Lexplore.
" Since the intended use of :Lexplore is to have an always-present explorer window, the extra
" effort to mis-use :Lex is warranted.
set bh=wipe
" call Decho("let t:netrw_lexbufnr=".t:netrw_lexbufnr)
" call Decho("t:netrw_lexposn".(exists("t:netrw_lexposn")? string(t:netrw_lexposn) : " n/a"))
if exists("t:netrw_lexposn")
@ -1908,7 +1937,7 @@ fun! s:NetrwRestoreSetting(keepvar,setting)
if type(a:setting) == 0
exe "let ".a:setting."= ".keepvarval
elseif type(a:setting) == 1
exe "let ".a:setting."= '".keepvarval."'"
exe "let ".a:setting."= '".substitute(keepvarval,"'","''","g")."'"
else
call netrw#ErrorMsg(s:ERROR,"(s:NetrwRestoreSetting) doesn't know how to restore ".a:keepvar." with a setting of type#".type(a:setting),105)
endif
@ -3640,6 +3669,8 @@ fun! s:NetrwBookHistSave()
let savefile= s:NetrwHome()."/.netrwhist"
" call Decho("savefile<".savefile.">",'~'.expand("<slnum>"))
1split
" setting up a new buffer which will become .netrwhist
call s:NetrwEnew()
" call Decho("case g:netrw_use_noswf=".g:netrw_use_noswf.(exists("+acd")? " +acd" : " -acd"),'~'.expand("<slnum>"))
if g:netrw_use_noswf
@ -4722,7 +4753,7 @@ endfun
" "new directory name" is actually a file,
" NetrwBrowseChgDir() edits the file.
fun! s:NetrwBrowseChgDir(islocal,newdir,...)
" call Dfunc("s:NetrwBrowseChgDir(islocal=".a:islocal."> newdir<".a:newdir.">) a:0=".a:0." curpos<".string(getpos("."))."> b:netrw_curdir<".(exists("b:netrw_curdir")? b:netrw_curdir : "").">")
" call Dfunc("s:NetrwBrowseChgDir(islocal=".a:islocal."> newdir<".a:newdir.">) a:0=".a:0." win#".winnr()." curpos<".string(getpos("."))."> b:netrw_curdir<".(exists("b:netrw_curdir")? b:netrw_curdir : "").">")
" call Decho("tab#".tabpagenr()." win#".winnr()." buf#".bufnr("%")."<".bufname("%")."> line#".line(".")." col#".col(".")." winline#".winline()." wincol#".wincol(),'~'.expand("<slnum>"))
let ykeep= @@
@ -4751,13 +4782,14 @@ fun! s:NetrwBrowseChgDir(islocal,newdir,...)
let newdir = a:newdir
let dolockout = 0
let dorestore = 1
" call Decho("win#".winnr(),'~'.expand("<slnum>"))
" call Decho("dirname<".dirname.">",'~'.expand("<slnum>"))
" call Decho("newdir<".newdir.">",'~'.expand("<slnum>"))
" ignore <cr>s when done in the banner
" call Decho('(s:NetrwBrowseChgDir) ignore [return]s when done in banner (g:netrw_banner='.g:netrw_banner.")",'~'.expand("<slnum>"))
if g:netrw_banner
" call Decho("w:netrw_bannercnt=".(exists("w:netrw_bannercnt")? w:netrw_bannercnt : 'n/a')." line(.)#".line('.')." line($)#".line("#"),'~'.expand("<slnum>"))
" call Decho("win#".winnr()." w:netrw_bannercnt=".(exists("w:netrw_bannercnt")? w:netrw_bannercnt : 'n/a')." line(.)#".line('.')." line($)#".line("#"),'~'.expand("<slnum>"))
if exists("w:netrw_bannercnt") && line(".") < w:netrw_bannercnt && line("$") >= w:netrw_bannercnt
if getline(".") =~# 'Quick Help'
" call Decho("#1: quickhelp=".g:netrw_quickhelp." ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("<slnum>"))
@ -4794,7 +4826,7 @@ fun! s:NetrwBrowseChgDir(islocal,newdir,...)
" ------------------------------
" NetrwBrowseChgDir: edit a file {{{3
" ------------------------------
" call Decho('(s:NetrwBrowseChgDir) edit-a-file: case "handling a file": newdir<'.newdir.'> !~ dirpat<'.dirpat.">",'~'.expand("<slnum>"))
" call Decho('edit-a-file: case "handling a file": win#'.winnr().' newdir<'.newdir.'> !~ dirpat<'.dirpat.">",'~'.expand("<slnum>"))
" save position for benefit of Rexplore
let s:rexposn_{bufnr("%")}= winsaveview()
@ -4829,7 +4861,7 @@ fun! s:NetrwBrowseChgDir(islocal,newdir,...)
NetrwKeepj call s:NetrwOptionsRestore("s:")
let curdir= b:netrw_curdir
if !exists("s:didsplit")
" call Decho("edit-a-file: s:didsplit does not exist; g:netrw_browse_split=".string(g:netrw_browse_split)." win#".winnr(),'~'.expand("<slnum>"))
" " call Decho("edit-a-file: s:didsplit does not exist; g:netrw_browse_split=".string(g:netrw_browse_split)." win#".winnr()." g:netrw_chgwin=".g:netrw_chgwin",'~'.expand("<slnum>"))
if type(g:netrw_browse_split) == 3
" open file in server
" Note that g:netrw_browse_split is a List: [servername,tabnr,winnr]
@ -4837,22 +4869,27 @@ fun! s:NetrwBrowseChgDir(islocal,newdir,...)
call s:NetrwServerEdit(a:islocal,dirname)
" call Dret("s:NetrwBrowseChgDir")
return
elseif g:netrw_browse_split == 1
" horizontally splitting the window first
" call Decho("edit-a-file: horizontally splitting window prior to edit",'~'.expand("<slnum>"))
keepalt new
let winsz= (g:netrw_winsize > 0)? (g:netrw_winsize*winheight(0))/100 : -g:netrw_winsize
exe "keepalt ".(g:netrw_alto? "bel " : "abo ").winsz."wincmd s"
if !&ea
keepalt wincmd _
endif
call s:SetRexDir(a:islocal,curdir)
elseif g:netrw_browse_split == 2
" vertically splitting the window first
" call Decho("edit-a-file: vertically splitting window prior to edit",'~'.expand("<slnum>"))
keepalt rightb vert new
let winsz= (g:netrw_winsize > 0)? (g:netrw_winsize*winwidth(0))/100 : -g:netrw_winsize
exe "keepalt ".(g:netrw_alto? "top " : "bot ")."vert ".winsz."wincmd s"
if !&ea
keepalt wincmd |
endif
call s:SetRexDir(a:islocal,curdir)
elseif g:netrw_browse_split == 3
" open file in new tab
" call Decho("edit-a-file: opening new tab prior to edit",'~'.expand("<slnum>"))
@ -4861,6 +4898,7 @@ fun! s:NetrwBrowseChgDir(islocal,newdir,...)
let b:netrw_curdir= getcwd()
endif
call s:SetRexDir(a:islocal,curdir)
elseif g:netrw_browse_split == 4
" act like "P" (ie. open previous window)
" call Decho("edit-a-file: use previous window for edit",'~'.expand("<slnum>"))
@ -4870,13 +4908,14 @@ fun! s:NetrwBrowseChgDir(islocal,newdir,...)
return
endif
call s:SetRexDir(a:islocal,curdir)
else
" handling a file, didn't split, so remove menu
" call Decho("edit-a-file: handling a file+didn't split, so remove menu",'~'.expand("<slnum>"))
call s:NetrwMenu(0)
" optional change to window
if g:netrw_chgwin >= 1
" call Decho("edit-a-file: changing window to #".g:netrw_chgwin,'~'.expand("<slnum>"))
" call Decho("edit-a-file: changing window to #".g:netrw_chgwin.": (due to g:netrw_chgwin)",'~'.expand("<slnum>"))
if winnr("$")+1 == g:netrw_chgwin
" if g:netrw_chgwin is set to one more than the last window, then
" vertically split the last window to make that window available.
@ -4889,19 +4928,26 @@ fun! s:NetrwBrowseChgDir(islocal,newdir,...)
endif
call s:SetRexDir(a:islocal,curdir)
endif
endif
" the point where netrw actually edits the (local) file
" if its local only: LocalBrowseCheck() doesn't edit a file, but NetrwBrowse() will
" no keepalt to support :e # to return to a directory listing
if !&mod
" if e the new file would fail due to &mod, then don't change any of the flags
let dolockout= 1
endif
if a:islocal
" call Decho("edit-a-file: edit local file: exe e! ".fnameescape(dirname),'~'.expand("<slnum>"))
" some like c-^ to return to the last edited file
" others like c-^ to return to the netrw buffer
" Apr 30, 2020: used to have e! here. That can cause loss of a modified file,
" so emit error E37 instead.
if exists("g:netrw_altfile") && g:netrw_altfile
exe "NetrwKeepj keepalt e! ".fnameescape(dirname)
exe "NetrwKeepj keepalt e ".fnameescape(dirname)
else
exe "NetrwKeepj e! ".fnameescape(dirname)
exe "NetrwKeepj e ".fnameescape(dirname)
endif
" call Decho("edit-a-file: after e! ".dirname.": hidden=".&hidden." bufhidden<".&bufhidden."> mod=".&mod,'~'.expand("<slnum>"))
call s:NetrwCursor()
@ -4912,7 +4958,6 @@ fun! s:NetrwBrowseChgDir(islocal,newdir,...)
else
" call Decho("edit-a-file: remote file: NetrwBrowse will edit it",'~'.expand("<slnum>"))
endif
let dolockout= 1
" handle g:Netrw_funcref -- call external-to-netrw functions
" This code will handle g:Netrw_funcref as an individual function reference
@ -5376,16 +5421,6 @@ fun! netrw#BrowseX(fname,remote)
endif
let ret= v:shell_error
elseif has("unix") && executable("kfmclient") && s:CheckIfKde()
" call Decho("(netrw#BrowseX) unix and kfmclient",'~'.expand("<slnum>"))
call s:NetrwExe("sil !kfmclient exec ".s:ShellEscape(fname,1)." ".redir)
let ret= v:shell_error
elseif has("unix") && executable("exo-open") && executable("xdg-open") && executable("setsid")
" call Decho("(netrw#BrowseX) unix, exo-open, xdg-open",'~'.expand("<slnum>"))
call s:NetrwExe("sil !setsid xdg-open ".s:ShellEscape(fname,1).redir)
let ret= v:shell_error
elseif has("unix") && $DESKTOP_SESSION == "mate" && executable("atril")
" call Decho("(netrw#BrowseX) unix and atril",'~'.expand("<slnum>"))
if a:fname =~ '^https\=://'
@ -5400,9 +5435,19 @@ fun! netrw#BrowseX(fname,remote)
endif
let ret= v:shell_error
elseif has("unix") && executable("kfmclient") && s:CheckIfKde()
" call Decho("(netrw#BrowseX) unix and kfmclient",'~'.expand("<slnum>"))
call s:NetrwExe("sil !kfmclient exec ".s:ShellEscape(fname,1)." ".redir)
let ret= v:shell_error
elseif has("unix") && executable("exo-open") && executable("xdg-open") && executable("setsid")
" call Decho("(netrw#BrowseX) unix, exo-open, xdg-open",'~'.expand("<slnum>"))
call s:NetrwExe("sil !setsid xdg-open ".s:ShellEscape(fname,1).redir.'&')
let ret= v:shell_error
elseif has("unix") && executable("xdg-open")
" 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
elseif has("macunix") && executable("open")
@ -6107,10 +6152,10 @@ fun! s:NetrwListHide()
" Duplicate characters don't matter.
" Remove all such characters from the '/~@#...890' string.
" 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",'~'.expand("<slnum>"))
let listhide= g:netrw_list_hide
let sep = strpart(substitute('~@#$%^&*{};:,<.>?|1234567890','['.escape(listhide,'-]^\').']','','ge'),1,1)
" call Decho("sep=".sep," (sep not in hide string)'~'.expand("<slnum>"))
" call Decho("sep<".sep."> (sep not in hide string)",'~'.expand("<slnum>"))
while listhide != ""
if listhide =~ ','
@ -6120,7 +6165,7 @@ fun! s:NetrwListHide()
let hide = listhide
let listhide = ""
endif
" call Decho("..extracted from listhide: hide<".hide."> g:netrw_sort_by<".g:netrw_sort_by.'>','~'.expand("<slnum>"))
" call Decho("..extracted pattern 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>"))
@ -6132,7 +6177,7 @@ fun! s:NetrwListHide()
endif
" 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
" call Decho("..hiding<".hide.">",'~'.expand("<slnum>"))
exe 'sil! NetrwKeepj '.w:netrw_bannercnt.',$g'.sep.hide.sep.'d'
@ -9215,6 +9260,7 @@ endfun
" (full path directory with trailing slash returned)
fun! s:NetrwTreeDir(islocal)
" call Dfunc("s:NetrwTreeDir(islocal=".a:islocal.") getline(".line(".").")"."<".getline('.')."> b:netrw_curdir<".b:netrw_curdir."> tab#".tabpagenr()." win#".winnr()." buf#".bufnr("%")."<".bufname("%")."> ft=".&ft)
" call Decho("Determine tree directory given current cursor position")
" call Decho("g:netrw_keepdir =".(exists("g:netrw_keepdir")? g:netrw_keepdir : 'n/a'),'~'.expand("<slnum>"))
" call Decho("w:netrw_liststyle=".(exists("w:netrw_liststyle")? w:netrw_liststyle : 'n/a'),'~'.expand("<slnum>"))
" call Decho("w:netrw_treetop =".(exists("w:netrw_treetop")? w:netrw_treetop : 'n/a'),'~'.expand("<slnum>"))
@ -9320,7 +9366,6 @@ fun! s:NetrwTreeDisplay(dir,depth)
call setline(line("$")+1,a:depth.shortdir.'/')
endif
" call Decho("setline#".line("$")." shortdir<".a:depth.shortdir.">",'~'.expand("<slnum>"))
" append a / to dir if its missing one
let dir= a:dir
@ -9334,7 +9379,7 @@ fun! s:NetrwTreeDisplay(dir,depth)
let listhide= split(g:netrw_list_hide,',')
" call Decho("listhide=".string(listhide))
for pat in listhide
call filter(w:netrw_treedict[dir],'v:val !~ "'.pat.'"')
call filter(w:netrw_treedict[dir],'v:val !~ "'.escape(pat,'\\').'"')
endfor
elseif g:netrw_hide == 2
@ -9472,6 +9517,7 @@ fun! s:NetrwTreeListing(dirname)
" call Decho("g:netrw_banner=".g:netrw_banner.": banner ".(g:netrw_banner? "enabled" : "suppressed").": (line($)=".line("$")." byte2line(1)=".byte2line(1)." bannercnt=".w:netrw_bannercnt.")",'~'.expand("<slnum>"))
" display from treetop on down
" call Decho("(s:NetrwTreeListing) w:netrw_treetop<".w:netrw_treetop.">")
NetrwKeepj call s:NetrwTreeDisplay(w:netrw_treetop,"")
" call Decho("s:NetrwTreeDisplay) setl noma nomod ro",'~'.expand("<slnum>"))
@ -9742,7 +9788,7 @@ fun! s:PerformListing(islocal)
" Hiding... -or- Showing... {{{3
if g:netrw_banner
" call Decho("--handle hiding/showing (g:netrw_hide=".g:netrw_hide." g:netrw_list_hide<".g:netrw_list_hide.">)",'~'.expand("<slnum>"))
" call Decho("--handle hiding/showing in banner (g:netrw_hide=".g:netrw_hide." g:netrw_list_hide<".g:netrw_list_hide.">)",'~'.expand("<slnum>"))
if g:netrw_list_hide != "" && g:netrw_hide
if g:netrw_hide == 1
NetrwKeepj put ='\" Hiding: '.g:netrw_list_hide
@ -9795,7 +9841,7 @@ fun! s:PerformListing(islocal)
" call Decho("g:netrw_banner=".g:netrw_banner.": banner ".(g:netrw_banner? "enabled" : "suppressed").": (line($)=".line("$")." byte2line(1)=".byte2line(1)." bannercnt=".w:netrw_bannercnt.")",'~'.expand("<slnum>"))
if !g:netrw_banner || line("$") >= w:netrw_bannercnt
" call Decho("manipulate directory listing (hide)",'~'.expand("<slnum>"))
" call Decho("manipulate directory listing (support hide)",'~'.expand("<slnum>"))
" call Decho("g:netrw_hide=".g:netrw_hide." g:netrw_list_hide<".g:netrw_list_hide.">",'~'.expand("<slnum>"))
if g:netrw_hide && g:netrw_list_hide != ""
NetrwKeepj call s:NetrwListHide()
@ -11808,7 +11854,7 @@ endfun
" ---------------------------------------------------------------------
" s:NetrwEnew: opens a new buffer, passes netrw buffer variables through {{{2
fun! s:NetrwEnew(...)
" call Dfunc("s:NetrwEnew() a:0=".a:0." bufnr($)=".bufnr("$")." expand(%)<".expand("%").">")
" call Dfunc("s:NetrwEnew() a:0=".a:0." win#".winnr()." winnr($)=".winnr("$")." bufnr($)=".bufnr("$")." expand(%)<".expand("%").">")
" call Decho("curdir<".((a:0>0)? a:1 : "")."> buf#".bufnr("%")."<".bufname("%").">",'~'.expand("<slnum>"))
" grab a function-local-variable copy of buffer variables
@ -11875,6 +11921,9 @@ fun! s:NetrwEnew(...)
endif
endif
endif
if v:version >= 700 && has("balloon_eval") && !exists("s:initbeval") && !exists("g:netrw_nobeval") && has("syntax") && exists("g:syntax_on")
let &l:bexpr = "netrw#BalloonHelp()"
endif
" call Dret("s:NetrwEnew : buf#".bufnr("%")."<".bufname("%")."> expand(%)<".expand("%")."> expand(#)<".expand("#")."> bh=".&bh." win#".winnr()." winnr($)#".winnr("$"))
endfun
@ -11934,6 +11983,7 @@ endfun
" -1=failed
fun! s:NetrwLcd(newdir)
" call Dfunc("s:NetrwLcd(newdir<".a:newdir.">)")
" call Decho("changing local directory",'~'.expand("<slnum>"))
let err472= 0
try
@ -11969,6 +12019,8 @@ fun! s:NetrwLcd(newdir)
return -1
endif
" call Decho("getcwd <".getcwd().">")
" call Decho("b:netrw_curdir<".b:netrw_curdir.">")
" call Dret("s:NetrwLcd 0")
return 0
endfun

View File

@ -1,8 +1,8 @@
" netrwFileHandlers: contains various extension-based file handlers for
" netrw's browsers' x command ("eXecute launcher")
" Author: Charles E. Campbell
" Date: May 03, 2013
" Version: 11b ASTRO-ONLY
" Date: Sep 18, 2020
" Version: 11
" Copyright: Copyright (C) 1999-2012 Charles E. Campbell {{{1
" Permission is hereby granted to use and distribute this code,
" with or without modifications, provided that this copyright
@ -20,7 +20,7 @@
if exists("g:loaded_netrwFileHandlers") || &cp
finish
endif
let g:loaded_netrwFileHandlers= "v11b"
let g:loaded_netrwFileHandlers= "v11"
if v:version < 702
echohl WarningMsg
echo "***warning*** this version of netrwFileHandlers needs vim 7.2"

View File

@ -1,7 +1,8 @@
"python3complete.vim - Omni Completion for python
" Maintainer: Aaron Griffin <aaronmgriffin@gmail.com>
" Maintainer: <vacancy>
" Previous Maintainer: Aaron Griffin <aaronmgriffin@gmail.com>
" Version: 0.9
" Last Updated: 18 Jun 2009 (small fix 2015 Sep 14 from Debian)
" Last Updated: 2020 Oct 9
"
" Roland Puntaier: this file contains adaptations for python3 and is parallel to pythoncomplete.vim
"
@ -83,7 +84,7 @@ function! python3complete#Complete(findstart, base)
break
endif
endwhile
execute "py3 vimpy3complete('" . cword . "', '" . a:base . "')"
execute "py3 vimpy3complete('" . escape(cword, "'") . "', '" . escape(a:base, "'") . "')"
return g:python3complete_completions
endif
endfunction

View File

@ -1,7 +1,8 @@
"pythoncomplete.vim - Omni Completion for python
" Maintainer: Aaron Griffin <aaronmgriffin@gmail.com>
" Maintainer: <vacancy>
" Previous Maintainer: Aaron Griffin <aaronmgriffin@gmail.com>
" Version: 0.9
" Last Updated: 18 Jun 2009
" Last Updated: 2020 Oct 9
"
" Changes
" TODO:
@ -81,7 +82,7 @@ function! pythoncomplete#Complete(findstart, base)
break
endif
endwhile
execute "python vimcomplete('" . cword . "', '" . a:base . "')"
execute "python vimcomplete('" . escape(cword, "'") . "', '" . escape(a:base, "'") . "')"
return g:pythoncomplete_completions
endif
endfunction

View File

@ -1,7 +1,7 @@
" zip.vim: Handles browsing zipfiles
" AUTOLOAD PORTION
" Date: Jan 07, 2020
" Version: 30
" Version: 31
" Maintainer: Charles E Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
" License: Vim License (see vim's :help license)
" Copyright: Copyright (C) 2005-2019 Charles E. Campbell {{{1
@ -20,7 +20,7 @@
if &cp || exists("g:loaded_zip")
finish
endif
let g:loaded_zip= "v30"
let g:loaded_zip= "v31"
if v:version < 702
echohl WarningMsg
echo "***warning*** this version of zip needs vim 7.2 or later"
@ -65,7 +65,7 @@ endif
" zip#Browse: {{{2
fun! zip#Browse(zipfile)
" call Dfunc("zip#Browse(zipfile<".a:zipfile.">)")
" sanity check: ensure that the zipfile has "PK" as its first two letters
" sanity check: insure that the zipfile has "PK" as its first two letters
" (zipped files have a leading PK as a "magic cookie")
if !filereadable(a:zipfile) || readfile(a:zipfile, "", 1)[0] !~ '^PK'
exe "noswapfile noautocmd noswapfile e ".fnameescape(a:zipfile)

View File

@ -67,7 +67,7 @@ You can use ":highlight" to find out the current colors. Exception: the
ctermfg and ctermbg values are numbers, which are only valid for the current
terminal. Use the color names instead. See ":help cterm-colors".
The default color settings can be found in the source file src/syntax.c.
The default color settings can be found in the source file src/highlight.c.
Search for "highlight_init".
If you think you have a color scheme that is good enough to be used by others,

View File

@ -185,7 +185,7 @@ func! Test_check_colors()
" 9) Normal should be defined first, not use reverse, fg or bg
call cursor(1,1)
let pat = 'hi\%[light] \+\%(link\|clear\)\@!\w\+\>'
let pat = 'hi\%[ghlight] \+\%(link\|clear\)\@!\w\+\>'
call search(pat, 'cW') " Look for the first hi def, skipping `hi link` and `hi clear`
if getline('.') !~# '\m\<Normal\>'
let err['highlight']['Normal'] = 'Should be defined first'

View File

@ -1,7 +1,7 @@
" Vim compiler file
" Compiler: Checkstyle
" Maintainer: Doug Kearns <dougkearns@gmail.com>
" Last Change: 2013 Jun 26
" Last Change: 2020 Aug 2
if exists("current_compiler")
finish
@ -12,8 +12,18 @@ if exists(":CompilerSet") != 2 " older Vim always used :setlocal
command -nargs=* CompilerSet setlocal <args>
endif
CompilerSet makeprg=java\ com.puppycrawl.tools.checkstyle.Main\ -f\ plain
let s:cpo_save = &cpo
set cpo&vim
" sample error: WebTable.java:282: '+=' is not preceeded with whitespace.
" WebTable.java:201:1: '{' should be on the previous line.
CompilerSet errorformat=%f:%l:%v:\ %m,%f:%l:\ %m,%-G%.%#
" CompilerSet makeprg=java\ com.puppycrawl.tools.checkstyle.Main\ -f\ plain\ -c\ /sun_checks.xml
" CompilerSet makeprg=java\ -jar\ checkstyle-X.XX-all.jar\ -f\ plain\ -c\ /sun_checks.xml
CompilerSet makeprg=checkstyle\ -f\ plain
CompilerSet errorformat=[%tRROR]\ %f:%l:%v:\ %m,
\[%tARN]\ %f:%l:%v:\ %m,
\[%tRROR]\ %f:%l:\ %m,
\[%tARN]\ %f:%l:\ %m,
\%-G%.%#
let &cpo = s:cpo_save
unlet s:cpo_save

26
runtime/compiler/dart.vim Normal file
View File

@ -0,0 +1,26 @@
" Vim compiler file
" Compiler: Dart VM
" Maintainer: Doug Kearns <dougkearns@gmail.com>
" Last Change: 2019 May 08
if exists("current_compiler")
finish
endif
let current_compiler = "dart"
if exists(":CompilerSet") != 2 " older Vim always used :setlocal
command -nargs=* CompilerSet setlocal <args>
endif
let s:cpo_save = &cpo
set cpo&vim
CompilerSet makeprg=dart
CompilerSet errorformat=%E%f:%l:%c:\ Error:\ %m,
\%CTry\ %.%#,
\%Z\ %#^%\\+,
\%C%.%#,
\%-G%.%#
let &cpo = s:cpo_save
unlet s:cpo_save

View File

@ -0,0 +1,28 @@
" Vim compiler file
" Compiler: Dart to JavaScript Compiler
" Maintainer: Doug Kearns <dougkearns@gmail.com>
" Last Change: 2019 May 08
if exists("current_compiler")
finish
endif
let current_compiler = "dart2js"
if exists(":CompilerSet") != 2 " older Vim always used :setlocal
command -nargs=* CompilerSet setlocal <args>
endif
let s:cpo_save = &cpo
set cpo&vim
CompilerSet makeprg=dart2js
CompilerSet errorformat=%E%f:%l:%c:,
\%-GError:\ Compilation\ failed.,
\%CError:\ %m,
\%Z\ %#^%\\+,
\%C%.%#,
\%trror:\ %m,
\%-G%.%#
let &cpo = s:cpo_save
unlet s:cpo_save

View File

@ -0,0 +1,28 @@
" Vim compiler file
" Compiler: Dart to Native Compiler
" Maintainer: Doug Kearns <dougkearns@gmail.com>
" Last Change: 2019 May 08
if exists("current_compiler")
finish
endif
let current_compiler = "dart2native"
if exists(":CompilerSet") != 2 " older Vim always used :setlocal
command -nargs=* CompilerSet setlocal <args>
endif
let s:cpo_save = &cpo
set cpo&vim
CompilerSet makeprg=dart2native
CompilerSet errorformat=%E%f:%l:%c:\ Error:\ %m,
\%CTry\ %.%#,
\%Z\ %#^%\\+,
\%Z%$,
\%C%.%#,
\%E%f:\ %trror:\ %m,
\%-G%.%#
let &cpo = s:cpo_save
unlet s:cpo_save

View File

@ -0,0 +1,23 @@
" Vim compiler file
" Compiler: Dart Analyzer
" Maintainer: Doug Kearns <dougkearns@gmail.com>
" Last Change: 2019 May 08
if exists("current_compiler")
finish
endif
let current_compiler = "dartanalyzer"
if exists(":CompilerSet") != 2 " older Vim always used :setlocal
command -nargs=* CompilerSet setlocal <args>
endif
let s:cpo_save = &cpo
set cpo&vim
CompilerSet makeprg=dartanalyzer\ --format\ machine
CompilerSet errorformat=%t%\\w%\\+\|%\\w%\\+\|%\\w%\\+\|%f\|%l\|%c\|%\\d%\\+\|%m,
\%-G%.%#
let &cpo = s:cpo_save
unlet s:cpo_save

View File

@ -0,0 +1,28 @@
" Vim compiler file
" Compiler: Dart Development Compiler
" Maintainer: Doug Kearns <dougkearns@gmail.com>
" Last Change: 2019 May 08
if exists("current_compiler")
finish
endif
let current_compiler = "dartdevc"
if exists(":CompilerSet") != 2 " older Vim always used :setlocal
command -nargs=* CompilerSet setlocal <args>
endif
let s:cpo_save = &cpo
set cpo&vim
CompilerSet makeprg=dartdevc
CompilerSet errorformat=%E%f:%l:%c:\ Error:\ %m,
\%CTry\ %.%#,
\%Z\ %#^%\\+,
\%Z%$,
\%C%.%#,
\%E%f:\ %trror:\ %m,
\%-G%.%#
let &cpo = s:cpo_save
unlet s:cpo_save

View File

@ -0,0 +1,26 @@
" Vim compiler file
" Compiler: Dart Documentation Generator
" Maintainer: Doug Kearns <dougkearns@gmail.com>
" Last Change: 2019 May 08
if exists("current_compiler")
finish
endif
let current_compiler = "dartdoc"
if exists(":CompilerSet") != 2 " older Vim always used :setlocal
command -nargs=* CompilerSet setlocal <args>
endif
let s:cpo_save = &cpo
set cpo&vim
CompilerSet makeprg=dartdoc
CompilerSet errorformat=\ \ %tarning:\ %m,
\\ \ %trror:\ %m,
\%+EGeneration\ failed:\ %m,
\%+ISuccess!\ Docs\ generated\ into\ %f,
\%-G%.%#
let &cpo = s:cpo_save
unlet s:cpo_save

View File

@ -0,0 +1,25 @@
" Vim compiler file
" Compiler: Dart Formatter
" Maintainer: Doug Kearns <dougkearns@gmail.com>
" Last Change: 2019 May 08
if exists("current_compiler")
finish
endif
let current_compiler = "dartfmt"
if exists(":CompilerSet") != 2 " older Vim always used :setlocal
command -nargs=* CompilerSet setlocal <args>
endif
let s:cpo_save = &cpo
set cpo&vim
CompilerSet makeprg=dartfmt
CompilerSet errorformat=%Eline\ %l\\,\ column\ %c\ of\ %f:\ %m,
\%Z\ %\\{3}│\ %\\+^%\\+,
\%C%.%#,
\%-G%.%#
let &cpo = s:cpo_save
unlet s:cpo_save

View File

@ -1,7 +1,7 @@
" Vim compiler file
" Compiler: ESLint for JavaScript
" Maintainer: Romain Lafourcade <romainlafourcade@gmail.com>
" Last Change: 2020 May 17
" Last Change: 2020 August 20
if exists("current_compiler")
finish
@ -12,5 +12,5 @@ if exists(":CompilerSet") != 2
command -nargs=* CompilerSet setlocal <args>
endif
CompilerSet makeprg=eslint\ --format\ compact
CompilerSet makeprg=npx\ eslint\ --format\ compact
CompilerSet errorformat=%f:\ line\ %l\\,\ col\ %c\\,\ %m,%-G%.%#

34
runtime/compiler/gawk.vim Normal file
View File

@ -0,0 +1,34 @@
" Vim compiler file
" Compiler: GNU Awk
" Maintainer: Doug Kearns <dougkearns@gmail.com>
" Last Change: 2020 Feb 10
if exists("current_compiler")
finish
endif
let current_compiler = "gawk"
if exists(":CompilerSet") != 2 " older Vim always used :setlocal
command -nargs=* CompilerSet setlocal <args>
endif
let s:cpo_save = &cpo
set cpo&vim
CompilerSet makeprg=gawk
CompilerSet errorformat=%Z%.awk:\ %f:%l:\ %p^\ %m,
\%Eg%\\=awk:\ %f:%l:\ fatal:\ %m,
\%Egawk:\ %f:%l:\ error:\ %m,
\%Wgawk:\ %f:%l:\ warning:\ %m,
\%Egawk:\ %f:%l:\ %.%#,
\gawk:\ %f:%l:\ %tatal:\ %m,
\gawk:\ %f:%l:\ %trror:\ %m,
\gawk:\ %f:%l:\ %tarning:\ %m,
\gawk:\ %tatal:\ %m,
\gawk:\ %trror:\ %m,
\gawk:\ %tarning:\ %m,
\%+C%.%#,
\%-G%.%#
let &cpo = s:cpo_save
unlet s:cpo_save

25
runtime/compiler/gjs.vim Normal file
View File

@ -0,0 +1,25 @@
" Vim compiler file
" Compiler: GJS (Gnome JavaScript Bindings)
" Maintainer: Doug Kearns <dougkearns@gmail.com>
" Last Change: 2019 Jul 10
if exists("current_compiler")
finish
endif
let current_compiler = "gjs"
if exists(":CompilerSet") != 2 " older Vim always used :setlocal
command -nargs=* CompilerSet setlocal <args>
endif
let s:cpo_save = &cpo
set cpo&vim
CompilerSet makeprg=gjs
CompilerSet errorformat=%.%#JS\ %tRROR:\ %m\ @\ %f:%c,
\%E%.%#JS\ ERROR:\ %m,
\%Z@%f:%l:%c,
\%-G%.%#
let &cpo = s:cpo_save
unlet s:cpo_save

View File

@ -1,7 +1,7 @@
" Vim compiler file
" Compiler: javac
" Compiler: Java Development Kit Compiler
" Maintainer: Doug Kearns <dougkearns@gmail.com>
" Last Change: 2004 Nov 27
" Last Change: 2019 Oct 21
if exists("current_compiler")
finish
@ -12,6 +12,15 @@ if exists(":CompilerSet") != 2 " older Vim always used :setlocal
command -nargs=* CompilerSet setlocal <args>
endif
CompilerSet makeprg=javac
let s:cpo_save = &cpo
set cpo&vim
CompilerSet errorformat=%E%f:%l:\ %m,%-Z%p^,%-C%.%#,%-G%.%#
CompilerSet makeprg=javac
CompilerSet errorformat=%E%f:%l:\ error:\ %m,
\%W%f:%l:\ warning:\ %m,
\%-Z%p^,
\%-C%.%#,
\%-G%.%#
let &cpo = s:cpo_save
unlet s:cpo_save

30
runtime/compiler/jest.vim Normal file
View File

@ -0,0 +1,30 @@
" Vim compiler file
" Compiler: Jest
" Maintainer: Doug Kearns <dougkearns@gmail.com>
" Last Change: 2018 May 15
if exists("current_compiler")
finish
endif
let current_compiler = "jest"
if exists(":CompilerSet") != 2 " older Vim always used :setlocal
command -nargs=* CompilerSet setlocal <args>
endif
let s:cpo_save = &cpo
set cpo&vim
" CompilerSet makeprg=npx\ jest\ --no-colors
CompilerSet makeprg=jest\ --no-colors
CompilerSet errorformat=%E\ \ ●\ %m,
\%Z\ %\\{4}%.%#Error:\ %f:\ %m\ (%l:%c):%\\=,
\%Z\ %\\{6}at\ %\\S%#\ (%f:%l:%c),
\%+C\ %\\{4}%\\w%.%#,
\%+C\ %\\{4}%[-+]%.%#,
\%-C%.%#,
\%-G%.%#
let &cpo = s:cpo_save
unlet s:cpo_save

24
runtime/compiler/jjs.vim Normal file
View File

@ -0,0 +1,24 @@
" Vim compiler file
" Compiler: Nashorn Shell
" Maintainer: Doug Kearns <dougkearns@gmail.com>
" Last Change: 2018 Jan 9
if exists("current_compiler")
finish
endif
let current_compiler = "jjs"
if exists(":CompilerSet") != 2 " older Vim always used :setlocal
command -nargs=* CompilerSet setlocal <args>
endif
let s:cpo_save = &cpo
set cpo&vim
CompilerSet makeprg=jjs
CompilerSet errorformat=%f:%l:%c\ %m,
\%f:%l\ %m,
\%-G%.%#
let &cpo = s:cpo_save
unlet s:cpo_save

View File

@ -0,0 +1,25 @@
" Vim compiler file
" Compiler: JSHint
" Maintainer: Doug Kearns <dougkearns@gmail.com>
" Last Change: 2019 Jul 10
if exists("current_compiler")
finish
endif
let current_compiler = "jshint"
if exists(":CompilerSet") != 2 " older Vim always used :setlocal
command -nargs=* CompilerSet setlocal <args>
endif
let s:cpo_save = &cpo
set cpo&vim
" CompilerSet makeprg=npx\ jshint\ --verbose
CompilerSet makeprg=jshint\ --verbose
CompilerSet errorformat=%f:\ line\ %l\\,\ col\ %c\\,\ %m\ (%t%n),
\%-G%.%#
let &cpo = s:cpo_save
unlet s:cpo_save

View File

@ -0,0 +1,25 @@
" Vim compiler file
" Compiler: JSON Lint
" Maintainer: Doug Kearns <dougkearns@gmail.com>
" Last Change: 2019 Jul 10
if exists("current_compiler")
finish
endif
let current_compiler = "jsonlint"
if exists(":CompilerSet") != 2 " older Vim always used :setlocal
command -nargs=* CompilerSet setlocal <args>
endif
let s:cpo_save = &cpo
set cpo&vim
" CompilerSet makeprg=npx\ jsonlint\ --compact\ --quiet
CompilerSet makeprg=jsonlint\ --compact\ --quiet
CompilerSet errorformat=%f:\ line\ %l\\,\ col\ %c\\,\ found:\ %m,
\%-G%.%#
let &cpo = s:cpo_save
unlet s:cpo_save

View File

@ -0,0 +1,30 @@
" Vim compiler file
" Compiler: Rhino Shell (JavaScript in Java)
" Maintainer: Doug Kearns <dougkearns@gmail.com>
" Last Change: 2019 Jul 10
if exists("current_compiler")
finish
endif
let current_compiler = "rhino"
if exists(":CompilerSet") != 2 " older Vim always used :setlocal
command -nargs=* CompilerSet setlocal <args>
endif
let s:cpo_save = &cpo
set cpo&vim
" CompilerSet makeprg=java\ -jar\ lib/rhino-X.X.XX.jar\ -w\ -strict
CompilerSet makeprg=rhino
CompilerSet errorformat=%-Gjs:\ %.%#Compilation\ produced%.%#,
\%Ejs:\ \"%f\"\\,\ line\ %l:\ %m,
\%Ejs:\ uncaught\ JavaScript\ runtime\ exception:\ %m,
\%Wjs:\ warning:\ \"%f\"\\,\ line\ %l:\ %m,
\%Zjs:\ %p^,
\%Cjs:\ %.%#,
\%-G%.%#
let &cpo = s:cpo_save
unlet s:cpo_save

View File

@ -0,0 +1,23 @@
" Vim compiler file
" Compiler: RuboCop
" Maintainer: Doug Kearns <dougkearns@gmail.com>
" Last Change: 2019 Jul 10
if exists("current_compiler")
finish
endif
let current_compiler = "rubocop"
if exists(":CompilerSet") != 2 " older Vim always used :setlocal
command -nargs=* CompilerSet setlocal <args>
endif
let s:cpo_save = &cpo
set cpo&vim
CompilerSet makeprg=rubocop\ --format\ emacs
CompilerSet errorformat=%f:%l:%c:\ %t:\ %m,
\%-G%.%#
let &cpo = s:cpo_save
unlet s:cpo_save

View File

@ -0,0 +1,25 @@
" Vim compiler file
" Compiler: ShellCheck
" Maintainer: Doug Kearns <dougkearns@gmail.com>
" Last Change: 2020 Sep 4
if exists("current_compiler")
finish
endif
let current_compiler = "shellcheck"
if exists(":CompilerSet") != 2 " older Vim always used :setlocal
command -nargs=* CompilerSet setlocal <args>
endif
let s:cpo_save = &cpo
set cpo&vim
CompilerSet makeprg=shellcheck\ -f\ gcc
CompilerSet errorformat=%f:%l:%c:\ %trror:\ %m\ [SC%n],
\%f:%l:%c:\ %tarning:\ %m\ [SC%n],
\%f:%l:%c:\ %tote:\ %m\ [SC%n],
\%-G%.%#
let &cpo = s:cpo_save
unlet s:cpo_save

View File

@ -1,7 +1,7 @@
" Vim compiler file
" Compiler: Standard for JavaScript
" Maintainer: Romain Lafourcade <romainlafourcade@gmail.com>
" Last Change: 2020 May 17
" Last Change: 2020 August 20
if exists("current_compiler")
finish
@ -12,5 +12,5 @@ if exists(":CompilerSet") != 2
command -nargs=* CompilerSet setlocal <args>
endif
CompilerSet makeprg=standard
CompilerSet errorformat=%f:\ line\ %l\\,\ col\ %c\\,\ %m,%-G%.%#
CompilerSet makeprg=npx\ standard
CompilerSet errorformat=%f:%l:%c:\ %m,%-G%.%#

View File

@ -0,0 +1,26 @@
" Vim compiler file
" Compiler: Stylelint
" Maintainer: Doug Kearns <dougkearns@gmail.com>
" Last Change: 2020 Jun 10
if exists("current_compiler")
finish
endif
let current_compiler = "stylelint"
if exists(":CompilerSet") != 2 " older Vim always used :setlocal
command -nargs=* CompilerSet setlocal <args>
endif
let s:cpo_save = &cpo
set cpo&vim
" CompilerSet makeprg=npx\ stylelint\ --formatter\ compact
CompilerSet makeprg=stylelint\ --formatter\ compact
CompilerSet errorformat=%f:\ line\ %l\\,\ col\ %c\\,\ %trror\ -\ %m,
\%f:\ line\ %l\\,\ col\ %c\\,\ %tarning\ -\ %m,
\%-G%.%#
let &cpo = s:cpo_save
unlet s:cpo_save

View File

@ -0,0 +1,29 @@
" Vim compiler file
" Compiler: TypeScript Runner
" Maintainer: Doug Kearns <dougkearns@gmail.com>
" Last Change: 2020 Feb 10
if exists("current_compiler")
finish
endif
let current_compiler = "node"
if exists(":CompilerSet") != 2 " older Vim always used :setlocal
command -nargs=* CompilerSet setlocal <args>
endif
let s:cpo_save = &cpo
set cpo&vim
" CompilerSet makeprg=npx\ ts-node
CompilerSet makeprg=ts-node
CompilerSet errorformat=%f\ %#(%l\\,%c):\ %trror\ TS%n:\ %m,
\%E%f:%l,
\%+Z%\\w%\\+Error:\ %.%#,
\%C%p^%\\+,
\%C%.%#,
\%-G%.%#
let &cpo = s:cpo_save
unlet s:cpo_save

26
runtime/compiler/tsc.vim Normal file
View File

@ -0,0 +1,26 @@
" Vim compiler file
" Compiler: TypeScript Compiler
" Maintainer: Doug Kearns <dougkearns@gmail.com>
" Last Change: 2020 Feb 10
if exists("current_compiler")
finish
endif
let current_compiler = "tsc"
if exists(":CompilerSet") != 2 " older Vim always used :setlocal
command -nargs=* CompilerSet setlocal <args>
endif
let s:cpo_save = &cpo
set cpo&vim
" CompilerSet makeprg=npx\ tsc
CompilerSet makeprg=tsc
CompilerSet errorformat=%f\ %#(%l\\,%c):\ %trror\ TS%n:\ %m,
\%trror\ TS%n:\ %m,
\%-G%.%#
let &cpo = s:cpo_save
unlet s:cpo_save

View File

@ -0,0 +1,28 @@
" Vim compiler file
" Compiler: TypeDoc
" Maintainer: Doug Kearns <dougkearns@gmail.com>
" Last Change: 2020 Feb 10
if exists("current_compiler")
finish
endif
let current_compiler = "typedoc"
if exists(":CompilerSet") != 2 " older Vim always used :setlocal
command -nargs=* CompilerSet setlocal <args>
endif
let s:cpo_save = &cpo
set cpo&vim
" CompilerSet makeprg=npx\ typedoc
CompilerSet makeprg=typedoc
CompilerSet errorformat=%EError:\ %f(%l),
\%WWarning:\ %f(%l),
\%+IDocumentation\ generated\ at\ %f,
\%Z\ %m,
\%-G%.%#
let &cpo = s:cpo_save
unlet s:cpo_save

View File

@ -1,7 +1,7 @@
" Vim compiler file
" Compiler: xmllint
" Compiler: Libxml2 Command-Line Tool
" Maintainer: Doug Kearns <dougkearns@gmail.com>
" Last Change: 2013 Jul 8
" Last Change: 2020 Jul 30
if exists("current_compiler")
finish
@ -13,14 +13,16 @@ if exists(":CompilerSet") != 2 " older Vim always used :setlocal
endif
let s:cpo_save = &cpo
set cpo-=C
set cpo&vim
CompilerSet makeprg=xmllint\ --valid\ --noout
CompilerSet errorformat=%+E%f:%l:\ %.%#\ error\ :\ %m,
\%+W%f:%l:\ %.%#\ warning\ :\ %m,
\%-Z%p^,
\%-G%.%#
CompilerSet errorformat=%E%f:%l:\ %.%#\ error\ :\ %m,
\%W%f:%l:\ %.%#\ warning\ :\ %m,
\%-Z%p^,
\%C%.%#,
\%terror:\ %m,
\%tarning:\ %m,
\%-G%.%#
let &cpo = s:cpo_save
unlet s:cpo_save

26
runtime/compiler/xo.vim Normal file
View File

@ -0,0 +1,26 @@
" Vim compiler file
" Compiler: XO
" Maintainer: Doug Kearns <dougkearns@gmail.com>
" Last Change: 2019 Jul 10
if exists("current_compiler")
finish
endif
let current_compiler = "xo"
if exists(":CompilerSet") != 2 " older Vim always used :setlocal
command -nargs=* CompilerSet setlocal <args>
endif
let s:cpo_save = &cpo
set cpo&vim
" CompilerSet makeprg=npx\ xo\ --reporter\ compact
CompilerSet makeprg=xo\ --reporter\ compact
CompilerSet errorformat=%f:\ line\ %l\\,\ col\ %c\\,\ %trror\ %m,
\%f:\ line\ %l\\,\ col\ %c\\,\ %tarning\ %m,
\%-G%.%#
let &cpo = s:cpo_save
unlet s:cpo_save

View File

@ -1,7 +1,7 @@
" The default vimrc file.
"
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Last change: 2019 Oct 27
" Last change: 2020 Sep 30
"
" This is loaded if no vimrc file was found.
" Except when Vim is run with "-u NONE" or "-C".
@ -85,17 +85,6 @@ if has('mouse')
endif
endif
" Switch syntax highlighting on when the terminal has colors or when using the
" GUI (which always has colors).
if &t_Co > 2 || has("gui_running")
" Revert with ":syntax off".
syntax on
" I like highlighting strings inside C comments.
" Revert with ":unlet c_comment_strings".
let c_comment_strings=1
endif
" Only do this part when Vim was compiled with the +eval feature.
if 1
@ -124,6 +113,17 @@ if 1
endif
" Switch syntax highlighting on when the terminal has colors or when using the
" GUI (which always has colors).
if &t_Co > 2 || has("gui_running")
" Revert with ":syntax off".
syntax on
" I like highlighting strings inside C comments.
" Revert with ":unlet c_comment_strings".
let c_comment_strings=1
endif
" Convenient command to see the difference between the current buffer and the
" file it was loaded from, thus the changes you made.
" Only define it when not defined already.

View File

@ -1,4 +1,4 @@
*autocmd.txt* For Vim version 8.2. Last change: 2020 Jun 10
*autocmd.txt* For Vim version 8.2. Last change: 2020 Oct 26
VIM REFERENCE MANUAL by Bram Moolenaar
@ -278,7 +278,7 @@ Name triggered by ~
|BufWinLeave| before a buffer is removed from a window
|BufUnload| before unloading a buffer
|BufHidden| just after a buffer has become hidden
|BufHidden| just before a buffer becomes hidden
|BufNew| just after creating a new buffer
|SwapExists| detected an existing swap file
@ -551,12 +551,15 @@ CmdlineChanged After a change was made to the text in the
*CmdlineEnter*
CmdlineEnter After moving the cursor to the command line,
where the user can type a command or search
string.
string; including non-interactive use of ":"
in a mapping, but not when using |<Cmd>|.
<afile> is set to a single character,
indicating the type of command-line.
|cmdwin-char|
*CmdlineLeave*
CmdlineLeave Before leaving the command line.
CmdlineLeave Before leaving the command line; including
non-interactive use of ":" in a mapping, but
not when using |<Cmd>|.
Also when abandoning the command line, after
typing CTRL-C or <Esc>.
When the commands result in an error the
@ -631,7 +634,7 @@ CompleteDone After Insert mode completion is done. Either
*CursorHold*
CursorHold When the user doesn't press a key for the time
specified with 'updatetime'. Not re-triggered
specified with 'updatetime'. Not triggered
until the user has pressed a key (i.e. doesn't
fire every 'updatetime' ms if you leave Vim to
make some coffee. :) See |CursorHold-example|
@ -881,9 +884,14 @@ InsertEnter Just before starting Insert mode. Also for
The cursor is restored afterwards. If you do
not want that set |v:char| to a non-empty
string.
*InsertLeavePre*
InsertLeavePre Just before leaving Insert mode. Also when
using CTRL-O |i_CTRL-O|. Be careful not to
change mode or use `:normal`, it will likely
cause trouble.
*InsertLeave*
InsertLeave When leaving Insert mode. Also when using
CTRL-O |i_CTRL-O|. But not for |i_CTRL-C|.
InsertLeave Just after leaving Insert mode. Also when
using CTRL-O |i_CTRL-O|. But not for |i_CTRL-C|.
*MenuPopup*
MenuPopup Just before showing the popup menu (under the
right mouse button). Useful for adjusting the
@ -1425,8 +1433,8 @@ name!
:aug[roup]! {name} Delete the autocmd group {name}. Don't use
this if there is still an autocommand using
this group! You will get a warning if doing
it anyway. when the group is the current group
you will get error E936.
it anyway. When the group is the current
group you will get error E936.
To enter autocommands for a specific group, use this method:
1. Select the group with ":augroup {name}".

View File

@ -1,4 +1,4 @@
*change.txt* For Vim version 8.2. Last change: 2020 Jun 04
*change.txt* For Vim version 8.2. Last change: 2020 Nov 03
VIM REFERENCE MANUAL by Bram Moolenaar
@ -153,7 +153,7 @@ the 'joinspaces' option is on, these commands insert two spaces after a '.',
'!' or '?' (but if 'cpoptions' includes the 'j' flag, they insert two spaces
only after a '.').
The 'B' and 'M' flags in 'formatoptions' change the behavior for inserting
spaces before and after a multi-byte character |fo-table|.
spaces before and after a multibyte character |fo-table|.
The '[ mark is set at the end of the first line that was joined, '] at the end
of the resulting line.
@ -1680,11 +1680,11 @@ b Like 'v', but only auto-wrap if you enter a blank at or before
l Long lines are not broken in insert mode: When a line was longer than
'textwidth' when the insert command started, Vim does not
automatically format it.
m Also break at a multi-byte character above 255. This is useful for
m Also break at a multibyte character above 255. This is useful for
Asian text where every character is a word on its own.
M When joining lines, don't insert a space before or after a multi-byte
M When joining lines, don't insert a space before or after a multibyte
character. Overrules the 'B' flag.
B When joining lines, don't insert a space between two multi-byte
B When joining lines, don't insert a space between two multibyte
characters. Overruled by the 'M' flag.
1 Don't break a line after a one-letter word. It's broken before it
instead (if possible).
@ -1801,7 +1801,7 @@ Vim has a sorting function and a sorting command. The sorting function can be
found here: |sort()|, |uniq()|.
*:sor* *:sort*
:[range]sor[t][!] [b][f][i][n][o][r][u][x] [/{pattern}/]
:[range]sor[t][!] [b][f][i][l][n][o][r][u][x] [/{pattern}/]
Sort lines in [range]. When no range is given all
lines are sorted.
@ -1809,6 +1809,16 @@ found here: |sort()|, |uniq()|.
With [i] case is ignored.
With [l] sort uses the current collation locale.
Implementation details: strcoll() is used to compare
strings. See |:language| to check or set the collation
locale. Example: >
:language collate en_US.UTF-8
:%sort l
< |v:collate| can also used to check the current locale.
Sorting using the locale typically ignores case.
This does not work properly on Mac.
Options [n][f][x][o][b] are mutually exclusive.
With [n] sorting is done on the first decimal number
@ -1875,8 +1885,7 @@ found here: |sort()|, |uniq()|.
Note that using `:sort` with `:global` doesn't sort the matching lines, it's
quite useless.
The details about sorting depend on the library function used. There is no
guarantee that sorting obeys the current locale. You will have to try it out.
`:sort` does not use the current locale unless the l flag is used.
Vim does do a "stable" sort.
The sorting can be interrupted, but if you interrupt it too late in the

View File

@ -1,4 +1,4 @@
*channel.txt* For Vim version 8.2. Last change: 2020 Jul 10
*channel.txt* For Vim version 8.2. Last change: 2020 Oct 17
VIM REFERENCE MANUAL by Bram Moolenaar
@ -608,6 +608,10 @@ ch_logfile({fname} [, {mode}]) *ch_logfile()*
after every message, on Unix you can use "tail -f" to see what
is going on in real time.
To enable the log very early, to see what is received from a
terminal during startup, use |--cmd|: >
vim --cmd "call ch_logfile('logfile', 'w')"
<
This function is not available in the |sandbox|.
NOTE: the channel communication is stored in the file, be
aware that this may contain confidential and privacy sensitive
@ -961,6 +965,10 @@ job_status({job}) *job_status()* *E916*
"fail", because a fork happens before the failure can be
detected.
If in Vim9 script a variable is declared with type "job" but
never assigned to, passing that variable to job_status()
returns "fail".
If an exit callback was set with the "exit_cb" option and the
job is now detected to be "dead" the callback will be invoked.
@ -1256,7 +1264,9 @@ After setting 'buftype' to "prompt" Vim does not automatically start Insert
mode, use `:startinsert` if you want to enter Insert mode, so that the user
can start typing a line.
The text of the prompt can be set with the |prompt_setprompt()| function.
The text of the prompt can be set with the |prompt_setprompt()| function. If
no prompt is set with |prompt_setprompt()|, "% " is used. You can get the
effective prompt text for a buffer, with |prompt_getprompt()|.
The user can go to Normal mode and navigate through the buffer. This can be
useful to see older output or copy text.
@ -1282,7 +1292,7 @@ prompt. >
" Send the text to a shell with Enter appended.
call ch_sendraw(g:shell_job, a:text .. "\n")
endfunc
" Function handling output from the shell: Added above the prompt.
func GotOutput(channel, msg)
call append(line("$") - 1, "- " . a:msg)

View File

@ -1,4 +1,4 @@
*cmdline.txt* For Vim version 8.2. Last change: 2020 Jul 26
*cmdline.txt* For Vim version 8.2. Last change: 2020 Sep 14
VIM REFERENCE MANUAL by Bram Moolenaar
@ -797,7 +797,7 @@ three lines: >
<
Visual Mode and Range *v_:*
*:star-visual-range*
{Visual}: Starts a command-line with the Visual selected lines as a
range. The code `:'<,'>` is used for this range, which makes
it possible to select a similar line from the command-line
@ -873,34 +873,37 @@ it, no matter how many backslashes.
\\# \#
Also see |`=|.
*:<cword>* *<cword>* *:<cWORD>* *<cWORD>*
*:<cexpr>* *<cexpr>* *:<cfile>* *<cfile>*
*:<afile>* *<afile>* *:<abuf>* *<abuf>*
*:<amatch>* *<amatch>* *:<stack>* *<stack>*
*:<sfile>* *<sfile>* *:<slnum>* *<slnum>*
*:<sflnum>* *<sflnum>* *E499* *E500*
*E499* *E500*
Note: these are typed literally, they are not special keys!
*:<cword>* *<cword>*
<cword> is replaced with the word under the cursor (like |star|)
*:<cWORD>* *<cWORD>*
<cWORD> is replaced with the WORD under the cursor (see |WORD|)
*:<cexpr>* *<cexpr>*
<cexpr> is replaced with the word under the cursor, including more
to form a C expression. E.g., when the cursor is on "arg"
of "ptr->arg" then the result is "ptr->arg"; when the
cursor is on "]" of "list[idx]" then the result is
"list[idx]". This is used for |v:beval_text|.
*:<cfile>* *<cfile>*
<cfile> is replaced with the path name under the cursor (like what
|gf| uses)
*:<afile>* *<afile>*
<afile> When executing autocommands, is replaced with the file name
of the buffer being manipulated, or the file for a read or
write. *E495*
*:<abuf>* *<abuf>*
<abuf> When executing autocommands, is replaced with the currently
effective buffer number (for ":r file" and ":so file" it is
the current buffer, the file being read/sourced is not in a
buffer). *E496*
*:<amatch>* *<amatch>*
<amatch> When executing autocommands, is replaced with the match for
which this autocommand was executed. *E497*
It differs from <afile> only when the file name isn't used
to match with (for FileType, Syntax and SpellFileMissing
events).
*:<sfile>* *<sfile>*
<sfile> When executing a ":source" command, is replaced with the
file name of the sourced file. *E498*
When executing a function, is replaced with the call stack,
@ -908,18 +911,24 @@ Note: these are typed literally, they are not special keys!
<stack> is preferred).
Note that filename-modifiers are useless when <sfile> is
not used inside a script.
*:<stack>* *<stack>*
<stack> is replaced with the call stack, using
"function {function-name}[{lnum}]" for a function line
and "script {file-name}[{lnum}]" for a script line, and
".." in between items. E.g.:
"function {function-name1}[{lnum}]..{function-name2}[{lnum}]"
*:<slnum>* *<slnum>*
<slnum> When executing a ":source" command, is replaced with the
line number. *E842*
When executing a function it's the line number relative to
the start of the function.
*:<sflnum>* *<sflnum>*
<sflnum> When executing a script, is replaced with the line number.
It differs from <slnum> in that <sflnum> is replaced with
the script line number in any situation. *E961*
*:<client>* *<client>*
<client> is replaced with the {clinetid} of the last received
message in |server2client()|
*filename-modifiers*
*:_%:* *::8* *::p* *::.* *::~* *::h* *::t* *::r* *::e* *::s* *::gs* *::S*
@ -1130,7 +1139,8 @@ CTRL-C Continue in Command-line mode. The command-line under the
in Normal mode. There is no redraw, thus the window will
remain visible.
:quit Discard the command line and go back to Normal mode.
":close", ":exit", ":xit" and CTRL-\ CTRL-N also work.
":close", CTRL-W c, ":exit", ":xit" and CTRL-\ CTRL-N also
work.
:qall Quit Vim, unless there are changes in some buffer.
:qall! Quit Vim, discarding changes to any buffer.

View File

@ -1,4 +1,4 @@
*develop.txt* For Vim version 8.2. Last change: 2020 Apr 13
*develop.txt* For Vim version 8.2. Last change: 2020 Aug 15
VIM REFERENCE MANUAL by Bram Moolenaar
@ -34,8 +34,8 @@ balance must be found between them.
VIM IS... VI COMPATIBLE *design-compatible*
First of all, it should be possible to use Vim as a drop-in replacement for
Vi. When the user wants to, he can use Vim in compatible mode and hardly
notice any difference with the original Vi.
Vi. When the user wants to, Vim can be used in compatible mode and hardly
any differences with the original Vi will be noticed.
Exceptions:
- We don't reproduce obvious Vi bugs in Vim.
@ -473,7 +473,7 @@ available spell checking libraries and programs. Unfortunately, the result
was that none of them provided sufficient capabilities to be used as the spell
checking engine in Vim, for various reasons:
- Missing support for multi-byte encodings. At least UTF-8 must be supported,
- Missing support for multibyte encodings. At least UTF-8 must be supported,
so that more than one language can be used in the same file.
Doing on-the-fly conversion is not always possible (would require iconv
support).

View File

@ -921,6 +921,7 @@ char digraph hex dec official name ~
‟ 9" 201F 8223 DOUBLE HIGH-REVERSED-9 QUOTATION MARK
† /- 2020 8224 DAGGER
‡ /= 2021 8225 DOUBLE DAGGER
• oo 2022 8226 BULLET
‥ .. 2025 8229 TWO DOT LEADER
… ,. 2026 8230 HORIZONTAL ELLIPSIS
‰ %0 2030 8240 PER MILLE SIGN

View File

@ -1,4 +1,4 @@
*editing.txt* For Vim version 8.2. Last change: 2020 Jul 05
*editing.txt* For Vim version 8.2. Last change: 2020 Oct 23
VIM REFERENCE MANUAL by Bram Moolenaar
@ -73,10 +73,14 @@ g CTRL-G Prints the current position of the cursor in five
ways: Column, Line, Word, Character and Byte. If the
number of Characters and Bytes is the same then the
Character position is omitted.
If there are characters in the line that take more
than one position on the screen (<Tab> or special
character), both the "real" column and the screen
column are shown, separated with a dash.
character), or characters using more than one byte per
column (characters above 0x7F when 'encoding' is
utf-8), both the byte column and the screen column are
shown, separated by a dash.
Also see the 'ruler' option and the |wordcount()|
function.
@ -652,7 +656,7 @@ list of the current window.
:args ## x
< This will add the "x" item and sort the new list.
:argd[elete] {pattern} .. *:argd* *:argdelete* *E480*
:argd[elete] {pattern} .. *:argd* *:argdelete* *E480* *E610*
Delete files from the argument list that match the
{pattern}s. {pattern} is used like a file pattern,
see |file-pattern|. "%" can be used to delete the
@ -662,7 +666,7 @@ list of the current window.
Example: >
:argdel *.obj
:[range]argd[elete] Delete the {range} files from the argument list.
:[range]argd[elete] Delete the [range] files from the argument list.
Example: >
:10,$argdel
< Deletes arguments 10 and further, keeping 1-9. >

View File

@ -1,4 +1,4 @@
*eval.txt* For Vim version 8.2. Last change: 2020 Jul 21
*eval.txt* For Vim version 8.2. Last change: 2020 Nov 04
VIM REFERENCE MANUAL by Bram Moolenaar
@ -120,8 +120,9 @@ base, use |str2nr()|.
*TRUE* *FALSE* *Boolean*
For boolean operators Numbers are used. Zero is FALSE, non-zero is TRUE.
You can also use |v:false| and |v:true|. When TRUE is returned from a
function it is the Number one, FALSE is the number zero.
You can also use |v:false| and |v:true|. In Vim9 script |false| and |true|.
When TRUE is returned from a function it is the Number one, FALSE is the
number zero.
Note that in the command: >
:if "foo"
@ -132,7 +133,27 @@ non-zero number it means TRUE: >
:" executed
To test for a non-empty string, use empty(): >
:if !empty("foo")
<
< *falsy* *truthy*
An expression can be used as a condition, ignoring the type and only using
whether the value is "sort of true" or "sort of false". Falsy is:
the number zero
empty string, blob, list or dictionary
Other values are truthy. Examples:
0 falsy
1 truthy
-1 truthy
0.0 falsy
0.1 truthy
'' falsy
'x' truthy
[] falsy
[0] truthy
{} falsy
#{x: 1} truthy
0z falsy
0z00 truthy
*non-zero-arg*
Function arguments often behave slightly different from |TRUE|: If the
argument is present and it evaluates to a non-zero Number, |v:true| or a
@ -876,10 +897,13 @@ Example: >
All expressions within one level are parsed from left to right.
expr1 *expr1* *E109*
expr1 *expr1* *trinary* *falsy-operator* *??* *E109*
-----
expr2 ? expr1 : expr1
The trinary operator: expr2 ? expr1 : expr1
The falsy operator: expr2 ?? expr1
Trinary operator ~
The expression before the '?' is evaluated to a number. If it evaluates to
|TRUE|, the result is the value of the expression between the '?' and ':',
@ -902,6 +926,23 @@ To keep this readable, using |line-continuation| is suggested: >
You should always put a space before the ':', otherwise it can be mistaken for
use in a variable such as "a:1".
Falsy operator ~
This is also known as the "null coalescing operator", but that's too
complicated, thus we just call it the falsy operator.
The expression before the '??' is evaluated. If it evaluates to
|truthy|, this is used as the result. Otherwise the expression after the '??'
is evaluated and used as the result. This is most useful to have a default
value for an expression that may result in zero or empty: >
echo theList ?? 'list is empty'
echo GetName() ?? 'unknown'
These are similar, but not equal: >
expr2 ?? expr1
expr2 ? expr2 : expr1
In the second line "expr2" is evaluated twice.
expr2 and expr3 *expr2* *expr3*
---------------
@ -1131,19 +1172,25 @@ Evaluation is always from left to right.
expr8[expr1] item of String or |List| *expr-[]* *E111*
*E909* *subscript*
In legacy Vim script:
If expr8 is a Number or String this results in a String that contains the
expr1'th single byte from expr8. expr8 is used as a String, expr1 as a
Number. This doesn't recognize multi-byte encodings, see `byteidx()` for
an alternative, or use `split()` to turn the string into a list of characters.
Index zero gives the first byte. This is like it works in C. Careful:
text column numbers start with one! Example, to get the byte under the
cursor: >
expr1'th single byte from expr8. expr8 is used as a String (a number is
automatically converted to a String), expr1 as a Number. This doesn't
recognize multibyte encodings, see `byteidx()` for an alternative, or use
`split()` to turn the string into a list of characters. Example, to get the
byte under the cursor: >
:let c = getline(".")[col(".") - 1]
In Vim9 script:
If expr8 is a String this results in a String that contains the expr1'th
single character from expr8. To use byte indexes use |strpart()|.
Index zero gives the first byte or character. Careful: text column numbers
start with one!
If the length of the String is less than the index, the result is an empty
String. A negative index always results in an empty string (reason: backward
compatibility). Use [-1:] to get the last byte.
compatibility). Use [-1:] to get the last byte or character.
If expr8 is a |List| then it results the item at index expr1. See |list-index|
for possible index values. If the index is out of range this results in an
@ -1157,10 +1204,16 @@ error.
expr8[expr1a : expr1b] substring or sublist *expr-[:]*
If expr8 is a Number or String this results in the substring with the bytes
from expr1a to and including expr1b. expr8 is used as a String, expr1a and
expr1b are used as a Number. This doesn't recognize multi-byte encodings, see
|byteidx()| for computing the indexes.
If expr8 is a String this results in the substring with the bytes or
characters from expr1a to and including expr1b. expr8 is used as a String,
expr1a and expr1b are used as a Number.
In legacy Vim script the indexes are byte indexes. This doesn't recognize
multibyte encodings, see |byteidx()| for computing the indexes. If expr8 is
a Number it is first converted to a String.
In Vim9 script the indexes are character indexes. To use byte indexes use
|strpart()|.
If expr1a is omitted zero is used. If expr1b is omitted the length of the
string minus one is used.
@ -1173,6 +1226,7 @@ expr1b is smaller than expr1a the result is an empty string.
Examples: >
:let c = name[-1:] " last byte of a string
:let c = name[0:-1] " the whole string
:let c = name[-2:-2] " last but one byte of a string
:let s = line(".")[4:] " from the fifth byte to the end
:let s = s[:-3] " remove last two bytes
@ -2347,7 +2401,7 @@ assert_equalfile({fname-one}, {fname-two} [, {msg}])
Number assert file contents are equal
assert_exception({error} [, {msg}])
Number assert {error} is in v:exception
assert_fails({cmd} [, {error} [, {msg}]])
assert_fails({cmd} [, {error} [, {msg} [, {lnum} [, {context}]]]])
Number assert {cmd} fails
assert_false({actual} [, {msg}])
Number assert {actual} is false
@ -2413,6 +2467,7 @@ ch_status({handle} [, {options}])
String status of channel {handle}
changenr() Number current change number
char2nr({expr} [, {utf8}]) Number ASCII/UTF8 value of first char in {expr}
charclass({string}) Number character class of {string}
chdir({dir}) String change current working directory
cindent({lnum}) Number C indent for line {lnum}
clearmatches([{win}]) none clear all matches
@ -2501,7 +2556,7 @@ getcmdtype() String return current command-line type
getcmdwintype() String return current command-line window type
getcompletion({pat}, {type} [, {filtered}])
List list of cmdline completion matches
getcurpos() List position of the cursor
getcurpos([{winnr}]) List position of the cursor
getcwd([{winnr} [, {tabnr}]]) String get the current working directory
getenv({name}) String return environment variable
getfontname([{name}]) String name of font being used
@ -2533,6 +2588,7 @@ gettabvar({nr}, {varname} [, {def}])
gettabwinvar({tabnr}, {winnr}, {name} [, {def}])
any {name} in {winnr} in tab page {tabnr}
gettagstack([{nr}]) Dict get the tag stack of window {nr}
gettext({text}) String lookup translation of {text}
getwininfo([{winid}]) List list of info about each window
getwinpos([{timeout}]) List X and Y coord in pixels of the Vim window
getwinposx() Number X coord in pixels of the Vim window
@ -2613,8 +2669,9 @@ maparg({name} [, {mode} [, {abbr} [, {dict}]]])
rhs of mapping {name} in mode {mode}
mapcheck({name} [, {mode} [, {abbr}]])
String check for mappings matching {name}
mapset({mode}, {abbr}, {dict})
none restore mapping from |maparg()| result
mapnew({expr1}, {expr2}) List/Dict like |map()| but creates a new List
or Dictionary
mapset({mode}, {abbr}, {dict}) none restore mapping from |maparg()| result
match({expr}, {pat} [, {start} [, {count}]])
Number position where {pat} matches in {expr}
matchadd({group}, {pattern} [, {priority} [, {id} [, {dict}]]])
@ -2625,6 +2682,10 @@ matcharg({nr}) List arguments of |:match|
matchdelete({id} [, {win}]) Number delete match identified by {id}
matchend({expr}, {pat} [, {start} [, {count}]])
Number position where {pat} ends in {expr}
matchfuzzy({list}, {str} [, {dict}])
List fuzzy match {str} in {list}
matchfuzzypos({list}, {str} [, {dict}])
List fuzzy match {str} in {list}
matchlist({expr}, {pat} [, {start} [, {count}]])
List match and submatches of {pat} in {expr}
matchstr({expr}, {pat} [, {start} [, {count}]])
@ -2641,7 +2702,7 @@ mzeval({expr}) any evaluate |MzScheme| expression
nextnonblank({lnum}) Number line nr of non-blank line >= {lnum}
nr2char({expr} [, {utf8}]) String single char with ASCII/UTF8 value {expr}
or({expr}, {expr}) Number bitwise OR
pathshorten({expr}) String shorten directory names in a path
pathshorten({expr} [, {len}]) String shorten directory names in a path
perleval({expr}) any evaluate |Perl| expression
popup_atcursor({what}, {options}) Number create popup window near the cursor
popup_beval({what}, {options}) Number create popup window for 'ballooneval'
@ -2669,6 +2730,7 @@ popup_show({id}) none unhide popup window {id}
pow({x}, {y}) Float {x} to the power of {y}
prevnonblank({lnum}) Number line nr of non-blank line <= {lnum}
printf({fmt}, {expr1}...) String format text
prompt_getprompt({buf}) String get prompt text
prompt_setcallback({buf}, {expr}) none set prompt callback function
prompt_setinterrupt({buf}, {text}) none set prompt interrupt function
prompt_setprompt({buf}, {text}) none set prompt text
@ -2685,7 +2747,7 @@ prop_type_change({name}, {props})
none change an existing property type
prop_type_delete({name} [, {props}])
none delete a property type
prop_type_get([{name} [, {props}]])
prop_type_get({name} [, {props}])
Dict get property type values
prop_type_list([{props}]) List get list of property types
pum_getpos() Dict position and size of pum if visible
@ -2756,6 +2818,7 @@ setbufline({expr}, {lnum}, {text})
{expr}
setbufvar({expr}, {varname}, {val})
none set {varname} in buffer {expr} to {val}
setcellwidths({list}) none set character cell width overrides
setcharsearch({dict}) Dict set character search from {dict}
setcmdpos({pos}) Number set cursor position in command-line
setenv({name}, {val}) none set environment variable
@ -2824,7 +2887,8 @@ str2list({expr} [, {utf8}]) List convert each character of {expr} to
str2nr({expr} [, {base} [, {quoted}]])
Number convert String to Number
strcharpart({str}, {start} [, {len}])
String {len} characters of {str} at {start}
String {len} characters of {str} at
character {start}
strchars({expr} [, {skipcc}]) Number character length of the String {expr}
strdisplaywidth({expr} [, {col}]) Number display length of the String {expr}
strftime({format} [, {time}]) String format time with a specified format
@ -2833,8 +2897,9 @@ stridx({haystack}, {needle} [, {start}])
Number index of {needle} in {haystack}
string({expr}) String String representation of {expr} value
strlen({expr}) Number length of the String {expr}
strpart({str}, {start} [, {len}])
String {len} bytes of {str} at byte {start}
strpart({str}, {start} [, {len} [, {chars}]])
String {len} bytes/chars of {str} at
byte {start}
strptime({format}, {timestring})
Number Convert {timestring} to unix timestamp
strridx({haystack}, {needle} [, {start}])
@ -3062,7 +3127,7 @@ appendbufline({expr}, {lnum}, {text}) *appendbufline()*
error message is given. Example: >
:let failed = appendbufline(13, 0, "# THE START")
<
< Can also be used as a |method| after a List, the base is
Can also be used as a |method| after a List, the base is
passed as the second argument: >
mylist->appendbufline(buf, lnum)
@ -3343,7 +3408,7 @@ bufnr([{expr} [, {create}]])
above.
If the buffer doesn't exist, -1 is returned. Or, if the
{create} argument is present and not zero, a new, unlisted,
{create} argument is present and TRUE, a new, unlisted,
buffer is created and its number is returned. Example: >
let newbuf = bufnr('Scratch001', 1)
< Using an empty name uses the current buffer. To create a new
@ -3406,7 +3471,8 @@ byte2line({byte}) *byte2line()*
byteidx({expr}, {nr}) *byteidx()*
Return byte index of the {nr}'th character in the string
{expr}. Use zero for the first character, it returns zero.
{expr}. Use zero for the first character, it then returns
zero.
This function is only useful when there are multibyte
characters, otherwise the returned value is equal to {nr}.
Composing characters are not counted separately, their byte
@ -3438,7 +3504,7 @@ byteidxcomp({expr}, {nr}) *byteidxcomp()*
< The first and third echo result in 3 ('e' plus composing
character is 3 bytes), the second echo results in 1 ('e' is
one byte).
Only works different from byteidx() when 'encoding' is set to
Only works differently from byteidx() when 'encoding' is set to
a Unicode encoding.
Can also be used as a |method|: >
@ -3493,7 +3559,7 @@ char2nr({expr} [, {utf8}]) *char2nr()*
Example for "utf-8": >
char2nr("á") returns 225
char2nr("á"[0]) returns 195
< With {utf8} set to 1, always treat as utf-8 characters.
< With {utf8} set to TRUE, always treat as utf-8 characters.
A combining character is a separate character.
|nr2char()| does the opposite.
To turn a string into a list of character numbers: >
@ -3504,6 +3570,18 @@ char2nr({expr} [, {utf8}]) *char2nr()*
Can also be used as a |method|: >
GetChar()->char2nr()
charclass({string}) *charclass()*
Return the character class of the first character in {string}.
The character class is one of:
0 blank
1 punctuation
2 word character
3 emoji
other specific Unicode class
The class is used in patterns and word motions.
chdir({dir}) *chdir()*
Change the current working directory to {dir}. The scope of
the directory change depends on the directory of the current
@ -3721,7 +3799,7 @@ confirm({msg} [, {choices} [, {default} [, {type}]]])
not need to be the first letter: >
confirm("file has been modified", "&Save\nSave &All")
< For the console, the first letter of each choice is used as
the default shortcut key.
the default shortcut key. Case is ignored.
The optional {default} argument is the number of the choice
that is made if the user hits <CR>. Use 1 to make the first
@ -4268,11 +4346,15 @@ expand({expr} [, {nosuf} [, {list}]]) *expand()*
<afile> autocmd file name
<abuf> autocmd buffer number (as a String!)
<amatch> autocmd matched name
<cexpr> C expression under the cursor
<sfile> sourced script file or function name
<slnum> sourced script line number or function
line number
<sflnum> script file line number, also when in
a function
<SID> "<SNR>123_" where "123" is the
current script ID |<SID>|
<stack> call stack
<cword> word under the cursor
<cWORD> WORD under the cursor
<client> the {clientid} of the last received
@ -4346,10 +4428,10 @@ extend({expr1}, {expr2} [, {expr3}]) *extend()*
|Dictionaries|.
If they are |Lists|: Append {expr2} to {expr1}.
If {expr3} is given insert the items of {expr2} before item
{expr3} in {expr1}. When {expr3} is zero insert before the
first item. When {expr3} is equal to len({expr1}) then
{expr2} is appended.
If {expr3} is given insert the items of {expr2} before the
item with index {expr3} in {expr1}. When {expr3} is zero
insert before the first item. When {expr3} is equal to
len({expr1}) then {expr2} is appended.
Examples: >
:echo sort(extend(mylist, [7, 5]))
:call extend(mylist, [2, 3], 1)
@ -4893,31 +4975,32 @@ getbufinfo([{dict}])
Each returned List item is a dictionary with the following
entries:
bufnr buffer number.
bufnr Buffer number.
changed TRUE if the buffer is modified.
changedtick number of changes made to the buffer.
changedtick Number of changes made to the buffer.
hidden TRUE if the buffer is hidden.
lastused timestamp in seconds, like
lastused Timestamp in seconds, like
|localtime()|, when the buffer was
last used.
{only with the |+viminfo| feature}
listed TRUE if the buffer is listed.
lnum current line number in buffer.
linecount number of lines in the buffer (only
lnum Line number used for the buffer when
opened in the current window.
linecount Number of lines in the buffer (only
valid when loaded)
loaded TRUE if the buffer is loaded.
name full path to the file in the buffer.
signs list of signs placed in the buffer.
name Full path to the file in the buffer.
signs List of signs placed in the buffer.
Each list item is a dictionary with
the following fields:
id sign identifier
lnum line number
name sign name
variables a reference to the dictionary with
variables A reference to the dictionary with
buffer-local variables.
windows list of |window-ID|s that display this
windows List of |window-ID|s that display this
buffer
popups list of popup |window-ID|s that
popups List of popup |window-ID|s that
display this buffer
Examples: >
@ -5219,13 +5302,20 @@ getcompletion({pat}, {type} [, {filtered}]) *getcompletion()*
GetPattern()->getcompletion('color')
<
*getcurpos()*
getcurpos() Get the position of the cursor. This is like getpos('.'), but
getcurpos([{winid}])
Get the position of the cursor. This is like getpos('.'), but
includes an extra "curswant" item in the list:
[0, lnum, col, off, curswant] ~
The "curswant" number is the preferred column when moving the
cursor vertically. Also see |getpos()|.
The first "bufnum" item is always zero.
The optional {winid} argument can specify the window. It can
be the window number or the |window-ID|. The last known
cursor position is returned, this may be invalid for the
current value of the buffer if it is not the current window.
If {winid} is invalid a list with zeroes is returned.
This can be used to save and restore the cursor position: >
let save_cursor = getcurpos()
MoveTheCursorAround
@ -5436,15 +5526,16 @@ getloclist({nr} [, {what}]) *getloclist()*
|location-list-file-window| for more
details.
Returns an empty Dictionary if there is no location list for
the window {nr} or the window is not present.
Returns a Dictionary with default values if there is no location
list for the window {nr}.
Returns an empty Dictionary if window {nr} does not exist.
Examples (See also |getqflist-examples|): >
:echo getloclist(3, {'all': 0})
:echo getloclist(5, {'filewinid': 0})
getmarklist([{expr}] *getmarklist()*
getmarklist([{expr}]) *getmarklist()*
Without the {expr} argument returns a |List| with information
about all the global marks. |mark|
@ -5452,7 +5543,7 @@ getmarklist([{expr}] *getmarklist()*
local marks defined in buffer {expr}. For the use of {expr},
see |bufname()|.
Each item in the retuned List is a |Dict| with the following:
Each item in the returned List is a |Dict| with the following:
name - name of the mark prefixed by "'"
pos - a |List| with the position of the mark:
[bufnum, lnum, col, off]
@ -5689,6 +5780,7 @@ getreginfo([{regname}]) *getreginfo()*
If {regname} is invalid or not set, an empty Dictionary
will be returned.
If {regname} is not specified, |v:register| is used.
The returned Dictionary can be passed to |setreg()|.
Can also be used as a |method|: >
GetRegname()->getreginfo()
@ -5795,6 +5887,19 @@ gettagstack([{nr}]) *gettagstack()*
Can also be used as a |method|: >
GetWinnr()->gettagstack()
gettext({text}) *gettext()*
Translate {text} if possible.
This is mainly for use in the distributed Vim scripts. When
generating message translations the {text} is extracted by
xgettext, the translator can add the translated message in the
.po file and Vim will lookup the translation when gettext() is
called.
For {text} double quoted strings are preferred, because
xgettext does not understand escaping in single quoted
strings.
getwininfo([{winid}]) *getwininfo()*
Returns information about windows as a |List| with Dictionaries.
@ -5983,7 +6088,7 @@ has({feature} [, {check}])
zero otherwise. This is useful to check for a typo in
{feature} and to detect dead code. Keep in mind that an older
Vim version will not know about a feature added later and
features that have been abandoned will not be know by the
features that have been abandoned will not be known by the
current Vim version.
Also see |exists()|.
@ -6883,9 +6988,14 @@ luaeval({expr} [, {expr}]) *luaeval()*
< {only available when compiled with the |+lua| feature}
map({expr1}, {expr2}) *map()*
{expr1} must be a |List| or a |Dictionary|.
{expr1} must be a |List|, |Blob| or |Dictionary|.
Replace each item in {expr1} with the result of evaluating
{expr2}. {expr2} must be a |string| or |Funcref|.
{expr2}. For a |Blob| each byte is replaced.
If the item type changes you may want to use |mapnew()| to
create a new List or Dictionary. This is required when using
Vim9 script.
{expr2} must be a |string| or |Funcref|.
If {expr2} is a |string|, inside {expr2} |v:val| has the value
of the current item. For a |Dictionary| |v:key| has the key
@ -6920,11 +7030,11 @@ map({expr1}, {expr2}) *map()*
|Dictionary| to remain unmodified make a copy first: >
:let tlist = map(copy(mylist), ' v:val . "\t"')
< Returns {expr1}, the |List| or |Dictionary| that was filtered.
When an error is encountered while evaluating {expr2} no
further items in {expr1} are processed. When {expr2} is a
Funcref errors inside a function are ignored, unless it was
defined with the "abort" flag.
< Returns {expr1}, the |List|, |Blob| or |Dictionary| that was
filtered. When an error is encountered while evaluating
{expr2} no further items in {expr1} are processed. When
{expr2} is a Funcref errors inside a function are ignored,
unless it was defined with the "abort" flag.
Can also be used as a |method|: >
mylist->map(expr2)
@ -7033,7 +7143,13 @@ mapcheck({name} [, {mode} [, {abbr}]]) *mapcheck()*
GetKey()->mapcheck('n')
mapset({mode}, {abbr}, {dict}) *mapset()*
mapnew({expr1}, {expr2}) *mapnew()*
Like |map()| but instead of replacing items in {expr1} a new
List or Dictionary is created and returned. {expr1} remains
unchanged.
mapset({mode}, {abbr}, {dict}) *mapset()*
Restore a mapping from a dictionary returned by |maparg()|.
{mode} and {abbr} should be the same as for the call to
|maparg()|. *E460*
@ -7257,6 +7373,82 @@ matchend({expr}, {pat} [, {start} [, {count}]]) *matchend()*
Can also be used as a |method|: >
GetText()->matchend('word')
matchfuzzy({list}, {str} [, {dict}]) *matchfuzzy()*
If {list} is a list of strings, then returns a list with all
the strings in {list} that fuzzy match {str}. The strings in
the returned list are sorted based on the matching score.
The optional {dict} argument always supports the following
items:
matchseq When this item is present and {str} contains
multiple words separated by white space, then
returns only matches that contain the words in
the given sequence.
If {list} is a list of dictionaries, then the optional {dict}
argument supports the following additional items:
key key of the item which is fuzzy matched against
{str}. The value of this item should be a
string.
text_cb |Funcref| that will be called for every item
in {list} to get the text for fuzzy matching.
This should accept a dictionary item as the
argument and return the text for that item to
use for fuzzy matching.
{str} is treated as a literal string and regular expression
matching is NOT supported. The maximum supported {str} length
is 256.
When {str} has multiple words each separated by white space,
then the list of strings that have all the words is returned.
If there are no matching strings or there is an error, then an
empty list is returned. If length of {str} is greater than
256, then returns an empty list.
Example: >
:echo matchfuzzy(["clay", "crow"], "cay")
< results in ["clay"]. >
:echo getbufinfo()->map({_, v -> v.name})->matchfuzzy("ndl")
< results in a list of buffer names fuzzy matching "ndl". >
:echo getbufinfo()->matchfuzzy("ndl", {'key' : 'name'})
< results in a list of buffer information dicts with buffer
names fuzzy matching "ndl". >
:echo getbufinfo()->matchfuzzy("spl",
\ {'text_cb' : {v -> v.name}})
< results in a list of buffer information dicts with buffer
names fuzzy matching "spl". >
:echo v:oldfiles->matchfuzzy("test")
< results in a list of file names fuzzy matching "test". >
:let l = readfile("buffer.c")->matchfuzzy("str")
< results in a list of lines in "buffer.c" fuzzy matching "str". >
:echo ['one two', 'two one']->matchfuzzy('two one')
< results in ['two one', 'one two']. >
:echo ['one two', 'two one']->matchfuzzy('two one',
\ {'matchseq': 1})
< results in ['two one'].
matchfuzzypos({list}, {str} [, {dict}]) *matchfuzzypos()*
Same as |matchfuzzy()|, but returns the list of matched
strings and the list of character positions where characters
in {str} matches.
If {str} matches multiple times in a string, then only the
positions for the best match is returned.
If there are no matching strings or there is an error, then a
list with two empty list items is returned.
Example: >
:echo matchfuzzypos(['testing'], 'tsg')
< results in [['testing'], [[0, 2, 6]]] >
:echo matchfuzzypos(['clay', 'lacy'], 'la')
< results in [['lacy', 'clay'], [[0, 1], [1, 2]]] >
:echo [{'text': 'hello', 'id' : 10}]->matchfuzzypos('ll', {'key' : 'text'})
< results in [{'id': 10, 'text': 'hello'}] [[2, 3]]
matchlist({expr}, {pat} [, {start} [, {count}]]) *matchlist()*
Same as |match()|, but return a |List|. The first item in the
list is the matched string, same as what matchstr() would
@ -7531,13 +7723,17 @@ or({expr}, {expr}) *or()*
:let bits = bits->or(0x80)
pathshorten({expr}) *pathshorten()*
pathshorten({expr} [, {len}]) *pathshorten()*
Shorten directory names in the path {expr} and return the
result. The tail, the file name, is kept as-is. The other
components in the path are reduced to single letters. Leading
'~' and '.' characters are kept. Example: >
components in the path are reduced to {len} letters in length.
If {len} is omitted or smaller than 1 then 1 is used (single
letters). Leading '~' and '.' characters are kept. Examples: >
:echo pathshorten('~/.vim/autoload/myfile.vim')
< ~/.v/a/myfile.vim ~
>
:echo pathshorten('~/.vim/autoload/myfile.vim', 2)
< ~/.vi/au/myfile.vim ~
It doesn't matter if the path exists or not.
Can also be used as a |method|: >
@ -7559,7 +7755,7 @@ perleval({expr}) *perleval()*
< {only available when compiled with the |+perl| feature}
popup_ functions are documented here: |popup-functions|.
popup_ functions are documented here: |popup-functions|
pow({x}, {y}) *pow()*
@ -7787,6 +7983,17 @@ printf({fmt}, {expr1} ...) *printf()*
arguments an error is given. Up to 18 arguments can be used.
prompt_getprompt({buf}) *prompt_getprompt()*
Returns the effective prompt text for buffer {buf}. {buf} can
be a buffer name or number. See |prompt-buffer|.
If the buffer doesn't exist or isn't a prompt buffer, an empty
string is returned.
Can also be used as a |method|: >
GetBuffer()->prompt_getprompt()
prompt_setcallback({buf}, {expr}) *prompt_setcallback()*
Set prompt callback for buffer {buf} to {expr}. When {expr}
is an empty string the callback is removed. This has only
@ -7842,7 +8049,7 @@ prompt_setprompt({buf}, {text}) *prompt_setprompt()*
Can also be used as a |method|: >
GetBuffer()->prompt_setprompt('command: ')
prop_ functions are documented here: |text-prop-functions|.
prop_ functions are documented here: |text-prop-functions|
pum_getpos() *pum_getpos()*
If the popup menu (see |ins-completion-menu|) is not visible,
@ -8124,15 +8331,18 @@ reg_recording() *reg_recording()*
Returns an empty string when not recording. See |q|.
reltime([{start} [, {end}]]) *reltime()*
Return an item that represents a time value. The format of
the item depends on the system. It can be passed to
|reltimestr()| to convert it to a string or |reltimefloat()|
to convert to a Float.
Without an argument it returns the current time.
Return an item that represents a time value. The item is a
list with items that depend on the system. In Vim 9 script
list<any> can be used.
The item can be passed to |reltimestr()| to convert it to a
string or |reltimefloat()| to convert to a Float.
Without an argument reltime() returns the current time.
With one argument is returns the time passed since the time
specified in the argument.
With two arguments it returns the time passed between {start}
and {end}.
The {start} and {end} arguments must be values returned by
reltime().
@ -8450,6 +8660,7 @@ screencol() *screencol()*
the following mappings: >
nnoremap <expr> GG ":echom ".screencol()."\n"
nnoremap <silent> GG :echom screencol()<CR>
nnoremap GG <Cmd>echom screencol()<CR>
<
screenpos({winid}, {lnum}, {col}) *screenpos()*
The result is a Dict with the screen position of the text
@ -8707,7 +8918,8 @@ searchcount([{options}]) *searchcount()*
pos |List| `[lnum, col, off]` value
when recomputing the result.
this changes "current" result
value. see |cursor()|, |getpos()
value. see |cursor()|,
|getpos()|
(default: cursor's position)
@ -8918,6 +9130,31 @@ setbufvar({expr}, {varname}, {val}) *setbufvar()*
third argument: >
GetValue()->setbufvar(buf, varname)
setcellwidths({list}) *setcellwidths()*
Specify overrides for cell widths of character ranges. This
tells Vim how wide characters are, counted in screen cells.
This overrides 'ambiwidth'. Example: >
setcellwidths([[0xad, 0xad, 1],
\ [0x2194, 0x2199, 2]])
< *E1109* *E1110* *E1111* *E1112* *E1113*
The {list} argument is a list of lists with each three
numbers. These three numbers are [low, high, width]. "low"
and "high" can be the same, in which case this refers to one
character. Otherwise it is the range of characters from "low"
to "high" (inclusive). "width" is either 1 or 2, indicating
the character width in screen cells.
An error is given if the argument is invalid, also when a
range overlaps with another.
Only characters with value 0x100 and higher can be used.
To clear the overrides pass an empty list: >
setcellwidths([]);
< You can use the script $VIMRUNTIME/tools/emoji_list.vim to see
the effect for known emoji characters.
setcharsearch({dict}) *setcharsearch()*
Set the current character search information to {dict},
which contains one or more of the following entries:
@ -9109,7 +9346,7 @@ setqflist({list} [, {action} [, {what}]]) *setqflist()*
argument is ignored. See below for the supported items in
{what}.
*setqflist-what*
When {what} is not present, the items in {list} or used. Each
When {what} is not present, the items in {list} are used. Each
item must be a dictionary. Non-dictionary items in {list} are
ignored. Each dictionary item can contain the following
entries:
@ -9330,7 +9567,7 @@ settagstack({nr}, {dict} [, {action}]) *settagstack()*
Returns zero for success, -1 for failure.
Examples (for more examples see |tagstack-examples||):
Examples (for more examples see |tagstack-examples|):
Empty the tag stack of window 3: >
call settagstack(3, {'items' : []})
@ -9479,8 +9716,25 @@ sort({list} [, {func} [, {dict}]]) *sort()* *E702*
When {func} is given and it is '1' or 'i' then case is
ignored.
When {func} is given and it is 'l' then the current collation
locale is used for ordering. Implementation details: strcoll()
is used to compare strings. See |:language| check or set the
collation locale. |v:collate| can also be used to check the
current locale. Sorting using the locale typically ignores
case. Example: >
" ö is sorted similarly to o with English locale.
:language collate en_US.UTF8
:echo sort(['n', 'o', 'O', 'ö', 'p', 'z'], 'l')
< ['n', 'o', 'O', 'ö', 'p', 'z'] ~
>
" ö is sorted after z with Swedish locale.
:language collate sv_SE.UTF8
:echo sort(['n', 'o', 'O', 'ö', 'p', 'z'], 'l')
< ['n', 'o', 'O', 'p', 'z', 'ö'] ~
This does not work properly on Mac.
When {func} is given and it is 'n' then all items will be
sorted numerical (Implementation detail: This uses the
sorted numerical (Implementation detail: this uses the
strtod() function to parse numbers, Strings, Lists, Dicts and
Funcrefs will be considered as being 0).
@ -9932,17 +10186,22 @@ strlen({expr}) The result is a Number, which is the length of the String
{expr} in bytes.
If the argument is a Number it is first converted to a String.
For other types an error is given.
If you want to count the number of multi-byte characters use
If you want to count the number of multibyte characters use
|strchars()|.
Also see |len()|, |strdisplaywidth()| and |strwidth()|.
Can also be used as a |method|: >
GetString()->strlen()
strpart({src}, {start} [, {len}]) *strpart()*
strpart({src}, {start} [, {len} [, {chars}]]) *strpart()*
The result is a String, which is part of {src}, starting from
byte {start}, with the byte length {len}.
To count characters instead of bytes use |strcharpart()|.
When {chars} is present and TRUE then {len} is the number of
characters positions (composing characters are not counted
separately, thus "1" means one base character and any
following composing characters).
To count {start} as characters instead of bytes use
|strcharpart()|.
When bytes are selected which do not exist, this doesn't
result in an error, the bytes are simply omitted.
@ -9954,8 +10213,8 @@ strpart({src}, {start} [, {len}]) *strpart()*
strpart("abcdefg", 3) == "defg"
< Note: To get the first character, {start} must be 0. For
example, to get three bytes under and after the cursor: >
strpart(getline("."), col(".") - 1, 3)
example, to get the character under the cursor: >
strpart(getline("."), col(".") - 1, 1, v:true)
<
Can also be used as a |method|: >
GetText()->strpart(5)
@ -10130,7 +10389,7 @@ swapname({expr}) *swapname()*
The result is the swap file path of the buffer {expr}.
For the use of {expr}, see |bufname()| above.
If buffer {expr} is the current buffer, the result is equal to
|:swapname| (unless no swap file).
|:swapname| (unless there is no swap file).
If buffer {expr} has no swap file, returns an empty string.
Can also be used as a |method|: >
@ -10177,7 +10436,9 @@ synIDattr({synID}, {what} [, {mode}]) *synIDattr()*
"bg" background color (as with "fg")
"font" font name (only available in the GUI)
|highlight-font|
"sp" special color (as with "fg") |highlight-guisp|
"sp" special color for the GUI (as with "fg")
|highlight-guisp|
"ul" underline color for cterm: number as a string
"fg#" like "fg", but for the GUI and the GUI is
running the name in "#RRGGBB" form
"bg#" like "fg#" for "bg"
@ -10353,8 +10614,13 @@ tabpagebuflist([{arg}]) *tabpagebuflist()*
tabpagenr([{arg}]) *tabpagenr()*
The result is a Number, which is the number of the current
tab page. The first tab page has number 1.
When the optional argument is "$", the number of the last tab
page is returned (the tab page count).
The optional argument {arg} supports the following values:
$ the number of the last tab page (the tab page
count).
# the number of the last accessed tab page
(where |g<Tab>| goes to). if there is no
previous tab page 0 is returned.
The number can be used with the |:tab| command.
@ -10476,8 +10742,8 @@ terminalprops() *terminalprops()*
detected from the response to |t_RV| request. See
|v:termresponse| for the response itself. If |v:termresponse|
is empty most values here will be 'u' for unknown.
cursor_style wether sending |t_RS| works **
cursor_blink_mode wether sending |t_RC| works **
cursor_style whether sending |t_RS| works **
cursor_blink_mode whether sending |t_RC| works **
underline_rgb whether |t_8u| works **
mouse mouse type supported
@ -10944,7 +11210,8 @@ win_screenpos({nr}) *win_screenpos()*
Return the screen position of window {nr} as a list with two
numbers: [row, col]. The first window always has position
[1, 1], unless there is a tabline, then it is [2, 1].
{nr} can be the window number or the |window-ID|.
{nr} can be the window number or the |window-ID|. Use zero
for the current window.
Return [0, 0] if the window cannot be found in the current
tabpage.
@ -11132,7 +11399,8 @@ winsaveview() Returns a |Dictionary| that contains information to restore
curswant column for vertical movement
topline first line in the window
topfill filler lines, only in diff mode
leftcol first column displayed
leftcol first column displayed; only used when
'wrap' is off
skipcol columns skipped
Note that no option values are saved.
@ -11351,7 +11619,7 @@ menu Compiled with support for |:menu|.
mksession Compiled with support for |:mksession|.
modify_fname Compiled with file name modifiers. |filename-modifiers|
(always true)
mouse Compiled with support mouse.
mouse Compiled with support for mouse.
mouse_dec Compiled with support for Dec terminal mouse.
mouse_gpm Compiled with support for gpm (Linux console mouse)
mouse_gpm_enabled GPM mouse is working
@ -11363,7 +11631,7 @@ mouse_urxvt Compiled with support for urxvt mouse.
mouse_xterm Compiled with support for xterm mouse.
mouseshape Compiled with support for 'mouseshape'.
multi_byte Compiled with support for 'encoding' (always true)
multi_byte_encoding 'encoding' is set to a multi-byte encoding.
multi_byte_encoding 'encoding' is set to a multibyte encoding.
multi_byte_ime Compiled with support for IME input method.
multi_lang Compiled with support for multiple languages.
mzscheme Compiled with MzScheme interface |mzscheme|.
@ -11906,8 +12174,9 @@ be used to pass settings to the autoload script before it's loaded: >
Note that when you make a mistake and call a function that is supposed to be
defined in an autoload script, but the script doesn't actually define the
function, the script will be sourced every time you try to call the function.
And you will get an error message every time.
function, you will get an error message for the missing function. If you fix
the autoload script it won't be automatically loaded again. Either restart
Vim or manually source the script.
Also note that if you have two script files, and one calls a function in the
other and vice versa, before the used function is defined, it won't work.
@ -12129,7 +12398,8 @@ text...
{endmarker}
Set internal variable {var-name} to a |List|
containing the lines of text bounded by the string
{endmarker}.
{endmarker}. The lines of text is used as a
|literal-string|.
{endmarker} must not contain white space.
{endmarker} cannot start with a lower case character.
The last line should end only with the {endmarker}
@ -12240,10 +12510,20 @@ text...
:const x = 1
< is equivalent to: >
:let x = 1
:lockvar 1 x
< This is useful if you want to make sure the variable
is not modified.
*E995*
:lockvar! x
< NOTE: in Vim9 script `:const` works differently, see
|vim9-const|
This is useful if you want to make sure the variable
is not modified. If the value is a List or Dictionary
literal then the items also cannot be changed: >
const ll = [1, 2, 3]
let ll[1] = 5 " Error!
< Nested references are not locked: >
let lvar = ['a']
const lconst = [0, lvar]
let lconst[0] = 2 " Error!
let lconst[1][0] = 'b' " OK
< *E995*
|:const| does not allow to for changing a variable: >
:let x = 1
:const x = 2 " Error!
@ -12273,6 +12553,8 @@ text...
[depth] is relevant when locking a |List| or
|Dictionary|. It specifies how deep the locking goes:
0 Lock the variable {name} but not its
value.
1 Lock the |List| or |Dictionary| itself,
cannot add or remove items, but can
still change their values.
@ -12286,7 +12568,14 @@ text...
|Dictionary|, one level deeper.
The default [depth] is 2, thus when {name} is a |List|
or |Dictionary| the values cannot be changed.
*E743*
Example with [depth] 0: >
let mylist = [1, 2, 3]
lockvar 0 mylist
let mylist[0] = 77 " OK
call add(mylist, 4] " OK
let mylist = [7, 8, 9] " Error!
< *E743*
For unlimited depth use [!] and omit [depth].
However, there is a maximum depth of 100 to catch
loops.

View File

@ -1,4 +1,4 @@
*filetype.txt* For Vim version 8.2. Last change: 2019 Jul 16
*filetype.txt* For Vim version 8.2. Last change: 2020 Sep 28
VIM REFERENCE MANUAL by Bram Moolenaar
@ -163,8 +163,8 @@ file. It will be overwritten when installing a new version of Vim.
A. If you want to overrule all default file type checks.
This works by writing one file for each filetype. The disadvantage is that
means there can be many files. The advantage is that you can simply drop
this file in the right directory to make it work.
there can be many files. The advantage is that you can simply drop this
file in the right directory to make it work.
*ftdetect*
1. Create your user runtime directory. You would normally use the first
item of the 'runtimepath' option. Then create the directory "ftdetect"
@ -397,6 +397,13 @@ ways to change this:
3. Docs for the default filetype plugins. *ftplugin-docs*
AWK *ft-awk-plugin*
Support for features specific to GNU Awk, like @include, can be enabled by
setting: >
let g:awk_is_gawk = 1
CHANGELOG *ft-changelog-plugin*
Allows for easy entrance of Changelog entries in Changelog files. There are

View File

@ -1,4 +1,4 @@
*gui.txt* For Vim version 8.2. Last change: 2020 Mar 16
*gui.txt* For Vim version 8.2. Last change: 2020 Sep 28
VIM REFERENCE MANUAL by Bram Moolenaar
@ -547,15 +547,6 @@ floating menus that do not appear on the main menu bar.
5.2 Creating New Menus *creating-menus*
*:me* *:menu* *:noreme* *:noremenu*
*:am* *:amenu* *:an* *:anoremenu*
*:nme* *:nmenu* *:nnoreme* *:nnoremenu*
*:ome* *:omenu* *:onoreme* *:onoremenu*
*:vme* *:vmenu* *:vnoreme* *:vnoremenu*
*:xme* *:xmenu* *:xnoreme* *:xnoremenu*
*:sme* *:smenu* *:snoreme* *:snoremenu*
*:ime* *:imenu* *:inoreme* *:inoremenu*
*:cme* *:cmenu* *:cnoreme* *:cnoremenu*
*:tlm* *:tlmenu* *:tln* *:tlnoremenu*
*E330* *E327* *E331* *E336* *E333*
*E328* *E329* *E337* *E792*
To create a new menu item, use the ":menu" commands. They are mostly like
@ -596,6 +587,7 @@ With the shortcut "F" (while keeping the <Alt> key pressed), and then "O",
this menu can be used. The second part is shown as "Open :e". The ":e"
is right aligned, and the "O" is underlined, to indicate it is the shortcut.
*:am* *:amenu* *:an* *:anoremenu*
The ":amenu" command can be used to define menu entries for all modes at once,
except for Terminal mode. To make the command work correctly, a character is
automatically inserted for some modes:
@ -634,6 +626,30 @@ included they make the <> form and raw key codes not being recognized).
Note that <Esc> in Cmdline mode executes the command, like in a mapping. This
is Vi compatible. Use CTRL-C to quit Cmdline mode.
*:nme* *:nmenu* *:nnoreme* *:nnoremenu* *:nunme* *:nunmenu*
Menu commands starting with "n" work in Normal mode. |mapmode-n|
*:ome* *:omenu* *:onoreme* *:onoremenu* *:ounme* *:ounmenu*
Menu commands starting with "o" work in Operator-pending mode. |mapmode-o|
*:vme* *:vmenu* *:vnoreme* *:vnoremenu* *:vunme* *:vunmenu*
Menu commands starting with "v" work in Visual mode. |mapmode-v|
*:xme* *:xmenu* *:xnoreme* *:xnoremenu* *:xunme* *:xunmenu*
Menu commands starting with "x" work in Visual and Select mode. |mapmode-x|
*:sme* *:smenu* *:snoreme* *:snoremenu* *:sunme* *:sunmenu*
Menu commands starting with "s" work in Select mode. |mapmode-s|
*:ime* *:imenu* *:inoreme* *:inoremenu* *:iunme* *:iunmenu*
Menu commands starting with "i" work in Insert mode. |mapmode-i|
*:cme* *:cmenu* *:cnoreme* *:cnoremenu* *:cunme* *:cunmenu*
Menu commands starting with "c" work in Cmdline mode. |mapmode-c|
*:tlm* *:tlmenu* *:tln* *:tlnoremenu* *:tlu* *:tlunmenu*
Menu commands starting with "tl" work in Terminal mode. |mapmode-t|
*:menu-<silent>* *:menu-silent*
To define a menu which will not be echoed on the command line, add
"<silent>" as the first argument. Example: >
@ -897,14 +913,6 @@ using the last visual selection.
*:unme* *:unmenu*
*:aun* *:aunmenu*
*:nunme* *:nunmenu*
*:ounme* *:ounmenu*
*:vunme* *:vunmenu*
*:xunme* *:xunmenu*
*:sunme* *:sunmenu*
*:iunme* *:iunmenu*
*:cunme* *:cunmenu*
*:tlu* *:tlunmenu*
To delete a menu item or a whole submenu, use the unmenu commands, which are
analogous to the unmap commands. Eg: >
:unmenu! Edit.Paste
@ -1096,8 +1104,9 @@ That's all. XLFDs are not used. For Chinese this is reported to work well: >
For Mac OSX you can use something like this: >
:set guifont=Monaco:h10
Also see 'macatsui', it can help fix display problems.
*E236*
Mono-spaced fonts *E236*
Note that the fonts must be mono-spaced (all characters have the same width).
An exception is GTK: all fonts are accepted, but mono-spaced fonts look best.

View File

@ -451,7 +451,7 @@ with the Intellimouse driver 2.2 and when "Universal Scrolling" is turned on.
XPM support *w32-xpm-support*
GVim can be build on MS-Windows with support for XPM files. |+xpm_w32|
GVim can be built on MS-Windows with support for XPM files. |+xpm_w32|
See the Make_mvc.mak file for instructions, search for XPM.
To try out if XPM support works do this: >

View File

@ -1,4 +1,4 @@
*help.txt* For Vim version 8.2. Last change: 2020 Apr 05
*help.txt* For Vim version 8.2. Last change: 2020 Aug 15
VIM - main help file
k
@ -158,7 +158,7 @@ Programming language support ~
Language support ~
|digraph.txt| list of available digraphs
|mbyte.txt| multi-byte text support
|mbyte.txt| multibyte text support
|mlang.txt| non-English language support
|rileft.txt| right-to-left editing mode
|arabic.txt| Arabic language support and editing

View File

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

View File

@ -199,8 +199,8 @@ Vim evaluation and command execution, and others.
returns it. Note that the buffer is not set as
current.
vim.call({name} [,{args}])
Proxy to call Vim function named {name} with
vim.call({name} [, {args}])
Proxy to call Vim function named {name} with
arguments {args}. Example: >
:lua print(vim.call('has', 'timers'))
<

View File

@ -1,4 +1,4 @@
*if_mzsch.txt* For Vim version 8.2. Last change: 2019 Dec 07
*if_mzsch.txt* For Vim version 8.2. Last change: 2020 Oct 14
VIM REFERENCE MANUAL by Sergey Khorev
@ -43,7 +43,7 @@ To speed up the process, you might also want to use --disable-gracket and
{script}
{endmarker}
Execute inlined MzScheme script {script}.
Note: This command doesn't work if the MzScheme
Note: This command doesn't work when the MzScheme
feature wasn't compiled in. To avoid errors, see
|script-here|.

View File

@ -275,7 +275,7 @@ Options:
$win delcmd {cmd} *tcl-window-delcmd*
Registers the Tcl command {cmd} as a deletion callback for the window.
This command is executed (in the global scope) just before the window
is closed. Complex commands should be build with "list": >
is closed. Complex commands should be built with "list": >
$win delcmd [list puts vimerr "window deleted"]
< See also |tcl-buffer-delcmd|.
@ -357,7 +357,7 @@ Options:
$buf delcmd {cmd} *tcl-buffer-delcmd*
Registers the Tcl command {cmd} as a deletion callback for the buffer.
This command is executed (in the global scope) just before the buffer
is deleted. Complex commands should be build with "list": >
is deleted. Complex commands should be built with "list": >
$buf delcmd [list puts vimerr "buffer [$buf number] gone"]
< See also |tcl-window-delcmd|.

View File

@ -414,11 +414,11 @@ The examples below assume a 'shiftwidth' of 4.
<
*cino-(*
(N When in unclosed parentheses, indent N characters from the line
with the unclosed parentheses. Add a 'shiftwidth' for every
with the unclosed parenthesis. Add a 'shiftwidth' for every
extra unclosed parentheses. When N is 0 or the unclosed
parentheses is the first non-white character in its line, line
parenthesis is the first non-white character in its line, line
up with the next non-white character after the unclosed
parentheses. (default 'shiftwidth' * 2).
parenthesis. (default 'shiftwidth' * 2).
cino= cino=(0 >
if (c1 && (c2 || if (c1 && (c2 ||
@ -439,7 +439,7 @@ The examples below assume a 'shiftwidth' of 4.
<
*cino-U*
UN When N is non-zero, do not ignore the indenting specified by
( or u in case that the unclosed parentheses is the first
( or u in case that the unclosed parenthesis is the first
non-white character in its line. (default 0).
cino= or cino=(s cino=(s,U1 >
@ -452,8 +452,8 @@ The examples below assume a 'shiftwidth' of 4.
*cino-w*
wN When in unclosed parentheses and N is non-zero and either
using "(0" or "u0", respectively, or using "U0" and the unclosed
parentheses is the first non-white character in its line, line
up with the character immediately after the unclosed parentheses
parenthesis is the first non-white character in its line, line
up with the character immediately after the unclosed parenthesis
rather than the first non-white character. (default 0).
cino=(0 cino=(0,w1 >
@ -464,11 +464,11 @@ The examples below assume a 'shiftwidth' of 4.
<
*cino-W*
WN When in unclosed parentheses and N is non-zero and either
using "(0" or "u0", respectively and the unclosed parentheses is
using "(0" or "u0", respectively and the unclosed parenthesis is
the last non-white character in its line and it is not the
closing parentheses, indent the following line N characters
closing parenthesis, indent the following line N characters
relative to the outer context (i.e. start of the line or the
next unclosed parentheses). (default: 0).
next unclosed parenthesis). (default: 0).
cino=(0 cino=(0,W4 >
a_long_line( a_long_line(
@ -495,8 +495,8 @@ The examples below assume a 'shiftwidth' of 4.
<
*cino-m*
mN When N is non-zero, line up a line starting with a closing
parentheses with the first character of the line with the
matching opening parentheses. (default 0).
parenthesis with the first character of the line with the
matching opening parenthesis. (default 0).
cino=(s cino=(s,m1 >
c = c1 && ( c = c1 && (
@ -510,7 +510,7 @@ The examples below assume a 'shiftwidth' of 4.
<
*cino-M*
MN When N is non-zero, line up a line starting with a closing
parentheses with the first character of the previous line.
parenthesis with the first character of the previous line.
(default 0).
cino= cino=M1 >
@ -569,7 +569,7 @@ The examples below assume a 'shiftwidth' of 4.
recognize preprocessor lines; right-shifting lines that start
with "#" does not work.
*cino-P*
PN When N is non-zero recognize C pragmas, and indent them like any
other code; does not concern other preprocessor directives.
When N is zero (default): don't recognize C pragmas, treating
@ -996,7 +996,7 @@ Indent after a nested paren: >
Indent for a continuation line: >
let g:pyindent_continue = 'shiftwidth() * 2'
The method uses |searchpair()| to look back for unclosed parenthesis. This
The method uses |searchpair()| to look back for unclosed parentheses. This
can sometimes be slow, thus it timeouts after 150 msec. If you notice the
indenting isn't correct, you can set a larger timeout in msec: >
let g:pyindent_searchpair_timeout = 500

View File

@ -1,4 +1,4 @@
*index.txt* For Vim version 8.2. Last change: 2020 May 31
*index.txt* For Vim version 8.2. Last change: 2020 Oct 05
VIM REFERENCE MANUAL by Bram Moolenaar
@ -440,6 +440,7 @@ tag char note action in Normal mode ~
|<C-LeftMouse>| <C-LeftMouse> ":ta" to the keyword at the mouse click
|<C-Right>| <C-Right> 1 same as "w"
|<C-RightMouse>| <C-RightMouse> same as "CTRL-T"
|<C-Tab>| <C-Tab> same as "g<Tab>"
|<Del>| ["x]<Del> 2 same as "x"
|N<Del>| {count}<Del> remove the last digit from {count}
|<Down>| <Down> 1 same as "j"
@ -587,6 +588,8 @@ tag command action in Normal mode ~
following the file name.
|CTRL-W_gt| CTRL-W g t same as `gt`: go to next tab page
|CTRL-W_gT| CTRL-W g T same as `gT`: go to previous tab page
|CTRL-W_g<Tab>| CTRL-W g <Tab> same as |g<Tab>|: go to last accessed tab
page.
|CTRL-W_h| CTRL-W h go to Nth left window (stop at first window)
|CTRL-W_i| CTRL-W i split window and jump to declaration of
identifier under the cursor
@ -781,10 +784,10 @@ tag char note action in Normal mode ~
lines down
|gk| gk 1 like "k", but when 'wrap' on go N screen
lines up
|gn| gn 1,2 find the next match with the last used
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 text line
|gn| gn 1,2 find the next match with the last used
search pattern and Visually select it
|go| go 1 cursor to byte N in the buffer
|gp| ["x]gp 2 put the text [from register x] after the
cursor N times, leave the cursor after it
@ -805,6 +808,7 @@ tag char note action in Normal mode ~
|g<LeftMouse>| g<LeftMouse> same as <C-LeftMouse>
g<MiddleMouse> same as <C-MiddleMouse>
|g<RightMouse>| g<RightMouse> same as <C-RightMouse>
|g<Tab>| g<Tab> go to the last accessed tab page.
|g<Up>| g<Up> 1 same as "gk"
==============================================================================
@ -1313,6 +1317,7 @@ tag command action ~
|:filetype| :filet[ype] switch file type detection on/off
|:filter| :filt[er] filter output of following command
|:find| :fin[d] find file in 'path' and edit it
|:final| :final declare an immutable variable in Vim9
|:finally| :fina[lly] part of a :try command
|:finish| :fini[sh] quit sourcing a Vim script
|:first| :fir[st] go to the first file in the argument list
@ -1687,6 +1692,7 @@ tag command action ~
|:unsilent| :uns[ilent] run a command not silently
|:update| :up[date] write buffer if modified
|:vglobal| :v[global] execute commands for not matching lines
|:var| :var variable declaration in Vim9
|:version| :ve[rsion] print version number and other info
|:verbose| :verb[ose] execute command with 'verbose' set
|:vertical| :vert[ical] make following command split vertically

View File

@ -1,4 +1,4 @@
*insert.txt* For Vim version 8.2. Last change: 2020 Apr 30
*insert.txt* For Vim version 8.2. Last change: 2020 Oct 16
VIM REFERENCE MANUAL by Bram Moolenaar
@ -312,6 +312,7 @@ If you enter a value of 10, it will end up in the file as a 0. The 10 is a
the buffer to a file, the <NL> character is translated into <Nul>. The <NL>
character is written at the end of each line. Thus if you want to insert a
<NL> character in a file you will have to make a line break.
Also see 'fileformat'.
*i_CTRL-X* *insert_expand*
CTRL-X enters a sub-mode where several commands can be used. Most of these
@ -1843,6 +1844,7 @@ a Append text after the cursor [count] times. If the
*A*
A Append text at the end of the line [count] times.
For using "A" in Visual block mode see |v_b_A|.
<insert> or *i* *insert* *<Insert>*
i Insert text before the cursor [count] times.
@ -1855,6 +1857,7 @@ I Insert text before the first non-blank in the line
When the 'H' flag is present in 'cpoptions' and the
line only contains blanks, insert start just before
the last blank.
For using "I" in Visual block mode see |v_b_I|.
*gI*
gI Insert text in column 1 [count] times.

View File

@ -1,4 +1,4 @@
*intro.txt* For Vim version 8.2. Last change: 2020 May 30
*intro.txt* For Vim version 8.2. Last change: 2020 Aug 15
VIM REFERENCE MANUAL by Bram Moolenaar
@ -232,8 +232,8 @@ Vim would never have become what it is now, without the help of these people!
Flemming Madsen X11 client-server, various features and patches
Tony Mechelynck answers many user questions
Paul Moore Python interface extensions, many patches
Katsuhito Nagano Work on multi-byte versions
Sung-Hyun Nam Work on multi-byte versions
Katsuhito Nagano Work on multibyte versions
Sung-Hyun Nam Work on multibyte versions
Vince Negri Win32 GUI and generic console enhancements
Steve Oualline Author of the first Vim book |frombook|
Dominique Pelle Valgrind reports and many fixes
@ -510,7 +510,7 @@ the ":map" command. The rules are:
<M-a> Meta- a ('a' with bit 8 set)
<M-A> Meta- A ('A' with bit 8 set)
<t_kd> "kd" termcap entry (cursor down key)
Although you can specify <M-{char}> with {char} being a multi-byte
Although you can specify <M-{char}> with {char} being a multibyte
character, Vim may not be able to know what byte sequence that is and then
it won't work.

View File

@ -1,4 +1,4 @@
*map.txt* For Vim version 8.2. Last change: 2020 Apr 23
*map.txt* For Vim version 8.2. Last change: 2020 Nov 12
VIM REFERENCE MANUAL by Bram Moolenaar
@ -191,6 +191,12 @@ whether to use the "," mapping or the longer one. To avoid this add the
<nowait> argument. Then the mapping will be used when it matches, Vim does
not wait for more characters to be typed. However, if the characters were
already typed they are used.
Note that this works when the <nowait> mapping fully matches and is found
before any partial matches. This works when:
- There is only one matching buffer-local mapping, since these are always
found before global mappings.
- There is another buffer-local mapping that partly matches, but it is
defined earlier (last defined mapping is found first).
*:map-<silent>* *:map-silent*
To define a mapping which will not be echoed on the command line, add
@ -246,6 +252,17 @@ For abbreviations |v:char| is set to the character that was typed to trigger
the abbreviation. You can use this to decide how to expand the {lhs}. You
should not either insert or change the v:char.
In case you want the mapping to not do anything, you can have the expression
evaluate to an empty string. If something changed that requires Vim to
go through the main loop (e.g. to update the display), return "\<Ignore>".
This is similar to "nothing" but makes Vim return from the loop that waits for
input. Example: >
func s:OpenPopup()
call popup_create(... arguments ...)
return "\<Ignore>"
endfunc
nnoremap <expr> <F3> <Sid>OpenPopup()
Be very careful about side effects! The expression is evaluated while
obtaining characters, you may very well make the command dysfunctional.
For this reason the following is blocked:
@ -254,7 +271,7 @@ For this reason the following is blocked:
- The |:normal| command.
- Moving the cursor is allowed, but it is restored afterwards.
If you want the mapping to do any of these let the returned characters do
that.
that, or use a |<Cmd>| mapping instead.
You can use getchar(), it consumes typeahead if there is any. E.g., if you
have these mappings: >
@ -283,15 +300,42 @@ Here is an example that inserts a list number that increases: >
CTRL-L inserts the next number, CTRL-R resets the count. CTRL-R returns an
empty string, so that nothing is inserted.
Note that there are some tricks to make special keys work and escape CSI bytes
in the text. The |:map| command also does this, thus you must avoid that it
is done twice. This does not work: >
:imap <expr> <F3> "<Char-0x611B>"
Because the <Char- sequence is escaped for being a |:imap| argument and then
again for using <expr>. This does work: >
:imap <expr> <F3> "\u611B"
Using 0x80 as a single byte before other text does not work, it will be seen
as a special key.
Note that using 0x80 as a single byte before other text does not work, it will
be seen as a special key.
*<Cmd>* *:map-cmd*
The special text <Cmd> begins a "command mapping", it executes the command
directly without changing modes. Where you might use ":...<CR>" in the
{rhs} of a mapping, you can instead use "<Cmd>...<CR>".
Example: >
noremap x <Cmd>echo mode(1)<CR>
<
This is more flexible than `:<C-U>` in Visual and Operator-pending mode, or
`<C-O>:` in Insert mode, because the commands are executed directly in the
current mode, instead of always going to Normal mode. Visual mode is
preserved, so tricks with |gv| are not needed. Commands can be invoked
directly in Command-line mode (which would otherwise require timer hacks).
Example of using <Cmd> halfway Insert mode: >
nnoremap <F3> aText <Cmd>echo mode(1)<CR> Added<Esc>
Unlike <expr> mappings, there are no special restrictions on the <Cmd>
command: it is executed as if an (unrestricted) |autocmd| was invoked.
Note:
- Because <Cmd> avoids mode-changes it does not trigger |CmdlineEnter| and
|CmdlineLeave| events, because no user interaction is expected.
- For the same reason, |keycodes| like <C-R><C-W> are interpreted as plain,
unmapped keys.
- In Select mode, |:map| and |:vmap| command mappings are executed in
Visual mode. Use |:smap| to handle Select mode differently.
*E1135* *E1136*
<Cmd> commands must terminate, that is, they must be followed by <CR> in the
{rhs} of the mapping definition. |Command-line| mode is never entered.
*E1137*
<Cmd> commands can have only normal characters and cannot contain special
characters like function keys.
1.3 MAPPING AND MODES *:map-modes*
@ -595,7 +639,7 @@ construct can be used:
<Char-033> character 27
<Char-0x7f> character 127
<S-Char-114> character 114 ('r') shifted ('R')
This is useful to specify a (multi-byte) character in a 'keymap' file.
This is useful to specify a (multibyte) character in a 'keymap' file.
Upper and lowercase differences are ignored.
*map-comments*
@ -840,8 +884,15 @@ 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.
imap <C-{> {{{
Without modifyOtherKeys <C-[> and <C-{> are indistinguishable from Esc.
Note that <C-{> is used and not <C-S-[> or <C-S-{>. This works on most
keyboards. Similarly, <C-}> is used instead of <C-S-]> or <C-S-}> and
<C-|> instead of <C-S-\> or <C-S-|>. Note that '|' has a special meaning in a
mapping, see |map-bar|.
WARNING: if you map <C-[> you may very well break any key codes that start
with Esc. Make sure it comes AFTER other mappings.
A known side 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
@ -875,35 +926,47 @@ g@{motion} Call the function set by the 'operatorfunc' option.
Here is an example that counts the number of spaces with <F4>: >
nmap <silent> <F4> :set opfunc=CountSpaces<CR>g@
vmap <silent> <F4> :<C-U>call CountSpaces(visualmode(), 1)<CR>
nnoremap <expr> <F4> CountSpaces()
xnoremap <expr> <F4> CountSpaces()
" doubling <F4> works on a line
nnoremap <expr> <F4><F4> CountSpaces() .. '_'
function CountSpaces(type = '') abort
if a:type == ''
set opfunc=CountSpaces
return 'g@'
endif
function! CountSpaces(type, ...)
let sel_save = &selection
let &selection = "inclusive"
let reg_save = @@
let reg_save = getreginfo('"')
let cb_save = &clipboard
let visual_marks_save = [getpos("'<"), getpos("'>")]
if a:0 " Invoked from Visual mode, use gv command.
silent exe "normal! gvy"
elseif a:type == 'line'
silent exe "normal! '[V']y"
else
silent exe "normal! `[v`]y"
endif
echomsg strlen(substitute(@@, '[^ ]', '', 'g'))
let &selection = sel_save
let @@ = reg_save
try
set clipboard= selection=inclusive
let commands = #{line: "'[V']y", char: "`[v`]y", block: "`[\<c-v>`]y"}
silent exe 'noautocmd keepjumps normal! ' .. get(commands, a:type, '')
echom getreg('"')->count(' ')
finally
call setreg('"', reg_save)
call setpos("'<", visual_marks_save[0])
call setpos("'>", visual_marks_save[1])
let &clipboard = cb_save
let &selection = sel_save
endtry
endfunction
An <expr> mapping is used to be able to fetch any prefixed count and register.
This also avoids using a command line, which would trigger CmdlineEnter and
CmdlineLeave autocommands.
Note that the 'selection' option is temporarily set to "inclusive" to be able
to yank exactly the right text by using Visual mode from the '[ to the ']
mark.
Also note that there is a separate mapping for Visual mode. It removes the
"'<,'>" range that ":" inserts in Visual mode and invokes the function with
visualmode() and an extra argument.
Also note that the 'clipboard' option is temporarily emptied to avoid
clobbering the `"*` or `"+` registers, if its value contains the item `unnamed`
or `unnamedplus`.
==============================================================================
2. Abbreviations *abbreviations* *Abbreviations*
@ -1167,6 +1230,10 @@ When executing an autocommand or a user command, it will run in the context of
the script it was defined in. This makes it possible that the command calls a
local function or uses a local mapping.
In case the value is used in a context where <SID> cannot be correctly
expanded, use the expand() function: >
let &includexpr = expand('<SID>') .. 'My_includeexpr()'
Otherwise, using "<SID>" outside of a script context is an error.
If you need to get the script number to use in a complicated script, you can
@ -1491,7 +1558,7 @@ The valid escape sequences are
<bang> (See the '-bang' attribute) Expands to a ! if the
command was executed with a ! modifier, otherwise
expands to nothing.
*<mods>* *:command-modifiers*
*<mods>* *<q-mods>* *:command-modifiers*
<mods> The command modifiers, if specified. Otherwise, expands to
nothing. Supported modifiers are |:aboveleft|, |:belowright|,
|:botright|, |:browse|, |:confirm|, |:hide|, |:keepalt|,

View File

@ -1,4 +1,4 @@
*mbyte.txt* For Vim version 8.2. Last change: 2019 Jul 04
*mbyte.txt* For Vim version 8.2. Last change: 2020 Aug 15
VIM REFERENCE MANUAL by Bram Moolenaar et al.
@ -36,7 +36,7 @@ characters or boxes when using another encoding.
This is a summary of the multibyte features in Vim. If you are lucky it works
as described and you can start using Vim without much trouble. If something
doesn't work you will have to read the rest. Don't be surprised if it takes
quite a bit of work and experimenting to make Vim use all the multi-byte
quite a bit of work and experimenting to make Vim use all the multibyte
features. Unfortunately, every system has its own way to deal with multibyte
languages and it is quite complicated.
@ -123,7 +123,7 @@ You can also set 'guifont' alone, Vim will try to find a matching
INPUT
There are several ways to enter multi-byte characters:
There are several ways to enter multibyte characters:
- For X11 XIM can be used. See |XIM|.
- For MS-Windows IME can be used. See |IME|.
- For all systems keymaps can be used. See |mbyte-keymap|.
@ -237,11 +237,11 @@ encoded with one byte, we call this a single-byte encoding. The most often
used one is called "latin1". This limits the number of characters to 256.
Some of these are control characters, thus even fewer can be used for text.
When some characters use two or more bytes, we call this a multi-byte
When some characters use two or more bytes, we call this a multibyte
encoding. This allows using much more than 256 characters, which is required
for most East Asian languages.
Most multi-byte encodings use one byte for the first 127 characters. These
Most multibyte encodings use one byte for the first 127 characters. These
are equal to ASCII, which makes it easy to exchange plain-ASCII text, no
matter what language is used. Thus you might see the right text even when the
encoding was set wrong.
@ -488,11 +488,11 @@ possible.
==============================================================================
4. Using a terminal *mbyte-terminal*
The GUI fully supports multi-byte characters. It is also possible in a
The GUI fully supports multibyte characters. It is also possible in a
terminal, if the terminal supports the same encoding that Vim uses. Thus this
is less flexible.
For example, you can run Vim in a xterm with added multi-byte support and/or
For example, you can run Vim in a xterm with added multibyte support and/or
|XIM|. Examples are kterm (Kanji term) and hanterm (for Korean), Eterm
(Enlightened terminal) and rxvt.
@ -544,7 +544,7 @@ For Vim you may need to set 'encoding' to "utf-8".
5. Fonts on X11 *mbyte-fonts-X11*
Unfortunately, using fonts in X11 is complicated. The name of a single-byte
font is a long string. For multi-byte fonts we need several of these...
font is a long string. For multibyte fonts we need several of these...
Note: Most of this is no longer relevant for GTK+ 2. Selecting a font via
its XLFD is not supported; see 'guifont' for an example of how to
@ -610,7 +610,7 @@ written like:
X FONTSET
*fontset* *xfontset*
A single-byte charset is typically associated with one font. For multi-byte
A single-byte charset is typically associated with one font. For multibyte
charsets a combination of fonts is often used. This means that one group of
characters are used from one font and another group from another font (which
might be double wide). This collection of fonts is called a fontset.
@ -1436,7 +1436,7 @@ not everybody is able to type a composing character.
==============================================================================
12. Overview of options *mbyte-options*
These options are relevant for editing multi-byte files. Check the help in
These options are relevant for editing multibyte files. Check the help in
options.txt for detailed information.
'encoding' Encoding used for the keyboard and display. It is also the
@ -1456,14 +1456,14 @@ options.txt for detailed information.
languages where a sequence of characters can be broken
anywhere.
'guifontset' The list of font names used for a multi-byte encoding. When
'guifontset' The list of font names used for a multibyte encoding. When
this option is not empty, it replaces 'guifont'.
'keymap' Specify the name of a keyboard mapping.
==============================================================================
Contributions specifically for the multi-byte features by:
Contributions specifically for the multibyte features by:
Chi-Deok Hwang <hwang@mizi.co.kr>
SungHyun Nam <goweol@gmail.com>
K.Nagano <nagano@atese.advantest.co.jp>

View File

@ -1,4 +1,4 @@
*message.txt* For Vim version 8.2. Last change: 2020 Jan 01
*message.txt* For Vim version 8.2. Last change: 2020 Sep 07
VIM REFERENCE MANUAL by Bram Moolenaar
@ -19,13 +19,14 @@ The ":messages" command can be used to view previously given messages. This
is especially useful when messages have been overwritten or truncated. This
depends on the 'shortmess' option.
:messages Show all messages.
:mes[sages] Show all messages.
:{count}messages Show the {count} most recent messages.
:{count}mes[sages] Show the {count} most recent messages.
:messages clear Clear all messages.
:mes[sages] clear Clear all messages.
:{count}messages clear Clear messages, keeping only the {count} most
:{count}mes[sages] clear
Clear messages, keeping only the {count} most
recent ones.
The number of remembered messages is fixed at 20 for the tiny version and 200
@ -74,7 +75,7 @@ See `:messages` above.
LIST OF MESSAGES
*E222* *E228* *E232* *E256* *E293* *E298* *E304* *E317*
*E222* *E228* *E232* *E293* *E298* *E304* *E317*
*E318* *E356* *E438* *E439* *E440* *E316* *E320* *E322*
*E323* *E341* *E473* *E570* *E685* *E292* >
Add to read buffer

View File

@ -1,4 +1,4 @@
*mlang.txt* For Vim version 8.2. Last change: 2020 Jun 16
*mlang.txt* For Vim version 8.2. Last change: 2020 Aug 15
VIM REFERENCE MANUAL by Bram Moolenaar
@ -7,7 +7,7 @@
Multi-language features *multilang* *multi-lang*
This is about using messages and menus in various languages. For editing
multi-byte text see |multibyte|.
multibyte text see |multibyte|.
The basics are explained in the user manual: |usr_45.txt|.

View File

@ -1,4 +1,4 @@
*motion.txt* For Vim version 8.2. Last change: 2019 Nov 16
*motion.txt* For Vim version 8.2. Last change: 2020 Oct 18
VIM REFERENCE MANUAL by Bram Moolenaar
@ -190,11 +190,14 @@ l or *l*
*^*
^ To the first non-blank character of the line.
|exclusive| motion.
|exclusive| motion. Any count is ignored.
*$* *<End>* *<kEnd>*
$ or <End> To the end of the line. When a count is given also go
[count - 1] lines downward. |inclusive| motion.
[count - 1] lines downward, or as far is possible.
|inclusive| motion. If a count of 2 of larger is
given and the cursor is on the last line, that is an
error an the cursor doesn't move.
In Visual mode the cursor goes to just after the last
character in the line.
When 'virtualedit' is active, "$" may move the cursor
@ -495,10 +498,11 @@ a set of section macros, specified by the pairs of characters in the
'sections' option. The default is "SHNHH HUnhsh", which defines a section to
start at the nroff macros ".SH", ".NH", ".H", ".HU", ".nh" and ".sh".
The "]" and "[" commands stop at the '{' or '}' in the first column. This is
useful to find the start or end of a function in a C program. Note that the
first character of the command determines the search direction and the
second character the type of brace found.
The "]]" and "[[" commands stop at the '{' in the first column. This is
useful to find the start of a function in a C program. To search for a '}' in
the first column, the end of a C function, use "][" (forward) or "[]"
(backward). Note that the first character of the command determines the
search direction.
If your '{' or '}' are not in the first column, and you would like to use "[["
and "]]" anyway, try these mappings: >
@ -1142,7 +1146,7 @@ sequence of small changes in a line, for example "xxxxx", adds many positions
to the change list. When 'textwidth' is zero 'wrapmargin' is used. When that
also isn't set a fixed number of 79 is used. Detail: For the computations
bytes are used, not characters, to avoid a speed penalty (this only matters
for multi-byte encodings).
for multibyte encodings).
Note that when text has been inserted or deleted the cursor position might be
a bit different from the position of the change. Especially when lines have

View File

@ -1,4 +1,4 @@
*netbeans.txt* For Vim version 8.2. Last change: 2020 Apr 19
*netbeans.txt* For Vim version 8.2. Last change: 2020 Nov 02
VIM REFERENCE MANUAL by Gordon Prieur et al.
@ -362,12 +362,12 @@ color Argument with either a decimal number, "none" (without the
offset A number argument that indicates a byte position in a buffer.
The first byte has offset zero. Line breaks are counted for
how they appear in the file (CR/LF counts for two bytes).
Note that a multi-byte character is counted for the number of
Note that a multibyte character is counted for the number of
bytes it takes.
lnum/col Argument with a line number and column number position. The
line number starts with one, the column is the byte position,
starting with zero. Note that a multi-byte character counts
starting with zero. Note that a multibyte character counts
for several columns.
pathname String argument: file name with full path.
@ -562,9 +562,10 @@ setModtime time
saved directly by the Vim Controller.
New in version 2.3.
setReadOnly
Set a file as readonly
Implemented in version 2.3.
setReadOnly readonly
When the boolean argument "readonly" is "T" for True, mark the
buffer as readonly, when it is "F" for False, mark it as not
readonly. Implemented in version 2.3.
setStyle Not implemented.

View File

@ -1,4 +1,4 @@
*options.txt* For Vim version 8.2. Last change: 2020 Jul 18
*options.txt* For Vim version 8.2. Last change: 2020 Oct 10
VIM REFERENCE MANUAL by Bram Moolenaar
@ -703,6 +703,9 @@ A jump table for the options with a short description can be found at |Q_op|.
The value "double" cannot be used if 'listchars' or 'fillchars'
contains a character that would be double width.
The values are overruled for characters specified with
|setcellwidths()|.
There are a number of CJK fonts for which the width of glyphs for
those characters are solely based on how many octets they take in
legacy/traditional CJK encodings. In those encodings, Euro,
@ -727,8 +730,8 @@ A jump table for the options with a short description can be found at |Q_op|.
'antialias' 'anti' boolean (default: off)
global
{only available when compiled with GUI enabled
on Mac OS X}
This option only has an effect in the GUI version of Vim on Mac OS X
on macOS}
This option only has an effect in the GUI version of Vim on macOS
v10.2 or later. When on, Vim will use smooth ("antialiased") fonts,
which can be easier to read at certain sizes on certain displays.
Setting this option can sometimes cause problems if 'guifont' is set
@ -2551,7 +2554,7 @@ A jump table for the options with a short description can be found at |Q_op|.
"x" delete each combining character on its own. When it is off (the
default) the character along with its combining characters are
deleted.
Note: When 'delcombine' is set "xx" may work different from "2x"!
Note: When 'delcombine' is set "xx" may work differently from "2x"!
This is useful for Arabic, Hebrew and many other languages where one
may have combining characters overtop of base characters, and want
@ -2715,6 +2718,11 @@ A jump table for the options with a short description can be found at |Q_op|.
for Unix: ".,~/tmp,/var/tmp,/tmp")
global
List of directory names for the swap file, separated with commas.
Recommended value: ".,~/vimswap//" - this will put the swap file next
to the edited file if possible, and in your personal swap directory
otherwise. Make sure "~/vimswap//" is only readable for you.
Possible items:
- The swap file will be created in the first directory where this is
possible.
- Empty means that no swap file will be used (recovery is
@ -2728,8 +2736,9 @@ A jump table for the options with a short description can be found at |Q_op|.
is replaced with the path name of the edited file.
- For Unix and Win32, if a directory ends in two path separators "//",
the swap file name will be built from the complete path to the file
with all path separators substituted to percent '%' signs. This will
ensure file name uniqueness in the preserve directory.
with all path separators replaced by percent '%' signs (including
the colon following the drive letter on Win32). This will ensure
file name uniqueness in the preserve directory.
On Win32, it is also possible to end with "\\". However, When a
separating comma is following, you must use "//", since "\\" will
include the comma in the file name. Therefore it is recommended to
@ -2749,9 +2758,10 @@ A jump table for the options with a short description can be found at |Q_op|.
the same file twice will result in a warning. Using "/tmp" on Unix is
discouraged: When the system crashes you lose the swap file.
"/var/tmp" is often not cleared when rebooting, thus is a better
choice than "/tmp". But it can contain a lot of files, your swap
files get lost in the crowd. That is why a "tmp" directory in your
home directory is tried first.
choice than "/tmp". But others on the computer may be able to see the
files, and it can contain a lot of files, your swap files get lost in
the crowd. That is why a "tmp" directory in your home directory is
tried first.
The use of |:set+=| and |:set-=| is preferred when adding or removing
directories from the list. This avoids problems when a future version
uses another default.
@ -2796,7 +2806,10 @@ A jump table for the options with a short description can be found at |Q_op|.
'emoji' 'emo' boolean (default: on)
global
When on all Unicode emoji characters are considered to be full width.
This excludes "text emoji" characters, which are normally displayed as
single width. Unfortunately there is no good specification for this
and it has been determined on trial-and-error basis. Use the
|setcellwidths()| function to change the behavior.
*'encoding'* *'enc'* *E543*
'encoding' 'enc' string (default: "latin1" or value from $LANG)
@ -2826,7 +2839,7 @@ A jump table for the options with a short description can be found at |Q_op|.
This is specified with 'fileencoding'. The conversion is done with
iconv() or as specified with 'charconvert'.
If you need to know whether 'encoding' is a multi-byte encoding, you
If you need to know whether 'encoding' is a multibyte encoding, you
can use: >
if has("multi_byte_encoding")
<
@ -4540,7 +4553,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.
*'isprint'* *'isp'*
'isprint' 'isp' string (default for Win32 and Macintosh:
'isprint' 'isp' string (default for Win32 and macOS:
"@,~-255"; otherwise: "@,161-255")
global
The characters given by this option are displayed directly on the
@ -4669,7 +4682,7 @@ A jump table for the options with a short description can be found at |Q_op|.
characters. Example: "abc;ABC"
Example: "aA,fgh;FGH,cCdDeE"
Special characters need to be preceded with a backslash. These are
";", ',' and backslash itself.
";", ',', '"', '|' and backslash itself.
This will allow you to activate vim actions without having to switch
back and forth between the languages. Your language characters will
@ -4917,18 +4930,8 @@ A jump table for the options with a short description can be found at |Q_op|.
*'macatsui'* *'nomacatsui'*
'macatsui' boolean (default on)
global
{only available in Mac GUI version}
This is a workaround for when drawing doesn't work properly. When set
and compiled with multi-byte support ATSUI text drawing is used. When
not set ATSUI text drawing is not used. Switch this option off when
you experience drawing problems. In a future version the problems may
be solved and this option becomes obsolete. Therefore use this method
to unset it: >
if exists('&macatsui')
set nomacatsui
endif
< Another option to check if you have drawing problems is
'termencoding'.
{not supported}
No longer supported, as the Mac OS X GUI code was removed.
*'magic'* *'nomagic'*
'magic' boolean (default on)
@ -6191,7 +6194,7 @@ A jump table for the options with a short description can be found at |Q_op|.
screen. If the statusline is given by 'statusline' (i.e. not empty),
this option takes precedence over 'ruler' and 'rulerformat'
If the number of characters displayed is different from the number of
bytes in the text (e.g., for a TAB or a multi-byte character), both
bytes in the text (e.g., for a TAB or a multibyte character), both
the text column (byte number) and the screen column are shown,
separated with a dash.
For an empty line "0-1" is shown.
@ -6234,7 +6237,7 @@ A jump table for the options with a short description can be found at |Q_op|.
$VIMRUNTIME,
$VIM/vimfiles/after,
$HOME/vimfiles/after"
Macintosh: "$VIM:vimfiles,
macOS: "$VIM:vimfiles,
$VIMRUNTIME,
$VIM:vimfiles:after"
Haiku: "$BE_USER_SETTINGS/vim,
@ -6564,7 +6567,7 @@ A jump table for the options with a short description can be found at |Q_op|.
For the Amiga the default is ">". For MS-Windows the default is
">%s 2>&1". The output is directly saved in a file and not echoed to
the screen.
For Unix the default it "| tee". The stdout of the compiler is saved
For Unix the default is "| tee". The stdout of the compiler is saved
in a file and echoed to the screen. If the 'shell' option is "csh" or
"tcsh" after initializations, the default becomes "|& tee". If the
'shell' option is "sh", "ksh", "mksh", "pdksh", "zsh", "zsh-beta",
@ -7222,7 +7225,7 @@ A jump table for the options with a short description can be found at |Q_op|.
normal text. Each status line item is of the form:
%-0{minwid}.{maxwid}{item}
All fields except the {item} are optional. A single percent sign can
be given as "%%". Up to 80 items can be specified. *E541*
be given as "%%".
When the option starts with "%!" then it is used as an expression,
evaluated and the result is used as the option value. Example: >
@ -7288,8 +7291,8 @@ A jump table for the options with a short description can be found at |Q_op|.
N N Printer page number. (Only works in the 'printheader' option.)
l N Line number.
L N Number of lines in buffer.
c N Column number.
v N Virtual column number.
c N Column number (byte index).
v N Virtual column number (screen column).
V N Virtual column number as -{num}. Not displayed if equal to 'c'.
p N Percentage through file in lines as in |CTRL-G|.
P S Percentage through file of displayed window. This is like the
@ -7738,14 +7741,12 @@ A jump table for the options with a short description can be found at |Q_op|.
For further details see |arabic.txt|.
*'termencoding'* *'tenc'*
'termencoding' 'tenc' string (default ""; with GTK+ GUI: "utf-8"; with
Macintosh GUI: "macroman")
'termencoding' 'tenc' string (default ""; with GTK+ GUI: "utf-8")
global
Encoding used for the terminal. This specifies what character
encoding the keyboard produces and the display will understand. For
the GUI it only applies to the keyboard ('encoding' is used for the
display). Except for the Mac when 'macatsui' is off, then
'termencoding' should be "macroman".
display).
*E617* *E950*
Note: This does not apply to the GTK+ GUI. After the GUI has been
successfully initialized, 'termencoding' is forcibly set to "utf-8".
@ -7810,8 +7811,8 @@ A jump table for the options with a short description can be found at |Q_op|.
*'termwinsize'* *'tws'*
'termwinsize' 'tws' string (default "")
local to window
Size of the |terminal| window. Format: {rows}x{columns} or
{rows}*{columns}.
Size used when opening the |terminal| window. Format:
{rows}x{columns} or {rows}*{columns}.
- When empty the terminal gets the size from the window.
- When set with a "x" (e.g., "24x80") the terminal size is not
adjusted to the window size. If the window is smaller only the
@ -7822,6 +7823,8 @@ A jump table for the options with a short description can be found at |Q_op|.
- When rows is zero then use the height of the window.
- When columns is zero then use the width of the window.
- Using "0x0" or "0*0" is the same as empty.
- Can be overruled in the |term_start()| options with "term_rows" and
"term_cols".
Examples:
"30x0" uses 30 rows and the current window width.
@ -8368,7 +8371,7 @@ A jump table for the options with a short description can be found at |Q_op|.
>= 14 Anything pending in a ":finally" clause.
>= 15 Every executed Ex command from a script (truncated at 200
characters).
>= 16 Every executed Ex command
>= 16 Every executed Ex command.
This option can also be set with the "-V" argument. See |-V|.
This option is also set by the |:verbose| command.
@ -8391,7 +8394,7 @@ A jump table for the options with a short description can be found at |Q_op|.
'viewdir' 'vdir' string (default for Amiga and Win32:
"$VIM/vimfiles/view",
for Unix: "~/.vim/view",
for Macintosh: "$VIM:vimfiles:view"
for macOS: "$VIM:vimfiles:view"
for VMS: "sys$login:vimfiles/view")
global
{not available when compiled without the |+mksession|
@ -8907,7 +8910,7 @@ A jump table for the options with a short description can be found at |Q_op|.
{only available when compiled with the |terminal|
feature on MS-Windows}
Specifies the name of the winpty shared library, used for the
|:terminal| command. The default depends on whether was build as a
|:terminal| command. The default depends on whether Vim was built as a
32-bit or 64-bit executable. If not found, "winpty.dll" is tried as
a fallback.
Environment variables are expanded |:set_env|.

View File

@ -88,7 +88,7 @@ VAX C compiler is not fully ANSI C compatible in pre-processor directives
semantics, therefore you have to use a converter program that will do the lion
part of the job. For detailed instructions read file INSTALLvms.txt
MMS_VIM.EXE is build together with VIM.EXE, but for XXD.EXE you should
MMS_VIM.EXE is built together with VIM.EXE, but for XXD.EXE you should
change to a subdirectory and build it separately.
CTAGS is not part of the Vim source distribution anymore, however the OpenVMS

View File

@ -1,4 +1,4 @@
*pattern.txt* For Vim version 8.2. Last change: 2020 Jul 10
*pattern.txt* For Vim version 8.2. Last change: 2020 Sep 01
VIM REFERENCE MANUAL by Bram Moolenaar
@ -797,11 +797,12 @@ An ordinary atom can be:
^beep( the start of the C function "beep" (probably).
*/\^*
\^ Matches literal '^'. Can be used at any position in the pattern.
\^ Matches literal '^'. Can be used at any position in the pattern, but
not inside [].
*/\_^*
\_^ Matches start-of-line. |/zero-width| Can be used at any position in
the pattern.
the pattern, but not inside [].
Example matches ~
\_s*\_^foo white space and blank lines and then "foo" at
start-of-line
@ -812,12 +813,13 @@ $ At end of pattern or in front of "\|", "\)" or "\n" ('magic' on):
|/zero-width|
*/\$*
\$ Matches literal '$'. Can be used at any position in the pattern.
\$ Matches literal '$'. Can be used at any position in the pattern, but
not inside [].
*/\_$*
\_$ Matches end-of-line. |/zero-width| Can be used at any position in the
pattern. Note that "a\_$b" never matches, since "b" cannot match an
end-of-line. Use "a\nb" instead |/\n|.
pattern, but not inside []. Note that "a\_$b" never matches, since
"b" cannot match an end-of-line. Use "a\nb" instead |/\n|.
Example matches ~
foo\_$\_s* "foo" at end-of-line and following white space and
blank lines
@ -840,8 +842,9 @@ $ At end of pattern or in front of "\|", "\)" or "\n" ('magic' on):
|/zero-width|
*/\zs*
\zs Matches at any position, and sets the start of the match there: The
next char is the first char of the whole match. |/zero-width|
\zs Matches at any position, but not inside [], and sets the start of the
match there: The next char is the first char of the whole match.
|/zero-width|
Example: >
/^\s*\zsif
< matches an "if" at the start of a line, ignoring white space.
@ -852,8 +855,9 @@ $ At end of pattern or in front of "\|", "\)" or "\n" ('magic' on):
This cannot be followed by a multi. *E888*
{not available when compiled without the |+syntax| feature}
*/\ze*
\ze Matches at any position, and sets the end of the match there: The
previous char is the last char of the whole match. |/zero-width|
\ze Matches at any position, but not inside [], and sets the end of the
match there: The previous char is the last char of the whole match.
|/zero-width|
Can be used multiple times, the last one encountered in a matching
branch is used.
Example: "end\ze\(if\|for\)" matches the "end" in "endif" and
@ -939,7 +943,7 @@ $ At end of pattern or in front of "\|", "\)" or "\n" ('magic' on):
These three can be used to match specific columns in a buffer or
string. The "23" can be any column number. The first column is 1.
Actually, the column is the byte number (thus it's not exactly right
for multi-byte characters).
for multibyte characters).
WARNING: When inserting or deleting text Vim does not automatically
update the matches. This means Syntax highlighting quickly becomes
wrong.
@ -994,7 +998,7 @@ Character classes:
\p printable character (see 'isprint' option) */\p*
\P like "\p", but excluding digits */\P*
NOTE: the above also work for multi-byte characters. The ones below only
NOTE: the above also work for multibyte characters. The ones below only
match ASCII characters, as indicated by the range.
*whitespace* *white-space*
@ -1131,9 +1135,9 @@ x A single character, with no special meaning, matches itself
a list of at least one character, each of which is either '-', '.',
'/', alphabetic, numeric, '_' or '~'.
These items only work for 8-bit characters, except [:lower:] and
[:upper:] also work for multi-byte characters when using the new
[:upper:] also work for multibyte characters when using the new
regexp engine. See |two-engines|. In the future these items may
work for multi-byte characters. For now, to get all "alpha"
work for multibyte characters. For now, to get all "alpha"
characters you can use: [[:lower:][:upper:]].
The "Func" column shows what library function is used. The
@ -1257,8 +1261,8 @@ When working with expression evaluation, a <NL> character in the pattern
matches a <NL> in the string. The use of "\n" (backslash n) to match a <NL>
doesn't work there, it only works to match text in the buffer.
*pattern-multi-byte*
Patterns will also work with multi-byte characters, mostly as you would
*pattern-multi-byte* *pattern-multibyte*
Patterns will also work with multibyte characters, mostly as you would
expect. But invalid bytes may cause trouble, a pattern with an invalid byte
will probably never match.

View File

@ -1,4 +1,4 @@
*pi_netrw.txt* For Vim version 8.2. Last change: 2020 Jan 14
*pi_netrw.txt* For Vim version 8.2. Last change: 2020 Sep 19
------------------------------------------------
NETRW REFERENCE MANUAL by Charles E. Campbell
@ -437,9 +437,13 @@ settings are described below, in |netrw-browser-options|, and in
*g:netrw_silent* =0 : transfers done normally
=1 : transfers done silently
*g:netrw_use_errorwindow* =1 : messages from netrw will use a separate one
*g:netrw_use_errorwindow* =2: messages from netrw will use a popup window
Move the mouse and pause to remove the popup window.
(default value if popup windows are availble)
=1 : messages from netrw will use a separate one
line window. This window provides reliable
delivery of messages. (default)
delivery of messages.
(default value if popup windows are not availble)
=0 : messages from netrw will use echoerr ;
messages don't always seem to show up this
way, but one doesn't have to quit the window.
@ -725,6 +729,8 @@ just as easily as if they were local files! >
See |netrw-activate| for more on how to encourage your vim to use plugins
such as netrw.
For password-free use of scp:, see |netrw-ssh-hack|.
==============================================================================
7. Ex Commands *netrw-ex* {{{1
@ -1063,7 +1069,7 @@ QUICK HELP *netrw-quickhelp* {{{2
Reverse sorting order.........................|netrw-r|
*netrw-quickmap* *netrw-quickmaps*
*netrw-quickmap* *netrw-quickmaps*
QUICK REFERENCE: MAPS *netrw-browse-maps* {{{2
>
--- ----------------- ----
@ -1080,7 +1086,7 @@ QUICK REFERENCE: MAPS *netrw-browse-maps* {{{2
a Cycles between normal display, |netrw-a|
hiding (suppress display of files matching g:netrw_list_hide)
and showing (display only files which match g:netrw_list_hide)
c Make browsing directory the current directory |netrw-c|
cd Make browsing directory the current directory |netrw-cd|
C Setting the editing window |netrw-C|
d Make a directory |netrw-d|
D Attempt to remove the file(s)/directory(ies) |netrw-D|
@ -2098,7 +2104,7 @@ the two directories the same, use the "cd" map (type cd). That map will
set Vim's notion of the current directory to netrw's current browsing
directory.
*netrw-c* : This map's name has been changed from "c" to cd (see |netrw-cd|).
|netrw-cd|: This map's name was changed from "c" to cd (see |netrw-cd|).
This change was done to allow for |netrw-cb| and |netrw-cB| maps.
Associated setting variable: |g:netrw_keepdir|
@ -2753,7 +2759,7 @@ your browsing preferences. (see also: |netrw-settings|)
=0 keep the current directory the same as the
browsing directory.
The current browsing directory is contained in
b:netrw_curdir (also see |netrw-c|)
b:netrw_curdir (also see |netrw-cd|)
*g:netrw_keepj* ="keepj" (default) netrw attempts to keep the
|:jumps| table unaffected.
@ -3124,7 +3130,8 @@ a file using the local browser (by putting the cursor on it) and pressing
Related topics:
* To see what the current directory is, use |:pwd|
* To make the currently browsed directory the current directory, see |netrw-c|
* To make the currently browsed directory the current directory, see
|netrw-cd|
* To automatically make the currently browsed directory the current
directory, see |g:netrw_keepdir|.
@ -3799,9 +3806,15 @@ netrw:
or
http://vim.sourceforge.net/scripts/script.php?script_id=120
Decho.vim is provided as a "vimball"; see |vimball-intro|.
Decho.vim is provided as a "vimball"; see |vimball-intro|. You
should edit the Decho.vba.gz file and source it in: >
2. Edit the <netrw.vim> file by typing: >
vim Decho.vba.gz
:so %
:q
<
2. To turn on debug tracing in netrw, then edit the <netrw.vim>
file by typing: >
vim netrw.vim
:DechoOn
@ -3823,14 +3836,34 @@ netrw:
read/write your file over the network in a separate tab or
server vim window.
To save the file, use >
Change the netrw.vimrc file to include the Decho plugin: >
set nocp
so $HOME/.vim/plugin/Decho.vim
so $HOME/.vim/plugin/netrwPlugin.vim
<
You should continue to run vim with >
vim -u netrw.vimrc --noplugins -i NONE [some path here]
<
to avoid entanglements with options and other plugins.
To save the file: under linux, the output will be in a separate
remote server window; in it, just save the file with >
:w! DBG
< Under a vim that doesn't support clientserver, your debugging
output will appear in another tab: >
:tabnext
:set bt=
:w! DBG
<
Furthermore, it'd be helpful if you would type >
< Furthermore, it'd be helpful if you would type >
:Dsep <command>
< where <command> is the command you're about to type next,
thereby making it easier to associate which part of the
debugging trace is due to which command.
@ -3838,17 +3871,34 @@ netrw:
Please send that information to <netrw.vim>'s maintainer along
with the o/s you're using and the vim version that you're using
(see |:version|) (remove the embedded NOSPAM first) >
NcampObell@SdrPchip.AorgM-NOSPAM
<
==============================================================================
12. History *netrw-history* {{{1
v170: Mar 11, 2020 * (reported by Reiner Herrmann) netrw+tree
would not hide with the ^\..* pattern
correctly.
* (Marcin Szamotulski) NetrwOptionRestore
did not restore options correctly that
had a single quote in the option string.
Apr 13, 2020 * implemented error handling via popup
windows (see |popup_beval()|)
Apr 30, 2020 * (reported by Manatsu Takahashi) while
using Lexplore, a modified file could
be overwritten. Sol'n: will not overwrite,
but will emit an |E37| (although one cannot
add an ! to override)
Jun 07, 2020 * (reported by Jo Totland) repeatedly invoking
:Lexplore and quitting it left unused
hidden buffers. Netrw will now set netrw
buffers created by :Lexplore to |bh|=wipe.
v169: Dec 20, 2019 * (reported by amkarthik) that netrw's x
(|netrw-x|) would throw an error when
attempting to open a local directory.
v168: Dec 12, 2019 * scp timeout error message not reported,
hopefully now fixed (Shane Xb Qian)
v167: Nov 29, 2019 * netrw does a save&restore on @* and @+.
That causes problems with the clipboard.
Now restores occurs only if @* or @+ have
@ -4306,4 +4356,4 @@ netrw:
==============================================================================
Modelines: {{{1
vim:tw=78:ts=8:noet:ft=help:norl:fdm=marker
vim:tw=78:ts=8:ft=help:noet:norl:fdm=marker

View File

@ -154,4 +154,4 @@ Copyright: Copyright (C) 2005-2015 Charles E Campbell *zip-copyright*
v1 Sep 15, 2005 * Initial release, had browsing, reading, and writing
==============================================================================
vim:tw=78:ts=8:noet:ft=help:fdm=marker
vim:tw=78:ts=8:ft=help:noet:norl:fdm=marker

View File

@ -1,4 +1,4 @@
*popup.txt* For Vim version 8.2. Last change: 2020 May 18
*popup.txt* For Vim version 8.2. Last change: 2020 Oct 17
VIM REFERENCE MANUAL by Bram Moolenaar
@ -74,9 +74,9 @@ wrapping, lines in the buffer. It can be limited with the "maxheight"
property. You can use empty lines to increase the height or the "minheight"
property.
The width of the window is normally equal to the longest line in the buffer.
It can be limited with the "maxwidth" property. You can use spaces to
increase the width or use the "minwidth" property.
The width of the window is normally equal to the longest visible line in the
buffer. It can be limited with the "maxwidth" property. You can use spaces
to increase the width or use the "minwidth" property.
By default the 'wrap' option is set, so that no text disappears. Otherwise,
if there is not enough space then the window is shifted left in order to
@ -314,6 +314,7 @@ popup_filter_menu({id}, {key}) *popup_filter_menu()*
<Space> <Enter> accept current selection
x Esc CTRL-C cancel the menu
Other keys are ignored.
Always returns |v:true|.
A match is set on that line to highlight it, see
|popup_menu()|.
@ -711,7 +712,7 @@ The second argument of |popup_create()| is a dictionary with options:
By default a double line is used all around when
'encoding' is "utf-8" and 'ambiwidth' is "single",
otherwise ASCII characters are used.
scrollbar non-zero: show a scrollbar when the text doesn't fit.
scrollbar 1 or true: show a scrollbar when the text doesn't fit.
zero: do not show a scrollbar. Default is non-zero.
Also see |popup-scrollbar|.
scrollbarhighlight Highlight group name for the scrollbar. The
@ -910,11 +911,22 @@ A mouse click arrives as <LeftMouse>. The coordinates can be obtained with
Vim provides standard filters |popup_filter_menu()| and
|popup_filter_yesno()|.
Keys coming from a `:normal` command do not pass through the filter. This can
be used to move the cursor in a popup where the "cursorline" option is set: >
call win_execute(winid, 'normal! 10Gzz')
Keys coming from `feedkeys()` are passed through the filter.
Note that "x" is the normal way to close a popup. You may want to use Esc,
but since many keys start with an Esc character, there may be a delay before
Vim recognizes the Esc key. If you do use Esc, it is recommended to set the
'ttimeoutlen' option to 100 and set 'timeout' and/or 'ttimeout'.
*popup-filter-errors*
If the filter function can't be called, e.g. because the name is wrong, then
the popup is closed. If the filter causes an error then it is assumed to
return zero. If this happens three times in a row the popup is closed. If
the popup gives errors fewer than 10% of the calls then it won't be closed.
POPUP CALLBACK *popup-callback*

View File

@ -1,4 +1,4 @@
*print.txt* For Vim version 8.2. Last change: 2019 Dec 17
*print.txt* For Vim version 8.2. Last change: 2020 Aug 15
VIM REFERENCE MANUAL by Bram Moolenaar
@ -114,7 +114,7 @@ If 'printencoding' is empty or Vim cannot find the file then it will use
encoding file. If Vim is unable to find a character encoding file then it
will use the "latin1" print character encoding file.
When 'encoding' is set to a multi-byte encoding, Vim will try to convert
When 'encoding' is set to a multibyte encoding, Vim will try to convert
characters to the printing encoding for printing (if 'printencoding' is empty
then the conversion will be to latin1). Conversion to a printing encoding
other than latin1 will require Vim to be compiled with the |+iconv| feature.
@ -269,7 +269,7 @@ Japanese text you would do the following; >
:set printmbcharset=JIS_X_1983
If 'printmbcharset' is not one of the above values then it is assumed to
specify a custom multi-byte character set and no check will be made that it is
specify a custom multibyte character set and no check will be made that it is
compatible with the value for 'printencoding'. Vim will look for a file
defining the character set in the "print" directory in 'runtimepath'.
@ -304,7 +304,7 @@ printing of characters in the ASCII code range.
a:yes Use ASCII character set for codes in the ASCII
a:no (default) code range.
The following is an example of specifying two multi-byte fonts, one for normal
The following is an example of specifying two multibyte fonts, one for normal
and italic printing and one for bold and bold-italic printing, and using
Courier to print codes in the ASCII code range but using the national
character set: >
@ -420,10 +420,10 @@ There are currently a number of limitations with PostScript printing:
possible to get all the characters in an encoding to print by installing a
new version of the Courier font family.
- Multi-byte support - Currently Vim will try to convert multi-byte characters
- Multi-byte support - Currently Vim will try to convert multibyte characters
to the 8-bit encoding specified by 'printencoding' (or latin1 if it is
empty). Any characters that are not successfully converted are shown as
unknown characters. Printing will fail if Vim cannot convert the multi-byte
unknown characters. Printing will fail if Vim cannot convert the multibyte
to the 8-bit encoding.
==============================================================================
@ -508,7 +508,7 @@ print ASCII text using the national character set you may see some unexpected
characters. If you want true ASCII code printing then you need to configure
Vim to output ASCII characters for the ASCII code range with 'printmbfont'.
It is possible to define your own multi-byte character set although this
It is possible to define your own multibyte character set although this
should not be attempted lightly. A discussion on the process if beyond the
scope of these help files. You can find details on CMap (character map) files
in the document 'Adobe CMap and CIDFont Files Specification, Version 1.0',

View File

@ -1705,7 +1705,7 @@ special problem here is that it doesn't print information on leaving the
directory and that it doesn't print the absolute path.
To solve the problem with relative paths and missing "leave directory"
messages Vim uses following algorithm:
messages Vim uses the following algorithm:
1) Check if the given directory is a subdirectory of the current directory.
If this is true, store it as the current directory.
@ -1938,7 +1938,7 @@ list window is:
The values displayed in each line correspond to the "bufnr", "lnum", "col" and
"text" fields returned by the |getqflist()| function.
For some quickfix/location lists, the displayed text need to be customized.
For some quickfix/location lists, the displayed text needs to be customized.
For example, if only the filename is present for a quickfix entry, then the
two "|" field separator characters after the filename are not needed. Another
use case is to customize the path displayed for a filename. By default, the

View File

@ -1,4 +1,4 @@
*quickref.txt* For Vim version 8.2. Last change: 2020 Jun 10
*quickref.txt* For Vim version 8.2. Last change: 2020 Aug 15
VIM REFERENCE MANUAL by Bram Moolenaar
@ -696,7 +696,7 @@ Short explanation of each option: *option-list*
'eventignore' 'ei' autocommand events that are ignored
'expandtab' 'et' use spaces when <Tab> is inserted
'exrc' 'ex' read .vimrc and .exrc in the current directory
'fileencoding' 'fenc' file encoding for multi-byte text
'fileencoding' 'fenc' file encoding for multibyte text
'fileencodings' 'fencs' automatically detected character encodings
'fileformat' 'ff' file format used for file I/O
'fileformats' 'ffs' automatically detected values for 'fileformat'
@ -728,7 +728,7 @@ Short explanation of each option: *option-list*
'grepprg' 'gp' program to use for ":grep"
'guicursor' 'gcr' GUI: settings for cursor shape and blinking
'guifont' 'gfn' GUI: Name(s) of font(s) to be used
'guifontset' 'gfs' GUI: Names of multi-byte fonts to be used
'guifontset' 'gfs' GUI: Names of multibyte fonts to be used
'guifontwide' 'gfw' list of font names for double-wide characters
'guiheadroom' 'ghr' GUI: pixels room for window decorations
'guioptions' 'go' GUI: Which components and options are used

View File

@ -1,4 +1,4 @@
*recover.txt* For Vim version 8.2. Last change: 2020 May 09
*recover.txt* For Vim version 8.2. Last change: 2020 Aug 15
VIM REFERENCE MANUAL by Bram Moolenaar
@ -64,8 +64,8 @@ Disadvantages:
directories (although Vim tries to avoid that by comparing the path name).
This will result in bogus ATTENTION warning messages.
- When you use your home directory, and somebody else tries to edit the same
file, he will not see your swap file and will not get the ATTENTION warning
message.
file, that user will not see your swap file and will not get the ATTENTION
warning message.
On the Amiga you can also use a recoverable ram disk, but there is no 100%
guarantee that this works. Putting swap files in a normal ram disk (like RAM:
on the Amiga) or in a place that is cleared when rebooting (like /tmp on Unix)

View File

@ -179,7 +179,7 @@ name on the 'VimRegistry' property on the root window.
A non GUI Vim with access to the X11 display (|xterm-clipboard| enabled), can
also act as a command server if a server name is explicitly given with the
--servername argument, or when Vim was build with the |+autoservername|
--servername argument, or when Vim was built with the |+autoservername|
feature.
An empty --servername argument will cause the command server to be disabled.

View File

@ -1,4 +1,4 @@
*repeat.txt* For Vim version 8.2. Last change: 2020 May 14
*repeat.txt* For Vim version 8.2. Last change: 2020 Oct 09
VIM REFERENCE MANUAL by Bram Moolenaar
@ -271,6 +271,9 @@ For writing a Vim script, see chapter 41 of the user manual |usr_41.txt|.
directories are added to 'runtimepath'. This is
useful in your .vimrc. The plugins will then be
loaded during initialization, see |load-plugins|.
Note that for ftdetect scripts to be loaded
you will need to write `filetype plugin indent on`
AFTER all `packadd!` commands.
Also see |pack-add|.
{only available when compiled with |+eval|}
@ -643,7 +646,7 @@ This assumes you write one or more plugins that you distribute as a package.
If you have two unrelated plugins you would use two packages, so that Vim
users can choose what they include or not. Or you can decide to use one
package with optional plugins, and tell the user to add the ones he wants with
package with optional plugins, and tell the user to add the preferred ones with
`:packadd`.
Decide how you want to distribute the package. You can create an archive or
@ -679,7 +682,7 @@ You could add this packadd command in one of your plugins, to be executed when
the optional plugin is needed.
Run the `:helptags` command to generate the doc/tags file. Including this
generated file in the package means that the user can drop the package in his
generated file in the package means that the user can drop the package in the
pack directory and the help command works right away. Don't forget to re-run
the command after changing the plugin help: >
:helptags path/start/foobar/doc

View File

@ -1,4 +1,4 @@
*sign.txt* For Vim version 8.2. Last change: 2019 Nov 30
*sign.txt* For Vim version 8.2. Last change: 2020 Oct 28
VIM REFERENCE MANUAL by Gordon Prieur
@ -81,10 +81,18 @@ on the same line, the attributes of the sign with the highest priority is used
independently of the sign group. The default priority for a sign is 10. The
priority is assigned at the time of placing a sign.
When two signs with the same priority are present, and one has an icon or text
in the signcolumn while the other has line highlighting, then both are
displayed.
When the line on which the sign is placed is deleted, the sign is moved to the
next line (or the last line of the buffer, if there is no next line). When
the delete is undone the sign does not move back.
When a sign with line highlighting and 'cursorline' highlighting are both
present, if the priority is 100 or more then the sign highlighting takes
precedence, otherwise the 'cursorline' highlighting.
==============================================================================
2. Commands *sign-commands* *:sig* *:sign*
@ -454,11 +462,11 @@ sign_getplaced([{expr} [, {dict}]]) *sign_getplaced()*
entries
The dictionary for each sign contains the following entries:
group sign group. Set to '' for the global group.
id identifier of the sign
lnum line number where the sign is placed
name name of the defined sign
priority sign priority
group sign group. Set to '' for the global group.
id identifier of the sign
lnum line number where the sign is placed
name name of the defined sign
priority sign priority
The returned signs in a buffer are ordered by their line
number and priority.

View File

@ -1,4 +1,4 @@
*spell.txt* For Vim version 8.2. Last change: 2020 Jul 10
*spell.txt* For Vim version 8.2. Last change: 2020 Aug 15
VIM REFERENCE MANUAL by Bram Moolenaar
@ -887,7 +887,7 @@ time ":mkspell" is used. Vim will then convert everything to 'encoding' and
generate a spell file for 'encoding'. If some of the used characters to not
fit in 'encoding' you will get an error message.
*spell-affix-mbyte*
When using a multi-byte encoding it's possible to use more different affix
When using a multibyte encoding it's possible to use more different affix
flags. But Myspell doesn't support that, thus you may not want to use it
anyway. For compatibility use an 8-bit encoding.
@ -1445,7 +1445,7 @@ are spelling mistakes this may not be quite right.
Common words can be specified with the COMMON item. This will give better
suggestions when editing a short file. Example:
COMMON the of to and a in is it you that he was for on are ~
COMMON the of to and a in is it you that he she was for on are ~
The words must be separated by white space, up to 25 per line.
When multiple regions are specified in a ":mkspell" command the common words

View File

@ -1,4 +1,4 @@
*starting.txt* For Vim version 8.2. Last change: 2020 Feb 04
*starting.txt* For Vim version 8.2. Last change: 2020 Sep 23
VIM REFERENCE MANUAL by Bram Moolenaar
@ -513,6 +513,8 @@ a slash. Thus "-R" means recovery and "-/R" readonly.
'nocompatible': use Vim defaults
- no |gvimrc| script is loaded
- no viminfo file is read or written
Note that a following "-u" argument overrules the effect of
"-u DEFAULTS".
*-x*
-x Use encryption to read/write files. Will prompt for a key,

View File

@ -1,4 +1,4 @@
*syntax.txt* For Vim version 8.2. Last change: 2020 Jul 08
*syntax.txt* For Vim version 8.2. Last change: 2020 Aug 15
VIM REFERENCE MANUAL by Bram Moolenaar
@ -3648,7 +3648,7 @@ DEFINING FOLDLEVEL *:syn-foldlevel*
start: Use level of item containing start of line.
minimum: Use lowest local-minimum level of items on line.
The default is 'start'. Use 'minimum' to search a line horizontally
The default is "start". Use "minimum" to search a line horizontally
for the lowest level contained on the line that is followed by a
higher level. This produces more natural folds when syntax items
may close and open horizontally within a line.
@ -3795,9 +3795,9 @@ DEFINING REGIONS *:syn-region* *:syn-start* *:syn-skip* *:syn-end*
[keepend]
[extend]
[excludenl]
start={start_pattern} ..
[skip={skip_pattern}]
end={end_pattern} ..
start={start-pattern} ..
[skip={skip-pattern}]
end={end-pattern} ..
[{options}]
This defines one region. It may span several lines.
@ -3819,12 +3819,12 @@ DEFINING REGIONS *:syn-region* *:syn-start* *:syn-skip* *:syn-end*
extend a containing match or item. Only
useful for end patterns. Must be given before
the patterns it applies to. |:syn-excludenl|
start={start_pattern} The search pattern that defines the start of
start={start-pattern} The search pattern that defines the start of
the region. See |:syn-pattern| below.
skip={skip_pattern} The search pattern that defines text inside
skip={skip-pattern} The search pattern that defines text inside
the region where not to look for the end
pattern. See |:syn-pattern| below.
end={end_pattern} The search pattern that defines the end of
end={end-pattern} The search pattern that defines the end of
the region. See |:syn-pattern| below.
Example: >
@ -4348,7 +4348,7 @@ Notes:
- A negative offset for an end pattern may not always work, because the end
pattern may be detected when the highlighting should already have stopped.
- Before Vim 7.2 the offsets were counted in bytes instead of characters.
This didn't work well for multi-byte characters, so it was changed with the
This didn't work well for multibyte characters, so it was changed with the
Vim 7.2 release.
- The start of a match cannot be in a line other than where the pattern
matched. This doesn't work: "a\nb"ms=e. You can make the highlighting
@ -4809,6 +4809,7 @@ in their own color.
highlighting for groups added by the user!
Uses the current value of 'background' to decide which
default colors to use.
If there was a default link, restore it. |:hi-link|
:hi[ghlight] clear {group-name}
:hi[ghlight] {group-name} NONE

View File

@ -1,4 +1,4 @@
*tabpage.txt* For Vim version 8.2. Last change: 2020 Feb 06
*tabpage.txt* For Vim version 8.2. Last change: 2020 Oct 14
VIM REFERENCE MANUAL by Bram Moolenaar
@ -142,6 +142,7 @@ something else.
:tabclose + " close the next tab page
:tabclose 3 " close the third tab page
:tabclose $ " close the last tab page
:tabclose # " close the last accessed tab page
<
*:tabo* *:tabonly*
:tabo[nly][!] Close all other tab pages.
@ -170,6 +171,8 @@ something else.
" one
:tabonly 1 " close all tab pages except the first one
:tabonly $ " close all tab pages except the last one
:tabonly # " close all tab pages except the last
" accessed one
SWITCHING TO ANOTHER TAB PAGE:
@ -193,6 +196,7 @@ gt *i_CTRL-<PageDown>* *i_<C-PageDown>*
:1tabnext " go to the first tab page
:$tabnext " go to the last tab page
:tabnext $ " as above
:tabnext # " go to the last accessed tab page
:tabnext - " go to the previous tab page
:tabnext -1 " as above
:tabnext + " go to the next tab page
@ -221,6 +225,8 @@ gT Go to the previous tab page. Wraps around from the first one
*:tabl* *:tablast*
:tabl[ast] Go to the last tab page.
*g<Tab>* *CTRL-W_g<Tab>* *<C-Tab>*
g<Tab> Go to the last accessed tab page.
Other commands:
*:tabs*
@ -253,6 +259,8 @@ REORDERING TAB PAGES:
:tabmove " move the tab page to the last
:$tabmove " as above
:tabmove $ " as above
:tabmove # " move the tab page after the last accessed
" tab page
:tabm[ove] +[N]
:tabm[ove] -[N]

View File

@ -1975,6 +1975,7 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
:<cWORD> cmdline.txt /*:<cWORD>*
:<cexpr> cmdline.txt /*:<cexpr>*
:<cfile> cmdline.txt /*:<cfile>*
:<client> cmdline.txt /*:<client>*
:<cword> cmdline.txt /*:<cword>*
:<sfile> cmdline.txt /*:<sfile>*
:<sflnum> cmdline.txt /*:<sflnum>*
@ -2446,6 +2447,7 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
:filter various.txt /*:filter*
:fin editing.txt /*:fin*
:fina eval.txt /*:fina*
:final vim9.txt /*:final*
:finally eval.txt /*:finally*
:find editing.txt /*:find*
:fini repeat.txt /*:fini*
@ -3160,6 +3162,7 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
:sta windows.txt /*:sta*
:stag windows.txt /*:stag*
:star repeat.txt /*:star*
:star-visual-range cmdline.txt /*:star-visual-range*
:start insert.txt /*:start*
:startgreplace insert.txt /*:startgreplace*
:startinsert insert.txt /*:startinsert*
@ -3369,6 +3372,7 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
:up editing.txt /*:up*
:update editing.txt /*:update*
:v repeat.txt /*:v*
:var vim9.txt /*:var*
:ve various.txt /*:ve*
:ver various.txt /*:ver*
:verb various.txt /*:verb*
@ -3497,6 +3501,7 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
<C-ScrollWheelLeft> scroll.txt /*<C-ScrollWheelLeft>*
<C-ScrollWheelRight> scroll.txt /*<C-ScrollWheelRight>*
<C-ScrollWheelUp> scroll.txt /*<C-ScrollWheelUp>*
<C-Tab> tabpage.txt /*<C-Tab>*
<CR> motion.txt /*<CR>*
<CSI> intro.txt /*<CSI>*
<Char-> map.txt /*<Char->*
@ -3613,6 +3618,7 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
<cexpr> cmdline.txt /*<cexpr>*
<cfile> cmdline.txt /*<cfile>*
<character> intro.txt /*<character>*
<client> cmdline.txt /*<client>*
<count> map.txt /*<count>*
<cword> cmdline.txt /*<cword>*
<f-args> map.txt /*<f-args>*
@ -3642,6 +3648,7 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
<mods> map.txt /*<mods>*
<nomodeline> autocmd.txt /*<nomodeline>*
<q-args> map.txt /*<q-args>*
<q-mods> map.txt /*<q-mods>*
<range> map.txt /*<range>*
<reg> map.txt /*<reg>*
<register> map.txt /*<register>*
@ -3684,6 +3691,7 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
>where repeat.txt /*>where*
? pattern.txt /*?*
?<CR> pattern.txt /*?<CR>*
?? eval.txt /*??*
@ repeat.txt /*@*
@/ change.txt /*@\/*
@: repeat.txt /*@:*
@ -3816,6 +3824,7 @@ CTRL-W_bar windows.txt /*CTRL-W_bar*
CTRL-W_c windows.txt /*CTRL-W_c*
CTRL-W_d tagsrch.txt /*CTRL-W_d*
CTRL-W_f windows.txt /*CTRL-W_f*
CTRL-W_g<Tab> tabpage.txt /*CTRL-W_g<Tab>*
CTRL-W_gF windows.txt /*CTRL-W_gF*
CTRL-W_gT windows.txt /*CTRL-W_gT*
CTRL-W_g] windows.txt /*CTRL-W_g]*
@ -3892,6 +3901,8 @@ E10 message.txt /*E10*
E100 diff.txt /*E100*
E101 diff.txt /*E101*
E102 diff.txt /*E102*
E1023 vim9.txt /*E1023*
E1024 vim9.txt /*E1024*
E103 diff.txt /*E103*
E104 digraph.txt /*E104*
E1042 vim9.txt /*E1042*
@ -3904,7 +3915,12 @@ E1092 vim9.txt /*E1092*
E1094 vim9.txt /*E1094*
E11 cmdline.txt /*E11*
E110 eval.txt /*E110*
E1109 eval.txt /*E1109*
E111 eval.txt /*E111*
E1110 eval.txt /*E1110*
E1111 eval.txt /*E1111*
E1112 eval.txt /*E1112*
E1113 eval.txt /*E1113*
E112 eval.txt /*E112*
E113 eval.txt /*E113*
E114 eval.txt /*E114*
@ -4062,7 +4078,6 @@ E252 options.txt /*E252*
E253 mbyte.txt /*E253*
E254 message.txt /*E254*
E255 sign.txt /*E255*
E256 message.txt /*E256*
E257 if_cscop.txt /*E257*
E258 remote.txt /*E258*
E259 if_cscop.txt /*E259*
@ -4363,7 +4378,6 @@ E538 options.txt /*E538*
E539 options.txt /*E539*
E54 pattern.txt /*E54*
E540 options.txt /*E540*
E541 options.txt /*E541*
E542 options.txt /*E542*
E543 options.txt /*E543*
E544 options.txt /*E544*
@ -4435,6 +4449,7 @@ E607 eval.txt /*E607*
E608 eval.txt /*E608*
E609 if_cscop.txt /*E609*
E61 pattern.txt /*E61*
E610 editing.txt /*E610*
E612 sign.txt /*E612*
E613 print.txt /*E613*
E614 editing.txt /*E614*
@ -4916,6 +4931,7 @@ InsertChange autocmd.txt /*InsertChange*
InsertCharPre autocmd.txt /*InsertCharPre*
InsertEnter autocmd.txt /*InsertEnter*
InsertLeave autocmd.txt /*InsertLeave*
InsertLeavePre autocmd.txt /*InsertLeavePre*
Integer eval.txt /*Integer*
J change.txt /*J*
Japanese mbyte.txt /*Japanese*
@ -5720,6 +5736,7 @@ char2nr() eval.txt /*char2nr()*
characterwise motion.txt /*characterwise*
characterwise-register change.txt /*characterwise-register*
characterwise-visual visual.txt /*characterwise-visual*
charclass() eval.txt /*charclass()*
charconvert_from-variable eval.txt /*charconvert_from-variable*
charconvert_to-variable eval.txt /*charconvert_to-variable*
charity uganda.txt /*charity*
@ -5744,6 +5761,7 @@ cino-J indent.txt /*cino-J*
cino-L indent.txt /*cino-L*
cino-M indent.txt /*cino-M*
cino-N indent.txt /*cino-N*
cino-P indent.txt /*cino-P*
cino-U indent.txt /*cino-U*
cino-W indent.txt /*cino-W*
cino-^ indent.txt /*cino-^*
@ -6311,7 +6329,10 @@ extend() eval.txt /*extend()*
extension-removal cmdline.txt /*extension-removal*
extensions-improvements todo.txt /*extensions-improvements*
f motion.txt /*f*
false vim9.txt /*false*
false-variable eval.txt /*false-variable*
falsy eval.txt /*falsy*
falsy-operator eval.txt /*falsy-operator*
faq intro.txt /*faq*
farsi farsi.txt /*farsi*
farsi.txt farsi.txt /*farsi.txt*
@ -6445,6 +6466,7 @@ ft-asm68k-syntax syntax.txt /*ft-asm68k-syntax*
ft-asmh8300-syntax syntax.txt /*ft-asmh8300-syntax*
ft-aspperl-syntax syntax.txt /*ft-aspperl-syntax*
ft-aspvbs-syntax syntax.txt /*ft-aspvbs-syntax*
ft-awk-plugin filetype.txt /*ft-awk-plugin*
ft-bash-syntax syntax.txt /*ft-bash-syntax*
ft-basic-syntax syntax.txt /*ft-basic-syntax*
ft-c-omni insert.txt /*ft-c-omni*
@ -6862,6 +6884,7 @@ g<End> motion.txt /*g<End>*
g<Home> motion.txt /*g<Home>*
g<LeftMouse> tagsrch.txt /*g<LeftMouse>*
g<RightMouse> tagsrch.txt /*g<RightMouse>*
g<Tab> tabpage.txt /*g<Tab>*
g<Up> motion.txt /*g<Up>*
g? change.txt /*g?*
g?? change.txt /*g??*
@ -6945,6 +6968,7 @@ gettabinfo() eval.txt /*gettabinfo()*
gettabvar() eval.txt /*gettabvar()*
gettabwinvar() eval.txt /*gettabwinvar()*
gettagstack() eval.txt /*gettagstack()*
gettext() eval.txt /*gettext()*
getwininfo() eval.txt /*getwininfo()*
getwinpos() eval.txt /*getwinpos()*
getwinposx() eval.txt /*getwinposx()*
@ -7737,6 +7761,8 @@ matchaddpos() eval.txt /*matchaddpos()*
matcharg() eval.txt /*matcharg()*
matchdelete() eval.txt /*matchdelete()*
matchend() eval.txt /*matchend()*
matchfuzzy() eval.txt /*matchfuzzy()*
matchfuzzypos() eval.txt /*matchfuzzypos()*
matchit-install usr_05.txt /*matchit-install*
matchlist() eval.txt /*matchlist()*
matchparen pi_paren.txt /*matchparen*
@ -7915,7 +7941,6 @@ netrw-browser-options pi_netrw.txt /*netrw-browser-options*
netrw-browser-settings pi_netrw.txt /*netrw-browser-settings*
netrw-browser-var pi_netrw.txt /*netrw-browser-var*
netrw-browsing pi_netrw.txt /*netrw-browsing*
netrw-c pi_netrw.txt /*netrw-c*
netrw-c-tab pi_netrw.txt /*netrw-c-tab*
netrw-cB pi_netrw.txt /*netrw-cB*
netrw-cadaver pi_netrw.txt /*netrw-cadaver*
@ -8150,6 +8175,7 @@ new-more-highlighting version7.txt /*new-more-highlighting*
new-more-unicode version7.txt /*new-more-unicode*
new-multi-byte version5.txt /*new-multi-byte*
new-multi-lang version6.txt /*new-multi-lang*
new-multibyte version5.txt /*new-multibyte*
new-netrw-explore version7.txt /*new-netrw-explore*
new-network-files version6.txt /*new-network-files*
new-omni-completion version7.txt /*new-omni-completion*
@ -8163,7 +8189,7 @@ new-persistent-undo version7.txt /*new-persistent-undo*
new-plugins version6.txt /*new-plugins*
new-popup-window version8.txt /*new-popup-window*
new-posix version7.txt /*new-posix*
new-print-multi-byte version7.txt /*new-print-multi-byte*
new-print-multibyte version7.txt /*new-print-multibyte*
new-printing version6.txt /*new-printing*
new-python3 version7.txt /*new-python3*
new-regexp-engine version7.txt /*new-regexp-engine*
@ -8299,12 +8325,14 @@ pascal.vim syntax.txt /*pascal.vim*
patches-8 version8.txt /*patches-8*
patches-8.1 version8.txt /*patches-8.1*
patches-8.2 version8.txt /*patches-8.2*
patches-after-8.2 version8.txt /*patches-after-8.2*
pathshorten() eval.txt /*pathshorten()*
pattern pattern.txt /*pattern*
pattern-atoms pattern.txt /*pattern-atoms*
pattern-delimiter change.txt /*pattern-delimiter*
pattern-multi-byte pattern.txt /*pattern-multi-byte*
pattern-multi-items pattern.txt /*pattern-multi-items*
pattern-multibyte pattern.txt /*pattern-multibyte*
pattern-overview pattern.txt /*pattern-overview*
pattern-searches pattern.txt /*pattern-searches*
pattern.txt pattern.txt /*pattern.txt*
@ -8375,6 +8403,7 @@ popup-callback popup.txt /*popup-callback*
popup-close popup.txt /*popup-close*
popup-examples popup.txt /*popup-examples*
popup-filter popup.txt /*popup-filter*
popup-filter-errors popup.txt /*popup-filter-errors*
popup-filter-mode popup.txt /*popup-filter-mode*
popup-function-details popup.txt /*popup-function-details*
popup-functions popup.txt /*popup-functions*
@ -8468,6 +8497,7 @@ progname-variable eval.txt /*progname-variable*
progpath-variable eval.txt /*progpath-variable*
progress.vim syntax.txt /*progress.vim*
prompt-buffer channel.txt /*prompt-buffer*
prompt_getprompt() eval.txt /*prompt_getprompt()*
prompt_setcallback() eval.txt /*prompt_setcallback()*
prompt_setinterrupt() eval.txt /*prompt_setinterrupt()*
prompt_setprompt() eval.txt /*prompt_setprompt()*
@ -8816,6 +8846,7 @@ set-option options.txt /*set-option*
set-spc-auto spell.txt /*set-spc-auto*
setbufline() eval.txt /*setbufline()*
setbufvar() eval.txt /*setbufvar()*
setcellwidths() eval.txt /*setcellwidths()*
setcharsearch() eval.txt /*setcharsearch()*
setcmdpos() eval.txt /*setcmdpos()*
setenv() eval.txt /*setenv()*
@ -9625,9 +9656,12 @@ tooltips gui.txt /*tooltips*
toupper() eval.txt /*toupper()*
tr() eval.txt /*tr()*
trim() eval.txt /*trim()*
trinary eval.txt /*trinary*
trojan-horse starting.txt /*trojan-horse*
true vim9.txt /*true*
true-variable eval.txt /*true-variable*
trunc() eval.txt /*trunc()*
truthy eval.txt /*truthy*
try-conditionals eval.txt /*try-conditionals*
try-echoerr eval.txt /*try-echoerr*
try-finally eval.txt /*try-finally*
@ -9637,6 +9671,8 @@ tutor usr_01.txt /*tutor*
twice if_cscop.txt /*twice*
two-engines pattern.txt /*two-engines*
type() eval.txt /*type()*
type-casting vim9.txt /*type-casting*
type-checking vim9.txt /*type-checking*
type-inference vim9.txt /*type-inference*
type-mistakes tips.txt /*type-mistakes*
typecorr-settings usr_41.txt /*typecorr-settings*
@ -9933,6 +9969,7 @@ valgrind debug.txt /*valgrind*
values() eval.txt /*values()*
var-functions usr_41.txt /*var-functions*
variable-scope eval.txt /*variable-scope*
variable-types vim9.txt /*variable-types*
variables eval.txt /*variables*
various various.txt /*various*
various-cmds various.txt /*various-cmds*
@ -10006,10 +10043,13 @@ vim.vim syntax.txt /*vim.vim*
vim7 version7.txt /*vim7*
vim8 version8.txt /*vim8*
vim9 vim9.txt /*vim9*
vim9-classes vim9.txt /*vim9-classes*
vim9-const vim9.txt /*vim9-const*
vim9-declaration vim9.txt /*vim9-declaration*
vim9-declarations usr_46.txt /*vim9-declarations*
vim9-differences vim9.txt /*vim9-differences*
vim9-export vim9.txt /*vim9-export*
vim9-final vim9.txt /*vim9-final*
vim9-gotchas vim9.txt /*vim9-gotchas*
vim9-import vim9.txt /*vim9-import*
vim9-rationale vim9.txt /*vim9-rationale*

View File

@ -1,4 +1,4 @@
*terminal.txt* For Vim version 8.2. Last change: 2020 Jun 06
*terminal.txt* For Vim version 8.2. Last change: 2020 Sep 04
VIM REFERENCE MANUAL by Bram Moolenaar
@ -476,9 +476,11 @@ term_dumpdiff({filename}, {filename} [, {options}])
"term_name" name to use for the buffer name, instead
of the first file name.
"term_rows" vertical size to use for the terminal,
instead of using 'termwinsize'
instead of using 'termwinsize', but
respecting the minimal size
"term_cols" horizontal size to use for the terminal,
instead of using 'termwinsize'
instead of using 'termwinsize', but
respecting the minimal size
"vertical" split the window vertically
"curwin" use the current window, do not split the
window; fails if the current buffer

View File

@ -1,4 +1,4 @@
*testing.txt* For Vim version 8.2. Last change: 2020 Jul 11
*testing.txt* For Vim version 8.2. Last change: 2020 Sep 06
VIM REFERENCE MANUAL by Bram Moolenaar
@ -20,18 +20,17 @@ and for testing plugins.
Vim can be tested after building it, usually with "make test".
The tests are located in the directory "src/testdir".
There are several types of tests added over time:
test33.in oldest, don't add any of these
test_something.in old style tests
There are two types of tests added over time:
test20.in oldest, only for tiny and small builds
test_something.vim new style tests
*new-style-testing*
New tests should be added as new style tests. These use functions such as
|assert_equal()| to keep the test commands and the expected result in one
place.
New tests should be added as new style tests. The test scripts are named
test_<feature>.vim (replace <feature> with the feature under test). These use
functions such as |assert_equal()| to keep the test commands and the expected
result in one place.
*old-style-testing*
In some cases an old style test needs to be used. E.g. when testing Vim
without the |+eval| feature.
These tests are used only for testing Vim without the |+eval| feature.
Find more information in the file src/testdir/README.txt.
@ -292,8 +291,9 @@ assert_exception({error} [, {msg}]) *assert_exception()*
catch
call assert_exception('E492:')
endtry
assert_fails({cmd} [, {error} [, {msg}]]) *assert_fails()*
<
*assert_fails()*
assert_fails({cmd} [, {error} [, {msg} [, {lnum} [, {context}]]]])
Run {cmd} and add an error message to |v:errors| if it does
NOT produce an error or when {error} is not found in the
error message. Also see |assert-return|.
@ -312,13 +312,25 @@ assert_fails({cmd} [, {error} [, {msg}]]) *assert_fails()*
string for the first error: >
assert_fails('cmd', ['', 'E987:'])
<
If {msg} is empty then it is not used. Do this to get the
default message when passing the {lnum} argument.
When {lnum} is present and not negative, and the {error}
argument is present and matches, then this is compared with
the line number at which the error was reported. That can be
the line number in a function or in a script.
When {context} is present it is used as a pattern and matched
against the context (script name or function name) where
{lnum} is located in.
Note that beeping is not considered an error, and some failing
commands only beep. Use |assert_beeps()| for those.
Can also be used as a |method|: >
GetCmd()->assert_fails('E99:')
assert_false({actual} [, {msg}]) *assert_false()*
assert_false({actual} [, {msg}]) *assert_false()*
When {actual} is not false an error message is added to
|v:errors|, like with |assert_equal()|.
Also see |assert-return|.

View File

@ -1,4 +1,4 @@
*textprop.txt* For Vim version 8.2. Last change: 2020 Mar 05
*textprop.txt* For Vim version 8.2. Last change: 2020 Oct 14
VIM REFERENCE MANUAL by Bram Moolenaar
@ -101,7 +101,7 @@ Manipulating text property types:
prop_type_add({name}, {props}) define a new property type
prop_type_change({name}, {props}) change an existing property type
prop_type_delete({name} [, {props}]) delete a property type
prop_type_get([{name} [, {props}]]) get property type values
prop_type_get({name} [, {props}]) get property type values
prop_type_list([{props}]) get list of property types
@ -291,7 +291,7 @@ prop_type_delete({name} [, {props}]) *prop_type_delete()*
Can also be used as a |method|: >
GetPropName()->prop_type_delete()
prop_type_get([{name} [, {props}]]) *prop_type_get()*
prop_type_get({name} [, {props}]) *prop_type_get()*
Returns the properties of property type {name}. This is a
dictionary with the same fields as was given to
prop_type_add().

View File

@ -1,4 +1,4 @@
*todo.txt* For Vim version 8.2. Last change: 2020 Jul 26
*todo.txt* For Vim version 8.2. Last change: 2020 Nov 04
VIM REFERENCE MANUAL by Bram Moolenaar
@ -38,36 +38,54 @@ browser use: https://github.com/vim/vim/issues/1234
*known-bugs*
-------------------- Known bugs and current work -----------------------
test_vim9_func fails: type from default value not used.
Without extra sleeps netbeans test has valgrind errors.
PR #7248 from Yegappan - test doesn't fail without code changes
Making everything work:
- more items in https://github.com/vim/vim/issues/6507
- More "goto failed" with check for trylevel.
- memory leak in test_vim9_script
- Check that when sourcing a Vim9 script, only the global items can be used.
- :put with a "=" register argument doesn't work, need to find the expression
and compile it. (#6397)
- At the script level, keep script variables local to the block they are
declared in? Need to remember what variables were declared and delete them
when leaving the block.
- Implement { } block at the script level.
- Closure argument call should not always set varargs, like any function call?
- Invoke user command in a :def function
- Make map() give an error if the resulting type is wrong.
Add mapnew() or mapcopy() to create a new List/Dict for the result, which
can have a different value type.
- Error message for "'yes && 0" is "using String as a Number", should be "using
String as a Bool".
- Run the same tests in :def and Vim9 script, like in Test_expr7_not()
- In autocmd: use legacy syntax, not whatever the current script uses?
- need to check type when a declaration specifies a type: #6507
let nr: number = 'asdf'
- Make map() give an error if the resulting type is wrong.
Add mapnew() to create a new List/Dict for the result, which can have a
different value type.
- Check many more builtin function arguments at compile time.
- Make sure that in vim9script a function call without namespace only finds
the script-local function, not a global one.
- Make sure that where a callback is expected a function can be used (without
quotes). E.g. sort() and map(). Also at the script level.
- assignment to more complex lval: list[1][2][3] = 8
Also "list[0] += value". test in Test_assign_dict_unknown_type().
- ":put" with ISN_PUT does not handle range correctly, e.g. ":$-2put".
Add command to parse range at runtime?
- When defining an :autocmd or :command, how to specify using Vim9 syntax?
- always do this when defined in a Vim9 script
- add some command modifier.
- For an :autocmd and :command argument, if a following line starts with "|"
append it. It's like line continuation. (#6702)
- Implement "export {one, two three}".
- ISN_CHECKTYPE could use check_argtype()
- Slice of list: [1, 2, 3][1:2].
- give error for variable name:
let p = function('NoSuchFunc')
- Give runtime error if function argument is wrong.
def Increment(nr: number)
range(3)->Increment()
- If a :def function is called with a function reference, compile it to get
the function type.
def Filter(x: string, Cond: func(string): bool)
Filter(x, { v -> v =~ '^b' })
- Expand `=expr` in :next, :argedit, :argadd, :argdelete, :drop
- Expand `=expr` in :vimgrep, :vimgrepadd, :lvimgrep, :lvimgrepadd
- Expand `=expr` in :mkspell
- Test that a function defined inside a :def function is local to that
function, g: functions can be defined and script-local functions cannot be
defined.
- Does this work already: can use func as reference:
def SomeFunc() ...
map(list, SomeFunc)
- Support passing v:none to use the default argument value. (#6504)
- make 0 == 'string' fail on the script level, like inside :def.
- Check that when using a user function name without prefix, it does not find
@ -78,32 +96,29 @@ Making everything work:
ret[i] = string(i)
- Appending to dict item doesn't work:
let d[i] ..= value
- Using ".." at script level doesn't convert arguments to a string.
- Compile replacement of :s command: s/pat/\=expr/
- Compile redir to local variable: var_redir_start().
- Compile builtin functions that access local variables:
islocked()
- possible memory leak in test_vim9_func through compile_nested_function.
- memory leaks in test_vim9_expr
- memory leaks in test_vim9_script
- memory leaks in test_vim9_cmd
- When evaluating constants for script variables, some functions could work:
has('asdf'), len('string')
- Implement "as Name" in "import Item as Name from ..."
- Implement using imported items at script level from "import * as X" in
eval_variable(). Should pass the ".xxx" that follows and return that.
- Disallow unlet for local/script/imported vars
- Make "++nr" work.
- Make closures work:
- Create closure in a loop. Need to make a list of them.
- nested closure only uses one context, not all (#7150)
- expandcmd() with `=expr` in filename uses legacy expression.
- eval_expr() in ex_cexpr()
- eval_expr() call in dbg_parsearg() and debuggy_find()
- has() is compiled as a constant, but some checks are dynamic.
Check for dynamic values, such as "gui_running".
- Implement command modifiers, such as "silent". (#6530)
New syntax and functionality:
Improve error checking:
- "echo Func()" is an error if Func() does not return anything.
Test:
- Using a Vim9 autoload script (functions must be global).
Also:
- For range: make table of first ASCII character with flag to quickly check if
it can be a Vim9 command. E.g. "+" can, but "." can't.
@ -112,26 +127,23 @@ Also:
- Make Foo.Bar() work to call the dict function. (#5676)
- Error in any command in "vim9script" aborts sourcing.
- Find a way to test expressions in legacy and Vim9 script without duplication
- Fix memory leaks for test_vim9_disassemble, test_vim9_expr, test_vim9_script
- Test each level of expressions properly, with type checking
- Test try/catch and throw better, also nested.
Test return inside try/finally jumps to finally and then returns.
- call autoload function.
- Implement more expressions, e.g. [a:b]
- can use func as reference:
def SomeFunc() ...
map(list, SomeFunc)
- Test: Function declared inside a :def function is local, disappears at the
end of the function. Unless g: is used, just like with variables.
- implement :type
- import type declaration?
- implement class
- implement interface
- predefined class: Promise<T>
- Future work: See |vim9-classes|
- implement enum
- Make accessing varargs faster: arg[expr]
EVAL expr
LOADVARARG (varags idx)
- Make debugging work - at least per function. Need to recompile a function
to step through it line-by-line? Evaluate the stack and variables on the
stack?
- Make profiling work - Add ISN_PROFILE instructions after every line?
- List commands when 'verbose' is set or :verbose is used.
Further improvements:
- compile options that are an expression, e.g. "expr:" in 'spellsuggest',
'foldexpr', 'foldtext', 'printexpr', 'diffexpr', 'patchexpr', 'charconvert',
@ -146,6 +158,11 @@ Further improvements:
- compile "expr" and "call" expression of a channel in channel_exe_cmd()?
Popup windows:
- Add a flag to make a popup window focusable?
CTRL-W P cycle over any preview window or focusable popup, end up back in
current window.
? - switch between current window and all popup windows
Esc in popup window goes back to previous current window
- Cursor not updated before a redraw, making it jump. (#5943)
- Add a termcap entry for changing the cursor when it goes under the popup and
back. like t_SI and t_EI (t_SU and t_EU, where "U" means under?)
@ -154,6 +171,8 @@ Popup windows:
positioned? PopupNew? Could be used to set some options or move it out of
the way. (#5737)
However, it may also cause trouble, changing the popup of another plugin.
- Width is not computed correctly when minwidth and maxwidth are &columns
and padding and a scrollbar are used. (#6676)
- Add a way to use popup_menu() synchronously: instead of invoking the
callback, return the choice. (Ben Jackson, #6534)
- Use popup (or popup menu) for command line completion
@ -169,13 +188,11 @@ Popup windows:
- Figure out the size and position better if wrapping inserts indent
Text properties:
- :goto does not go to the right place when test properties are present.
- :goto does not go to the right place when text properties are present.
(#5930)
- "cc" does not call inserted_bytes(). (Axel Forsman, #5763)
- Get E685 with a sequence of commands. (#5674)
- Combining text property with 'cursorline' does not always work (Billie
Cleek, #5533)
- Text properties spanning more than one line. #5683
- See remarks at top of src/textprop.c
'incsearch' with :s:
@ -200,7 +217,7 @@ Terminal debugger:
an already running program. (M. Kelly)
- When only gdb window exists, on "quit" edit another buffer.
- Use a sign group
- Termdebug does not work when Vim was build with mzscheme: gdb hangs just
- Termdebug does not work when Vim was built with mzscheme: gdb hangs just
after "run". Everything else works, including communication channel. Not
initializing mzscheme avoid the problem, thus it's not some #ifdef.
- Add support for lldb? issue #3565
@ -252,18 +269,43 @@ Terminal emulator window:
- When 'encoding' is not utf-8, or the job is using another encoding, setup
conversions.
Error numbers available:
E610, E611, E653
Error numbers available: E653
Mapping with partial match not executed properly in GTK. (Ingo Karkat, #7082)
Patch for Template string: #4634
Have another look at the implementation.
Patch to implement the vimtutor with a plugin: #6414
Was originally written by Felipe Morales.
Remove SPACE_IN_FILENAME ? It is only used for completion.
Patch to use collaction based sorting. (Christian Brabandt, #6229)
Add 'termguiattr' option, use "gui=" attributes in the terminal? Would work
with 'termguicolors'. #1740
Patch for blockwise paste reporting changes: #6660.
Missing filetype test for bashrc, PKGBUILD, etc.
Add an option to not fetch terminal codes in xterm, to avoid flicker when t_Co
changes.
Add an option to start_timer() to return from the input loop with K_IGNORE.
This is useful e.g. when a popup was created that disables mappings, we need
to return from vgetc() to make this happen. #7011
Making breakat support multibyte characters (Yasuhiro Matsumoto, #6598)
Scroll doesn't work correctly, why?
Expanding <mods> should put the tab number from cmdmod.tab before "tab".
Any way to convert "$" back by using a special value? (#6901)
Can we detect true color support? https://gist.github.com/XVilka/8346728
Try setting a color then request the current color, like using t_u7.
Check out PR #543 (Roland Puntaier).
Patch for multi-byte characters in langmap and applying a mapping on them.
Patch for multibyte characters in langmap and applying a mapping on them.
(Christian Brabandt, 2015 Jun 12, update July 25)
Is this the right solution? Need to cleanup langmap behavior:
- in vgetorpeek() apply langmap to the typeahead buffer and put the result in
@ -284,15 +326,16 @@ autocommands for the buffer lifecycle:
BufIsRenamed (after buffer ID gets another name)
The buffer list and windows are locked, no changes possible
Make it possible to map (console and GUI): #6457
<C-[> 0x27 or is this <Esc> ?
<C-\> 0x28
<C-]> 0x29
<C-^> 0x30
<C-_> 0x31
Matchparen doesn't remove highlight after undo. (#7054)
Is OK when syntax HL is active.
Patch for Template string: #4634
Have another look at the implementation.
Currently Del can be used to delete the last character of a typed count.
Can it also be used to delete an incomplete Normal mode command? (#7096)
After an operator: should work. After "a" or "i" for text objects: should
work.
Using "au!" after "filetype on" is a bit slow. Can the matching of
autocommands be made faster? (#7056)
Add the <=> (spaceship) operator and "cond ?< expr ?= expr ?> expr"
replace this:
@ -303,6 +346,8 @@ Add the <=> (spaceship) operator and "cond ?< expr ?= expr ?> expr"
let res = GetLeftFunc() <=> GetRightFunc() ?< lower ?= equal ?> upper
Patch to make :q work with local arglist. (Christian Brabandt, #6286)
Why does Test_invalid_sid() not work in the GUI?
Lua: updating wrong buffer when using newly created, unloaded buffer.
(#6539)
@ -333,6 +378,9 @@ character. (#6154)
undo result wrong: Masato Nishihata, #4798
After recovering from a swap file the undofile should not be used, it causes
corruption. (#6631)
When 'lazyredraw' is set sometimes the title is not updated.
(Jason Franklin, 2020 Feb 3) Looks like a race condition.
@ -350,13 +398,13 @@ When 'fileignorecase' is set ":e testfile.c" works to edit TestFile.c, but
":find testfile.c" does not ignore case.
Might be related to #6088.
Error for reverse range when using :vimgrep in file "[id-01] file.txt".
(#6919)
When changing the crypt key the buffer should be considered modified.
Like when changing 'fileformat'. Save the old key in save_file_ff().
(Ninu-Ciprian Marginean)
Patch to implement the vimtutor with a plugin: #6414
Was originally writtten by Felipe Morales.
Strange sequence of BufWipeout and BufNew events while doing omni-complete.
(Paul Jolly, #5656)
Get BufDelete without preceding BufNew. (Paul Jolly, #5694)
@ -379,6 +427,7 @@ Undo puts cursor in wrong line after "cG<Esc>" undo.
Implement completion for "breakadd". Should expand the second argument, e.g.
"func", and then function names after ":breakadd func". Including
script-local functions.
Also for ":profile".
:unmap <c-n> gives error but does remove the mapping. (Antony Scriven, 2019
Dec 19)
@ -390,9 +439,11 @@ Patch to fix session file when using multiple tab pages. (Jason Franklin, 2019
May 20)
Also put :argadd commands at the start for all buffers, so that their order
remains equal? Then %argdel to clean it up. Do try this with 'hidden' set.
Also #4994: window-local options not always restored, related to using :badd.
Also #5326: netrw buffers are not restored.
Alternate file is not set in the session file. Use setwintabvar("@#") ?
(#6714)
When 'backupdir' has a path ending in double slash (meaning: use full path of
the file) combined with 'patchmode' the file name is wrong. (#5791)
@ -404,6 +455,7 @@ Should do current file first and not split it up when more results are found.
Undo history wrong when ":next file" re-uses a buffer. (#5426)
ex_next() should pass flag to do_argfile(), then to do_ecmd().
Is there a test for this?
Help for ":argadd fname" says that if "fname" is already in the argument list
that entry is used. But instead it's always added. (#6210)
@ -465,7 +517,7 @@ Better: use the "z" prefix. or ]t) and [t(.
Modeless selection doesn't work in gvim. (#4783)
Caused by patch 8.1.1534.
Visual highlight not removed when 'dipslay' is "lastline" and line doesn't
Visual highlight not removed when 'display' is "lastline" and line doesn't
fit. (Kevin Lawler, #4457)
Current position in the changelist should be local to the buffer. (#2173)
@ -479,6 +531,7 @@ Crash when mixing matchadd and substitute()? (Max Christian Pohle, 2018 May
13, #2910) Can't reproduce?
Display messed up with matchparen, wrapping and scrolling. (#5638)
Screen update bug related to matchparen. (Chris Heath, 2017 Mar 4, #1532)
When getting a focus event halfway a mapping this aborts the mapping. E.g.
when "qq" is mapped and after the first "q" the mouse is moved outside of the
@ -525,10 +578,6 @@ Patch to have text objects defined by arbitrary single characters. (Daniel
Thau, 2013 Nov 20, 2014 Jan 29, 2014 Jan 31)
Added tests (James McCoy, 2016 Aug 3, #958). Still needs more work.
":2resize +10" uses size of the current window, adds 10 and applies it to
window 2. User expects 10 to be added to size of window 2. (Daniel Steinberg,
#5443)
Would be nice to set tab-local values for 'diffexpr' and 'diffopt'. Use
t:diffexpr_option t:diffopt_option? (#4782)
@ -1200,18 +1249,14 @@ Suggestion to improve pt-br spell checking. (Marcelo D Montu, 2016 Dec 15,
Error in test_startup_utf8 on Solaris. (Danek Duvall, 2016 Aug 17)
Completion for :!cmd shows each match twice. #1435
GTK: When adding a timer from 'balloonexpr' it won't fire, because
g_main_context_iteration() doesn't return. Need to trigger an event when the
timer expires.
Screen update bug related to matchparen. (Chris Heath, 2017 Mar 4, #1532)
Rule to use "^" for statusline does not work if a space is defined with
highlighting for both stl and stlnc. Patch by Ken Hamada (itchyny, 2016 Dec 11)
8 "stl" and "stlnc" in 'fillchars' don't work for multi-byte characters.
8 "stl" and "stlnc" in 'fillchars' don't work for multibyte characters.
Patch by Christian Wellenbrock, 2013 Jul 5.
Using CTRL-G_U in InsertCharPre causes trouble for redo. (Israel Chauca
@ -1362,7 +1407,7 @@ Regexp problems:
- Bug with pattern: '\vblock (\d+)\.\n.*\d+%(\1)@<!\.$'
(Lech Lorens, 2014 Feb 3)
- Issue 164: freeze on regexp search.
- Ignorecase not handled properly for multi-byte characters. (Axel Bender,
- Ignorecase not handled properly for multibyte characters. (Axel Bender,
2013 Dec 11)
- Using \@> and \?. (Brett Stahlman, 2013 Dec 21) Remark from Marcin
Szamotulski; Remark from Brett 2014 Jan 6 and 7.
@ -1400,9 +1445,6 @@ Undo message is not always properly displayed. Patch by Ken Takata, 2013 oct
3. Doesn't work properly according to Yukihiro Nakadaira.
Also see #1635.
When 'keywordprg' starts with ":" the argument is still escaped as a shell
command argument. (Romain Lafourcade, 2016 Oct 16, #1175)
Idea from Sven: record sequence of keys. Useful to show others what they are
doing (look over the shoulder), and also to see what happened.
Probably list of keystrokes, with some annotations for mode changes.
@ -1443,8 +1485,6 @@ Have a way to get the call stack, in a function and from an exception.
Second problem in #966: ins_compl_add_tv() uses get_dict_string() multiple
times, overwrites the one buffer. (Nikolay Pavlov, 2016 Aug 5)
Filetype plugin for awk. (Doug Kearns, 2016 Sep 5)
Patch to improve map documentation. Issue #799.
We can use '. to go to the last change in the current buffer, but how about
@ -1471,7 +1511,7 @@ Zero-out krypt key information when no longer in use. (Ben Fritz, 2017 May 15)
Add stronger encryption. Could use libsodium (NaCl).
https://github.com/jedisct1/libsodium/
Possibly include the needed code so that it can be build everywhere.
Possibly include the needed code so that it can be built everywhere.
Add a way to restart a timer. It's similar to timer_stop() and timer_start(),
but the reference remains valid.
@ -1577,7 +1617,7 @@ Patch to add :mapgroup, put mappings in a group like augroup.
Value returned by virtcol() changes depending on how lines wrap. This is
inconsistent with the documentation.
Value of virtcol() for '[ and '] depend on multi-byte character.
Value of virtcol() for '[ and '] depend on multibyte character.
(Luchr, #277)
Can we cache the syntax attributes, so that updates for 'relativenumber' and
@ -1664,8 +1704,6 @@ Extended file attributes lost on write (backupcopy=no). Issue 306.
Patch to add :lockjumps. (Carlo Baldassi, 2015 May 25)
OK to not block marks?
Mixup of highlighting when there is a match and SpellBad. (ZyX, 2015 Jan 1)
Patch on Issue 72: 'autochdir' causes problems for :vimgrep.
When two SIGWINCH arrive very quickly, the second one may be lost.
@ -1732,14 +1770,6 @@ arguments.
Problem with transparent and matchgroup. Issue #475
Spell files use a latin single quote. Unicode also has another single quote:
0x2019. (Ron Aaron, 2014 Apr 4)
New OpenOffice spell files support this with ICONV. But they are not
compatible with Vim spell files. The old files can no longer be downloaded.
Spell checking: Add a feature to only consider two spaces after a dot to start
a new sentence. Don't give the capitalization error when there is one space.
Idea: For a window in the middle (has window above and below it), use
right-mouse-drag on the status line to move a window up/down without changing
its height? It's like dragging the status bar above it at the same time.
@ -2109,7 +2139,7 @@ Also for another example (ZyX, 2011 Jan 24)
Build problem with small features on Mac OS X 10.6. (Rainer, 2011 Jan 24)
"0g@$" puts '] on last byte of multi-byte. (ZyX, 2011 Jan 22)
"0g@$" puts '] on last byte of multibyte. (ZyX, 2011 Jan 22)
Patch for :tabrecently. (Hirokazu Yoshida, 2012 Jan 30)
@ -2414,9 +2444,6 @@ Don't load macmap.vim on startup, turn it into a plugin. (Ron Aaron,
Add "no_hlsearch" to winsaveview().
Cursorline highlighting combines with Search ('hlsearch') but not with
SpellBad. (Jim Karsten, 2009 Mar 18)
When 'foldmethod' is "indent", adding an empty line below a fold and then
indented text, creates a new fold instead of joining it with the previous one.
(Evan Laforge, 2009 Oct 17)
@ -2616,7 +2643,7 @@ work, the backslash is removed, assuming that it escapes the (. (Valery
Kondakoff, 2009 May 13)
Win32: Using "gvim --remote-tab-silent elŝuti.txt" doesn't work, the
multi-byte character isn't passed and edits elsuti.txt.
multibyte character isn't passed and edits elsuti.txt.
(Raúl Núñez de Arenas Coronado, 2015 Dec 18)
Problem with 'langmap' being used on the rhs of a mapping. (Nikolai Weibull,
@ -2854,9 +2881,6 @@ Jun 18)
If the variable "g:x#y#z" exists completion after ":echo g:x#" doesn't work.
Feature request: Command to go to previous tab, like what CTRL-W p does for
windows. (Adam George)
In debug mode, using CTRL-R = to evaluate a function causes stepping through
the function. (Hari Krishna Dara, 2006 Jun 28)
@ -2926,12 +2950,6 @@ the Visual area. Can this be fixed? (James Vega, 2006 Sept 15)
GUI: When combining fg en bg make sure they are not equal.
Spell checking: Add a way to specify punctuation characters. Add the
superscript numbers by default: 0x2070, 0xb9, 0xb2, 0xb3, 0x2074 - 0x2079.
Spell checking in popup menu: If the only problem is the case of the first
character, don't offer "ignore" and "add to word list".
Use different pt_br dictionary for spell checking. (Jackson A. Aquino, 2006
Jun 5)
@ -2945,10 +2963,6 @@ Jul 22)
There should be something about spell checking in the user manual.
Spell menu: When using the Popup menu to select a replacement word,
":spellrepeat" doesn't work. SpellReplace() uses setline(). Can it use "z="
somehow? Or use a new function.
Mac: Using gvim: netrw window disappears. (Nick Lo, 2006 Jun 21)
Add an option to specify the character to use when a double-width character is
@ -3180,7 +3194,7 @@ Awaiting updated patches:
7 ATTENTION dialog choices are more logical when "Delete it" appears
before "Quit". Patch by Robert Webb, 2004 May 3.
- Include flipcase patch: ~/vim/patches/wall.flipcase2 ? Make it work
for multi-byte characters.
for multibyte characters.
- Win32: add options to print dialog. Patch from Vipin Aravind.
- Patch to add highlighting for whitespace. (Tom Schumm, 2003 Jul 5)
use the patch that keeps using HLF_8 if HLF_WS has not
@ -3232,6 +3246,29 @@ Better 'rightleft' or BIDI support:
- Minimal Vi with bidi support: https://github.com/aligrudi/neatvi
By Ali Gholami Rudi, also worked on arabic.c
Spell checking:
- When 'cursorline' is set and the first word should have SpellCap
highlighting, redrawing the line removes it when moving the cursor away
from the line. (#7085) Would need to inspect the end of the previous line
and update "capcol_lnum" and "cap_col".
- Mixup of highlighting when there is a match and SpellBad. (ZyX, 2015 Jan 1)
- Spell files use a latin single quote. Unicode also has another single
quote: 0x2019. (Ron Aaron, 2014 Apr 4)
New OpenOffice spell files support this with ICONV. But they are not
compatible with Vim spell files. The old files can no longer be
downloaded.
- Add a feature to only consider two spaces after a dot to start a new
sentence. Don't give the capitalization error when there is one space.
- Add a way to specify punctuation characters. Add the superscript numbers
by default: 0x2070, 0xb9, 0xb2, 0xb3, 0x2074 - 0x2079.
- In popup menu: If the only problem is the case of the first character,
don't offer "ignore" and "add to word list".
- Spell menu: When using the Popup menu to select a replacement word,
":spellrepeat" doesn't work. SpellReplace() uses setline(). Can it use
"z=" somehow? Or use a new function.
Quickfix/Location List:
- Window size is wrong when using quickfix window. (Lifepillar, 2018 Aug 24,
#2999)
@ -3676,8 +3713,8 @@ Macintosh:
8 'hkmap' should probably be global-local.
8 Using ":s" in a function changes the previous replacement string. Save
"old_sub" in save_search_patterns()?
8 Should allow multi-byte characters for the delimiter: ":s+a+b+" where "+"
is a multi-byte character.
8 Should allow multibyte characters for the delimiter: ":s+a+b+" where "+"
is a multibyte character.
8 When appending to a file and 'patchmode' isn't empty, a backup file is
always written, even when the original file already exists.
9 When getting focus while writing a large file, could warn for this file
@ -3800,10 +3837,6 @@ Macintosh:
on the status line (caused by 'winheight'). Select window on button up,
instead of on button down.
8 Dragging the status line doesn't scroll but redraw.
9 Evaluating 'statusline' in build_stl_str_hl() does not properly check for
reaching the end of the available buffer.
Patch to dynamically allocate the buffer for % items. (Eric Arnold, 2006
May 14)
8 When performing incremental search, should abort searching as soon as a
character is typed.
8 When the value of $MAKE contains a path, configure can't handle this.
@ -3832,9 +3865,7 @@ Macintosh:
two lines at a time. "k" doesn't do this. (Cory T. Echols)
8 When write_viminfo() is used while there are many orphaned viminfo
tempfiles writing the viminfo file fails. Give a clear error message so
that the user knows he has to delete the files.
7 It's possible to redefine a script-local function with ":func
<SNR>123_Test()". (Krishna) Disallow this.
that the user knows the files have to be deleted.
I can't reproduce these (if you can, let me know how!):
@ -3982,7 +4013,7 @@ Documentation:
- change to cursor position and curswant
- if it can be undone (u/CTRL-R) and redone (.)
- how it works for folded lines
- how it works with multi-byte characters
- how it works with multibyte characters
9 In change.txt, remark about Javadoc isn't right. Right alignment would
work too.
8 Spread the windows commands over the other files. For example, ":stag"
@ -4005,7 +4036,7 @@ Help:
- Support a way to view (and edit) .info files.
- Implement a "sticky" help window, some help text lines that are always
displayed in a window with fixed height. (Guckes) Use "~/.vimhelp" file,
user can edit it to insert his favorite commands, new account can contain a
user can edit it to insert favorite commands, new account can contain a
default contents.
- Make 'winminheight' a local option, so that the user can set a minimal
height for the help window (and other windows).
@ -4218,8 +4249,8 @@ Multi-byte characters:
8 Add configure option to be able to disable using the iconv library. (Udo
Schweigert)
9 'aleph' should be set to 1488 for Unicode. (Zvi Har'El)
8 Should add test for using various commands with multi-byte characters.
8 'infercase' doesn't work with multi-byte characters.
8 Should add test for using various commands with multibyte characters.
8 'infercase' doesn't work with multibyte characters.
8 toupper() function doesn't handle byte count changes.
7 Searching and composing characters:
When searching, should order of composing characters be ignored?
@ -4227,7 +4258,7 @@ Multi-byte characters:
characters can be manipulated.
8 Should implement 'delcombine' for command line editing.
8 Detect overlong UTF-8 sequences and handle them like illegal bytes.
8 ":s/x/\u\1/" doesn't work, making uppercase isn't done for multi-byte
8 ":s/x/\u\1/" doesn't work, making uppercase isn't done for multibyte
characters.
8 UTF-8: "r" in Visual mode doesn't take composing characters.
8 UTF-8: When there is a precomposed character in the font, use it instead
@ -4251,14 +4282,14 @@ Multi-byte characters:
convert_input() for Mac GUI.
- Add mnemonics from RFC1345 longer than two characters.
Support CTRL-K _{mnemonic}_
- Make 'breakat' accept multi-byte characters. Problem: can't use a lookup
- Make 'breakat' accept multibyte characters. Problem: can't use a lookup
table anymore (breakat_flags[]).
Simplistic solution: when 'formatoptions' contains "m" also break a line
at a multi-byte character >= 0x100.
at a multibyte character >= 0x100.
- Add the possibility to enter mappings which are used whenever normal text
could be entered. E.g., for "f" command. But not in Normal mode. Sort
of opposite of 'langmap'. Use ":amap" command?
- When breaking a line, take properties of multi-byte characters into
- When breaking a line, take properties of multibyte characters into
account. The "linebreak" program from Bruno Haible can do it:
ftp://ftp.ilog.fr/pub/Users/haible/gnu/linebreak-0.1.tar.gz
But it's very complicated...
@ -5323,11 +5354,11 @@ Text objects:
8 Add test script for text object commands "aw", "iW", etc.
8 Add text object for part of a CamelHumpedWord and under_scored_word.
(Scott Graham) "ac" and "au"?
8 Add a text object for any kind of quoting, also with multi-byte
8 Add a text object for any kind of quoting, also with multibyte
characters. Option to specify what quotes are recognized (default: all)
use "aq" and "iq". Use 'quotepairs' to define pairs of quotes, like
'matchpairs'?
8 Add text object for any kind of parens, also multi-byte ones.
8 Add text object for any kind of parens, also multibyte ones.
8 Add a way to make an ":omap" for a user-defined text object. Requires
changing the starting position in oap->start.
8 Add "gp" and "gP" commands: insert text and make sure there is a single
@ -5673,7 +5704,7 @@ Buffer list:
Also for other windows: ":inwin {winnr} {cmd}". How to make sure that
this works properly for all commands, and still be able to return to the
current buffer/window? E.g.: ":inbuf xxx only".
8 Add File.{recent_files} menu entries: Recently edited files.
8 Add File.{recent-files} menu entries: Recently edited files.
Ron Aaron has a plugin for this: mru.vim.
8 Unix: Check all uses of fnamecmp() and fnamencmp() if they should check
inode too.
@ -5772,7 +5803,7 @@ Modelines:
.cpp files.
- Support the "abbreviate" command in modelines (Kearns). Careful for
characters after <Esc>, that is a security leak.
- Add option setting to ask user if he wants to have the modelines executed
- Add an option setting to ask the user if the modelines are to be executed
or not. Same for .exrc in local dir.
@ -6103,7 +6134,7 @@ Various improvements:
regexp which triggers auto-formatting (for one line).
":set autoformat=\\s$".
- Be able to redefine where a sentence stops. Use a regexp pattern?
- Support multi-byte characters for sentences. Example from Ben Peterson.
- Support multibyte characters for sentences. Example from Ben Peterson.
7 Add command "g)" to go to the end of a sentence, "g(" to go back to the
end of a sentence. (Servatius Brandt)
- Be able to redefine where a paragraph starts. For "[[" where the '{' is

View File

@ -1,4 +1,4 @@
*undo.txt* For Vim version 8.2. Last change: 2019 Dec 07
*undo.txt* For Vim version 8.2. Last change: 2020 Oct 18
VIM REFERENCE MANUAL by Bram Moolenaar
@ -392,7 +392,7 @@ back the text of three deletes ago with '"3P'.
*redo-register*
If you want to get back more than one part of deleted text, you can use a
special feature of the repeat command ".". It will increase the number of the
register used. So if you first do ""1P", the following "." will result in a
register used. So if you first do '"1P', the following "." will result in a
'"2P'. Repeating this will result in all numbered registers being inserted.
Example: If you deleted text with 'dd....' it can be restored with

View File

@ -1,4 +1,4 @@
*usr_03.txt* For Vim version 8.2. Last change: 2020 Feb 29
*usr_03.txt* For Vim version 8.2. Last change: 2020 Sep 03
VIM USER MANUAL - by Bram Moolenaar
@ -30,10 +30,11 @@ Table of contents: |usr_toc.txt|
To move the cursor forward one word, use the "w" command. Like most Vim
commands, you can use a numeric prefix to move past multiple words. For
example, "3w" moves three words. This figure shows how it works:
example, "3w" moves three words. This figure shows how it works (starting at
the position marked with "x"):
This is a line with example text ~
--->-->->----------------->
x-->-->->----------------->
w w w 3w
Notice that "w" moves to the start of the next word if it already is at the
@ -41,15 +42,15 @@ start of a word.
The "b" command moves backward to the start of the previous word:
This is a line with example text ~
<----<--<-<---------<---
<----<--<-<---------<--x
b b b 2b b
There is also the "e" command that moves to the next end of a word and "ge",
which moves to the previous end of a word:
This is a line with example text ~
<- <--- -----> ---->
ge ge e e
<----<----x---->------------>
2ge ge e we
If you are at the last word of a line, the "w" command will take you to the
first word in the next line. Thus you can use this to move through a
@ -82,12 +83,12 @@ an <End> key it will do the same thing.
The "^" command moves to the first non-blank character of the line. The "0"
command (zero) moves to the very first character of the line, and the <Home>
key does the same thing. In a picture:
key does the same thing. In a picture ("." indicates a space):
^
<------------
<-----------x
.....This is a line with example text ~
<----------------- --------------->
<----------------x x-------------->
0 $
(the "....." indicates blanks here)

View File

@ -161,7 +161,7 @@ line break.
==============================================================================
*04.3* Repeating a change
The "." command is one of the most simple yet powerful commands in Vim. It
The "." command is one of the simplest yet powerful commands in Vim. It
repeats the last change. For instance, suppose you are editing an HTML file
and want to delete all the <B> tags. You position the cursor on the first <
and delete the <B> with the command "df>". You then go to the < of the next

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