Compare commits

...

291 Commits

Author SHA1 Message Date
Bram Moolenaar
0466d398a5 patch 9.0.0650: some tests are failing
Problem:    Some tests are failing.
Solution:   Adjust for "<<<" showing up.
2022-10-03 17:07:34 +01:00
Bram Moolenaar
406b5d89e1 patch 9.0.0649: no indication the first line is broken for 'smoothscroll'
Problem:    No indication when the first line is broken for 'smoothscroll'.
Solution:   Show "<<<" in the first line.
2022-10-03 16:44:12 +01:00
Yegappan Lakshmanan
0a016671b9 patch 9.0.0648: when using powershell input redirection does not work
Problem:    When using powershell input redirection does not work.
Solution:   Use a different shell command for powershell. (Yegappan
            Lakshmanan, closes #11257)
2022-10-03 16:05:28 +01:00
Luuk van Baal
13ece2ae1d patch 9.0.0647: the 'splitscroll' option is not a good name
Problem:    The 'splitscroll' option is not a good name.
Solution:   Rename 'splitscroll' to 'splitkeep' and make it a string option,
            also supporting "topline". (Luuk van Baal, closes #11258)
2022-10-03 15:28:08 +01:00
Bram Moolenaar
6b2d4ff714 patch 9.0.0646: with 'smoothscroll' CTRL-E is wrong when 'foldmethod' set
Problem:    with 'smoothscroll' set CTRL-E does not work properly when
            'foldmethod' is set to "indent". (Yee Cheng Chin)
Solution:   Merge the code for scroling with folds and 'smoothscroll'.
            (closes #11262)
2022-10-03 14:06:02 +01:00
Bram Moolenaar
8df9748edb patch 9.0.0645: CTRL-Y does not stop at line 1
Problem:    CTRL-Y does not stop at line 1. (John Marriott)
Solution:   Stop at line 1 when 'smoothscroll' is not set. (closes #11261)
2022-10-03 12:11:13 +01:00
Bram Moolenaar
b1fd26d208 patch 9.0.0644: 'smoothscroll' is not copied to a new window on :split
Problem:    'smoothscroll' is not copied to a new window on :split.
Solution:   Copy the option value.  Add a test.
2022-10-03 11:23:02 +01:00
Bram Moolenaar
b34c4b7863 patch 9.0.0643: smoothscroll test fails
Problem:    Smoothscroll test fails.
Solution:   Check if skipcol changed.
2022-10-02 22:32:08 +01:00
Bram Moolenaar
693729ae58 patch 9.0.0642: breakindent test fails
Problem:    Breakindent test fails.
Solution:   Correct logic for resetting need_showbreak.
2022-10-02 22:10:25 +01:00
Bram Moolenaar
bbbda8fd81 patch 9.0.0641: missing part of the new option code
Problem:    Missing part of the new option code.
Solution:   Add missing WV_SMS.
2022-10-02 21:46:58 +01:00
Bram Moolenaar
f6196f4244 patch 9.0.0640: cannot scroll by screen line if a line wraps
Problem:    Cannot scroll by screen line if a line wraps.
Solution:   Add the 'smoothscroll' option.  Only works for CTRL-E and CTRL-Y
            so far.
2022-10-02 21:29:55 +01:00
Bram Moolenaar
ff85d4a107 patch 9.0.0639: checking for popup in screen_char() is too late
Problem:    Checking for popup in screen_char() is too late, the attribute has
            already been changed.
Solution:   Move check for popup to where screen_char() is called.
2022-10-02 15:21:04 +01:00
Bram Moolenaar
393f8d61f5 patch 9.0.0638: popup menu highlight wrong on top of preview popup
Problem:    Popup menu highlight wrong on top of preview popup. (Yegappan
            Lakshmanan)
Solution:   Also check for the popup menu in screen_line().
2022-10-02 14:28:30 +01:00
Bram Moolenaar
eda29c971c patch 9.0.0637: syntax of commands in Vim9 script depends on +eval feature
Problem:    Syntax of commands in Vim9 script depends on +eval feature.
Solution:   Use same syntax with and without the +eval feature.
2022-10-02 12:59:00 +01:00
Bram Moolenaar
b393275ae9 patch 9.0.0636: underline color may not work in some terminals
Problem:    Underline color does not work in terminals that don't send a
            termresponse.
Solution:   Do output t_8u if it was set explicitly. (closes #11253)
2022-10-01 21:22:17 +01:00
Bram Moolenaar
3292a22940 patch 9.0.0635: build error and compiler warnings
Problem:    Build error and compiler warnings.
Solution:   Add missing change.  Add type casts.
2022-10-01 20:17:17 +01:00
Bram Moolenaar
a4e0b9785e patch 9.0.0634: evaluating "expr" options has more overhead than needed
Problem:    Evaluating "expr" options has more overhead than needed.
Solution:   Use call_simple_func() for 'foldtext', 'includeexpr', 'printexpr',
            "expr" of 'spellsuggest', 'diffexpr', 'patchexpr', 'balloonexpr',
            'formatexpr', 'indentexpr' and 'charconvert'.
2022-10-01 19:43:52 +01:00
rbtnn
b850c39676 patch 9.0.0633: FEAT_TITLE was removed but is still used
Problem:    FEAT_TITLE was removed but is still used.
Solution:   Remove FEAT_TITLE. (Naruhiko Nishino, closes #11256)
2022-10-01 15:47:04 +01:00
Bram Moolenaar
87b4e5c5db patch 9.0.0632: calling a function from an "expr" option has overhead
Problem:    Calling a function from an "expr" option has too much overhead.
Solution:   Add call_simple_func() and use it for 'foldexpr'
2022-10-01 15:32:46 +01:00
Bram Moolenaar
145d1fd910 patch 9.0.0631: too many delete() calls in tests
Problem:    Too many delete() calls in tests.
Solution:   Use deferred delete where possible.
2022-09-30 21:57:11 +01:00
Bram Moolenaar
cfb4d4f312 patch 9.0.0630: in Vim9 script a numbered function cannot be called
Problem:    In Vim9 script a numbered function cannot be called.
Solution:   Do not require "g:" before a numbered function name.
            (closes #11254)
2022-09-30 19:19:04 +01:00
Bram Moolenaar
a5d1a67bee patch 9.0.0629: get an error for using const only when executing
Problem:    Get an error for using const only when executing.
Solution:   Check for const at compile time for filter(), map(), remove(),
            reverse(), sort() and uniq().
2022-09-30 17:57:47 +01:00
Bram Moolenaar
d0121c63cf patch 9.0.0628: Coverity warns for not checking return value
Problem:    Coverity warns for not checking return value.
Solution:   Check the return value and simplify the code.
2022-09-30 12:00:06 +01:00
Bram Moolenaar
6586a01514 patch 9.0.0627: "const" and "final" both make the type a constant
Problem:    "const" and "final" both make the type a constant. (Daniel
            Steinberg)
Solution:   Only have "const" make the type a constant.
2022-09-30 11:04:50 +01:00
Bram Moolenaar
b152b6a40f patch 9.0.0626: too many delete() calls in tests
Problem:    Too many delete() calls in tests.
Solution:   Use deferred delete where possible.
2022-09-29 21:37:33 +01:00
Bram Moolenaar
7dd5a78b88 patch 9.0.0625: too many delete() calls in tests
Problem:    Too many delete() calls in tests.
Solution:   Use deferred delete where possible.
2022-09-29 21:01:57 +01:00
Bram Moolenaar
ac38ec7c7f patch 9.0.0624: leaking argument type array
Problem:    Leaking argument type array.
Solution:   Add allocated memory to type_gap.
2022-09-29 20:23:35 +01:00
Bram Moolenaar
fa1039760e patch 9.0.0623: error for modifying a const is not detected at compile time
Problem:    Error for modifying a const is not detected at compile time.
Solution:   Add TTFLAG_CONST and check for it in add() and extend().
2022-09-29 19:14:42 +01:00
Bram Moolenaar
9f573a8df0 patch 9.0.0622: matchaddpos() can get slow when adding many matches
Problem:    matchaddpos() can get slow when adding many matches.
Solution:   Update the next available match ID when manually picking an ID and
            remove check if the available ID can be used. (idea by Rick Howe)
2022-09-29 13:50:08 +01:00
Dominique Pelle
fc06cda837 patch 9.0.0621: filetype test leaves file behind
Problem:    Filetype test leaves file behind.
Solution:   Add deferred delete flag to writefile(). (Dominique Pellé,
            closes #11249)
2022-09-29 13:07:18 +01:00
Bram Moolenaar
50faf02f43 patch 9.0.0620: matchaddpos() can only add up to 8 matches
Problem:    matchaddpos() can only add up to 8 matches.
Solution:   Allocate the array of positions. (closes #11248)
2022-09-29 12:50:17 +01:00
Bram Moolenaar
572a4433c8 patch 9.0.0619: too many delete() calls in tests
Problem:    Too many delete() calls in tests.
Solution:   Use deferred delete where possible.
2022-09-28 21:07:03 +01:00
Bram Moolenaar
82418263fa patch 9.0.0618: calling function for reduce() has too much overhead
Problem:    Calling function for reduce() has too much overhead.
Solution:   Do not create a funccall_T every time.
2022-09-28 16:16:15 +01:00
Bram Moolenaar
1936c76536 patch 9.0.0617: calling function for reduce() has too much overhead
Problem:    Calling function for reduce() has too much overhead.
Solution:   Only call clear_tv() when needed.
2022-09-28 15:19:10 +01:00
Bram Moolenaar
371951d0c3 patch 9.0.0616: spell test fails because error message changed
Problem:    Spell test fails because error message changed.
Solution:   Adjust expected error message.
2022-09-28 14:08:23 +01:00
Bram Moolenaar
52df40eb04 patch 9.0.0615: using reduce() on a list from range() is a bit slow
Problem:    Using reduce() on a list from range() is a bit slow.
Solution:   Avoid materializing the list.
2022-09-28 13:22:59 +01:00
Bram Moolenaar
ef976323e7 patch 9.0.0614: SpellFileMissing autocmd may delete buffer
Problem:    SpellFileMissing autocmd may delete buffer.
Solution:   Disallow deleting the current buffer to avoid using freed memory.
2022-09-28 11:48:30 +01:00
Dominique Pelle
caa1d19da1 patch 9.0.0613: running source tests leaves file behind
Problem:    Running source tests leaves file behind.
Solution:   Add the "D" flag to writefile(). (Dominique Pellé, closes #11243)
            Also do this for other writefile() calls and drop delete().
2022-09-28 10:45:15 +01:00
Bram Moolenaar
47da934844 patch 9.0.0612: blockedit test passes with wrong result
Problem:    Blockedit test passes with wrong result.
Solution:   Add a "vim9script" line to make indenting work.
2022-09-27 22:18:13 +01:00
Bram Moolenaar
70e672580b patch 9.0.0611: tests delete files with a separate delete() call
Problem:    Tests delete files with a separate delete() call.
Solution:   Use deferred delete.
2022-09-27 19:34:35 +01:00
Bram Moolenaar
859ea4bc76 patch 9.0.0610: global interrupt test fails when run under valgrind
Problem:    Global interrupt test fails when run under valgrind.
Solution:   Use TermWait().
2022-09-27 18:05:38 +01:00
Bram Moolenaar
66000ff9af patch 9.0.0609: blockedit test fails because of wrong indent
Problem:    Blockedit test fails because of wrong indent.
Solution:   Adjust the expected text temporarily
2022-09-27 17:47:12 +01:00
Bram Moolenaar
9fbdbb814f Update runtime files 2022-09-27 17:30:34 +01:00
Bram Moolenaar
26f09ea54b patch 9.0.0608: with spelling, deleting a full stop does not update next line
Problem:    With spell checking, deleting a full stop at the end of a line
            does not update SpellCap at the start of the next line.
Solution:   Update the next line when characters have been deleted.  Also when
            using undo.
2022-09-27 16:29:38 +01:00
Bram Moolenaar
f802767df7 patch 9.0.0607: verbose echo message test fails on Mac OS
Problem:    Verbose echo message test fails on Mac OS.
Solution:   Skip the test on Mac OS.
2022-09-27 15:55:43 +01:00
Bram Moolenaar
524c853e5e patch 9.0.0606: system() opens a terminal window when "!" is in 'guioptions'
Problem:    system() opens a terminal window when using the GUI and "!" is in
            'guioptions'.
Solution:   Do not use a terminal window when the SHELL_SILENT flag is used.
            (closes #11202)
2022-09-27 15:48:20 +01:00
Luuk van Baal
439a2ba174 patch 9.0.0605: dump file missing
Problem:    Dump file missing.
Solution:   Add the missing dump file. (issue #11234)
2022-09-27 15:06:46 +01:00
ObserverOfTime
49c311c9b1 patch 9.0.0604: luacheckrc file is not recognized
Problem:    Luacheckrc file is not recognized.
Solution:   Use lua filetype for luacheckrc. (closes #11236)
2022-09-27 13:07:05 +01:00
Luuk van Baal
7c1cbb6cd4 patch 9.0.0603: with 'nosplitscroll' folds are not handled correctly
Problem:    With 'nosplitscroll' folds are not handled correctly.
Solution:   Take care of closed folds when moving the cursor. (Luuk van Baal,
            closes #11234)
2022-09-27 12:31:15 +01:00
rhysd
7fc6c0e4da patch 9.0.0602: new TypeScript extensions are not recognized
Problem:    New TypeScript extensions are not recognized.
Solution:   Recognize .mts and .cts files. (closes #11237)
2022-09-27 11:57:13 +01:00
Yegappan Lakshmanan
368aa69088 patch 9.0.0601: too much indent
Problem:    Too much indent.
Solution:   Return out early from a funtion. (Yegappan Lakshmanan,
            close #11238)
2022-09-27 11:46:48 +01:00
ObserverOfTime
d324742292 patch 9.0.0600: GYP files are not recognized
Problem:    GYP files are not recognized.
Solution:   Recognize GYP files. (closes #11242)
2022-09-27 11:35:09 +01:00
ObserverOfTime
cde0319385 patch 9.0.0599: latexmkrc files are not recognized
Problem:    Latexmkrc files are not recognized.
Solution:   Use Perl filetype for latexmkrc files. (closes #11241)
2022-09-27 11:27:23 +01:00
Bram Moolenaar
8279af514c patch 9.0.0598: using negative array index with negative width window
Problem:    Using negative array index with negative width window.
Solution:   Make sure the window width does not become negative.
2022-09-26 23:08:22 +01:00
regomne
3bdef10dc1 patch 9.0.0597: cannot close a tab page with the middle mouse button
Problem:    Cannot close a tab page with the middle mouse button.
Solution:   Support closing a tab page with the middle mouse button, like many
            other programs. (closes #10746)
2022-09-26 20:48:32 +01:00
Philip H
7381c0ce3f patch 9.0.0596: CI on Mac M1 has the channel feature disabled
Problem:    CI on Mac M1 has the channel feature disabled.
Solution:   Include the channel feature.
2022-09-26 20:17:26 +01:00
Bram Moolenaar
1190139ed0 patch 9.0.0595: extra newline in messages after a verbose shell message
Problem:    Extra newline in messages after a verbose shell message.
Solution:   Output the newline with msg_putchar_attr(). (closes #11233)
            Make it possible to filter a screendump before comparing it.
2022-09-26 19:50:44 +01:00
dundargoc
2cb4a89797 patch 9.0.0594: Makefile error message causes a shell error
Problem:    Makefile error message causes a shell error.
Solution:   Put the message in single quotes. (closes #11232)
2022-09-26 16:02:48 +01:00
Alex
311df6bb0f patch 9.0.0593: CI actions have too many permissions
Problem:    CI actions have too many permissions.
Solution:   Restrict permissions to what is required. (closes #11223)
2022-09-26 15:52:46 +01:00
Bram Moolenaar
838b746cce patch 9.0.0592: display not cleared when scrolling back in messages
Problem:    Display not cleared when scrolling back in messages, a background
            color is set and t_ut is empty.
Solution:   Clear to the end of the display if needed. (closes #8973)
2022-09-26 15:19:56 +01:00
Bram Moolenaar
4569020538 patch 9.0.0591: message window popup shows on only one tab page
Problem:    Message window popup shows on only one tab page. (Naruhiko
            Nishino)
Solution:   Show the message window popup on all tab pages. (closes #11231)
2022-09-26 12:57:11 +01:00
Bram Moolenaar
ee09fcc9b6 patch 9.0.0590: after exiting Insert mode spelling not checked in next line
Problem:    After exiting Insert mode spelling is not checked in the next
            line.
Solution:   When spelling is enabled redraw the next line after exiting Insert
            mode in case the spell highlight needs updating.
2022-09-25 20:58:30 +01:00
=?UTF-8?q?Ola=20S=C3=B6der?=
b7e07dc103 patch 9.0.0589: on AmigaOS4 the pid is available but the task address is used
Problem:    On AmigaOS4 the pid is available but the task address is used.
Solution:   Use getpid().  (Ola Söder, closes #11224)
2022-09-25 20:12:21 +01:00
=?UTF-8?q?Ola=20S=C3=B6der?=
4d2073b261 patch 9.0.0588: MorphOS build is broken
Problem:    MorphOS build is broken.
Solution:   Add "-lm" to LDFLAGS and "-noixemul" to CFLAGS. (Ola Söder,
            closes #11222)
2022-09-25 19:36:38 +01:00
Christian Brabandt
9882e9ddc9 patch 9.0.0587: Unicode tables are outdated
Problem:    Unicode tables are outdated.
Solution:   Update to Unicode release 15. (Christian Brabandt, closes #11220)
2022-09-25 19:25:51 +01:00
Bram Moolenaar
124af71a28 patch 9.0.0586: missing change in test
Problem:    Missing change in test.
Solution:   Add the test change.
2022-09-25 18:44:03 +01:00
Bram Moolenaar
6a879878f4 patch 9.0.0585: when long message test fails the error message is not visible
Problem:    When long message test fails the error message is not visible.
Solution:   Dump more lines.
2022-09-25 18:41:14 +01:00
Bram Moolenaar
dc21552c9a patch 9.0.0584: cscope test with wrong executable name fails
Problem:    Cscope test with wrong executable name fails.
Solution:   Use /bin/sh to execute the command. (Yegappan Lakshmanan)
2022-09-25 17:03:26 +01:00
Bram Moolenaar
b9725bc7f6 patch 9.0.0583: only recognizing .m3u8 files is inconsistent
Problem:    Only recognizing .m3u8 files is inconsistent.
Solution:   Also matc .m3u files. (issue #11204)
2022-09-25 12:35:49 +01:00
Bram Moolenaar
ec1238b406 patch 9.0.0582: channel cwd test fails on Cirrus CI
Problem:    Channel cwd test fails on Cirrus CI.
Solution:   Also remove /private from the expected directory.
2022-09-25 11:21:04 +01:00
Bram Moolenaar
d4566c14e7 patch 9.0.0581: adding a character for incsearch fails at end of line
Problem:    Adding a character for incsearch fails at end of line.
Solution:   Only check cursor line number.
2022-09-24 21:06:39 +01:00
Philip H
1d61408af3 patch 9.0.0580: no CI running for MacOS on M1
Problem:    No CI running for MacOS on M1.
Solution:   Add a cirrus CI task. (closes #11203)
2022-09-24 19:32:11 +01:00
Bram Moolenaar
0ff01835a4 patch 9.0.0579: using freed memory when 'tagfunc' wipes out buffer
Problem:    Using freed memory when 'tagfunc' wipes out buffer that holds
            'complete'.
Solution:   Make a copy of the option.  Make sure cursor position is valid.
2022-09-24 19:20:30 +01:00
Bram Moolenaar
865bf2ed30 patch 9.0.0578: one timer test fails on Mac M1
Problem:    One timer test fails on Mac M1.
Solution:   Skip the test on Mac M1.
2022-09-24 17:44:22 +01:00
Bram Moolenaar
96b9bf8f74 patch 9.0.0577: buffer underflow with unexpected :finally
Problem:    Buffer underflow with unexpected :finally.
Solution:   Check CSF_TRY can be found.
2022-09-24 17:24:12 +01:00
dundargoc
b2209f213e patch 9.0.0576: unused loop variables
Problem:    Unused loop variables.
Solution:   Use a while loop instead. (closes #11214)
2022-09-24 15:55:27 +01:00
Bram Moolenaar
78aed95c8d patch 9.0.0575: the getchar() function behaves strangely with bracketed paste
Problem:    The getchar() function behaves strangely with bracketed paste.
Solution:   Do not handle paste-start in getchar(). (issue #11172)
2022-09-24 15:36:35 +01:00
Bram Moolenaar
140f6d0eda patch 9.0.0574: timer garbage collect test hangs on Mac M1
Problem:    Timer garbage collect test hangs on Mac M1.
Solution:   Properly check for Mac M1 and skip the test.
2022-09-24 14:49:07 +01:00
Philip H
81fd3b2b44 patch 9.0.0573: outdated dependencies go unnoticed
Problem:    Outdated dependencies go unnoticed.
Solution:   Use github Dependabot. (closes #11213)
2022-09-24 14:35:21 +01:00
zeertzjq
75f4bafabd patch 9.0.0572: insert complete tests leave a mapping behind
Problem:    Insert complete tests leave a mapping behind.
Solution:   Use a buffer-local mapping. (closes #11211)
2022-09-24 14:08:23 +01:00
Bram Moolenaar
f7e7302acb patch 9.0.0571: MS-Windows: CTRL-C can make Vim exit
Problem:    MS-Windows: CTRL-C can make Vim exit.
Solution:   Check the not-a-term argument.
2022-09-24 13:10:04 +01:00
Philip H
d3eafdd709 patch 9.0.0570: CI for Windows is still using codecov action 3.1.0
Problem:    CI for Windows is still using codecov action 3.1.0.
Solution:   Use action 3.1.1. (closes #11212)
2022-09-24 13:00:53 +01:00
Bram Moolenaar
5939c35743 patch 9.0.0569: cannot easily get out when using "vim file | grep word"
Problem:    Cannot easily get out when using "vim file | grep word".
Solution:   Without changes let CTRL-C exit Vim.  Otherwise give a message on
            stderr. (closes #11209)
2022-09-24 12:50:45 +01:00
Yegappan Lakshmanan
e9dcf13a30 patch 9.0.0568: autocmd code is indented more than needed
Problem:    Autocmd code is indented more than needed.
Solution:   Break out sooner. (Yegappan Lakshmanan, closes #11208)
            Also in user function code.
2022-09-24 11:30:41 +01:00
bfredl
87af60c915 patch 9.0.0567: 'completeopt' "longest" is not used for complete()
Problem:    'completeopt' "longest" is not used for complete().
Solution:   Also use "longest" for complete(). (Bjorn Linse, closes #11206)
2022-09-24 11:17:51 +01:00
Nbiba Bedis
9fd1583c83 patch 9.0.0566: Nim files are not recognized
Problem:    Nim files are not recognized.
Solution:   Add patterns for Nim files. (Nbiba Bedis, closes #11205)
2022-09-24 11:04:38 +01:00
Bram Moolenaar
dfa8be4944 patch 9.0.0565: cscope test causes problems with test timeout timer
Problem:    Cscope test causes problems when code for test timeout timer is
            included (even when commented out).
Solution:   Disable part of the cscope test for now.
2022-09-23 23:19:18 +01:00
Bram Moolenaar
0056ca7137 patch 9.0.0564: a few tests keep failing on MacOS M1
Problem:    A few tests keep failing on MacOS M1.
Solution:   Add a test check CheckNotMacM1.  Fix timer tests.
2022-09-23 21:26:39 +01:00
Bram Moolenaar
a9b0f8f7f3 patch 9.0.0563: timer_info() test fails
Problem:    Timer_info() test fails.
Solution:   Ignore test timeout timer.  Don't use test_null_job() when not
            available.
2022-09-23 21:01:54 +01:00
=?UTF-8?q?Beno=C3=AEt=20Ryder?=
35fdd9a67d patch 9.0.0562: HSL playlist files are not recognized
Problem:    HSL playlist files are not recognized.
Solution:   Add a pattern to recognize HSL palylist files. (Benoît Ryder,
            closes #11204)
2022-09-23 20:33:39 +01:00
Bram Moolenaar
3bcd0ddc2d patch 9.0.0561: when a test gets stuck it just hangs forever
Problem:    When a test gets stuck it just hangs forever.
Solution:   Set a timeout of 30 seconds.
2022-09-23 20:25:55 +01:00
Bram Moolenaar
b9093d5009 patch 9.0.0560: elapsed time since testing started is not visible
Problem:    Elapsed time since testing started is not visible.
Solution:   Show the elapsed time while running tests.
2022-09-23 19:42:31 +01:00
Bram Moolenaar
4ecf16bbf9 patch 9.0.0559: timer test may get stuck at hit-enter prompt
Problem:    Timer test may get stuck at hit-enter prompt.
Solution:   Feed some more characters.
2022-09-23 18:22:21 +01:00
Bram Moolenaar
7f9a5a68fe patch 9.0.0558: Coverity warns for possibly using NULL pointer
Problem:    Coverity warns for possibly using NULL pointer.
Solution:   Only use "evalarg" when not NULL.
2022-09-23 16:37:18 +01:00
Bram Moolenaar
259a741044 patch 9.0.0557: valgrind reports possibly leaked memory
Problem:    Valgrind reports possibly leaked memory.
Solution:   Move the problematic test function to the "fails" test file to
            avoid obscuring real memory leaks.
2022-09-23 16:11:37 +01:00
Bram Moolenaar
86fb3f8b99 patch 9.0.0556: leaking memory with nested functions
Problem:    Leaking memory with nested functions.
Solution:   Free saved pointer.
2022-09-23 13:27:57 +01:00
Luuk van Baal
20e58561ab patch 9.0.0555: scrolling with 'nosplitscroll' in callback changing curwin
Problem:    Scrolling with 'nosplitscroll' in callback changing curwin.
Solution:   Invalidate w_cline_row in the right place. (Luuk van Baal,
            closes #11185)
2022-09-23 12:57:09 +01:00
Bram Moolenaar
f8addf1ca1 patch 9.0.0554: using freed memory when command follows lambda
Problem:    Using freed memory when command follows lambda.
Solution:   Don't free what is still in use. (closes #11201)
2022-09-23 12:44:25 +01:00
Bram Moolenaar
f5f4e85f01 patch 9.0.0553: no error for "|" after "{" in lamda
Problem:    No error for "|" after "{" in lamda.
Solution:   Check for invalid "|". (closes #11199)
2022-09-22 22:03:14 +01:00
Bram Moolenaar
69082916c8 patch 9.0.0552: crash when using NUL in buffer that uses :source
Problem:    Crash when using NUL in buffer that uses :source.
Solution:   Don't get a next line when skipping over NL.
2022-09-22 21:35:19 +01:00
Bram Moolenaar
f87eeb43fb patch 9.0.0551: mode message is delayed when :echowin was used
Problem:    Mode message is delayed when :echowin was used. (Maxim Kim)
Solution:   Save and restore msg_didout in :echowin. (closes #11193)
2022-09-22 19:02:38 +01:00
zeertzjq
62de54b48d patch 9.0.0550: crash when closing a tabpage and buffer is NULL
Problem:    Crash when closing a tabpage and buffer is NULL.
Solution:   Adjust how autocommands are triggered when closing a window.
            (closes #11198, closes #11197)
2022-09-22 18:08:37 +01:00
Bram Moolenaar
5800c79838 patch 9.0.0549: duplicated code in calling a :def function
Problem:    Duplicated code in calling a :def function.
Solution:   Simplify the code.
2022-09-22 17:34:01 +01:00
Bram Moolenaar
f1c60d4bf1 patch 9.0.0548: reduce() with a compiled lambda could be faster
Problem:    reduce() with a compiled lambda could be faster.
Solution:   Call eval_expr_typval() instead of call_func() directly.
2022-09-22 17:07:00 +01:00
Bram Moolenaar
6d313bec53 patch 9.0.0547: looping over empty out_loop[] entries
Problem:    Looping over empty out_loop[] entries.
Solution:   Store the array size.
2022-09-22 16:36:25 +01:00
K.Takata
236ccbf6f8 patch 9.0.0546: supporting Ruby 1.8 makes code complicated
Problem:    Supporting Ruby 1.8 makes code complicated.
Solution:   Drop Ruby 1.8 support, it is ancient. (Ken Takata, closes #11195)
2022-09-22 16:12:06 +01:00
Bram Moolenaar
daaa3d9965 patch 9.0.0545: when a test is slow and CI times out there is no time info
Problem:    When a test is slow and CI times out there is no time info.
Solution:   Add the elapsed time to the "Executing" message.
2022-09-22 15:13:00 +01:00
zeertzjq
fcba86c031 patch 9.0.0544: minor issues with setting a string option
Problem:    Minor issues with setting a string option.
Solution:   Adjust the code, add a test. (closes #11192)
2022-09-22 13:57:32 +01:00
Yegappan Lakshmanan
e24b5e0b0f patch 9.0.0543: insufficient testing for assert and test functions
Problem:    Insufficient testing for assert and test functions.
Solution:   Add a few more tests. (Yegappan Lakshmanan, closes #11190)
2022-09-22 13:44:00 +01:00
Bram Moolenaar
f1d2ddcb9b patch 9.0.0542: MSVC build still has support for 2012 edition
Problem:    MSVC build still has support for 2012 edition.
Solution:   Drop MSVC 2012 support. (Ken Takata, closes #11191)
2022-09-22 13:17:30 +01:00
Bram Moolenaar
ee7c8d999b patch 9.0.0541: terminal pwd test fails with a very long path name
Problem:    Terminal pwd test fails with a very long path name.
Solution:   Join two lines.
2022-09-22 12:57:06 +01:00
Bram Moolenaar
6f98114e4a patch 9.0.0540: assigning stack variable to argument confuses Coverity
Problem:    Assigning stack variable to argument confuses Coverity.
Solution:   Use a local pointer, also makes the code simpler.
2022-09-22 12:48:58 +01:00
Bram Moolenaar
21d393a12b patch 9.0.0539: long message test can be flaky
Problem:    Long message test can be flaky.
Solution:   Wait for more prompt instead of ruler.
2022-09-22 12:01:34 +01:00
Bram Moolenaar
5c645a25bb patch 9.0.0538: manually deleting test temp files
Problem:    Manually deleting test temp files.
Solution:   Add the 'D' flag to writefile().
2022-09-21 22:00:03 +01:00
Bram Moolenaar
4740394f23 patch 9.0.0537: the do_set() function is much too long
Problem:    The do_set() function is much too long.
Solution:   Move setting of a string option to a separate function.
2022-09-21 21:12:53 +01:00
Philip H
6a434e93a9 patch 9.0.0536: CI: codecov action update available
Problem:    CI: codecov action update available.
Solution:   Update Codecov 3.1.0 to 3.3.1. (closes #11188)
2022-09-21 19:41:54 +01:00
Bram Moolenaar
e8e369a796 patch 9.0.0535: closure gets wrong value in for loop with two loop variables
Problem:    Closure gets wrong value in for loop with two loop variables.
Solution:   Correctly compute the number of loop variables to clear.
2022-09-21 18:59:14 +01:00
Bram Moolenaar
ec5e1483eb patch 9.0.0534: line number is displayed at virtual text "above"
Problem:    Line number is displayed at virtual text "above".
Solution:   Show the line number at the text line.
2022-09-21 16:38:13 +01:00
Bram Moolenaar
e49f9acecc patch 9.0.0533: the win_line() function is much too long
Problem:    The win_line() function is much too long.
Solution:   Move code to separate functions.
2022-09-21 15:41:28 +01:00
Bram Moolenaar
14f91765c0 patch 9.0.0532: edit test is flaky when run under valgrind
Problem:    Edit test is flaky when run under valgrind.
Solution:   Send some text to the terminal to trigger a redraw.
2022-09-21 15:13:52 +01:00
Bram Moolenaar
c20a41972c patch 9.0.0531: the win_line() function is much too long
Problem:    The win_line() function is much too long.
Solution:   Move code to separate functions.
2022-09-21 14:34:28 +01:00
Bram Moolenaar
8ecfa2c56b patch 9.0.0530: using freed memory when autocmd changes mark
Problem:    Using freed memory when autocmd changes mark.
Solution:   Copy the mark before editing another buffer.
2022-09-21 13:07:22 +01:00
K.Takata
8eaee1fa5c patch 9.0.0529: appveyor setup contains outdated lines
Problem:    Appveyor setup contains outdated lines.
Solution:   Remove outdated lines. (Ken Takata, closes #11182)
2022-09-21 12:19:44 +01:00
K.Takata
c3430cb583 patch 9.0.0528: MS-Windows: no batch files for more recent MSVC versions
Problem:    MS-Windows: no batch files for more recent MSVC versions.
Solution:   Add batch files for 2017, 2019 and 2022. (Ken Takata,
            closes #11184)
2022-09-21 11:56:41 +01:00
Bram Moolenaar
2b1ddf19f8 patch 9.0.0527: long sign text may overflow buffer
Problem:    Long sign text may overflow buffer.
Solution:   Use a larger buffer.  Prevent for overflow.
2022-09-21 11:21:57 +01:00
K.Takata
f7c7aa3594 patch 9.0.0526: MS-Windows: still some support for XP and old compilers
Problem:    MS-Windows: still some support for XP and old compilers.
Solution:   Remove XP support and mention of old compilers. (Ken Takata,
            closes #11183)
2022-09-21 10:51:13 +01:00
Bram Moolenaar
5917341f65 patch 9.0.0525: manually deleting temp test files
Problem:    Manually deleting temp test files.
Solution:   Add the 'D' flag to writefile().
2022-09-20 22:01:33 +01:00
Bram Moolenaar
4cbdcbda2d patch 9.0.0524: build instructions for MS-Windows are outdated
Problem:    Build instructions for MS-Windows are outdated.
Solution:   Remove instructions for old MSVC versions.
2022-09-20 21:23:12 +01:00
Bram Moolenaar
2d2e25b3e3 patch 9.0.0523: more compiler warnings for arguments in small version
Problem:    more compiler warnings for arguments in small version
Solution:   Adjust #ifdefs.
2022-09-20 21:09:42 +01:00
Bram Moolenaar
f64b75b1d9 patch 9.0.0522: build fails on Appveyor
Problem:    Build fails on Appveyor.
Solution:   Select Visual Studio 2015 for the build tools.
2022-09-20 20:52:33 +01:00
Bram Moolenaar
31724238c8 patch 9.0.0521: compiler warns for unused argument in small version
Problem:    Compiler warns for unused argument in small version.
Solution:   Add UNUSED.
2022-09-20 20:25:36 +01:00
Bram Moolenaar
848db57e52 patch 9.0.0520: declaring a loop variable at the start of a block is clumsy
Problem:    Declaring a loop variable at the start of a block is clumsy.
Solution:   Declare the variable inside the loop in a few places to see if
            this works.
2022-09-20 19:04:32 +01:00
Bram Moolenaar
d7657e95b2 patch 9.0.0519: the win_line() function is much too long
Problem:    The win_line() function is much too long.
Solution:   Move the code to draw the line number to a separate function.
2022-09-20 18:59:30 +01:00
Bram Moolenaar
b84d565c62 patch 9.0.0518: virtual text highlight starts too early with 'nowrap'
Problem:    Virtual text highlight starts too early with 'nowrap' and 'number'
            set.
Solution:   Add the offset to the attribute skip count. (issue #11138)
2022-09-20 17:57:53 +01:00
zeertzjq
320d910064 patch 9.0.0517: when at the command line :redrawstatus does not work well
Problem:    When at the command line :redrawstatus does not work well.
Solution:   Only update the statuslines instead of the screen. (closes #11180)
2022-09-20 17:12:13 +01:00
Bram Moolenaar
ccfaa07591 patch 9.0.0516: virtual text "above" highlights gap after it
Problem:    Virtual text "above" highlights gap after it.
Solution:   Do not highlight the gap. (closes #11138)
2022-09-20 16:15:30 +01:00
Bram Moolenaar
2fdc9b5419 patch 9.0.0515: virtual text highlight starts too early when 'number' is set
Problem:    Virtual text highlight starts too early when 'number' is set.
Solution:   Set column offset when wrapping. (issue #11138)
2022-09-20 15:59:22 +01:00
Bram Moolenaar
a22c56a59a patch 9.0.0514: terminal test sometimes hangs
Problem:    Terminal test sometimes hangs.
Solution:   Add a bit more information to the test output. (issue #11179)
2022-09-20 15:10:31 +01:00
Bram Moolenaar
9781d9c005 patch 9.0.0513: may not be able to use a pattern ad the debug prompt
Problem:    May not be able to use a pattern ad the debug prompt.
Solution:   Temporarily disable the timeout. (closes #11164)
2022-09-20 13:51:25 +01:00
zeertzjq
c14bfc31d9 patch 9.0.0512: cannot redraw the status lines when editing a command
Problem:    Cannot redraw the status lines when editing a command.
Solution:   Only postpone the redraw when messages have scrolled.
            (closes #11170)
2022-09-20 13:17:57 +01:00
zeertzjq
bdedd2bcce patch 9.0.0511: unnecessary scrolling for message of only one line
Problem:    Unnecessary scrolling for message of only one line.
Solution:   Only set msg_scroll when needed. (closes #11178)
2022-09-20 12:45:15 +01:00
ObserverOfTime
7c046ae99b patch 9.0.0510: Chatito files are not recognized
Problem:    Chatito files are not recognized.
Solution:   Add a pattern for Chatito files. (closes #11174)
2022-09-20 12:02:28 +01:00
Bram Moolenaar
500a1f9972 patch 9.0.0509: confusing error for "saveas" command with "nofile" buffer
Problem:    Confusing error for "saveas" command with "nofile" buffer.
Solution:   Give a clearer error message. (closes #11171)
2022-09-20 11:49:10 +01:00
K.Takata
cd9fa256b5 patch 9.0.0508: when the channel test fails there is no clue why
Problem:    When the channel test fails there is no clue why.
Solution:   Add info about the job status. (Ken Takata, closes #11175)
2022-09-20 11:04:47 +01:00
Bram Moolenaar
bcd6924245 patch 9.0.0507: cmdline cleared when using :redrawstatus in CmdlineChanged
Problem:    Command line cleared when using :redrawstatus in CmdlineChanged
            autocommand event.
Solution:   Postpone the redraw. (closes #11162)
2022-09-19 21:16:12 +01:00
Bram Moolenaar
a2b91036d1 patch 9.0.0506: line number argument for :badd does not work
Problem:    Line number argument for :badd does not work.
Solution:   Set the last cursor position in the new buffer. (closes #11161)
2022-09-19 18:20:08 +01:00
Luuk van Baal
faf1d412f5 patch 9.0.0505: various problems with 'nosplitscroll'
Problem:    Various problems with 'nosplitscroll'.
Solution:   Fix 'nosplitscroll' problems. (Luuk van Baal, closes #11166)
2022-09-19 16:45:29 +01:00
Bram Moolenaar
c9e4a6f191 patch 9.0.0504: still a build failure
Problem:    still a Build failure.
Solution:   Add another missing changes.  Avoid compiler warning.
2022-09-19 16:08:04 +01:00
Bram Moolenaar
65449bd1ee patch 9.0.0503: build failure
Problem:    Build failure.
Solution:   Add missing changes.
2022-09-19 16:02:43 +01:00
Bram Moolenaar
cc34181f99 patch 9.0.0502: a closure in a nested loop in a :def function does not work
Problem:    A closure in a nested loop in a :def function does not work.
Solution:   Use an array of loopvars, one per loop level.
2022-09-19 15:54:34 +01:00
Bram Moolenaar
18ee0feb5d patch 9.0.0501: warning for using uninitialized value in mouse test
Problem:    Warning for using uninitialized value in mouse test.
Solution:   Clear ScreenCols when allocating it. (Dominique Pellé)
2022-09-19 11:44:11 +01:00
Bram Moolenaar
b2f0ca820e patch 9.0.0500: when quitting cmdline window with CTRL-C it remains visible
Problem:    When quitting the cmdline window with CTRL-C it remains visible.
Solution:   Redraw to avoid confusion. Adjust the error message.
            (closes #11152)  Adjust the cursor position after CTRL-C.
2022-09-18 15:08:19 +01:00
Bram Moolenaar
566badc76b patch 9.0.0499: in :def function list created after const is locked
Problem:    In :def function list created after const is locked.
Solution:   Reset v_lock. (closes #11154)
2022-09-18 13:46:08 +01:00
Bram Moolenaar
747f110420 patch 9.0.0498: various small issues
Problem:    Various small issues.
Solution:   Various small fixes.
2022-09-18 13:06:41 +01:00
Bram Moolenaar
9712ff1288 Update runtime files 2022-09-18 13:04:22 +01:00
ObserverOfTime
65ee49decf patch 9.0.0497: LyRiCs files are not recognized
Problem:    LyRiCs files are not recognized.
Solution:   Add a pattern to detect LyRiCs files. (closes #11155)
2022-09-18 12:46:22 +01:00
K.Takata
27b53be3a6 patch 9.0.0496: no good reason to keep supporting Windows-XP
Problem:    No good reason to keep supporting Windows-XP.
Solution:   Drop Windows-XP support. (Ken Takata, closes #11089)
2022-09-18 12:25:49 +01:00
Bram Moolenaar
dbbb02bc77 patch 9.0.0495: closure doesn't work properly in nested loop
Problem:    Closure doesn't work properly in nested loop.
Solution:   Save variables up to the outer loop.
2022-09-18 12:00:21 +01:00
Bram Moolenaar
96caa557f9 patch 9.0.0494: small build misses float function declaraitons
Problem:    Small build misses float function declaraitons.
Solution:   Adjust #ifdefs.
2022-09-17 21:57:43 +01:00
Bram Moolenaar
1e8009e34a patch 9.0.0493: Perl test fails
Problem:    Perl test fails.
Solution:   Remove remaining FEAT_EVAL.
2022-09-17 21:24:49 +01:00
Bram Moolenaar
312af65d1a patch 9.0.0492: cmdwin test fails on MS-Windows
Problem:    Cmdwin test fails on MS-Windows.
Solution:   Skip test on MS-Windows.
2022-09-17 21:20:42 +01:00
Bram Moolenaar
73e28dcc61 patch 9.0.0491: no good reason to build without the float feature
Problem:    No good reason to build without the float feature.
Solution:   Remove configure check for float and "#ifdef FEAT_FLOAT".
2022-09-17 21:08:33 +01:00
Bram Moolenaar
1c3dd8ddcb patch 9.0.0490: using freed memory with cmdwin and BufEnter autocmd
Problem:    Using freed memory with cmdwin and BufEnter autocmd.
Solution:   Make sure pointer to b_p_iminsert is still valid.
2022-09-17 19:43:23 +01:00
Bram Moolenaar
fb593c5350 patch 9.0.0489: using "end_lnum" with virtual text causes problems
Problem:    Using "end_lnum" with virtual text causes problems.
Solution:   Disallow using "end_lnum" with virtual text. (closes #11151)
            Also disallow "end_col" and "length".
2022-09-17 18:57:36 +01:00
Bram Moolenaar
4c7fd4d68f patch 9.0.0488: cursor wrong with virtual text "above" and 'showbreak'
Problem:    Cursor in wrong position with virtual text "above" and
            'showbreak'.
Solution:   Take the first character column into account. (closes #11149)
2022-09-17 17:15:33 +01:00
Bram Moolenaar
acd6b9976b patch 9.0.0487: using freed memory with combination of closures
Problem:    Using freed memory with combination of closures.
Solution:   Do not use a partial after it has been freed through the
            funcstack.
2022-09-17 16:27:39 +01:00
Luuk van Baal
d5bc762dea patch 9.0.0486: text scrolled with 'nosplitscroll', autocmd win and help
Problem:    Text scrolled with 'nosplitscroll', autocmd win opened and help
            window closed.
Solution:   Skip win_fix_scroll() in more situations. (Luuk van Baal,
            closes #11150)
2022-09-17 16:16:35 +01:00
Bram Moolenaar
0cdfb7ce46 patch 9.0.0485: in :def function all closures in loop get the same variables
Problem:    In a :def function all closures in a loop get the same variables.
Solution:   Make a copy of loop variables used in a closure.
2022-09-17 15:44:52 +01:00
Bram Moolenaar
8abb584ab8 patch 9.0.0484: in :def function all closures in loop get the same variables
Problem:    In a :def function all closures in a loop get the same variables.
Solution:   Add ENDLOOP at break, continue and return if needed.
2022-09-17 12:39:58 +01:00
Bram Moolenaar
c249913edc patch 9.0.0483: illegal memory access when replacing in virtualedit mode
Problem:    Illegal memory access when replacing in virtualedit mode.
Solution:   Check for replacing NUL after Tab.
2022-09-16 22:16:59 +01:00
Bram Moolenaar
e24b4aba1f patch 9.0.0482: "g0" moves to wrong location with virtual text "above"
Problem:    "g0" moves to wrong location with virtual text "above".
Solution:   Compensate for the extra columns. (closes #11141)  Also fix "g$"
2022-09-16 20:51:14 +01:00
Bram Moolenaar
8fa745e7be patch 9.0.0481: in :def function all closures in loop get the same variables
Problem:    In a :def function all closures in a loop get the same variables.
Solution:   Use a separate list of variables for LOADOUTER and STOREOUTER.
            Not copied at end of loop yet.
2022-09-16 19:04:24 +01:00
zeertzjq
abd58d8aee patch 9.0.0480: cannot use a :def varargs function with substitute()
Problem:    Cannot use a :def varargs function with substitute().
Solution:   Use has_varargs(). (closes #11146)
2022-09-16 16:06:32 +01:00
Bram Moolenaar
1aea184a0d patch 9.0.0479: in :def function all closures in loop get the same variables
Problem:    In a :def function all closures in a loop get the same variables.
Solution:   Use a separate list of variables for LOADOUTER and SAVEOUTER.
2022-09-16 15:47:09 +01:00
Luuk van Baal
594f9e09cd patch 9.0.0478: test for 'splitscroll' takes too much time
Problem:    Test for 'splitscroll' takes too much time.
Solution:   Only test some of the combinations. (Luuk van Baal, closes #11139)
2022-09-16 12:52:58 +01:00
Bram Moolenaar
3e8b7a6056 patch 9.0.0477: missing dependency may cause crashes on incomplete build
Problem:    Missing dependency may cause crashes on incomplete build.
Solution:   Add dependency.
2022-09-16 12:28:34 +01:00
zeertzjq
48db5dafec patch 9.0.0476: varargs does not work for replacement function of substitute()
Problem:    Varargs does not work for replacement function of substitute().
Solution:   Check the varargs flag of the function. (closes #11142)
2022-09-16 12:10:03 +01:00
Bram Moolenaar
dd674774bb patch 9.0.0475: not using deferred delete in tests
Problem:    Not using deferred delete in tests.
Solution:   Use deferred delete more often.
2022-09-15 22:26:18 +01:00
Bram Moolenaar
dd44b58f64 patch 9.0.0474: fullcommand() test failure
Problem:    fullcommand() test failure.
Solution:   Update function table.
2022-09-15 22:03:57 +01:00
Bram Moolenaar
aa5341477c patch 9.0.0473: fullcommand() only works for the current script version
Problem:    fullcommand() only works for the current script version.
Solution:   Add an optional argument for the script version.
2022-09-15 21:46:02 +01:00
Bram Moolenaar
a4abe514ec patch 9.0.0472: virtual text "below" doesn't show in list mode
Problem:    Virtual text "below" doesn't show in list mode.
Solution:   Reset lcs_eol_one when displaying text property.
2022-09-15 19:44:09 +01:00
mityu
12167d8b84 patch 9.0.0471: no test for what patch 9.0.0469 fixes
Problem:    No test for what patch 9.0.0469 fixes.
Solution:   Add a test. (closes #11140)
2022-09-15 17:44:07 +01:00
Bram Moolenaar
b46c083a5e patch 9.0.0470: in :def function all closures in loop get the same variables
Problem:    In a :def function all closures in a loop get the same variables.
Solution:   When in a loop and a closure refers to a variable declared in the
            loop, prepare for making a copy of variables for each closure.
2022-09-15 17:19:37 +01:00
Luuk van Baal
3735f11050 patch 9.0.0469: cursor moves if cmdwin is closed when 'splitscroll' is off
Problem:    Cursor moves if cmdwin is closed when 'splitscroll' is off.
Solution:   Skip win_fix_cursor if called when cmdwin is open or closing.
            (Luuk van Baal, closes #11134)
2022-09-15 12:43:26 +01:00
Bram Moolenaar
aeef1f7f6d patch 9.0.0468: exectution stack underflow without the +eval feature
Problem:    Exectution stack underflow without the +eval feature. (Dominique
            Pellé)
Solution:   Add to execution stack without FEAT_EVAL. (closes #11135)
2022-09-15 12:20:18 +01:00
Bram Moolenaar
d3922afbd6 patch 9.0.0467: build failure
Problem:    Build failure.
Solution:   Add missing change.
2022-09-14 22:30:59 +01:00
Bram Moolenaar
ebd0e8bb85 patch 9.0.0466: virtual text wrong after adding line break after line
Problem:    Virtual text wrong after adding line break after line.
Solution:   Pass an "eol" flag to where text properties are adjusted.
            (closes #11131)
2022-09-14 22:13:59 +01:00
mityu
e697d48890 patch 9.0.0465: cursor moves when cmdwin is closed when 'splitscroll' is off
Problem:    Cursor moves when cmdwin is closed when 'splitscroll' is off.
Solution:   Temporarily set 'splitscroll' when jumping back to the original
            window. (closes #11128)
2022-09-14 17:27:36 +01:00
Bram Moolenaar
702bd6c7c6 patch 9.0.0464: with virtual text "above" indenting doesn't work well
Problem:    With virtual text "above" indenting doesn't work well.
Solution:   Ignore text properties while adjusting indent. (issue #11084)
2022-09-14 16:09:57 +01:00
Dominique Pelle
febe13892e patch 9.0.0463: command line test leaves directory behind
Problem:    Command line test leaves directory behind.
Solution:   Use the "R" flag on the first mkdir(). (Dominique Pellé,
            closes #11127)
2022-09-14 12:51:49 +01:00
Bram Moolenaar
98b373075e patch 9.0.0462: ASAN warning for integer overflow
Problem:    ASAN warning for integer overflow.
Solution:   Check for tp_col to be MAXCOL.
2022-09-14 12:06:53 +01:00
Luuk van Baal
470a14140b patch 9.0.0461: 'scroll' is not always updated
Problem:    'scroll' is not always updated.
Solution:   Call win_init_size() at the right place.
2022-09-14 01:27:23 +01:00
Bram Moolenaar
766ae5b252 patch 9.0.0460: loop variable can't be found
Problem:    Loop variable can't be found.
Solution:   Adjust block_id of the loop variable each round.
2022-09-14 00:30:51 +01:00
Bram Moolenaar
353b68a991 patch 9.0.0459: Vim9: block in for loop doesn't behave like a code block
Problem:    Vim9: block in for loop doesn't behave like a code block.
Solution:   Use a new block ID for each loop at the script level.
2022-09-13 21:10:45 +01:00
Bram Moolenaar
3b93cf218f patch 9.0.0458: splitting a line with a text prop "above" moves it down
Problem:    Splitting a line with a text prop "above" moves it to a new line
            below.
Solution:   Keep an "above" text prop above the first line.
2022-09-13 18:34:18 +01:00
Bram Moolenaar
a04f457a6c patch 9.0.0457: substitute prompt does not highlight an empty match
Problem:    Substitute prompt does not highlight an empty match.
Solution:   Highlight at least one character.
2022-09-13 13:45:26 +01:00
Bram Moolenaar
b1842de5ca patch 9.0.0456: function called at debug prompt is also debugged
Problem:    Function called at debug prompt is also debugged.
Solution:   Reset the debug level while entering the debug command.
            (closes #11118)
2022-09-13 12:36:57 +01:00
Luuk van Baal
5ed391708a patch 9.0.0455: a few problems with 'splitscroll'
Problem:    A few problems with 'splitscroll'.
Solution:   Fix 'splitscroll' problems. (Luuk van Baal, closes #11117)
2022-09-13 11:55:10 +01:00
Your Name
810cb5a3bf patch 9.0.0454: incorrect color for modeless selection with GTK
Problem:    Incorrect color for modeless selection with GTK.
Solution:   Use simple inversion instead of XOR. (closes #11111)
2022-09-13 11:25:54 +01:00
Bram Moolenaar
83a19c5fda patch 9.0.0453: on an AZERTY keyboard digit keys get the shift modifier
Problem:    On an AZERTY keyboard digit keys get the shift modifier.
Solution:   Remove the shift modifier from digit keys. (closes #11109)
2022-09-12 20:35:28 +01:00
Bram Moolenaar
6eda17d881 patch 9.0.0452: Visual highlighting extends into virtual text prop
Problem:    Visual highlighting extends into virtual text prop.
Solution:   Do not highlight what isn't actually selected.  Fix ordering of
            stored text props.
2022-09-12 19:25:11 +01:00
Bram Moolenaar
c9dc03fff5 patch 9.0.0451: virtual text "above" does not work with 'nowrap'
Problem:    Virtual text "above" does not work with 'nowrap'.
Solution:   Do wrap the line after. (closes #11084)
2022-09-12 17:51:07 +01:00
Bram Moolenaar
7b2d87220c Add missing part of patch 2022-09-12 15:16:29 +01:00
zeertzjq
cd2d5c181a patch 9.0.0450: return value of argument check functions is inconsistent
Problem:    Return value of argument check functions is inconsistent.
Solution:   Return OK/FAIL instead of TRUE/FALSE. (closes #11112)
2022-09-12 14:09:30 +01:00
zeertzjq
cdc839353f patch 9.0.0449: there is no easy way to translate a key code into a string
Problem:    There is no easy way to translate a string with a key code into a
            readable string.
Solution:   Add the keytrans() function. (closes #11114)
2022-09-12 13:38:41 +01:00
ObserverOfTime
5a4eb55122 patch 9.0.0448: SubRip files are not recognized
Problem:    SubRip files are not recognized.
Solution:   Add a pattern for SubRip. (closes #11113)
2022-09-12 12:43:23 +01:00
Bram Moolenaar
cf0995d7d7 patch 9.0.0447: using :echowin while at the hit-enter prompt causes problems
Problem:    Using :echowin while at the hit-enter prompt causes problems.
Solution:   Do not prompt for :echowin.  Postpone showing the message window.
            Start the timer when the window is displayed.
2022-09-11 21:36:17 +01:00
Bram Moolenaar
87e74d0e03 patch 9.0.0446: message window may be positioned too low
Problem:    Message window may be positioned too low.
Solution:   Compute cmdline_row before computing the position.
2022-09-11 20:12:15 +01:00
Luuk van Baal
29ab524358 patch 9.0.0445: when opening/closing window text moves up/down
Problem:    When opening/closing window text moves up/down.
Solution:   Add the 'splitscroll' option.  When off text will keep its
            position as much as possible.
2022-09-11 16:59:53 +01:00
Bram Moolenaar
9510d22463 patch 9.0.0444: trying to declare g:variable gives confusing error
Problem:    Trying to declare g:variable gives confusing error.
Solution:   Give a better error message. (closes #11108)
2022-09-11 15:14:05 +01:00
Gabriele Musco
cce82a55b8 patch 9.0.0443: blueprint files are not recognized
Problem:    Blueprint files are not recognized.
Solution:   Add a pattern for blueprint files. (Gabriele Musco, closes #11107)
2022-09-11 13:37:37 +01:00
Bram Moolenaar
79f8b8494c patch 9.0.0442: virtual text "above" doesn't handel line numbers
Problem:    Virtual text "above" doesn't handel line numbers.
Solution:   Take the left column offset into account. (issue #11084)
            Also make padding work.
2022-09-11 13:31:01 +01:00
Bram Moolenaar
c069edeab2 patch 9.0.0441: closure in for loop test fails on some systems
Problem:    Closure in for loop test fails on some systems.
Solution:   Do not wait for the ruler to show up. (issue #11106)
2022-09-11 12:01:04 +01:00
Bram Moolenaar
f5fec05c7f patch 9.0.0440: crash when using mkdir() with "R" flag in compiled function
Problem:    Crash when using mkdir() with "R" flag in compiled function.
Solution:   Reserve a variable for deferred function calls.  Handle more than
            one argument.
2022-09-11 11:49:22 +01:00
Bram Moolenaar
88b79cb7d4 patch 9.0.0439: cursor wrong if inserting before line with virtual text above
Problem:    Cursor wrong if inserting before line with virtual text above.
Solution:   Add the width of the "above" virtual text to the cursor position.
            (issue #11084)
2022-09-10 22:32:14 +01:00
Bram Moolenaar
04e0ed1ddf patch 9.0.0438: cannot put virtual text above a line
Problem:    Cannot put virtual text above a line.
Solution:   Add the "above" value for "text_align".
2022-09-10 20:00:56 +01:00
Bram Moolenaar
55e9366e32 patch 9.0.0437: no error when custom completion function returns wrong type
Problem:    No error when a custom completion function returns something else
            than the expected list.
Solution:   Give an error. (closes #11100)
2022-09-10 13:52:26 +01:00
Bram Moolenaar
71b6d33976 Update runtime files 2022-09-10 13:13:14 +01:00
K.Takata
2da11a4124 patch 9.0.0436: CI: running tests in parallel causes flakiness
Problem:    CI: running tests in parallel causes flakiness.
Solution:   Reorganize the MS-Windows runs. (Ken Takata, closes #11101)
2022-09-10 13:03:12 +01:00
Bram Moolenaar
f21d546d8f patch 9.0.0435: compiler warning for uninitialized variable
Problem:    Compiler warning for uninitialized variable.
Solution:   Initialize it.
2022-09-10 12:36:00 +01:00
ObserverOfTime
9ba2786f15 patch 9.0.0434: gitignore files are not recognized
Problem:    gitignore files are not recognized.
Solution:   Add patterns for the gitignore filetype. (closes #11102)
2022-09-10 11:04:24 +01:00
Bram Moolenaar
12553ada3b patch 9.0.0433: Coverity warns for not checking allocation failure
Problem:    Coverity warns for not checking allocation failure.
Solution:   Check that allocating a list or blob succeeded.
2022-09-10 10:42:20 +01:00
Bram Moolenaar
6de2296e5e patch 9.0.0432: crash when using for loop variable in closure
Problem:    Crash when using for loop variable in closure.
Solution:   Check that the variable wasn't deleted. (issue #11094)
2022-09-09 21:35:36 +01:00
Bram Moolenaar
7cf5839287 patch 9.0.0431: current mode shows in message window
Problem:    Current mode shows in message window.
Solution:   Reset in_echowindow before redrawing. (issue #11094)
2022-09-09 20:19:40 +01:00
Bakudankun
375141e1f8 patch 9.0.0430: cannot use repeat() with a blob
Problem:    Cannot use repeat() with a blob.
Solution:   Implement blob repeat. (closes #11090)
2022-09-09 18:46:47 +01:00
Yegappan Lakshmanan
0adae2da17 patch 9.0.0429: not all keys are tested for the MS-Windows GUI
Problem:    Not all keys are tested for the MS-Windows GUI.
Solution:   Add more key codes to the list. (Yegappan Lakshmanan,
            closes #11097)
2022-09-09 17:39:02 +01:00
Bram Moolenaar
be9fc5b60c patch 9.0.0428: autocmd test uses common file name
Problem:    Autocmd test uses common file name.
Solution:   Use unique name to reduce flakiness.
2022-09-09 17:09:35 +01:00
Rodrigo Aguilera
8995c4cd4e patch 9.0.0427: Drupal theme files are not recognized
Problem:    Drupal theme files are not recognized.
Solution:   Use php filetype for Drupl theme files.  Remove trailing spaces.
            (Rodrigo Aguilera, closes #11096)
2022-09-09 16:10:26 +01:00
Bram Moolenaar
65258d36dd patch 9.0.0426: failed flaky tests reports only start time
Problem:    Failed flaky tests reports only start time.
Solution:   Also report the end time.
2022-09-09 15:09:59 +01:00
Bram Moolenaar
ae04a6049b patch 9.0.0425: autocmd test is a bit flaky on MS-Windows
Problem:    Autocmd test is a bit flaky on MS-Windows.
Solution:   Add a bit more sleeping. (Ken Takata, closes #11095)
2022-09-09 15:08:10 +01:00
ObserverOfTime
7d56cfc861 patch 9.0.0424: gitattributes files are not recognized
Problem:    gitattributes files are not recognized.
Solution:   Add patterns to match gitattributes files. (closes #11085)
2022-09-09 14:11:41 +01:00
Bram Moolenaar
9132426334 patch 9.0.0423: "for" and "while" not recognized after :vim9cmd and :legacy
Problem:    "for" and "while" not recognized after :vim9cmd and :legacy.
            (Emanuele Torre)
Solution:   Recognize all the command modifiers. (closes #11087)
            Add a test to check the list of modifiers.
2022-09-09 13:27:59 +01:00
Yegappan Lakshmanan
0dc2fd307f patch 9.0.0422: not enough testing of the :all command
Problem:    Not enough testing of the :all command.
Solution:   Add more testing. (Yegappan Lakshmanan, closes #11091)
2022-09-09 11:27:59 +01:00
K.Takata
5bc13453b2 patch 9.0.0421: MS-Windows makefiles are inconsistently named
Problem:    MS-Windows makefiles are inconsistently named.
Solution:   Use consistent names. (Ken Takata, closes #11088)
2022-09-09 10:52:47 +01:00
Bram Moolenaar
c572ad508f patch 9.0.0420: function went missing
Problem:    Function went missing.
Solution:   Add the function back.
2022-09-08 20:49:22 +01:00
Bram Moolenaar
169003289f patch 9.0.0419: the :defer command does not check the function arguments
Problem:    The :defer command does not check the function argument count and
            types.
Solution:   Check the function arguments when adding a deferred function.
2022-09-08 19:51:45 +01:00
Bram Moolenaar
45bbaef038 patch 9.0.0418: manually deleting temp test files
Problem:    Manually deleting temp test files.
Solution:   Use the 'D' flag of writefile() and mkdir().
2022-09-08 16:39:22 +01:00
=?UTF-8?q?Cezary=20Dro=C5=BCak?=
2a4c885d54 patch 9.0.0417: Jsonnet files are not recognized
Problem:    Jsonnet files are not recognized.
Solution:   Add a pattern for Jsonnet files. (Cezary Drożak, closes #11073,
            closes #11081)
2022-09-08 14:41:48 +01:00
Bram Moolenaar
58a3cae3eb patch 9.0.0416: ml_get error when appending lines in popup window
Problem:    ml_get error when appending lines in popup window.
Solution:   Only update w_topline when w_buffer matches curbuf.
            (closes #11074)
2022-09-08 13:43:10 +01:00
K.Takata
0500e87eba patch 9.0.0415: on MS-Windows some tests are flaky
Problem:    On MS-Windows some tests are flaky.
Solution:   Add sleeps, disable swapfile, mark test as flaky. (Ken Takata,
            closes #11082)
2022-09-08 12:28:02 +01:00
Bram Moolenaar
753aead960 patch 9.0.0414: matchstr() still does not match column offset
Problem:    matchstr() still does not match column offset when done after a
            text search.
Solution:   Only use the line number for a multi-line search.  Fix the test.
            (closes #10938)
2022-09-08 12:17:06 +01:00
K.Takata
b0d12e63e8 patch 9.0.0413: ASAN reports a memory leak
Problem:    ASAN reports a memory leak.
Solution:   Free the string received from the server. (Ken Takata,
            closes #11080)
2022-09-08 10:55:38 +01:00
Bram Moolenaar
e5a420fb33 patch 9.0.0412: compiler warning for unused argument
Problem:    Compiler warning for unused argument.
Solution:   Add UNUSED.
2022-09-07 21:46:56 +01:00
Bram Moolenaar
6f14da15ac patch 9.0.0411: only created files can be cleaned up with one call
Problem:    Only created files can be cleaned up with one call.
Solution:   Add flags to mkdir() to delete with a deferred function.
            Expand the writefile() name to a full path to handle changing
            directory.
2022-09-07 21:30:44 +01:00
Bram Moolenaar
d7633114af patch 9.0.0410: struct member cts_lnum is unused
Problem:    Struct member cts_lnum is unused.
Solution:   Delete it.
2022-09-07 20:01:17 +01:00
ii14
7c7e1e9b98 patch 9.0.0409: #{g:x} was seen as a curly-braces expression
Problem:    #{g:x} was seen as a curly-braces expression.
Solution:   Do never see #{} as a curly-braces expression. (closes #11075)
2022-09-07 19:40:17 +01:00
K.Takata
fef38d86a1 patch 9.0.0408: GUI test sometimes fails on MS-Windows
Problem:    GUI test sometimes fails on MS-Windows.
Solution:   Make sure Vim is the foreground window. (Ken Takata, closes #11077)
2022-09-07 19:03:42 +01:00
Bram Moolenaar
75a115e8d6 patch 9.0.0407: matchstr() does match column offset
Problem:    matchstr() does match column offset. (Yasuhiro Matsumoto)
Solution:   Accept line number zero. (closes #10938)
2022-09-07 18:21:24 +01:00
Bram Moolenaar
9667b2c888 patch 9.0.0406: deferred functions not invoked when partial func exits
Problem:    Deferred functions not invoked when partial func exits.
Solution:   Create a funccall_T when calling a :def function.
2022-09-07 17:28:09 +01:00
Bram Moolenaar
c9c967da09 patch 9.0.0405: arguments in a partial not used by a :def function
Problem:    Arguments in a partial not used by a :def function.
Solution:   Put the partial arguments on the stack.
2022-09-07 16:48:46 +01:00
Bram Moolenaar
1540d334a0 patch 9.0.0404: crash when passing invalid arguments to assert_fails()
Problem:    Crash when passing invalid arguments to assert_fails().
Solution:   Check for NULL string.
2022-09-07 15:20:26 +01:00
Luuk van Baal
fd7e60a33d patch 9.0.0403: 'equalalways' may be off when 'laststatus' is zero
Problem:    'equalalways' may be off when 'laststatus' is zero.
Solution:   call last_status() before win_equal(). (Luuk van Baal,
            closes #11070)
2022-09-07 14:42:49 +01:00
Brett Holman
bb6c4073e7 patch 9.0.0402: javascript module files are not recoginzed
Problem:    Javascript module files are not recoginzed.
Solution:   Recognize "*.jsm" files as Javascript. (Brett Holman,
            closes #11069)
2022-09-07 14:13:31 +01:00
Philip H
bd01f476ea patch 9.0.0401: CI uses older clang version
Problem:    CI uses older clang version.
Solution:   Switch from clang 14 to 15. (closes #11066)
2022-09-07 13:30:19 +01:00
K.Takata
e68f1348f2 patch 9.0.0400: GUI test sometimes hangs on CI
Problem:    GUI test sometimes hangs on CI.
Solution:   Delete a test file explicitly. (Ken Takata, closes #11072)
2022-09-07 13:01:11 +01:00
Bram Moolenaar
98aff658d5 patch 9.0.0399: using :defer in expression funcref not tested
Problem:    Using :defer in expression funcref not tested.
Solution:   Add a test.  Fix uncovered problems.
2022-09-06 21:02:35 +01:00
Bram Moolenaar
ca16c60f33 patch 9.0.0398: members of funccall_T are inconsistently named
Problem:    Members of funccall_T are inconsistently named.
Solution:   Use the "fc_" prefix for all members.
2022-09-06 18:57:08 +01:00
Bram Moolenaar
58779858fb patch 9.0.0397: :defer not tested with exceptions and ":qa!"
Problem:    :defer not tested with exceptions and ":qa!".
Solution:   Test :defer works when exceptions are thrown and when ":qa!" is
            used.  Invoke the deferred calls on exit.
2022-09-06 18:31:14 +01:00
matveyt
2834ebdee4 patch 9.0.0396: :findrepl does not escape '&' and '~' properly
Problem:    :findrepl does not escape '&' and '~' properly.
Solution:   Escape depending on the value of 'magic'. (closes #11067)
2022-09-06 17:00:15 +01:00
Philip H
635bb49085 patch 9.0.0395: clang warnings for function prototypes
Problem:    Clang warnings for function prototypes.
Solution:   Remove incomplete function prototypes. (closes #11068)
2022-09-06 16:31:26 +01:00
K.Takata
5903aaf7eb patch 9.0.0394: Cygwin: multibyte characters may be broken in terminal window
Problem:    Cygwin: multibyte characters may be broken in terminal window.
Solution:   Adjust how to read and write on the channel. (Ken Takata,
            closes #11063)
2022-09-06 11:26:56 +01:00
K.Takata
a9480dbc8c patch 9.0.0393: signals test often fails on FreeBSD
Problem:    Signals test often fails on FreeBSD.
Solution:   Use separate files for Suspend and Resume. (Ken Takata,
            closes #11065)
2022-09-06 10:56:19 +01:00
K.Takata
e53a0d4409 patch 9.0.0392: inverted condition is a bit confusing
Problem:    Inverted condition is a bit confusing.
Solution:   Remove the "!" and swap the blocks. (Ken Takata)
2022-09-05 21:45:11 +01:00
Bram Moolenaar
3411265a36 patch 9.0.0391: using separate delete() call instead of writefile() 'D' flag
Problem:    Using separate delete() call instead of writefile() 'D' flag.
Solution:   Use the writefile 'D' flag.
2022-09-05 21:40:44 +01:00
Bram Moolenaar
86d87256c4 patch 9.0.0390: cannot use a partial with :defer
Problem:    Cannot use a partial with :defer.
Solution:   Add the partial arguments before the other arguments.  Disallow
            using a dictionary.
2022-09-05 21:21:25 +01:00
Bram Moolenaar
ccfde4d028 patch 9.0.0389: crash when 'tagfunc' closes the window
Problem:    Crash when 'tagfunc' closes the window.
Solution:   Bail out when the window was closed.
2022-09-05 19:51:13 +01:00
Yegappan Lakshmanan
8894761daf patch 9.0.0388: the do_arg_all() function is too long
Problem:    The do_arg_all() function is too long.
Solution:   Split the function in smaller parts. (Yegappan Lakshmanan,
            closes #11062)
2022-09-05 18:27:47 +01:00
Bram Moolenaar
ddf7dba96e patch 9.0.0387: repeat <ScriptCmd> mapping doesn't use right script context
Problem:    repeating a <ScriptCmd> mapping does not use the right script
            context.
Solution:   When using a mapping put <SID>{sid}; in the redo buffer.
            (closes #11049)
2022-09-05 16:53:21 +01:00
Yegappan Lakshmanan
b1f471ee20 patch 9.0.0386: some code blocks are nested too deep
Problem:    Some code blocks are nested too deep.
Solution:   Bail out earlier. (Yegappan Lakshmanan, closes #11058)
2022-09-05 14:33:47 +01:00
zeertzjq
c47b16a470 patch 9.0.0385: GUI: when CTRL-D is mapped in Insert mode it gets inserted
Problem:    GUI: when CTRL-D is mapped in Insert mode it gets inserted.
            (Yasuhiro Matsumoto)
Solution:   Also recognize modifier starting with CSI. (closes #11057)
2022-09-05 13:05:29 +01:00
Bram Moolenaar
c7d2ff2ca0 patch 9.0.0384: Covertity still complains about using return value of getc()
Problem:    Covertity still complains about using return value of getc().
Solution:   Check for EOF.
2022-09-05 11:04:14 +01:00
Bram Moolenaar
963ab26842 patch 9.0.0383: Coverity complains about unused value
Problem:    Coverity complains about unused value.
Solution:   Use the value.
2022-09-05 10:55:27 +01:00
Bram Moolenaar
31ea6bf530 patch 9.0.0382: freeing the wrong string on failure
Problem:    Freeing the wrong string on failure.
Solution:   Adjust the argument.  Reorder the code.
2022-09-05 10:47:13 +01:00
Dominique Pelle
b40ad4ff14 patch 9.0.0381: writefile test leaves files behind
Problem:    Writefile test leaves files behind.
Solution:   Fix the file names of files to be deleted. (Dominique Pellé,
            closes #11056)
2022-09-04 21:29:46 +01:00
Bram Moolenaar
e1f3ab73bc patch 9.0.0380: deleting files in tests is a hassle
Problem:    Deleting files in tests is a hassle.
Solution:   Use the new 'D' flag of writefile().
2022-09-04 21:29:08 +01:00
Bram Moolenaar
8f7116cadd Revert part of patch merged twice 2022-09-04 18:22:16 +01:00
Bram Moolenaar
fed6bdae6f patch 9.0.0380: deleting files in tests is a hassle
Problem:    Deleting files in tests is a hassle.
Solution:   Use the new 'D' flag of writefile().
2022-09-04 18:10:11 +01:00
Bram Moolenaar
0daafaa7d9 Update runtime files 2022-09-04 17:45:43 +01:00
Bram Moolenaar
806a273f3c patch 9.0.0379: cleaning up after writefile() is a hassle
Problem:    Cleaning up after writefile() is a hassle.
Solution:   Add the 'D' flag to defer deleting the written file.  Very useful
            in tests.
2022-09-04 15:40:36 +01:00
Bram Moolenaar
c1eb131c9e patch 9.0.0378: compiler warning for uninitialized variable
Problem:    Compiler warning for uninitialized variable. (Tony Mechelynck)
Solution:   Initialize it.
2022-09-04 13:45:15 +01:00
Bram Moolenaar
eb5adf19d1 patch 9.0.0377: argument assignment does not work
Problem:    Argument assignment does not work.
Solution:   Skip over "=".
2022-09-04 13:41:37 +01:00
Yegappan Lakshmanan
6b085b9d73 patch 9.0.0376: clang warns for dead assignments
Problem:    Clang warns for dead assignments.
Solution:   Adjust the code. (Yegappan Lakshmanan, closes #11048)
2022-09-04 12:47:21 +01:00
Bram Moolenaar
c8ac3a072f patch 9.0.0375: the footer feature is unused
Problem:    The footer feature is unused.
Solution:   Remove FEAT_FOOTER and code.
2022-09-04 12:29:28 +01:00
Bram Moolenaar
3c7707680f patch 9.0.0374: Coverity still complains about dropping sign of character
Problem:    Coverity still complains about dropping sign of character.
Solution:   Add intermediate variable.
2022-09-04 11:55:19 +01:00
Bram Moolenaar
a5348f241b patch 9.0.0373: Coverity warns for NULL check and unused return value
Problem:    Coverity warns for NULL check and unused return value.
Solution:   Remove the NULL check, it was already checked earlier.  Add (void)
            to ignore the return value.
2022-09-04 11:42:22 +01:00
Bram Moolenaar
5fbbec180b patch 9.0.0372: MS-Windows: "%T" time format does not appear to work
Problem:    MS-Windows: "%T" time format does not appear to work.
Solution:   Use "%H:%M:%S" instead.
2022-09-03 22:08:11 +01:00
Bram Moolenaar
06fef1b2bd patch 9.0.0371: compiler warning for uninitialized variable
Problem:    Compiler warning for uninitialized variable.
Solution:   Initialize the variable. (John Marriott)
2022-09-03 21:53:28 +01:00
Bram Moolenaar
1d84f7608f patch 9.0.0370: cleaning up afterwards can make a function messy
Problem:    Cleaning up afterwards can make a function messy.
Solution:   Add the :defer command.
2022-09-03 21:35:53 +01:00
Bram Moolenaar
06d32a0c17 patch 9.0.0369: a failing flaky test doesn't mention the time
Problem:    A failing flaky test doesn't mention the time.
Solution:   Add the time for debugging.  Improve error message.
2022-09-03 13:58:47 +01:00
Bram Moolenaar
89083466fa patch 9.0.0368: old Coverity warning for using NULL pointer
Problem:    Old Coverity warning for using NULL pointer.
Solution:   Bail out if dictionary allocation fails.
2022-09-03 12:59:19 +01:00
Bram Moolenaar
0a6bb59f6b patch 9.0.0367: Coverity complains about dropping sign of character
Problem:    Coverity complains about dropping sign of character.
Solution:   Add explicit type cast.
2022-09-03 12:53:20 +01:00
480 changed files with 19721 additions and 8848 deletions

View File

@@ -15,9 +15,8 @@ matrix:
fast_finish: true
before_build:
# Use Windows SDK 7.1 (= MSVC 2010)
- '"C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd" /x64 /release'
- 'set INCLUDE=%INCLUDE%C:\Program Files (x86)\Windows Kits\8.1\Include\um'
# Use Visual Studio 2015 compiler tools (default is 2012)
- '"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x86_amd64'
build_script:
- ci/appveyor.bat
@@ -26,9 +25,9 @@ test_script:
- cd src/testdir
# Testing with MSVC gvim
- path C:\Python35-x64;%PATH%
- nmake -f Make_dos.mak VIMPROG=..\gvim
- nmake -f Make_dos.mak clean
- nmake -f Make_mvc.mak VIMPROG=..\gvim
- nmake -f Make_mvc.mak clean
# Testing with MSVC console version
- nmake -f Make_dos.mak VIMPROG=..\vim
- nmake -f Make_mvc.mak VIMPROG=..\vim
# vim: sw=2 sts=2 et ts=8 sr

View File

@@ -11,7 +11,6 @@ freebsd_task:
- name: FreeBSD 12.3
freebsd_instance:
image_family: freebsd-12-3
only_if: $CIRRUS_TAG == ''
timeout_in: 20m
install_script:
- pkg update -f
@@ -26,3 +25,20 @@ freebsd_task:
- pw useradd cirrus -m
- chown -R cirrus:cirrus .
- sudo -u cirrus make test
macos_task:
name: macOS m1
macos_instance:
image: ghcr.io/cirruslabs/macos-ventura-xcode:latest
timeout_in: 20m
install_script:
- uname -a
- brew update
- brew install gettext libtool
build_script:
- NPROC=$(getconf _NPROCESSORS_ONLN)
- ./configure --with-features=${FEATURES}
- make -j${NPROC} CC=clang
test_script:
- src/vim --version
- make CC=clang test

35
.github/CODEOWNERS vendored
View File

@@ -57,6 +57,7 @@ runtime/compiler/gawk.vim @dkearns
runtime/compiler/gjs.vim @dkearns
runtime/compiler/go.vim @dbarnett
runtime/compiler/haml.vim @tpope
runtime/compiler/hare.vim @rsaihe
runtime/compiler/icon.vim @dkearns
runtime/compiler/javac.vim @dkearns
runtime/compiler/jest.vim @dkearns
@@ -69,6 +70,10 @@ runtime/compiler/perlcritic.vim @petdance @dkearns
runtime/compiler/php.vim @dkearns
runtime/compiler/podchecker.vim @petdance @dkearns
runtime/compiler/powershell.vim @heaths
runtime/compiler/raco.vim @benknoble
runtime/compiler/racomake.vim @benknoble
runtime/compiler/racosetup.vim @benknoble
runtime/compiler/racotest.vim @benknoble
runtime/compiler/rake.vim @tpope @dkearns
runtime/compiler/rhino.vim @dkearns
runtime/compiler/rspec.vim @tpope @dkearns
@@ -103,6 +108,7 @@ runtime/ftplugin/awk.vim @dkearns
runtime/ftplugin/basic.vim @dkearns
runtime/ftplugin/bst.vim @tpope
runtime/ftplugin/cfg.vim @chrisbra
runtime/ftplugin/chatito.vim @ObserverOfTime
runtime/ftplugin/clojure.vim @axvr
runtime/ftplugin/cs.vim @nickspoons
runtime/ftplugin/csh.vim @dkearns
@@ -111,9 +117,10 @@ runtime/ftplugin/cucumber.vim @tpope
runtime/ftplugin/desktop.vim @e-kwsm
runtime/ftplugin/dosbatch.vim @mrdubya
runtime/ftplugin/eiffel.vim @dkearns
runtime/ftplugin/expect.vim @dkearns
runtime/ftplugin/elixir.vim @mhanberg
runtime/ftplugin/erlang.vim @hcs42
runtime/ftplugin/eruby.vim @tpope @dkearns
runtime/ftplugin/expect.vim @dkearns
runtime/ftplugin/fennel.vim @gpanders
runtime/ftplugin/fetchmail.vim @dkearns
runtime/ftplugin/fpcmake.vim @dkearns
@@ -123,18 +130,23 @@ runtime/ftplugin/gdb.vim @xeyownt
runtime/ftplugin/gdscript.vim @habamax
runtime/ftplugin/gdshader.vim @habamax
runtime/ftplugin/git.vim @tpope
runtime/ftplugin/gitattributes.vim @ObserverOfTime
runtime/ftplugin/gitcommit.vim @tpope
runtime/ftplugin/gitconfig.vim @tpope
runtime/ftplugin/gitignore.vim @ObserverOfTime
runtime/ftplugin/gitrebase.vim @tpope
runtime/ftplugin/gitsendemail.vim @tpope
runtime/ftplugin/gyp.vim @ObserverOfTime
runtime/ftplugin/go.vim @dbarnett
runtime/ftplugin/gprof.vim @dpelle
runtime/ftplugin/haml.vim @tpope
runtime/ftplugin/hare.vim @rsaihe
runtime/ftplugin/hgcommit.vim @k-takata
runtime/ftplugin/html.vim @dkearns
runtime/ftplugin/i3config.vim @hiqua
runtime/ftplugin/icon.vim @dkearns
runtime/ftplugin/indent.vim @dkearns
runtime/ftplugin/j.vim @glts
runtime/ftplugin/javascript.vim @dkearns
runtime/ftplugin/javascriptreact.vim @dkearns
runtime/ftplugin/jsonc.vim @izhakjakov
@@ -143,6 +155,7 @@ runtime/ftplugin/kconfig.vim @chrisbra
runtime/ftplugin/less.vim @genoma
runtime/ftplugin/liquid.vim @tpope
runtime/ftplugin/lua.vim @dkearns
runtime/ftplugin/lynx.vim @dkearns
runtime/ftplugin/m3build.vim @dkearns
runtime/ftplugin/m3quake.vim @dkearns
runtime/ftplugin/markdown.vim @tpope
@@ -164,6 +177,7 @@ runtime/ftplugin/ps1xml.vim @heaths
runtime/ftplugin/python.vim @tpict
runtime/ftplugin/qb64.vim @dkearns
runtime/ftplugin/r.vim @jalvesaq
runtime/ftplugin/racket.vim @benknoble
runtime/ftplugin/rhelp.vim @jalvesaq
runtime/ftplugin/rmd.vim @jalvesaq
runtime/ftplugin/rnoweb.vim @jalvesaq
@@ -175,6 +189,7 @@ runtime/ftplugin/sass.vim @tpope
runtime/ftplugin/scala.vim @derekwyatt
runtime/ftplugin/scss.vim @tpope
runtime/ftplugin/sdoc.vim @gpanders
runtime/ftplugin/sh.vim @dkearns
runtime/ftplugin/solution.vim @dkearns
runtime/ftplugin/spec.vim @ignatenkobrain
runtime/ftplugin/swayconfig.vim @jamespeapen
@@ -187,6 +202,7 @@ runtime/ftplugin/toml.vim @averms
runtime/ftplugin/tt2html.vim @petdance
runtime/ftplugin/typescript.vim @dkearns
runtime/ftplugin/typescriptreact.vim @dkearns
runtime/ftplugin/vdf.vim @ObserverOfTime
runtime/ftplugin/wast.vim @rhysd
runtime/ftplugin/wget.vim @dkearns
runtime/ftplugin/wget2.vim @dkearns
@@ -196,6 +212,7 @@ runtime/ftplugin/zsh.vim @chrisbra
runtime/indent/basic.vim @dkearns
runtime/indent/bst.vim @tpope
runtime/indent/cdl.vim @dkearns
runtime/indent/chatito.vim @ObserverOfTime
runtime/indent/clojure.vim @axvr
runtime/indent/config.vim @dkearns
runtime/indent/cs.vim @nickspoons
@@ -217,8 +234,11 @@ runtime/indent/gdscript.vim @habamax
runtime/indent/gitconfig.vim @tpope
runtime/indent/gitolite.vim @sitaramc
runtime/indent/go.vim @dbarnett
runtime/indent/gyp.vim @ObserverOfTime
runtime/indent/haml.vim @tpope
runtime/indent/hare.vim @rsaihe
runtime/indent/idlang.vim @dkearns
runtime/indent/j.vim @glts
runtime/indent/java.vim @xuhdev
runtime/indent/javascript.vim @bounceme
runtime/indent/json.vim @elzr
@@ -240,6 +260,7 @@ runtime/indent/prolog.vim @dkearns
runtime/indent/ps1.vim @heaths
runtime/indent/qb64.vim @dkearns
runtime/indent/r.vim @jalvesaq
runtime/indent/racket.vim @benknoble
runtime/indent/readline.vim @dkearns
runtime/indent/rhelp.vim @jalvesaq
runtime/indent/rmd.vim @jalvesaq
@@ -289,6 +310,7 @@ runtime/syntax/cabal.vim @coot
runtime/syntax/cabalconfig.vim @coot
runtime/syntax/cabalproject.vim @coot
runtime/syntax/cf.vim @ernstvanderlinden
runtime/syntax/chatito.vim @ObserverOfTime
runtime/syntax/clojure.vim @axvr
runtime/syntax/cs.vim @nickspoons
runtime/syntax/csh.vim @cecamp
@@ -321,21 +343,26 @@ runtime/syntax/gdresource.vim @habamax
runtime/syntax/gdscript.vim @habamax
runtime/syntax/gdshader.vim @habamax
runtime/syntax/git.vim @tpope
runtime/syntax/gitattributes.vim @ObserverOfTime
runtime/syntax/gitcommit.vim @tpope
runtime/syntax/gitconfig.vim @tpope
runtime/syntax/gitignore.vim @ObserverOfTime
runtime/syntax/gitolite.vim @sitaramc
runtime/syntax/gitrebase.vim @tpope
runtime/syntax/go.vim @bhcleek
runtime/syntax/godoc.vim @dbarnett
runtime/syntax/gprof.vim @dpelle
runtime/syntax/groff.vim @jmarshall
runtime/syntax/gyp.vim @ObserverOfTime
runtime/syntax/haml.vim @tpope
runtime/syntax/hare.vim @rsaihe
runtime/syntax/haskell.vim @coot
runtime/syntax/hgcommit.vim @k-takata
runtime/syntax/html.vim @dkearns
runtime/syntax/i3config.vim @hiqua
runtime/syntax/icon.vim @dkearns
runtime/syntax/indent.vim @dkearns
runtime/syntax/j.vim @glts
runtime/syntax/jargon.vim @h3xx
runtime/syntax/java.vim @fleiner
runtime/syntax/jsonc.vim @izhakjakov
@@ -345,6 +372,7 @@ runtime/syntax/less.vim @genoma
runtime/syntax/lex.vim @cecamp
runtime/syntax/liquid.vim @tpope
runtime/syntax/lisp.vim @cecamp
runtime/syntax/lyrics.vim @ObserverOfTime
runtime/syntax/lynx.vim @dkearns
runtime/syntax/m3build.vim @dkearns
runtime/syntax/m3quake.vim @dkearns
@@ -377,6 +405,7 @@ runtime/syntax/ps1xml.vim @heaths
runtime/syntax/psl.vim @danielkho
runtime/syntax/qb64.vim @dkearns
runtime/syntax/r.vim @jalvesaq
runtime/syntax/racket.vim @benknoble
runtime/syntax/raml.vim @in3d
runtime/syntax/ratpoison.vim @trapd00r
runtime/syntax/rc.vim @chrisbra
@@ -398,13 +427,14 @@ runtime/syntax/sdoc.vim @gpanders
runtime/syntax/sh.vim @cecamp
runtime/syntax/sm.vim @cecamp
runtime/syntax/spec.vim @ignatenkobrain
runtime/syntax/srt.vim @ObserverOfTime
runtime/syntax/sqloracle.vim @chrisbra
runtime/syntax/squirrel.vim @zenmatic
runtime/syntax/sshconfig.vim @Jakuje
runtime/syntax/sshdconfig.vim @Jakuje
runtime/syntax/sudoers.vim @e-kwsm
runtime/syntax/svn.vim @hdima
runtime/syntax/swayconfig.vim @jamespeapen
runtime/syntax/swayconfig.vim @jamespeapen
runtime/syntax/systemverilog.vim @Kocha
runtime/syntax/tags.vim @cecamp
runtime/syntax/tap.vim @petdance
@@ -420,6 +450,7 @@ runtime/syntax/tt2js.vim @petdance
runtime/syntax/typescript.vim @HerringtonDarkholme
runtime/syntax/typescriptcommon.vim @HerringtonDarkholme
runtime/syntax/typescriptreact.vim @HerringtonDarkholme
runtime/syntax/vdf.vim @ObserverOfTime
runtime/syntax/vim.vim @cecamp
runtime/syntax/vroom.vim @dbarnett
runtime/syntax/wast.vim @rhysd

6
.github/dependabot.yml vendored Normal file
View File

@@ -0,0 +1,6 @@
version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"

View File

@@ -12,6 +12,9 @@ concurrency:
group: ${{ github.workflow }}-${{ github.event_name == 'pull_request' && github.head_ref || github.sha }}
cancel-in-progress: true
permissions:
contents: read # to fetch code (actions/checkout)
jobs:
linux:
runs-on: ubuntu-20.04
@@ -98,17 +101,17 @@ jobs:
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 100
sudo update-alternatives --set gcc /usr/bin/gcc-11
- name: Install clang-14
- name: Install clang-15
if: matrix.compiler == 'clang'
run: |
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
. /etc/lsb-release
sudo add-apt-repository -y "deb http://apt.llvm.org/${DISTRIB_CODENAME}/ llvm-toolchain-${DISTRIB_CODENAME}-14 main"
sudo apt install -y clang-14 llvm-14
sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-14 100
sudo update-alternatives --set clang /usr/bin/clang-14
sudo update-alternatives --install /usr/bin/llvm-cov llvm-cov /usr/bin/llvm-cov-14 100
sudo update-alternatives --install /usr/bin/asan_symbolize asan_symbolize /usr/bin/asan_symbolize-14 100
sudo add-apt-repository -y "deb http://apt.llvm.org/${DISTRIB_CODENAME}/ llvm-toolchain-${DISTRIB_CODENAME}-15 main"
sudo apt install -y clang-15 llvm-15
sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-15 100
sudo update-alternatives --set clang /usr/bin/clang-15
sudo update-alternatives --install /usr/bin/llvm-cov llvm-cov /usr/bin/llvm-cov-15 100
sudo update-alternatives --install /usr/bin/asan_symbolize asan_symbolize /usr/bin/asan_symbolize-15 100
- name: Set up environment
run: |
@@ -250,7 +253,7 @@ jobs:
- name: Codecov
if: matrix.coverage
uses: codecov/codecov-action@v3.1.0
uses: codecov/codecov-action@v3.1.1
with:
flags: linux,${{ matrix.features }}-${{ matrix.compiler }}-${{ matrix.extra }}
@@ -382,35 +385,15 @@ jobs:
strategy:
fail-fast: false
matrix:
toolchain: [msvc, mingw]
arch: [x64, x86]
features: [HUGE, NORMAL]
include:
- arch: x64
vcarch: amd64
warch: x64
bits: 64
msystem: MINGW64
cygreg: registry
pyreg: ""
- arch: x86
vcarch: x86
warch: ia32
bits: 32
msystem: MINGW32
cygreg: registry32
pyreg: "-32"
- toolchain: mingw
arch: x64
features: HUGE
coverage: yes
exclude:
- toolchain: msvc
arch: x64
features: NORMAL
- toolchain: mingw
arch: x86
features: NORMAL
- { features: HUGE, toolchain: msvc, VIMDLL: no, GUI: no, arch: x64 }
- { features: HUGE, toolchain: mingw, VIMDLL: yes, GUI: yes, arch: x86, coverage: yes }
- { features: HUGE, toolchain: msvc, VIMDLL: no, GUI: yes, arch: x86 }
- { features: HUGE, toolchain: mingw, VIMDLL: yes, GUI: no, arch: x64, coverage: yes }
- { features: NORMAL, toolchain: msvc, VIMDLL: yes, GUI: no, arch: x86 }
- { features: NORMAL, toolchain: mingw, VIMDLL: no, GUI: yes, arch: x64 }
- { features: TINY, toolchain: msvc, VIMDLL: yes, GUI: yes, arch: x64 }
- { features: TINY, toolchain: mingw, VIMDLL: no, GUI: no, arch: x86 }
steps:
- name: Initialize
@@ -418,13 +401,32 @@ jobs:
shell: bash
run: |
git config --global core.autocrlf input
echo "VCVARSALL=$(vswhere -products \* -latest -property installationPath)\\VC\\Auxiliary\\Build\\vcvarsall.bat" >> $GITHUB_ENV
if [ "${{ matrix.arch }}" = "x86" ]; then
choco install python2 --forcex86
if [ "${{ matrix.arch }}" = "x64" ]; then
cygreg=registry
pyreg=
echo "VCARCH=amd64" >> $GITHUB_ENV
echo "WARCH=x64" >> $GITHUB_ENV
echo "BITS=64" >> $GITHUB_ENV
echo "MSYSTEM=MINGW64" >> $GITHUB_ENV
else
choco install python2
cygreg=registry32
pyreg=-32
echo "VCARCH=x86" >> $GITHUB_ENV
echo "WARCH=ia32" >> $GITHUB_ENV
echo "BITS=32" >> $GITHUB_ENV
echo "MSYSTEM=MINGW32" >> $GITHUB_ENV
fi
python3_dir=$(cat "/proc/${{ matrix.cygreg }}/HKEY_LOCAL_MACHINE/SOFTWARE/Python/PythonCore/${PYTHON3_VER_DOT}${{ matrix.pyreg }}/InstallPath/@")
echo "VCVARSALL=$(vswhere -products \* -latest -property installationPath)\\VC\\Auxiliary\\Build\\vcvarsall.bat" >> $GITHUB_ENV
if [ "${{ matrix.features }}" != "TINY" ]; then
if [ "${{ matrix.arch }}" = "x86" ]; then
choco install python2 --forcex86
else
choco install python2
fi
fi
python3_dir=$(cat "/proc/$cygreg/HKEY_LOCAL_MACHINE/SOFTWARE/Python/PythonCore/${PYTHON3_VER_DOT}$pyreg/InstallPath/@")
echo "PYTHON3_DIR=$python3_dir" >> $GITHUB_ENV
- uses: msys2/setup-msys2@v2
@@ -434,7 +436,7 @@ jobs:
install: tar
pacboy: >-
make:p gcc:p
msystem: ${{ matrix.msystem }}
msystem: ${{ env.MSYSTEM }}
release: false
- name: Checkout repository from github
@@ -451,7 +453,7 @@ jobs:
uses: actions/cache@v3
with:
path: downloads
key: ${{ runner.os }}-${{ matrix.bits }}-${{ hashFiles('urls.txt') }}
key: ${{ runner.os }}-${{ matrix.arch }}-${{ hashFiles('urls.txt') }}
- name: Download dependencies
shell: cmd
@@ -460,14 +462,14 @@ jobs:
if not exist downloads mkdir downloads
echo %COL_GREEN%Download Lua%COL_RESET%
call :downloadfile %LUA${{ matrix.bits }}_URL% downloads\lua.zip
call :downloadfile %LUA${{ env.BITS }}_URL% downloads\lua.zip
7z x downloads\lua.zip -o%LUA_DIR% > nul || exit 1
echo %COL_GREEN%Download winpty%COL_RESET%
call :downloadfile %WINPTY_URL% downloads\winpty.zip
7z x -y downloads\winpty.zip -oD:\winpty > nul || exit 1
copy /Y D:\winpty\${{ matrix.warch }}\bin\winpty.dll src\winpty${{ matrix.bits }}.dll
copy /Y D:\winpty\${{ matrix.warch }}\bin\winpty-agent.exe src\
copy /Y D:\winpty\%WARCH%\bin\winpty.dll src\winpty%BITS%.dll
copy /Y D:\winpty\%WARCH%\bin\winpty-agent.exe src\
goto :eof
@@ -482,31 +484,28 @@ 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
run: |
call "%VCVARSALL%" ${{ matrix.vcarch }}
call "%VCVARSALL%" %VCARCH%
cd src
if "${{ matrix.VIMDLL }}"=="yes" (
set GUI=yes
) else (
set GUI=${{ matrix.GUI }}
)
if "${{ matrix.features }}"=="HUGE" (
nmake -nologo -f Make_mvc.mak ^
FEATURES=${{ matrix.features }} ^
GUI=yes IME=yes ICONV=yes VIMDLL=yes ^
GUI=%GUI% IME=yes ICONV=yes VIMDLL=${{ matrix.VIMDLL }} ^
DYNAMIC_LUA=yes LUA=%LUA_DIR% ^
DYNAMIC_PYTHON=yes PYTHON=%PYTHON_DIR% ^
DYNAMIC_PYTHON3=yes PYTHON3=%PYTHON3_DIR%
) else (
nmake -nologo -f Make_mvc.mak ^
FEATURES=${{ matrix.features }} ^
GUI=yes IME=yes ICONV=yes VIMDLL=yes
)
if not exist vim${{ matrix.bits }}.dll (
echo %COL_RED%Build failure.%COL_RESET%
exit 1
GUI=%GUI% IME=yes ICONV=yes VIMDLL=${{ matrix.VIMDLL }}
)
- name: Build (MinGW)
@@ -514,10 +513,15 @@ jobs:
shell: msys2 {0}
run: |
cd src
if [ "${{ matrix.VIMDLL }}" = "yes" ]; then
GUI=yes
else
GUI=${{ matrix.GUI }}
fi
if [ "${{ matrix.features }}" = "HUGE" ]; then
mingw32-make -f Make_ming.mak -j2 \
FEATURES=${{ matrix.features }} \
GUI=yes IME=yes ICONV=yes VIMDLL=yes \
GUI=$GUI IME=yes ICONV=yes VIMDLL=${{ matrix.VIMDLL }} \
DYNAMIC_LUA=yes LUA=${LUA_DIR_SLASH} \
DYNAMIC_PYTHON=yes PYTHON=${PYTHON_DIR} \
DYNAMIC_PYTHON3=yes PYTHON3=${PYTHON3_DIR} \
@@ -525,17 +529,27 @@ jobs:
else
mingw32-make -f Make_ming.mak -j2 \
FEATURES=${{ matrix.features }} \
GUI=yes IME=yes ICONV=yes VIMDLL=yes \
GUI=$GUI IME=yes ICONV=yes VIMDLL=${{ matrix.VIMDLL }} \
STATIC_STDCPLUS=yes
fi
- name: Check version
shell: cmd
run: |
PATH %LUA_DIR%;C:\msys64\${{ matrix.msystem }}\bin;%PATH%;%PYTHON3_DIR%
src\vim --version || exit 1
src\vim -u NONE -i NONE --not-a-term -esNX -V1 -S ci/if_ver-1.vim -c quit
src\vim -u NONE -i NONE --not-a-term -esNX -V1 -S ci/if_ver-2.vim -c quit
PATH %LUA_DIR%;C:\msys64\%MSYSTEM%\bin;%PATH%;%PYTHON3_DIR%
if "${{ matrix.GUI }}"=="yes" (
start /wait src\gvim -u NONE -i NONE -c "redir > version.txt | ver | q" || exit 1
type version.txt
echo.
start /wait src\gvim -u NONE -i NONE -c "redir! > version.txt | so ci\if_ver-1.vim | q"
start /wait src\gvim -u NONE -i NONE -c "redir >> version.txt | so ci\if_ver-2.vim | q"
type version.txt
del version.txt
) else (
src\vim --version || exit 1
src\vim -u NONE -i NONE --not-a-term -esNX -V1 -S ci/if_ver-1.vim -c quit
src\vim -u NONE -i NONE --not-a-term -esNX -V1 -S ci/if_ver-2.vim -c quit
)
#- name: Prepare Artifact
# shell: cmd
@@ -550,51 +564,39 @@ jobs:
# name: vim${{ matrix.bits }}-${{ matrix.toolchain }}
# path: ./artifacts
- name: Copy gcov data files to src2
if: matrix.coverage
shell: msys2 {0}
run: find src -name '*.gcno' | tar -c -T - | tar -x -C src2 --strip-components 1
- name: Test and show the result of testing gVim
if: matrix.GUI == 'yes' || matrix.VIMDLL == 'yes'
shell: cmd
timeout-minutes: 20
timeout-minutes: 15
run: |
PATH %LUA_DIR%;C:\msys64\${{ matrix.msystem }}\bin;%PATH%;%PYTHON3_DIR%
call "%VCVARSALL%" ${{ matrix.vcarch }}
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"
PATH %LUA_DIR%;C:\msys64\%MSYSTEM%\bin;%PATH%;%PYTHON3_DIR%
call "%VCVARSALL%" %VCARCH%
echo %COL_GREEN%Test gVim:%COL_RESET%
cd src\testdir
nmake -nologo -f Make_dos.mak VIMPROG=..\gvim || exit 1
- name: Show the result of testing Vim
shell: cmd
timeout-minutes: 20
run: |
PATH %LUA_DIR%;C:\msys64\${{ matrix.msystem }}\bin;%PATH%;%PYTHON3_DIR%
call "%VCVARSALL%" ${{ matrix.vcarch }}
echo %COL_GREEN%Wait for Vim tests to finish.%COL_RESET%
cd src2\testdir
:: Wait about 10 minutes.
for /L %%i in (1,1,60) do (
if exist done.txt goto exitloop
timeout 10 > NUL 2>&1
if ERRORLEVEL 1 ping -n 11 localhost > NUL
if "${{ matrix.GUI }}"=="yes" (
nmake -nologo -f Make_mvc.mak VIMPROG=..\gvim || exit 1
) else (
@rem Run only tiny tests.
nmake -nologo -f Make_mvc.mak tiny VIMPROG=..\gvim || exit 1
)
set timeout=1
:exitloop
echo %COL_GREEN%The result of testing Vim:%COL_RESET%
cd src2\testdir
if exist messages type messages
nmake -nologo -f Make_dos.mak report VIMPROG=..\..\src\vim || exit 1
- name: Test and show the result of testing Vim
if: matrix.GUI == 'no' || matrix.VIMDLL == 'yes'
shell: cmd
timeout-minutes: 15
run: |
PATH %LUA_DIR%;C:\msys64\%MSYSTEM%\bin;%PATH%;%PYTHON3_DIR%
call "%VCVARSALL%" %VCARCH%
if "%timeout%"=="1" (
echo %COL_RED%Timed out.%COL_RESET%
exit 1
echo %COL_GREEN%Test Vim:%COL_RESET%
cd src\testdir
nmake -nologo -f Make_mvc.mak clean
if "${{ matrix.GUI }}"=="no" (
nmake -nologo -f Make_mvc.mak VIMPROG=..\vim || exit 1
) else (
@rem Run only tiny tests.
nmake -nologo -f Make_mvc.mak tiny VIMPROG=..\vim || exit 1
)
- name: Generate gcov files
@@ -603,19 +605,10 @@ jobs:
run: |
cd src
find . -type f -name '*.gcno' -exec gcov -pb {} + || true
cd ../src2
find . -type f -name '*.gcno' -exec gcov -pb {} + || true
- name: Codecov (gVim)
- name: Codecov
if: matrix.coverage
uses: codecov/codecov-action@v3.1.0
uses: codecov/codecov-action@v3.1.1
with:
directory: src
flags: windows,${{ matrix.toolchain }}-${{ matrix.arch }}-${{ matrix.features }}-gui
- name: Codecov (Vim)
if: matrix.coverage
uses: codecov/codecov-action@v3.1.0
with:
directory: src2
flags: windows,${{ matrix.toolchain }}-${{ matrix.arch }}-${{ matrix.features }}

View File

@@ -21,8 +21,15 @@ concurrency:
group: ${{ github.workflow }}-${{ github.event_name == 'pull_request' && github.head_ref || github.sha }}
cancel-in-progress: true
permissions:
contents: read # to fetch code (actions/checkout)
jobs:
analyze:
permissions:
contents: read # to fetch code (actions/checkout)
security-events: write # (github/codeql-action/autobuild)
name: Analyze
runs-on: ubuntu-latest

View File

@@ -4,6 +4,9 @@ on:
- cron: '42 0 * * *' # Run once per day, to avoid Coverity's submission limits
workflow_dispatch:
permissions:
contents: read # to fetch code (actions/checkout)
jobs:
scan:
runs-on: ubuntu-20.04

View File

@@ -171,7 +171,6 @@ SRC_ALL = \
src/viminfo.c \
src/winclip.c \
src/window.c \
src/tee/tee.c \
src/xxd/xxd.c \
src/testdir/gen_opt_test.vim \
src/testdir/README.txt \
@@ -210,6 +209,7 @@ SRC_ALL = \
src/testdir/python_before/*.py \
src/testdir/pyxfile/*.py \
src/testdir/dumps/*.dump \
src/testdir/dumps/*.vim \
src/testdir/samples/*.txt \
src/testdir/samples/test000 \
src/testdir/color_ramp.vim \
@@ -487,7 +487,6 @@ SRC_UNIX = \
src/vimtutor \
src/gvimtutor \
src/which.sh \
src/tee/Makefile \
src/xxd/Makefile \
# source files for both DOS and Unix
@@ -516,7 +515,7 @@ SRC_DOS_UNIX = \
src/proto/if_tcl.pro \
src/typemap \
# source files for DOS (also in the extra archive)
# source files for MS-Windows (also in the extra archive)
SRC_DOS = \
src/GvimExt/*.mak \
src/GvimExt/GvimExt.reg \
@@ -540,9 +539,11 @@ SRC_DOS = \
tools/rename.bat \
src/bigvim.bat \
src/bigvim64.bat \
src/msvc2008.bat \
src/msvc2010.bat \
src/msvc-latest.bat \
src/msvc2015.bat \
src/msvc2017.bat \
src/msvc2019.bat \
src/msvc2022.bat \
src/msys32.bat \
src/msys64.bat \
src/dlldata.c \
@@ -555,7 +556,6 @@ SRC_DOS = \
src/if_ole.cpp \
src/if_ole.h \
src/if_ole.idl \
src/if_perl_msvc/stdbool.h \
src/iscygpty.c \
src/iscygpty.h \
src/iid_ole.c \
@@ -570,6 +570,7 @@ SRC_DOS = \
src/proto/os_win32.pro \
src/proto/os_mswin.pro \
src/testdir/Make_dos.mak \
src/testdir/Make_mvc.mak \
src/testdir/Make_ming.mak \
src/testdir/dos.vim \
src/uninstall.c \
@@ -578,7 +579,10 @@ SRC_DOS = \
src/vimrun.c \
src/xpm_w32.c \
src/xpm_w32.h \
src/tee/Make_ming.mak \
src/tee/Make_mvc.mak \
src/tee/Makefile \
src/tee/tee.c \
src/xxd/Make_ming.mak \
src/xxd/Make_mvc.mak \
nsis/gvim.nsi \
@@ -620,10 +624,8 @@ SRC_DOS_BIN = \
src/xpm/include/*.h \
src/xpm/x64/lib-vc14/libXpm.lib \
src/xpm/x64/lib/libXpm.a \
src/xpm/x64/lib/libXpm.lib \
src/xpm/x86/lib-vc14/libXpm.lib \
src/xpm/x86/lib/libXpm.a \
src/xpm/x86/lib/libXpm.lib \
runtime/bitmaps/vim.ico \
nsis/icons.zip \
@@ -945,9 +947,6 @@ EXTRA = \
README_extra.txt \
src/VisVim/VisVim.dll \
runtime/vimlogo.xpm \
src/tee/Makefile \
src/tee/Make_mvc.mak \
src/tee/tee.c \
# files in READMEdir that are included from the top dir
IN_README_DIR = \

View File

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

View File

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

View File

@@ -3,13 +3,18 @@ vim9script
# Language: ConTeXt typesetting engine
# Maintainer: Nicola Vitacolonna <nvitacolonna@gmail.com>
# Former Maintainers: Nikolai Weibull <now@bitwi.se>
# Latest Revision: 2022 Aug 12
# Latest Revision: 2022 Sep 19
# Typesetting {{{
import autoload './typeset.vim'
export def ConTeXtCmd(path: string): list<string>
return ['mtxrun', '--script', 'context', '--nonstopmode', '--autogenerate', path]
var cmd = ['mtxrun', '--script', 'context', '--nonstopmode', '--autogenerate']
if !empty(get(g:, 'context_extra_options', ''))
cmd += g:context_extra_options
endif
cmd->add(path)
return cmd
enddef
export def Typeset(bufname: string, env = {}, Cmd = ConTeXtCmd): bool

1200
runtime/autoload/dist/vimindent.vim vendored Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -4,7 +4,7 @@
" Maintainer: Original maintainer Steven Vertigan <steven@vertigan.wattle.id.au>
" Website: https://github.com/vim/colorschemes
" License: Same as Vim
" Last Updated: Tue 23 Aug 2022 16:50:34 MSK
" Last Updated: Fri 02 Sep 2022 09:41:44 MSK
" Generated by Colortemplate v2.2.0
@@ -57,7 +57,7 @@ hi ToolbarLine guifg=NONE guibg=NONE gui=NONE ctermfg=NONE ctermbg=NONE cterm=NO
hi VertSplit guifg=#008787 guibg=NONE gui=NONE cterm=NONE
hi Visual guifg=#ffffff guibg=#008787 gui=NONE cterm=NONE
hi VisualNOS guifg=#008787 guibg=#ffffff gui=NONE cterm=NONE
hi WarningMsg guifg=#d70000 guibg=NONE gui=NONE cterm=NONE
hi WarningMsg guifg=#d787d7 guibg=NONE gui=NONE cterm=NONE
hi WildMenu guifg=#000087 guibg=#ffd700 gui=NONE cterm=NONE
hi debugBreakpoint guifg=#00ff00 guibg=#000087 gui=reverse cterm=reverse
hi debugPC guifg=#5fffff guibg=#000087 gui=reverse cterm=reverse
@@ -120,6 +120,8 @@ hi! link Structure Type
hi! link Tag Special
hi! link Typedef Type
hi! link Terminal Normal
hi! link MessageWindow Pmenu
hi! link PopupNotification Todo
hi DiffAdd guifg=#ffffff guibg=#5f875f gui=NONE cterm=NONE
hi DiffChange guifg=#ffffff guibg=#5f87af gui=NONE cterm=NONE
hi DiffText guifg=#000000 guibg=#c6c6c6 gui=NONE cterm=NONE
@@ -165,7 +167,7 @@ if s:t_Co >= 256
hi VertSplit ctermfg=30 ctermbg=NONE cterm=NONE
hi Visual ctermfg=231 ctermbg=30 cterm=NONE
hi VisualNOS ctermfg=30 ctermbg=231 cterm=NONE
hi WarningMsg ctermfg=160 ctermbg=NONE cterm=NONE
hi WarningMsg ctermfg=176 ctermbg=NONE cterm=NONE
hi WildMenu ctermfg=18 ctermbg=220 cterm=NONE
hi debugBreakpoint ctermfg=46 ctermbg=18 cterm=reverse
hi debugPC ctermfg=87 ctermbg=18 cterm=reverse
@@ -228,6 +230,8 @@ if s:t_Co >= 256
hi! link Tag Special
hi! link Typedef Type
hi! link Terminal Normal
hi! link MessageWindow Pmenu
hi! link PopupNotification Todo
hi DiffAdd ctermfg=231 ctermbg=65 cterm=NONE
hi DiffChange ctermfg=231 ctermbg=67 cterm=NONE
hi DiffText ctermfg=16 ctermbg=251 cterm=NONE
@@ -276,7 +280,7 @@ if s:t_Co >= 16
hi VertSplit ctermfg=darkcyan ctermbg=NONE cterm=NONE
hi Visual ctermfg=white ctermbg=darkcyan cterm=NONE
hi VisualNOS ctermfg=darkcyan ctermbg=white cterm=NONE
hi WarningMsg ctermfg=red ctermbg=NONE cterm=NONE
hi WarningMsg ctermfg=magenta ctermbg=NONE cterm=NONE
hi WildMenu ctermfg=darkblue ctermbg=yellow cterm=NONE
hi debugBreakpoint ctermfg=green ctermbg=darkblue cterm=reverse
hi debugPC ctermfg=cyan ctermbg=darkblue cterm=reverse
@@ -339,6 +343,8 @@ if s:t_Co >= 16
hi! link Tag Special
hi! link Typedef Type
hi! link Terminal Normal
hi! link MessageWindow Pmenu
hi! link PopupNotification Todo
hi DiffAdd ctermfg=white ctermbg=darkgreen cterm=NONE
hi DiffChange ctermfg=white ctermbg=blue cterm=NONE
hi DiffText ctermfg=black ctermbg=grey cterm=NONE
@@ -449,6 +455,8 @@ if s:t_Co >= 8
hi! link Tag Special
hi! link Typedef Type
hi! link Terminal Normal
hi! link MessageWindow Pmenu
hi! link PopupNotification Todo
hi DiffAdd ctermfg=white ctermbg=darkgreen cterm=NONE
hi DiffChange ctermfg=white ctermbg=darkblue cterm=NONE
hi DiffText ctermfg=black ctermbg=grey cterm=NONE

View File

@@ -4,7 +4,7 @@
" Maintainer: Original author Bohdan Vlasyuk <bohdan@vstu.edu.ua>
" Website: https://github.com/vim/colorschemes
" License: Same as Vim
" Last Updated: Tue 23 Aug 2022 16:50:35 MSK
" Last Updated: Fri 02 Sep 2022 09:40:36 MSK
" Generated by Colortemplate v2.2.0
@@ -65,6 +65,8 @@ hi! link diffCommon WarningMsg
hi! link diffBDiffer WarningMsg
hi! link lCursor Cursor
hi! link CurSearch Search
hi! link MessageWindow Pmenu
hi! link PopupNotification Todo
hi Normal guifg=#c0c0c0 guibg=#000040 gui=NONE cterm=NONE
hi Conceal guifg=NONE guibg=NONE gui=NONE ctermfg=NONE ctermbg=NONE cterm=NONE
hi ColorColumn guifg=#c0c0c0 guibg=#8b0000 gui=NONE cterm=NONE
@@ -171,6 +173,8 @@ if s:t_Co >= 256
hi! link diffBDiffer WarningMsg
hi! link lCursor Cursor
hi! link CurSearch Search
hi! link MessageWindow Pmenu
hi! link PopupNotification Todo
hi Normal ctermfg=252 ctermbg=17 cterm=NONE
hi Conceal ctermfg=NONE ctermbg=NONE cterm=NONE
hi ColorColumn ctermfg=252 ctermbg=88 cterm=NONE

View File

@@ -4,7 +4,7 @@
" Maintainer: Original maintainer David Schweikert <david@schweikert.ch>
" Website: https://github.com/vim/colorschemes
" License: Same as Vim
" Last Updated: Tue 23 Aug 2022 16:50:36 MSK
" Last Updated: Sun 04 Sep 2022 09:31:26 MSK
" Generated by Colortemplate v2.2.0
@@ -25,6 +25,8 @@ hi! link CurSearch Search
hi! link CursorLineFold CursorLine
hi! link CursorLineSign CursorLine
hi! link ErrorMsg Error
hi! link MessageWindow Pmenu
hi! link PopupNotification Todo
hi Normal guifg=#000000 guibg=#ffffff gui=NONE cterm=NONE
hi EndOfBuffer guifg=#bcbcbc guibg=NONE gui=NONE cterm=NONE
hi StatusLine guifg=#ffff00 guibg=#00008b gui=bold cterm=bold
@@ -57,7 +59,7 @@ hi Error guifg=#ff0000 guibg=#ffffff gui=reverse cterm=reverse
hi WarningMsg guifg=#cd00cd guibg=#ffffff gui=NONE cterm=NONE
hi MoreMsg guifg=#000000 guibg=#ffffff gui=bold cterm=bold
hi ModeMsg guifg=#000000 guibg=#ffffff gui=bold cterm=bold
hi Question guifg=#00cd00 guibg=NONE gui=bold cterm=bold
hi Question guifg=#008700 guibg=NONE gui=bold cterm=bold
hi Todo guifg=#000000 guibg=#ffff00 gui=NONE cterm=NONE
hi MatchParen guifg=#ffffff guibg=#ff1493 gui=NONE cterm=NONE
hi Search guifg=#ffffff guibg=#cd00cd gui=NONE cterm=NONE
@@ -97,6 +99,8 @@ if s:t_Co >= 256
hi! link CursorLineFold CursorLine
hi! link CursorLineSign CursorLine
hi! link ErrorMsg Error
hi! link MessageWindow Pmenu
hi! link PopupNotification Todo
hi Normal ctermfg=16 ctermbg=231 cterm=NONE
hi EndOfBuffer ctermfg=250 ctermbg=NONE cterm=NONE
hi StatusLine ctermfg=226 ctermbg=18 cterm=bold
@@ -129,7 +133,7 @@ if s:t_Co >= 256
hi WarningMsg ctermfg=164 ctermbg=231 cterm=NONE
hi MoreMsg ctermfg=16 ctermbg=231 cterm=bold
hi ModeMsg ctermfg=16 ctermbg=231 cterm=bold
hi Question ctermfg=40 ctermbg=NONE cterm=bold
hi Question ctermfg=28 ctermbg=NONE cterm=bold
hi Todo ctermfg=16 ctermbg=226 cterm=NONE
hi MatchParen ctermfg=231 ctermbg=198 cterm=NONE
hi Search ctermfg=231 ctermbg=164 cterm=NONE

View File

@@ -4,7 +4,7 @@
" Maintainer: Original maintainer Hans Fugal <hans@fugal.net>
" Website: https://github.com/vim/colorschemes
" License: Same as Vim
" Last Updated: Tue 23 Aug 2022 16:50:37 MSK
" Last Updated: Fri 02 Sep 2022 09:39:21 MSK
" Generated by Colortemplate v2.2.0
@@ -25,6 +25,8 @@ hi! link CurSearch Search
hi! link CursorLineFold CursorLine
hi! link CursorLineSign CursorLine
hi! link EndOfBuffer NonText
hi! link MessageWindow Pmenu
hi! link PopupNotification Todo
hi Normal guifg=#ffffff guibg=#333333 gui=NONE cterm=NONE
hi StatusLine guifg=#333333 guibg=#c2bfa5 gui=NONE cterm=NONE
hi StatusLineNC guifg=#7f7f8c guibg=#c2bfa5 gui=NONE cterm=NONE
@@ -97,6 +99,8 @@ if s:t_Co >= 256
hi! link CursorLineFold CursorLine
hi! link CursorLineSign CursorLine
hi! link EndOfBuffer NonText
hi! link MessageWindow Pmenu
hi! link PopupNotification Todo
hi Normal ctermfg=231 ctermbg=236 cterm=NONE
hi StatusLine ctermfg=236 ctermbg=144 cterm=NONE
hi StatusLineNC ctermfg=242 ctermbg=144 cterm=NONE

View File

@@ -3,7 +3,7 @@
" Maintainer: original maintainer Ron Aaron <ron@ronware.org>
" Website: https://www.github.com/vim/colorschemes
" License: Same as Vim
" Last Updated: Tue 23 Aug 2022 16:50:37 MSK
" Last Updated: Fri 02 Sep 2022 09:44:22 MSK
" Generated by Colortemplate v2.2.0
@@ -43,6 +43,8 @@ hi! link lCursor Cursor
hi! link CurSearch Search
hi! link CursorLineFold CursorLine
hi! link CursorLineSign CursorLine
hi! link MessageWindow Pmenu
hi! link PopupNotification Todo
if (has('termguicolors') && &termguicolors) || has('gui_running')
let g:terminal_ansi_colors = ['#000000', '#cd0000', '#00cd00', '#cdcd00', '#0000ee', '#cd00cd', '#00cdcd', '#e5e5e5', '#7f7f7f', '#ff0000', '#00ff00', '#ffff00', '#5c5cff', '#ff00ff', '#00ffff', '#ffffff']

View File

@@ -4,7 +4,7 @@
" Maintainer: Original maintainer Steven Vertigan <steven@vertigan.wattle.id.au>
" Website: https://github.com/vim/colorschemes
" License: Same as Vim
" Last Updated: Tue 23 Aug 2022 16:50:38 MSK
" Last Updated: Sun 04 Sep 2022 09:48:34 MSK
" Generated by Colortemplate v2.2.0
@@ -16,7 +16,7 @@ let g:colors_name = 'evening'
let s:t_Co = exists('&t_Co') && !has('gui_running') ? (&t_Co ?? 0) : -1
if (has('termguicolors') && &termguicolors) || has('gui_running')
let g:terminal_ansi_colors = ['#000000', '#ffa500', '#2e8b57', '#ffff00', '#006faf', '#8b008b', '#008b8b', '#bebebe', '#4d4d4d', '#ff5f5f', '#00ff00', '#ffff60', '#0087ff', '#ff80ff', '#00ffff', '#ffffff']
let g:terminal_ansi_colors = ['#000000', '#cd0000', '#00cd00', '#cdcd00', '#0087ff', '#cd00cd', '#00cdcd', '#e5e5e5', '#7f7f7f', '#ff0000', '#00ff00', '#ffff00', '#5c5cff', '#ff00ff', '#00ffff', '#ffffff']
endif
hi! link VertSplit StatusLineNC
hi! link StatusLineTerm StatusLine
@@ -64,6 +64,8 @@ hi! link String Constant
hi! link Structure Type
hi! link Tag Special
hi! link Typedef Type
hi! link MessageWindow Pmenu
hi! link PopupNotification Todo
hi Normal guifg=#ffffff guibg=#333333 gui=NONE cterm=NONE
hi ColorColumn guifg=NONE guibg=#8b0000 gui=NONE cterm=NONE
hi CursorLine guifg=NONE guibg=#666666 gui=NONE cterm=NONE
@@ -98,7 +100,7 @@ hi ToolbarButton guifg=NONE guibg=#999999 gui=bold cterm=bold
hi ToolbarLine guifg=NONE guibg=NONE gui=NONE ctermfg=NONE ctermbg=NONE cterm=NONE
hi Visual guifg=#ffffff guibg=#999999 gui=NONE cterm=NONE
hi VisualNOS guifg=NONE guibg=NONE gui=bold,underline ctermfg=NONE ctermbg=NONE cterm=bold,underline
hi WarningMsg guifg=#8b0000 guibg=NONE gui=NONE cterm=NONE
hi WarningMsg guifg=#ff0000 guibg=NONE gui=NONE cterm=NONE
hi WildMenu guifg=#000000 guibg=#ffff00 gui=bold cterm=bold
hi debugBreakpoint guifg=#00008b guibg=#ff0000 gui=NONE cterm=NONE
hi debugPC guifg=#00008b guibg=#0000ff gui=NONE cterm=NONE
@@ -170,6 +172,8 @@ if s:t_Co >= 256
hi! link Structure Type
hi! link Tag Special
hi! link Typedef Type
hi! link MessageWindow Pmenu
hi! link PopupNotification Todo
hi Normal ctermfg=231 ctermbg=236 cterm=NONE
hi ColorColumn ctermfg=NONE ctermbg=88 cterm=NONE
hi CursorLine ctermfg=NONE ctermbg=241 cterm=NONE
@@ -204,7 +208,7 @@ if s:t_Co >= 256
hi ToolbarLine ctermfg=NONE ctermbg=NONE cterm=NONE
hi Visual ctermfg=231 ctermbg=246 cterm=NONE
hi VisualNOS ctermfg=NONE ctermbg=NONE cterm=bold,underline
hi WarningMsg ctermfg=88 ctermbg=NONE cterm=NONE
hi WarningMsg ctermfg=196 ctermbg=NONE cterm=NONE
hi WildMenu ctermfg=16 ctermbg=226 cterm=bold
hi debugBreakpoint ctermfg=18 ctermbg=196 cterm=NONE
hi debugPC ctermfg=18 ctermbg=21 cterm=NONE
@@ -279,6 +283,8 @@ if s:t_Co >= 16
hi! link Structure Type
hi! link Tag Special
hi! link Typedef Type
hi! link MessageWindow Pmenu
hi! link PopupNotification Todo
hi Normal ctermfg=white ctermbg=black cterm=NONE
hi ColorColumn ctermfg=white ctermbg=darkred cterm=NONE
hi CursorLine ctermfg=NONE ctermbg=NONE cterm=underline
@@ -313,7 +319,7 @@ if s:t_Co >= 16
hi ToolbarLine ctermfg=NONE ctermbg=NONE cterm=NONE
hi Visual ctermfg=white ctermbg=darkgray cterm=NONE
hi VisualNOS ctermfg=NONE ctermbg=NONE cterm=bold,underline
hi WarningMsg ctermfg=darkred ctermbg=NONE cterm=NONE
hi WarningMsg ctermfg=red ctermbg=NONE cterm=NONE
hi WildMenu ctermfg=black ctermbg=darkyellow cterm=bold
hi debugBreakpoint ctermfg=darkblue ctermbg=red cterm=NONE
hi debugPC ctermfg=darkblue ctermbg=blue cterm=NONE
@@ -494,13 +500,26 @@ endif
" Color: grey30 #4d4d4d 239 darkgray
" Color: grey40 #666666 241 darkgray
" Color: grey60 #999999 246 darkgray
" Color: xtermblue #0087ff 33 blue
" Color: xtermdarkblue #006faf 25 darkblue
" Color: xtermred #ff5f5f 203 red
" Color: comment #80a0ff 111 lightblue
" Color: darkred #8b0000 88 darkred
" Term colors: black orange seagreen yellow xtermdarkblue darkmagenta darkcyan grey
" Term colors: grey30 xtermred green lightyellow xtermblue magenta cyan white
" Color: x_black #000000 16 black
" Color: x_darkred #cd0000 160 darkred
" Color: x_darkgreen #00cd00 40 darkgreen
" Color: x_darkyellow #cdcd00 184 darkyellow
" Color: x_darkblue_m #0087ff 33 darkblue
" Color: x_darkmagenta #cd00cd 164 darkmagenta
" Color: x_darkcyan #00cdcd 44 darkcyan
" Color: x_gray #e5e5e5 254 gray
" Color: x_darkgray #7f7f7f 244 darkgray
" Color: x_red #ff0000 196 red
" Color: x_green #00ff00 46 green
" Color: x_yellow #ffff00 226 yellow
" Color: x_blue #5c5cff 63 blue
" Color: x_magenta #ff00ff 201 magenta
" Color: x_cyan #00ffff 51 cyan
" Color: x_white #ffffff 231 white
" Term colors: x_black x_darkred x_darkgreen x_darkyellow x_darkblue_m x_darkmagenta x_darkcyan x_gray
" Term colors: x_darkgray x_red x_green x_yellow x_blue x_magenta x_cyan x_white
" Color: bgDiffA #5F875F 65 darkgreen
" Color: bgDiffC #5F87AF 67 blue
" Color: bgDiffD #AF5FAF 133 magenta

View File

@@ -4,7 +4,7 @@
" Maintainer: Maxim Kim <habamax@gmail.com>
" Website: https://github.com/vim/colorschemes
" License: Same as Vim
" Last Updated: Tue 23 Aug 2022 16:50:38 MSK
" Last Updated: Fri 02 Sep 2022 09:45:11 MSK
" Generated by Colortemplate v2.2.0
@@ -21,6 +21,8 @@ endif
hi! link Terminal Normal
hi! link StatuslineTerm Statusline
hi! link StatuslineTermNC StatuslineNC
hi! link MessageWindow Pmenu
hi! link PopupNotification Todo
hi! link javaScriptFunction Statement
hi! link javaScriptIdentifier Statement
hi! link sqlKeyword Statement
@@ -142,6 +144,8 @@ if s:t_Co >= 256
hi! link Terminal Normal
hi! link StatuslineTerm Statusline
hi! link StatuslineTermNC StatuslineNC
hi! link MessageWindow Pmenu
hi! link PopupNotification Todo
hi! link javaScriptFunction Statement
hi! link javaScriptIdentifier Statement
hi! link sqlKeyword Statement

View File

@@ -4,7 +4,7 @@
" Maintainer: Original maintainer Shian Lee.
" Website: https://github.com/vim/colorschemes
" License: Same as Vim
" Last Updated: Tue 23 Aug 2022 16:50:39 MSK
" Last Updated: Sun 04 Sep 2022 09:50:04 MSK
" Generated by Colortemplate v2.2.0
@@ -51,7 +51,7 @@ hi Underlined guifg=#87afff guibg=NONE gui=underline cterm=underline
hi Error guifg=#ffffff guibg=#ff0000 gui=NONE cterm=NONE
hi ErrorMsg guifg=#ffffff guibg=#ff0000 gui=NONE cterm=NONE
hi ModeMsg guifg=#ffffff guibg=NONE gui=bold cterm=bold
hi WarningMsg guifg=#870000 guibg=NONE gui=bold cterm=bold
hi WarningMsg guifg=#ff0000 guibg=NONE gui=bold cterm=bold
hi MoreMsg guifg=#5fd75f guibg=NONE gui=bold cterm=bold
hi Question guifg=#00ff00 guibg=NONE gui=bold cterm=bold
hi Todo guifg=#005fff guibg=#ffff00 gui=NONE cterm=NONE
@@ -84,6 +84,8 @@ hi! link LineNrBelow LineNr
hi! link CurSearch Search
hi! link CursorLineFold CursorLine
hi! link CursorLineSign CursorLine
hi! link MessageWindow Pmenu
hi! link PopupNotification Todo
hi DiffAdd guifg=#ffffff guibg=#5f875f gui=NONE cterm=NONE
hi DiffChange guifg=#ffffff guibg=#5f87af gui=NONE cterm=NONE
hi DiffText guifg=#000000 guibg=#c6c6c6 gui=NONE cterm=NONE
@@ -123,7 +125,7 @@ if s:t_Co >= 256
hi Error ctermfg=231 ctermbg=196 cterm=NONE
hi ErrorMsg ctermfg=231 ctermbg=196 cterm=NONE
hi ModeMsg ctermfg=231 ctermbg=NONE cterm=bold
hi WarningMsg ctermfg=88 ctermbg=NONE cterm=bold
hi WarningMsg ctermfg=196 ctermbg=NONE cterm=bold
hi MoreMsg ctermfg=77 ctermbg=NONE cterm=bold
hi Question ctermfg=46 ctermbg=NONE cterm=bold
hi Todo ctermfg=27 ctermbg=226 cterm=NONE
@@ -156,6 +158,8 @@ if s:t_Co >= 256
hi! link CurSearch Search
hi! link CursorLineFold CursorLine
hi! link CursorLineSign CursorLine
hi! link MessageWindow Pmenu
hi! link PopupNotification Todo
hi DiffAdd ctermfg=231 ctermbg=65 cterm=NONE
hi DiffChange ctermfg=231 ctermbg=67 cterm=NONE
hi DiffText ctermfg=16 ctermbg=251 cterm=NONE
@@ -198,7 +202,7 @@ if s:t_Co >= 16
hi Error ctermfg=white ctermbg=red cterm=NONE
hi ErrorMsg ctermfg=white ctermbg=red cterm=NONE
hi ModeMsg ctermfg=white ctermbg=NONE cterm=bold
hi WarningMsg ctermfg=darkred ctermbg=NONE cterm=bold
hi WarningMsg ctermfg=red ctermbg=NONE cterm=bold
hi MoreMsg ctermfg=darkgreen ctermbg=NONE cterm=bold
hi Question ctermfg=green ctermbg=NONE cterm=bold
hi Todo ctermfg=blue ctermbg=yellow cterm=NONE
@@ -231,6 +235,8 @@ if s:t_Co >= 16
hi! link CurSearch Search
hi! link CursorLineFold CursorLine
hi! link CursorLineSign CursorLine
hi! link MessageWindow Pmenu
hi! link PopupNotification Todo
hi DiffAdd ctermfg=white ctermbg=darkgreen cterm=NONE
hi DiffChange ctermfg=white ctermbg=blue cterm=NONE
hi DiffText ctermfg=black ctermbg=grey cterm=NONE

View File

@@ -3,7 +3,7 @@
" Maintainer: original maintainer Ron Aaron <ron@ronware.org>
" Website: https://www.github.com/vim/colorschemes
" License: Same as Vim
" Last Updated: Tue 23 Aug 2022 16:50:39 MSK
" Last Updated: Fri 02 Sep 2022 09:23:56 MSK
" Generated by Colortemplate v2.2.0
@@ -49,6 +49,8 @@ hi! link lCursor Cursor
hi! link CurSearch Search
hi! link CursorLineFold CursorLine
hi! link CursorLineSign CursorLine
hi! link MessageWindow Pmenu
hi! link PopupNotification Todo
if (has('termguicolors') && &termguicolors) || has('gui_running')
let g:terminal_ansi_colors = ['#000000', '#cd0000', '#00cd00', '#cdcd00', '#0000ee', '#cd00cd', '#00cdcd', '#e5e5e5', '#7f7f7f', '#ff0000', '#00ff00', '#ffff00', '#5c5cff', '#ff00ff', '#00ffff', '#ffffff']

View File

@@ -4,7 +4,7 @@
" Maintainer: Maxim Kim <habamax@gmail.com>
" Website: https://www.github.com/vim/colorschemes
" License: Vim License (see `:help license`)
" Last Updated: Tue 23 Aug 2022 16:50:40 MSK
" Last Updated: Fri 16 Sep 2022 13:15:33 MSK
" Generated by Colortemplate v2.2.0
@@ -26,12 +26,15 @@ hi! link fugitiveUnstagedModifier PreProc
hi! link fugitiveHash Constant
hi! link diffFile PreProc
hi! link markdownHeadingDelimiter Special
hi! link rstSectionDelimiter PreProc
hi! link rstDirective Special
hi! link rstSectionDelimiter Statement
hi! link rstDirective PreProc
hi! link rstHyperlinkReference Special
hi! link rstFieldName Special
hi! link rstFieldName Constant
hi! link rstDelimiter Special
hi! link rstInterpretedText Special
hi! link rstCodeBlock Normal
hi! link rstLiteralBlock rstCodeBlock
hi! link markdownUrl String
hi! link colortemplateKey Statement
hi! link xmlTagName Statement
hi! link javaScriptFunction Statement
@@ -81,25 +84,52 @@ hi! link shOption Normal
hi! link shCommandSub Normal
hi! link shDerefPattern shQuote
hi! link shDerefOp Special
hi! link phpStorageClass Statement
hi! link phpStructure Statement
hi! link phpInclude Statement
hi! link phpDefine Statement
hi! link phpSpecialFunction Normal
hi! link phpParent Normal
hi! link phpComparison Normal
hi! link phpOperator Normal
hi! link phpVarSelector Special
hi! link phpMemberSelector Special
hi! link phpDocCustomTags phpDocTags
hi! link javaExternal Statement
hi! link javaType Statement
hi! link javaScopeDecl Statement
hi! link javaClassDecl Statement
hi! link javaStorageClass Statement
hi! link javaDocParam PreProc
hi! link csStorage Statement
hi! link csAccessModifier Statement
hi! link csClass Statement
hi! link csModifier Statement
hi! link csAsyncModifier Statement
hi! link csLogicSymbols Normal
hi! link csClassType Normal
hi! link csType Statement
hi! link Terminal Normal
hi! link StatuslineTerm Statusline
hi! link StatuslineTermNC StatuslineNC
hi! link LineNrAbove LineNr
hi! link LineNrBelow LineNr
hi! link MessageWindow PMenu
hi! link PopupNotification Todo
if &background ==# 'dark'
if (has('termguicolors') && &termguicolors) || has('gui_running')
let g:terminal_ansi_colors = ['#000000', '#af5f5f', '#5faf5f', '#af875f', '#5f87af', '#d787af', '#5fafaf', '#c6c6c6', '#767676', '#ff5f5f', '#5fd75f', '#ffd787', '#87afd7', '#ffafd7', '#5fd7d7', '#ffffff']
let g:terminal_ansi_colors = ['#000000', '#af5f5f', '#5faf5f', '#af875f', '#5f87af', '#d787d7', '#5fafaf', '#c6c6c6', '#767676', '#ff5f5f', '#5fd75f', '#ffd787', '#5fafff', '#ff87ff', '#5fd7d7', '#ffffff']
endif
hi Normal guifg=#c6c6c6 guibg=#000000 gui=NONE cterm=NONE
hi Statusline guifg=#000000 guibg=#c6c6c6 gui=bold cterm=bold
hi StatuslineNC guifg=#000000 guibg=#767676 gui=NONE cterm=NONE
hi Statusline guifg=#c6c6c6 guibg=#000000 gui=bold,reverse cterm=bold,reverse
hi StatuslineNC guifg=#767676 guibg=#000000 gui=reverse cterm=reverse
hi VertSplit guifg=#767676 guibg=#767676 gui=NONE cterm=NONE
hi TabLine guifg=#000000 guibg=#c6c6c6 gui=NONE cterm=NONE
hi TabLineFill guifg=NONE guibg=#767676 gui=NONE cterm=NONE
hi TabLineSel guifg=#ffffff guibg=#000000 gui=bold cterm=bold
hi ToolbarLine guifg=NONE guibg=NONE gui=NONE ctermfg=NONE ctermbg=NONE cterm=NONE
hi ToolbarButton guifg=#000000 guibg=#ffffff gui=NONE cterm=NONE
hi QuickFixLine guifg=#000000 guibg=#87afd7 gui=NONE cterm=NONE
hi QuickFixLine guifg=#000000 guibg=#5fafff gui=NONE cterm=NONE
hi CursorLineNr guifg=#ffffff guibg=NONE gui=bold cterm=bold
hi LineNr guifg=#585858 guibg=NONE gui=NONE cterm=NONE
hi NonText guifg=#585858 guibg=NONE gui=NONE cterm=NONE
@@ -107,7 +137,7 @@ if &background ==# 'dark'
hi EndOfBuffer guifg=#585858 guibg=NONE gui=NONE cterm=NONE
hi SpecialKey guifg=#585858 guibg=NONE gui=NONE cterm=NONE
hi Pmenu guifg=NONE guibg=#1c1c1c gui=NONE cterm=NONE
hi PmenuSel guifg=NONE guibg=#005f00 gui=NONE cterm=NONE
hi PmenuSel guifg=NONE guibg=#444444 gui=NONE cterm=NONE
hi PmenuThumb guifg=NONE guibg=#c6c6c6 gui=NONE cterm=NONE
hi PmenuSbar guifg=NONE guibg=NONE gui=NONE ctermfg=NONE ctermbg=NONE cterm=NONE
hi SignColumn guifg=NONE guibg=NONE gui=NONE ctermfg=NONE ctermbg=NONE cterm=NONE
@@ -115,7 +145,7 @@ if &background ==# 'dark'
hi ErrorMsg guifg=#ffffff guibg=#ff5f5f gui=NONE cterm=NONE
hi ModeMsg guifg=#ffd787 guibg=NONE gui=reverse cterm=reverse
hi MoreMsg guifg=#5fd75f guibg=NONE gui=NONE cterm=NONE
hi Question guifg=#ffafd7 guibg=NONE gui=NONE cterm=NONE
hi Question guifg=#ff87ff guibg=NONE gui=NONE cterm=NONE
hi WarningMsg guifg=#ff5f5f guibg=NONE gui=NONE cterm=NONE
hi Todo guifg=#5fd7d7 guibg=#000000 gui=reverse cterm=reverse
hi Search guifg=#000000 guibg=#ffd787 gui=NONE cterm=NONE
@@ -124,7 +154,7 @@ if &background ==# 'dark'
hi WildMenu guifg=#000000 guibg=#ffd787 gui=bold cterm=bold
hi debugPC guifg=#5f87af guibg=NONE gui=reverse cterm=reverse
hi debugBreakpoint guifg=#5fafaf guibg=NONE gui=reverse cterm=reverse
hi Cursor guifg=#ffffff guibg=#000000 gui=reverse cterm=reverse
hi Cursor guifg=NONE guibg=NONE gui=reverse ctermfg=NONE ctermbg=NONE cterm=reverse
hi lCursor guifg=#ff5fff guibg=#000000 gui=reverse cterm=reverse
hi Visual guifg=#ffffff guibg=#005f87 gui=NONE cterm=NONE
hi MatchParen guifg=#c5e7c5 guibg=#000000 gui=reverse cterm=reverse
@@ -136,17 +166,18 @@ if &background ==# 'dark'
hi SpellBad guifg=NONE guibg=NONE guisp=#ff5f5f gui=undercurl ctermfg=NONE ctermbg=NONE cterm=NONE
hi SpellCap guifg=NONE guibg=NONE guisp=#5fafaf gui=undercurl ctermfg=NONE ctermbg=NONE cterm=NONE
hi SpellLocal guifg=NONE guibg=NONE guisp=#5faf5f gui=undercurl ctermfg=NONE ctermbg=NONE cterm=NONE
hi SpellRare guifg=NONE guibg=NONE guisp=#ffafd7 gui=undercurl ctermfg=NONE ctermbg=NONE cterm=NONE
hi Comment guifg=#87afd7 guibg=NONE gui=NONE cterm=NONE
hi Constant guifg=#ffd787 guibg=NONE gui=NONE cterm=NONE
hi SpellRare guifg=NONE guibg=NONE guisp=#ff87ff gui=undercurl ctermfg=NONE ctermbg=NONE cterm=NONE
hi Comment guifg=#5fafff guibg=NONE gui=NONE cterm=NONE
hi Constant guifg=#ff87ff guibg=NONE gui=NONE cterm=NONE
hi String guifg=#ffd787 guibg=NONE gui=NONE cterm=NONE
hi Identifier guifg=NONE guibg=NONE gui=NONE ctermfg=NONE ctermbg=NONE cterm=NONE
hi Statement guifg=#eeeeee guibg=NONE gui=bold cterm=bold
hi Type guifg=#5fd75f guibg=NONE gui=bold cterm=bold
hi PreProc guifg=#af875f guibg=NONE gui=NONE cterm=NONE
hi Statement guifg=#e4e4e4 guibg=NONE gui=bold cterm=bold
hi Type guifg=#5fd75f guibg=NONE gui=NONE cterm=NONE
hi PreProc guifg=#5fd7d7 guibg=NONE gui=NONE cterm=NONE
hi Special guifg=#5fafaf guibg=NONE gui=NONE cterm=NONE
hi Underlined guifg=NONE guibg=NONE gui=underline ctermfg=NONE ctermbg=NONE cterm=underline
hi Title guifg=NONE guibg=NONE gui=bold ctermfg=NONE ctermbg=NONE cterm=bold
hi Directory guifg=#5fd7d7 guibg=NONE gui=bold cterm=bold
hi Directory guifg=#5fafff guibg=NONE gui=bold cterm=bold
hi Conceal guifg=NONE guibg=NONE gui=NONE ctermfg=NONE ctermbg=NONE cterm=NONE
hi Ignore guifg=NONE guibg=NONE gui=NONE ctermfg=NONE ctermbg=NONE cterm=NONE
hi DiffAdd guifg=#000000 guibg=#af87af gui=NONE cterm=NONE
@@ -155,8 +186,8 @@ if &background ==# 'dark'
hi DiffDelete guifg=#d78787 guibg=NONE gui=NONE cterm=NONE
hi diffAdded guifg=#5fd75f guibg=NONE gui=NONE cterm=NONE
hi diffRemoved guifg=#d78787 guibg=NONE gui=NONE cterm=NONE
hi diffSubname guifg=#ffafd7 guibg=NONE gui=NONE cterm=NONE
hi dirType guifg=#d787af guibg=NONE gui=NONE cterm=NONE
hi diffSubname guifg=#ff87ff guibg=NONE gui=NONE cterm=NONE
hi dirType guifg=#d787d7 guibg=NONE gui=NONE cterm=NONE
hi dirPermissionUser guifg=#5faf5f guibg=NONE gui=NONE cterm=NONE
hi dirPermissionGroup guifg=#af875f guibg=NONE gui=NONE cterm=NONE
hi dirPermissionOther guifg=#5fafaf guibg=NONE gui=NONE cterm=NONE
@@ -164,17 +195,16 @@ if &background ==# 'dark'
hi dirGroup guifg=#767676 guibg=NONE gui=NONE cterm=NONE
hi dirTime guifg=#767676 guibg=NONE gui=NONE cterm=NONE
hi dirSize guifg=#ffd787 guibg=NONE gui=NONE cterm=NONE
hi dirSizeMod guifg=#d787af guibg=NONE gui=NONE cterm=NONE
hi dirSizeMod guifg=#d787d7 guibg=NONE gui=NONE cterm=NONE
hi FilterMenuDirectorySubtle guifg=#878787 guibg=NONE gui=NONE cterm=NONE
hi dirFilterMenuBookmarkPath guifg=#878787 guibg=NONE gui=NONE cterm=NONE
hi dirFilterMenuHistoryPath guifg=#878787 guibg=NONE gui=NONE cterm=NONE
hi FilterMenuLineNr guifg=#878787 guibg=NONE gui=NONE cterm=NONE
hi CocMenuSel guifg=NONE guibg=#005f00 gui=NONE cterm=NONE
hi CocSearch guifg=#ffd787 guibg=NONE gui=NONE cterm=NONE
else
" Light background
if (has('termguicolors') && &termguicolors) || has('gui_running')
let g:terminal_ansi_colors = ['#000000', '#870000', '#008700', '#875f00', '#005faf', '#870087', '#005f5f', '#808080', '#767676', '#d70000', '#87d787', '#d7d787', '#0087d7', '#af00af', '#00afaf', '#ffffff']
let g:terminal_ansi_colors = ['#000000', '#af0000', '#008700', '#af5f00', '#005fd7', '#af00af', '#005f5f', '#808080', '#767676', '#d70000', '#87d787', '#ffd787', '#0087d7', '#ff00ff', '#008787', '#ffffff']
endif
hi Normal guifg=#000000 guibg=#ffffff gui=NONE cterm=NONE
hi Statusline guifg=#ffffff guibg=#000000 gui=bold cterm=bold
@@ -193,46 +223,47 @@ else
hi EndOfBuffer guifg=#9e9e9e guibg=NONE gui=NONE cterm=NONE
hi SpecialKey guifg=#9e9e9e guibg=NONE gui=NONE cterm=NONE
hi Pmenu guifg=NONE guibg=#eeeeee gui=NONE cterm=NONE
hi PmenuSel guifg=NONE guibg=#afd7af gui=NONE cterm=NONE
hi PmenuSel guifg=NONE guibg=#c6c6c6 gui=NONE cterm=NONE
hi PmenuThumb guifg=NONE guibg=#767676 gui=NONE cterm=NONE
hi PmenuSbar guifg=NONE guibg=NONE gui=NONE ctermfg=NONE ctermbg=NONE cterm=NONE
hi SignColumn guifg=NONE guibg=NONE gui=NONE ctermfg=NONE ctermbg=NONE cterm=NONE
hi Error guifg=#ffffff guibg=#d70000 gui=NONE cterm=NONE
hi ErrorMsg guifg=#ffffff guibg=#d70000 gui=NONE cterm=NONE
hi ModeMsg guifg=#d7d787 guibg=#000000 gui=reverse cterm=reverse
hi ModeMsg guifg=#ffd787 guibg=#000000 gui=reverse cterm=reverse
hi MoreMsg guifg=#008700 guibg=NONE gui=bold cterm=bold
hi Question guifg=#870087 guibg=NONE gui=bold cterm=bold
hi Question guifg=#af00af guibg=NONE gui=bold cterm=bold
hi WarningMsg guifg=#d70000 guibg=NONE gui=bold cterm=bold
hi Todo guifg=#005f5f guibg=#ffffff gui=reverse cterm=reverse
hi Search guifg=#000000 guibg=#d7d787 gui=NONE cterm=NONE
hi Todo guifg=#008787 guibg=#ffffff gui=reverse cterm=reverse
hi Search guifg=#000000 guibg=#ffd787 gui=NONE cterm=NONE
hi IncSearch guifg=#000000 guibg=#87d787 gui=NONE cterm=NONE
hi CurSearch guifg=#000000 guibg=#87d787 gui=NONE cterm=NONE
hi WildMenu guifg=#000000 guibg=#d7d787 gui=bold cterm=bold
hi debugPC guifg=#005faf guibg=NONE gui=reverse cterm=reverse
hi WildMenu guifg=#000000 guibg=#ffd787 gui=bold cterm=bold
hi debugPC guifg=#005fd7 guibg=NONE gui=reverse cterm=reverse
hi debugBreakpoint guifg=#005f5f guibg=NONE gui=reverse cterm=reverse
hi Cursor guifg=#000000 guibg=#ffffff gui=reverse cterm=reverse
hi Cursor guifg=NONE guibg=NONE gui=reverse ctermfg=NONE ctermbg=NONE cterm=reverse
hi lCursor guifg=#ff00ff guibg=#000000 gui=reverse cterm=reverse
hi Visual guifg=#ffffff guibg=#5f87af gui=NONE cterm=NONE
hi MatchParen guifg=NONE guibg=#c5e7c5 gui=NONE cterm=NONE
hi VisualNOS guifg=#ffffff guibg=#00afaf gui=NONE cterm=NONE
hi VisualNOS guifg=#ffffff guibg=#008787 gui=NONE cterm=NONE
hi CursorLine guifg=NONE guibg=#e4e4e4 gui=NONE cterm=NONE
hi CursorColumn guifg=NONE guibg=#e4e4e4 gui=NONE cterm=NONE
hi Folded guifg=#767676 guibg=#eeeeee gui=NONE cterm=NONE
hi ColorColumn guifg=NONE guibg=#eeeeee gui=NONE cterm=NONE
hi SpellBad guifg=NONE guibg=NONE guisp=#870000 gui=undercurl ctermfg=NONE ctermbg=NONE cterm=NONE
hi SpellBad guifg=NONE guibg=NONE guisp=#af0000 gui=undercurl ctermfg=NONE ctermbg=NONE cterm=NONE
hi SpellCap guifg=NONE guibg=NONE guisp=#005f5f gui=undercurl ctermfg=NONE ctermbg=NONE cterm=NONE
hi SpellLocal guifg=NONE guibg=NONE guisp=#008700 gui=undercurl ctermfg=NONE ctermbg=NONE cterm=NONE
hi SpellRare guifg=NONE guibg=NONE guisp=#af00af gui=undercurl ctermfg=NONE ctermbg=NONE cterm=NONE
hi Comment guifg=#005faf guibg=NONE gui=NONE cterm=NONE
hi Constant guifg=#870000 guibg=NONE gui=NONE cterm=NONE
hi SpellRare guifg=NONE guibg=NONE guisp=#ff00ff gui=undercurl ctermfg=NONE ctermbg=NONE cterm=NONE
hi Comment guifg=#005fd7 guibg=NONE gui=NONE cterm=NONE
hi Constant guifg=#af00af guibg=NONE gui=NONE cterm=NONE
hi String guifg=#af5f00 guibg=NONE gui=NONE cterm=NONE
hi Identifier guifg=NONE guibg=NONE gui=NONE ctermfg=NONE ctermbg=NONE cterm=NONE
hi Statement guifg=#000000 guibg=NONE gui=bold cterm=bold
hi Type guifg=#008700 guibg=NONE gui=bold cterm=bold
hi PreProc guifg=#875f00 guibg=NONE gui=NONE cterm=NONE
hi Special guifg=#005f5f guibg=NONE gui=NONE cterm=NONE
hi Type guifg=#008700 guibg=NONE gui=NONE cterm=NONE
hi PreProc guifg=#005f5f guibg=NONE gui=NONE cterm=NONE
hi Special guifg=#008787 guibg=NONE gui=NONE cterm=NONE
hi Underlined guifg=NONE guibg=NONE gui=underline ctermfg=NONE ctermbg=NONE cterm=underline
hi Title guifg=NONE guibg=NONE gui=bold ctermfg=NONE ctermbg=NONE cterm=bold
hi Directory guifg=#005faf guibg=NONE gui=bold cterm=bold
hi Directory guifg=#005fd7 guibg=NONE gui=bold cterm=bold
hi Conceal guifg=NONE guibg=NONE gui=NONE ctermfg=NONE ctermbg=NONE cterm=NONE
hi Ignore guifg=NONE guibg=NONE gui=NONE ctermfg=NONE ctermbg=NONE cterm=NONE
hi DiffAdd guifg=#000000 guibg=#d7afd7 gui=NONE cterm=NONE
@@ -241,23 +272,22 @@ else
hi DiffDelete guifg=#870000 guibg=NONE gui=NONE cterm=NONE
hi diffAdded guifg=#008700 guibg=NONE gui=NONE cterm=NONE
hi diffRemoved guifg=#d70000 guibg=NONE gui=NONE cterm=NONE
hi diffSubname guifg=#870087 guibg=NONE gui=NONE cterm=NONE
hi diffSubname guifg=#af00af guibg=NONE gui=NONE cterm=NONE
hi dirType guifg=#005f5f guibg=NONE gui=NONE cterm=NONE
hi dirPermissionUser guifg=#875f00 guibg=NONE gui=NONE cterm=NONE
hi dirPermissionUser guifg=#af5f00 guibg=NONE gui=NONE cterm=NONE
hi dirPermissionGroup guifg=#008700 guibg=NONE gui=NONE cterm=NONE
hi dirPermissionOther guifg=#870087 guibg=NONE gui=NONE cterm=NONE
hi dirPermissionOther guifg=#af00af guibg=NONE gui=NONE cterm=NONE
hi dirOwner guifg=#808080 guibg=NONE gui=NONE cterm=NONE
hi dirGroup guifg=#808080 guibg=NONE gui=NONE cterm=NONE
hi dirTime guifg=#808080 guibg=NONE gui=NONE cterm=NONE
hi dirSize guifg=#870000 guibg=NONE gui=NONE cterm=NONE
hi dirSize guifg=#af0000 guibg=NONE gui=NONE cterm=NONE
hi dirSizeMod guifg=#005f5f guibg=NONE gui=NONE cterm=NONE
hi dirLink guifg=#008700 guibg=NONE gui=bold cterm=bold
hi dirFilterMenuBookmarkPath guifg=#626262 guibg=NONE gui=NONE cterm=NONE
hi dirFilterMenuHistoryPath guifg=#626262 guibg=NONE gui=NONE cterm=NONE
hi FilterMenuDirectorySubtle guifg=#626262 guibg=NONE gui=NONE cterm=NONE
hi FilterMenuLineNr guifg=#626262 guibg=NONE gui=NONE cterm=NONE
hi CocMenuSel guifg=NONE guibg=#afd7af gui=NONE cterm=NONE
hi CocSearch guifg=#870000 guibg=NONE gui=NONE cterm=NONE
hi CocSearch guifg=#af0000 guibg=NONE gui=NONE cterm=NONE
endif
if s:t_Co >= 256
@@ -274,12 +304,15 @@ if s:t_Co >= 256
hi! link fugitiveHash Constant
hi! link diffFile PreProc
hi! link markdownHeadingDelimiter Special
hi! link rstSectionDelimiter PreProc
hi! link rstDirective Special
hi! link rstSectionDelimiter Statement
hi! link rstDirective PreProc
hi! link rstHyperlinkReference Special
hi! link rstFieldName Special
hi! link rstFieldName Constant
hi! link rstDelimiter Special
hi! link rstInterpretedText Special
hi! link rstCodeBlock Normal
hi! link rstLiteralBlock rstCodeBlock
hi! link markdownUrl String
hi! link colortemplateKey Statement
hi! link xmlTagName Statement
hi! link javaScriptFunction Statement
@@ -329,22 +362,49 @@ if s:t_Co >= 256
hi! link shCommandSub Normal
hi! link shDerefPattern shQuote
hi! link shDerefOp Special
hi! link phpStorageClass Statement
hi! link phpStructure Statement
hi! link phpInclude Statement
hi! link phpDefine Statement
hi! link phpSpecialFunction Normal
hi! link phpParent Normal
hi! link phpComparison Normal
hi! link phpOperator Normal
hi! link phpVarSelector Special
hi! link phpMemberSelector Special
hi! link phpDocCustomTags phpDocTags
hi! link javaExternal Statement
hi! link javaType Statement
hi! link javaScopeDecl Statement
hi! link javaClassDecl Statement
hi! link javaStorageClass Statement
hi! link javaDocParam PreProc
hi! link csStorage Statement
hi! link csAccessModifier Statement
hi! link csClass Statement
hi! link csModifier Statement
hi! link csAsyncModifier Statement
hi! link csLogicSymbols Normal
hi! link csClassType Normal
hi! link csType Statement
hi! link Terminal Normal
hi! link StatuslineTerm Statusline
hi! link StatuslineTermNC StatuslineNC
hi! link LineNrAbove LineNr
hi! link LineNrBelow LineNr
hi! link MessageWindow PMenu
hi! link PopupNotification Todo
if &background ==# 'dark'
hi Normal ctermfg=251 ctermbg=16 cterm=NONE
hi Statusline ctermfg=16 ctermbg=251 cterm=bold
hi StatuslineNC ctermfg=16 ctermbg=243 cterm=NONE
hi Statusline ctermfg=251 ctermbg=16 cterm=bold,reverse
hi StatuslineNC ctermfg=243 ctermbg=16 cterm=reverse
hi VertSplit ctermfg=243 ctermbg=243 cterm=NONE
hi TabLine ctermfg=16 ctermbg=251 cterm=NONE
hi TabLineFill ctermfg=NONE ctermbg=243 cterm=NONE
hi TabLineSel ctermfg=231 ctermbg=16 cterm=bold
hi ToolbarLine ctermfg=NONE ctermbg=NONE cterm=NONE
hi ToolbarButton ctermfg=16 ctermbg=231 cterm=NONE
hi QuickFixLine ctermfg=16 ctermbg=110 cterm=NONE
hi QuickFixLine ctermfg=16 ctermbg=75 cterm=NONE
hi CursorLineNr ctermfg=231 ctermbg=NONE cterm=bold
hi LineNr ctermfg=240 ctermbg=NONE cterm=NONE
hi NonText ctermfg=240 ctermbg=NONE cterm=NONE
@@ -352,7 +412,7 @@ if s:t_Co >= 256
hi EndOfBuffer ctermfg=240 ctermbg=NONE cterm=NONE
hi SpecialKey ctermfg=240 ctermbg=NONE cterm=NONE
hi Pmenu ctermfg=NONE ctermbg=234 cterm=NONE
hi PmenuSel ctermfg=NONE ctermbg=22 cterm=NONE
hi PmenuSel ctermfg=NONE ctermbg=238 cterm=NONE
hi PmenuThumb ctermfg=NONE ctermbg=251 cterm=NONE
hi PmenuSbar ctermfg=NONE ctermbg=NONE cterm=NONE
hi SignColumn ctermfg=NONE ctermbg=NONE cterm=NONE
@@ -360,7 +420,7 @@ if s:t_Co >= 256
hi ErrorMsg ctermfg=231 ctermbg=203 cterm=NONE
hi ModeMsg ctermfg=222 ctermbg=NONE cterm=reverse
hi MoreMsg ctermfg=77 ctermbg=NONE cterm=NONE
hi Question ctermfg=218 ctermbg=NONE cterm=NONE
hi Question ctermfg=213 ctermbg=NONE cterm=NONE
hi WarningMsg ctermfg=203 ctermbg=NONE cterm=NONE
hi Todo ctermfg=116 ctermbg=16 cterm=reverse
hi Search ctermfg=16 ctermbg=222 cterm=NONE
@@ -379,17 +439,18 @@ if s:t_Co >= 256
hi SpellBad ctermfg=203 ctermbg=NONE cterm=underline
hi SpellCap ctermfg=73 ctermbg=NONE cterm=underline
hi SpellLocal ctermfg=77 ctermbg=NONE cterm=underline
hi SpellRare ctermfg=218 ctermbg=NONE cterm=underline
hi Comment ctermfg=110 ctermbg=NONE cterm=NONE
hi Constant ctermfg=222 ctermbg=NONE cterm=NONE
hi SpellRare ctermfg=213 ctermbg=NONE cterm=underline
hi Comment ctermfg=75 ctermbg=NONE cterm=NONE
hi Constant ctermfg=213 ctermbg=NONE cterm=NONE
hi String ctermfg=222 ctermbg=NONE cterm=NONE
hi Identifier ctermfg=NONE ctermbg=NONE cterm=NONE
hi Statement ctermfg=255 ctermbg=NONE cterm=bold
hi Type ctermfg=77 ctermbg=NONE cterm=bold
hi PreProc ctermfg=137 ctermbg=NONE cterm=NONE
hi Statement ctermfg=254 ctermbg=NONE cterm=bold
hi Type ctermfg=77 ctermbg=NONE cterm=NONE
hi PreProc ctermfg=116 ctermbg=NONE cterm=NONE
hi Special ctermfg=73 ctermbg=NONE cterm=NONE
hi Underlined ctermfg=NONE ctermbg=NONE cterm=underline
hi Title ctermfg=NONE ctermbg=NONE cterm=bold
hi Directory ctermfg=116 ctermbg=NONE cterm=bold
hi Directory ctermfg=75 ctermbg=NONE cterm=bold
hi Conceal ctermfg=NONE ctermbg=NONE cterm=NONE
hi Ignore ctermfg=NONE ctermbg=NONE cterm=NONE
hi DiffAdd ctermfg=16 ctermbg=139 cterm=NONE
@@ -398,8 +459,8 @@ if s:t_Co >= 256
hi DiffDelete ctermfg=174 ctermbg=NONE cterm=NONE
hi diffAdded ctermfg=77 ctermbg=NONE cterm=NONE
hi diffRemoved ctermfg=174 ctermbg=NONE cterm=NONE
hi diffSubname ctermfg=218 ctermbg=NONE cterm=NONE
hi dirType ctermfg=175 ctermbg=NONE cterm=NONE
hi diffSubname ctermfg=213 ctermbg=NONE cterm=NONE
hi dirType ctermfg=176 ctermbg=NONE cterm=NONE
hi dirPermissionUser ctermfg=71 ctermbg=NONE cterm=NONE
hi dirPermissionGroup ctermfg=137 ctermbg=NONE cterm=NONE
hi dirPermissionOther ctermfg=73 ctermbg=NONE cterm=NONE
@@ -407,12 +468,11 @@ if s:t_Co >= 256
hi dirGroup ctermfg=243 ctermbg=NONE cterm=NONE
hi dirTime ctermfg=243 ctermbg=NONE cterm=NONE
hi dirSize ctermfg=222 ctermbg=NONE cterm=NONE
hi dirSizeMod ctermfg=175 ctermbg=NONE cterm=NONE
hi dirSizeMod ctermfg=176 ctermbg=NONE cterm=NONE
hi FilterMenuDirectorySubtle ctermfg=102 ctermbg=NONE cterm=NONE
hi dirFilterMenuBookmarkPath ctermfg=102 ctermbg=NONE cterm=NONE
hi dirFilterMenuHistoryPath ctermfg=102 ctermbg=NONE cterm=NONE
hi FilterMenuLineNr ctermfg=102 ctermbg=NONE cterm=NONE
hi CocMenuSel ctermfg=NONE ctermbg=22 cterm=NONE
hi CocSearch ctermfg=222 ctermbg=NONE cterm=NONE
else
" Light background
@@ -433,44 +493,45 @@ if s:t_Co >= 256
hi EndOfBuffer ctermfg=247 ctermbg=NONE cterm=NONE
hi SpecialKey ctermfg=247 ctermbg=NONE cterm=NONE
hi Pmenu ctermfg=NONE ctermbg=255 cterm=NONE
hi PmenuSel ctermfg=NONE ctermbg=151 cterm=NONE
hi PmenuSel ctermfg=NONE ctermbg=251 cterm=NONE
hi PmenuThumb ctermfg=NONE ctermbg=243 cterm=NONE
hi PmenuSbar ctermfg=NONE ctermbg=NONE cterm=NONE
hi SignColumn ctermfg=NONE ctermbg=NONE cterm=NONE
hi Error ctermfg=231 ctermbg=160 cterm=NONE
hi ErrorMsg ctermfg=231 ctermbg=160 cterm=NONE
hi ModeMsg ctermfg=186 ctermbg=16 cterm=reverse
hi ModeMsg ctermfg=222 ctermbg=16 cterm=reverse
hi MoreMsg ctermfg=28 ctermbg=NONE cterm=bold
hi Question ctermfg=90 ctermbg=NONE cterm=bold
hi Question ctermfg=127 ctermbg=NONE cterm=bold
hi WarningMsg ctermfg=160 ctermbg=NONE cterm=bold
hi Todo ctermfg=23 ctermbg=231 cterm=reverse
hi Search ctermfg=16 ctermbg=186 cterm=NONE
hi Todo ctermfg=30 ctermbg=231 cterm=reverse
hi Search ctermfg=16 ctermbg=222 cterm=NONE
hi IncSearch ctermfg=16 ctermbg=114 cterm=NONE
hi CurSearch ctermfg=16 ctermbg=114 cterm=NONE
hi WildMenu ctermfg=16 ctermbg=186 cterm=bold
hi debugPC ctermfg=25 ctermbg=NONE cterm=reverse
hi WildMenu ctermfg=16 ctermbg=222 cterm=bold
hi debugPC ctermfg=26 ctermbg=NONE cterm=reverse
hi debugBreakpoint ctermfg=23 ctermbg=NONE cterm=reverse
hi Visual ctermfg=231 ctermbg=67 cterm=NONE
hi MatchParen ctermfg=30 ctermbg=231 cterm=reverse
hi VisualNOS ctermfg=231 ctermbg=37 cterm=NONE
hi VisualNOS ctermfg=231 ctermbg=30 cterm=NONE
hi CursorLine ctermfg=NONE ctermbg=254 cterm=NONE
hi CursorColumn ctermfg=NONE ctermbg=254 cterm=NONE
hi Folded ctermfg=243 ctermbg=255 cterm=NONE
hi ColorColumn ctermfg=NONE ctermbg=255 cterm=NONE
hi SpellBad ctermfg=88 ctermbg=NONE cterm=underline
hi SpellBad ctermfg=124 ctermbg=NONE cterm=underline
hi SpellCap ctermfg=23 ctermbg=NONE cterm=underline
hi SpellLocal ctermfg=28 ctermbg=NONE cterm=underline
hi SpellRare ctermfg=133 ctermbg=NONE cterm=underline
hi Comment ctermfg=25 ctermbg=NONE cterm=NONE
hi Constant ctermfg=88 ctermbg=NONE cterm=NONE
hi Comment ctermfg=26 ctermbg=NONE cterm=NONE
hi Constant ctermfg=127 ctermbg=NONE cterm=NONE
hi String ctermfg=130 ctermbg=NONE cterm=NONE
hi Identifier ctermfg=NONE ctermbg=NONE cterm=NONE
hi Statement ctermfg=16 ctermbg=NONE cterm=bold
hi Type ctermfg=28 ctermbg=NONE cterm=bold
hi PreProc ctermfg=94 ctermbg=NONE cterm=NONE
hi Special ctermfg=23 ctermbg=NONE cterm=NONE
hi Type ctermfg=28 ctermbg=NONE cterm=NONE
hi PreProc ctermfg=23 ctermbg=NONE cterm=NONE
hi Special ctermfg=30 ctermbg=NONE cterm=NONE
hi Underlined ctermfg=NONE ctermbg=NONE cterm=underline
hi Title ctermfg=NONE ctermbg=NONE cterm=bold
hi Directory ctermfg=25 ctermbg=NONE cterm=bold
hi Directory ctermfg=26 ctermbg=NONE cterm=bold
hi Conceal ctermfg=NONE ctermbg=NONE cterm=NONE
hi Ignore ctermfg=NONE ctermbg=NONE cterm=NONE
hi DiffAdd ctermfg=16 ctermbg=182 cterm=NONE
@@ -479,23 +540,22 @@ if s:t_Co >= 256
hi DiffDelete ctermfg=88 ctermbg=NONE cterm=NONE
hi diffAdded ctermfg=28 ctermbg=NONE cterm=NONE
hi diffRemoved ctermfg=160 ctermbg=NONE cterm=NONE
hi diffSubname ctermfg=90 ctermbg=NONE cterm=NONE
hi diffSubname ctermfg=127 ctermbg=NONE cterm=NONE
hi dirType ctermfg=23 ctermbg=NONE cterm=NONE
hi dirPermissionUser ctermfg=94 ctermbg=NONE cterm=NONE
hi dirPermissionUser ctermfg=130 ctermbg=NONE cterm=NONE
hi dirPermissionGroup ctermfg=28 ctermbg=NONE cterm=NONE
hi dirPermissionOther ctermfg=90 ctermbg=NONE cterm=NONE
hi dirPermissionOther ctermfg=127 ctermbg=NONE cterm=NONE
hi dirOwner ctermfg=244 ctermbg=NONE cterm=NONE
hi dirGroup ctermfg=244 ctermbg=NONE cterm=NONE
hi dirTime ctermfg=244 ctermbg=NONE cterm=NONE
hi dirSize ctermfg=88 ctermbg=NONE cterm=NONE
hi dirSize ctermfg=124 ctermbg=NONE cterm=NONE
hi dirSizeMod ctermfg=23 ctermbg=NONE cterm=NONE
hi dirLink ctermfg=28 ctermbg=NONE cterm=bold
hi dirFilterMenuBookmarkPath ctermfg=241 ctermbg=NONE cterm=NONE
hi dirFilterMenuHistoryPath ctermfg=241 ctermbg=NONE cterm=NONE
hi FilterMenuDirectorySubtle ctermfg=241 ctermbg=NONE cterm=NONE
hi FilterMenuLineNr ctermfg=241 ctermbg=NONE cterm=NONE
hi CocMenuSel ctermfg=NONE ctermbg=151 cterm=NONE
hi CocSearch ctermfg=88 ctermbg=NONE cterm=NONE
hi CocSearch ctermfg=124 ctermbg=NONE cterm=NONE
endif
unlet s:t_Co
finish
@@ -504,8 +564,8 @@ endif
if s:t_Co >= 16
if &background ==# 'dark'
hi Normal ctermfg=grey ctermbg=black cterm=NONE
hi Statusline ctermfg=black ctermbg=grey cterm=bold
hi StatuslineNC ctermfg=black ctermbg=darkgrey cterm=NONE
hi Statusline ctermfg=grey ctermbg=black cterm=bold,reverse
hi StatuslineNC ctermfg=darkgrey ctermbg=black cterm=reverse
hi VertSplit ctermfg=darkgrey ctermbg=darkgrey cterm=NONE
hi TabLine ctermfg=black ctermbg=grey cterm=NONE
hi TabLineFill ctermfg=NONE ctermbg=darkgrey cterm=NONE
@@ -520,7 +580,7 @@ if s:t_Co >= 16
hi EndOfBuffer ctermfg=grey ctermbg=NONE cterm=NONE
hi SpecialKey ctermfg=grey ctermbg=NONE cterm=NONE
hi Pmenu ctermfg=black ctermbg=darkgrey cterm=NONE
hi PmenuSel ctermfg=black ctermbg=darkgreen cterm=NONE
hi PmenuSel ctermfg=black ctermbg=darkcyan cterm=NONE
hi PmenuThumb ctermfg=NONE ctermbg=grey cterm=NONE
hi PmenuSbar ctermfg=NONE ctermbg=NONE cterm=NONE
hi SignColumn ctermfg=NONE ctermbg=NONE cterm=NONE
@@ -549,15 +609,16 @@ if s:t_Co >= 16
hi SpellLocal ctermfg=green ctermbg=NONE cterm=underline
hi SpellRare ctermfg=magenta ctermbg=NONE cterm=underline
hi Comment ctermfg=blue ctermbg=NONE cterm=NONE
hi Constant ctermfg=yellow ctermbg=NONE cterm=NONE
hi Constant ctermfg=magenta ctermbg=NONE cterm=NONE
hi String ctermfg=yellow ctermbg=NONE cterm=NONE
hi Identifier ctermfg=NONE ctermbg=NONE cterm=NONE
hi Statement ctermfg=grey ctermbg=NONE cterm=bold
hi Type ctermfg=green ctermbg=NONE cterm=bold
hi PreProc ctermfg=darkyellow ctermbg=NONE cterm=NONE
hi Type ctermfg=green ctermbg=NONE cterm=NONE
hi PreProc ctermfg=cyan ctermbg=NONE cterm=NONE
hi Special ctermfg=darkcyan ctermbg=NONE cterm=NONE
hi Underlined ctermfg=NONE ctermbg=NONE cterm=underline
hi Title ctermfg=NONE ctermbg=NONE cterm=bold
hi Directory ctermfg=cyan ctermbg=NONE cterm=bold
hi Directory ctermfg=blue ctermbg=NONE cterm=bold
hi Conceal ctermfg=NONE ctermbg=NONE cterm=NONE
hi Ignore ctermfg=NONE ctermbg=NONE cterm=NONE
hi DiffAdd ctermfg=black ctermbg=darkmagenta cterm=NONE
@@ -567,6 +628,20 @@ if s:t_Co >= 16
hi diffAdded ctermfg=green ctermbg=NONE cterm=NONE
hi diffRemoved ctermfg=darkred ctermbg=NONE cterm=NONE
hi diffSubname ctermfg=magenta ctermbg=NONE cterm=NONE
hi dirType ctermfg=darkmagenta ctermbg=NONE cterm=NONE
hi dirPermissionUser ctermfg=darkgreen ctermbg=NONE cterm=NONE
hi dirPermissionGroup ctermfg=darkyellow ctermbg=NONE cterm=NONE
hi dirPermissionOther ctermfg=darkcyan ctermbg=NONE cterm=NONE
hi dirOwner ctermfg=darkgrey ctermbg=NONE cterm=NONE
hi dirGroup ctermfg=darkgrey ctermbg=NONE cterm=NONE
hi dirTime ctermfg=darkgrey ctermbg=NONE cterm=NONE
hi dirSize ctermfg=yellow ctermbg=NONE cterm=NONE
hi dirSizeMod ctermfg=darkmagenta ctermbg=NONE cterm=NONE
hi FilterMenuDirectorySubtle ctermfg=grey ctermbg=NONE cterm=NONE
hi dirFilterMenuBookmarkPath ctermfg=grey ctermbg=NONE cterm=NONE
hi dirFilterMenuHistoryPath ctermfg=grey ctermbg=NONE cterm=NONE
hi FilterMenuLineNr ctermfg=grey ctermbg=NONE cterm=NONE
hi CocSearch ctermfg=yellow ctermbg=NONE cterm=NONE
else
" Light background
hi Normal ctermfg=black ctermbg=white cterm=NONE
@@ -586,7 +661,7 @@ if s:t_Co >= 16
hi EndOfBuffer ctermfg=darkgrey ctermbg=NONE cterm=NONE
hi SpecialKey ctermfg=darkgrey ctermbg=NONE cterm=NONE
hi Pmenu ctermfg=black ctermbg=grey cterm=NONE
hi PmenuSel ctermfg=black ctermbg=darkgreen cterm=NONE
hi PmenuSel ctermfg=black ctermbg=darkcyan cterm=NONE
hi PmenuThumb ctermfg=NONE ctermbg=darkgrey cterm=NONE
hi PmenuSbar ctermfg=NONE ctermbg=NONE cterm=NONE
hi SignColumn ctermfg=NONE ctermbg=NONE cterm=NONE
@@ -596,7 +671,7 @@ if s:t_Co >= 16
hi MoreMsg ctermfg=darkgreen ctermbg=NONE cterm=bold
hi Question ctermfg=darkmagenta ctermbg=NONE cterm=bold
hi WarningMsg ctermfg=red ctermbg=NONE cterm=bold
hi Todo ctermfg=darkcyan ctermbg=white cterm=reverse
hi Todo ctermfg=cyan ctermbg=white cterm=reverse
hi Search ctermfg=black ctermbg=yellow cterm=NONE
hi IncSearch ctermfg=black ctermbg=green cterm=NONE
hi CurSearch ctermfg=black ctermbg=green cterm=NONE
@@ -615,12 +690,13 @@ if s:t_Co >= 16
hi SpellLocal ctermfg=darkgreen ctermbg=NONE cterm=underline
hi SpellRare ctermfg=magenta ctermbg=NONE cterm=underline
hi Comment ctermfg=darkblue ctermbg=NONE cterm=NONE
hi Constant ctermfg=darkred ctermbg=NONE cterm=NONE
hi Constant ctermfg=darkmagenta ctermbg=NONE cterm=NONE
hi String ctermfg=darkyellow ctermbg=NONE cterm=NONE
hi Identifier ctermfg=NONE ctermbg=NONE cterm=NONE
hi Statement ctermfg=black ctermbg=NONE cterm=bold
hi Type ctermfg=darkgreen ctermbg=NONE cterm=bold
hi PreProc ctermfg=darkyellow ctermbg=NONE cterm=NONE
hi Special ctermfg=darkcyan ctermbg=NONE cterm=NONE
hi Type ctermfg=darkgreen ctermbg=NONE cterm=NONE
hi PreProc ctermfg=darkcyan ctermbg=NONE cterm=NONE
hi Special ctermfg=cyan ctermbg=NONE cterm=NONE
hi Underlined ctermfg=NONE ctermbg=NONE cterm=underline
hi Title ctermfg=NONE ctermbg=NONE cterm=bold
hi Directory ctermfg=darkblue ctermbg=NONE cterm=bold
@@ -633,6 +709,21 @@ if s:t_Co >= 16
hi diffAdded ctermfg=darkgreen ctermbg=NONE cterm=NONE
hi diffRemoved ctermfg=red ctermbg=NONE cterm=NONE
hi diffSubname ctermfg=darkmagenta ctermbg=NONE cterm=NONE
hi dirType ctermfg=darkcyan ctermbg=NONE cterm=NONE
hi dirPermissionUser ctermfg=darkyellow ctermbg=NONE cterm=NONE
hi dirPermissionGroup ctermfg=darkgreen ctermbg=NONE cterm=NONE
hi dirPermissionOther ctermfg=darkmagenta ctermbg=NONE cterm=NONE
hi dirOwner ctermfg=grey ctermbg=NONE cterm=NONE
hi dirGroup ctermfg=grey ctermbg=NONE cterm=NONE
hi dirTime ctermfg=grey ctermbg=NONE cterm=NONE
hi dirSize ctermfg=darkred ctermbg=NONE cterm=NONE
hi dirSizeMod ctermfg=darkcyan ctermbg=NONE cterm=NONE
hi dirLink ctermfg=darkgreen ctermbg=NONE cterm=bold
hi dirFilterMenuBookmarkPath ctermfg=darkgrey ctermbg=NONE cterm=NONE
hi dirFilterMenuHistoryPath ctermfg=darkgrey ctermbg=NONE cterm=NONE
hi FilterMenuDirectorySubtle ctermfg=darkgrey ctermbg=NONE cterm=NONE
hi FilterMenuLineNr ctermfg=darkgrey ctermbg=NONE cterm=NONE
hi CocSearch ctermfg=darkred ctermbg=NONE cterm=NONE
endif
unlet s:t_Co
finish
@@ -656,10 +747,10 @@ if s:t_Co >= 8
hi FoldColumn ctermfg=black ctermbg=NONE cterm=NONE
hi EndOfBuffer ctermfg=black ctermbg=NONE cterm=NONE
hi SpecialKey ctermfg=black ctermbg=NONE cterm=NONE
hi Pmenu ctermfg=black ctermbg=grey cterm=NONE
hi Pmenu ctermfg=NONE ctermbg=grey cterm=NONE
hi PmenuThumb ctermfg=NONE ctermbg=darkgreen cterm=NONE
hi PmenuSbar ctermfg=NONE ctermbg=NONE cterm=NONE
hi PmenuSel ctermfg=black ctermbg=darkgreen cterm=NONE
hi PmenuSel ctermfg=black ctermbg=darkcyan cterm=NONE
hi SignColumn ctermfg=NONE ctermbg=NONE cterm=NONE
hi Error ctermfg=grey ctermbg=darkred cterm=NONE
hi ErrorMsg ctermfg=grey ctermbg=darkred cterm=NONE
@@ -674,7 +765,7 @@ if s:t_Co >= 8
hi WildMenu ctermfg=black ctermbg=darkyellow cterm=bold
hi debugPC ctermfg=darkblue ctermbg=NONE cterm=reverse
hi debugBreakpoint ctermfg=darkcyan ctermbg=NONE cterm=reverse
hi Visual ctermfg=black ctermbg=darkblue cterm=NONE
hi Visual ctermfg=NONE ctermbg=NONE cterm=reverse
hi MatchParen ctermfg=darkcyan ctermbg=black cterm=reverse
hi VisualNOS ctermfg=black ctermbg=darkcyan cterm=NONE
hi CursorLine ctermfg=NONE ctermbg=NONE cterm=underline
@@ -688,13 +779,13 @@ if s:t_Co >= 8
hi Comment ctermfg=darkblue ctermbg=NONE cterm=NONE
hi Constant ctermfg=darkred ctermbg=NONE cterm=NONE
hi Identifier ctermfg=NONE ctermbg=NONE cterm=NONE
hi Statement ctermfg=black ctermbg=NONE cterm=bold
hi Type ctermfg=darkgreen ctermbg=NONE cterm=bold
hi PreProc ctermfg=darkyellow ctermbg=NONE cterm=NONE
hi Statement ctermfg=grey ctermbg=NONE cterm=bold
hi Type ctermfg=darkgreen ctermbg=NONE cterm=NONE
hi PreProc ctermfg=darkcyan ctermbg=NONE cterm=NONE
hi Special ctermfg=darkcyan ctermbg=NONE cterm=NONE
hi Underlined ctermfg=NONE ctermbg=NONE cterm=underline
hi Title ctermfg=NONE ctermbg=NONE cterm=bold
hi Directory ctermfg=darkcyan ctermbg=NONE cterm=bold
hi Directory ctermfg=darkblue ctermbg=NONE cterm=bold
hi Conceal ctermfg=NONE ctermbg=NONE cterm=NONE
hi Ignore ctermfg=NONE ctermbg=NONE cterm=NONE
hi DiffAdd ctermfg=black ctermbg=darkmagenta cterm=NONE
@@ -719,10 +810,10 @@ if s:t_Co >= 8
hi FoldColumn ctermfg=black ctermbg=NONE cterm=NONE
hi EndOfBuffer ctermfg=black ctermbg=NONE cterm=NONE
hi SpecialKey ctermfg=black ctermbg=NONE cterm=NONE
hi Pmenu ctermfg=grey ctermbg=black cterm=NONE
hi Pmenu ctermfg=NONE ctermbg=black cterm=NONE
hi PmenuThumb ctermfg=NONE ctermbg=darkgreen cterm=NONE
hi PmenuSbar ctermfg=NONE ctermbg=NONE cterm=NONE
hi PmenuSel ctermfg=black ctermbg=darkgreen cterm=NONE
hi PmenuSel ctermfg=NONE ctermbg=darkcyan cterm=NONE
hi SignColumn ctermfg=NONE ctermbg=NONE cterm=NONE
hi Error ctermfg=grey ctermbg=darkred cterm=NONE
hi ErrorMsg ctermfg=grey ctermbg=darkred cterm=NONE
@@ -737,7 +828,7 @@ if s:t_Co >= 8
hi WildMenu ctermfg=black ctermbg=darkyellow cterm=bold
hi debugPC ctermfg=darkblue ctermbg=NONE cterm=reverse
hi debugBreakpoint ctermfg=darkcyan ctermbg=NONE cterm=reverse
hi Visual ctermfg=grey ctermbg=darkblue cterm=NONE
hi Visual ctermfg=NONE ctermbg=NONE cterm=reverse
hi MatchParen ctermfg=darkcyan ctermbg=grey cterm=reverse
hi VisualNOS ctermfg=black ctermbg=darkcyan cterm=NONE
hi CursorLine ctermfg=NONE ctermbg=NONE cterm=underline
@@ -752,12 +843,12 @@ if s:t_Co >= 8
hi Constant ctermfg=darkred ctermbg=NONE cterm=NONE
hi Identifier ctermfg=NONE ctermbg=NONE cterm=NONE
hi Statement ctermfg=black ctermbg=NONE cterm=bold
hi Type ctermfg=darkgreen ctermbg=NONE cterm=bold
hi PreProc ctermfg=darkyellow ctermbg=NONE cterm=NONE
hi Type ctermfg=darkgreen ctermbg=NONE cterm=NONE
hi PreProc ctermfg=darkcyan ctermbg=NONE cterm=NONE
hi Special ctermfg=darkcyan ctermbg=NONE cterm=NONE
hi Underlined ctermfg=NONE ctermbg=NONE cterm=underline
hi Title ctermfg=black ctermbg=NONE cterm=bold
hi Directory ctermfg=darkcyan ctermbg=NONE cterm=bold
hi Directory ctermfg=darkblue ctermbg=NONE cterm=bold
hi Conceal ctermfg=NONE ctermbg=NONE cterm=NONE
hi Ignore ctermfg=NONE ctermbg=NONE cterm=NONE
hi DiffAdd ctermfg=black ctermbg=darkmagenta cterm=NONE
@@ -848,14 +939,14 @@ endif
" Color: color03 #AF875F 137 darkyellow
" Color: color11 #FFD787 222 yellow
" Color: color04 #5F87AF 67 darkblue
" Color: color12 #87AFD7 110 blue
" Color: color05 #D787AF 175 darkmagenta
" Color: color13 #FFAFD7 218 magenta
" Color: color12 #5FAFFF 75 blue
" Color: color05 #D787D7 176 darkmagenta
" Color: color13 #FF87FF 213 magenta
" Color: color06 #5FAFAF 73 darkcyan
" Color: color14 #5FD7D7 116 cyan
" Color: color07 #C6C6C6 251 grey
" Color: color15 #FFFFFF 231 white
" Color: colorDimWhite #EEEEEE 255 grey
" Color: colorDimWhite #E4E4E4 254 grey
" Color: colorLine #262626 235 darkgrey
" Color: colorB #1C1C1C 234 darkgrey
" Color: colorNonT #585858 240 grey
@@ -864,7 +955,7 @@ endif
" Color: colorlC #FF5FFF 207 magenta
" Color: colorV #005F87 24 darkblue
" Color: colorMP #C5E7C5 30 darkcyan
" Color: colorPMenuSel #005F00 22 darkgreen
" Color: colorPMenuSel #444444 238 darkcyan
" Color: colorDim #878787 102 grey
" Color: diffAdd #AF87AF 139 darkmagenta
" Color: diffDelete #D78787 174 darkred
@@ -876,18 +967,18 @@ endif
" Background: light
" Color: color00 #000000 16 black
" Color: color08 #767676 243 darkgrey
" Color: color01 #870000 88 darkred
" Color: color01 #AF0000 124 darkred
" Color: color09 #D70000 160 red
" Color: color02 #008700 28 darkgreen
" Color: color10 #87D787 114 green
" Color: color03 #875F00 94 darkyellow
" Color: color11 #D7D787 186 yellow
" Color: color04 #005FAF 25 darkblue
" Color: color03 #AF5F00 130 darkyellow
" Color: color11 #FFD787 222 yellow
" Color: color04 #005FD7 26 darkblue
" Color: color12 #0087D7 32 blue
" Color: color05 #870087 90 darkmagenta
" Color: color13 #AF00AF 133 magenta
" Color: color05 #AF00AF 127 darkmagenta
" Color: color13 #FF00FF 133 magenta
" Color: color06 #005F5F 23 darkcyan
" Color: color14 #00AFAF 37 cyan
" Color: color14 #008787 30 cyan
" Color: color07 #808080 244 grey
" Color: color15 #FFFFFF 231 white
" Color: colorLine #E4E4E4 254 grey
@@ -898,7 +989,7 @@ endif
" Color: colorlC #FF00FF 201 magenta
" Color: colorV #5F87AF 67 darkblue
" Color: colorMP #C5E7C5 30 darkcyan
" Color: colorPMenuSel #AFD7AF 151 darkgreen
" Color: colorPMenuSel #C6C6C6 251 darkcyan
" Color: colorDim #626262 241 darkgrey
" Color: diffAdd #D7AFD7 182 darkmagenta
" Color: diffDelete #870000 88 darkred

View File

@@ -4,7 +4,7 @@
" Maintainer: Original maintainer Bram Moolenaar <Bram@vim.org>
" Website: https://github.com/vim/colorschemes
" License: Same as Vim
" Last Updated: Tue 23 Aug 2022 16:50:41 MSK
" Last Updated: Fri 02 Sep 2022 09:46:24 MSK
" Generated by Colortemplate v2.2.0
@@ -26,6 +26,8 @@ hi! link CursorLineFold CursorLine
hi! link CursorLineSign CursorLine
hi! link StatuslineTerm Statusline
hi! link StatuslineTermNC StatuslineNC
hi! link MessageWindow Pmenu
hi! link PopupNotification Todo
hi Normal guifg=#000000 guibg=#e4e4e4 gui=NONE cterm=NONE
hi EndOfBuffer guifg=#0000ff guibg=#cccccc gui=bold cterm=bold
hi Folded guifg=#00008b guibg=#d3d3d3 gui=NONE cterm=NONE
@@ -96,6 +98,8 @@ if s:t_Co >= 256
hi! link CursorLineSign CursorLine
hi! link StatuslineTerm Statusline
hi! link StatuslineTermNC StatuslineNC
hi! link MessageWindow Pmenu
hi! link PopupNotification Todo
hi Normal ctermfg=16 ctermbg=254 cterm=NONE
hi EndOfBuffer ctermfg=21 ctermbg=252 cterm=bold
hi Folded ctermfg=18 ctermbg=252 cterm=NONE

View File

@@ -4,7 +4,7 @@
" Maintainer: Original maintainer Ron Aaron <ron@ronware.org>.
" Website: https://github.com/vim/colorschemes
" License: Same as Vim
" Last Updated: Tue 23 Aug 2022 16:50:41 MSK
" Last Updated: Fri 02 Sep 2022 09:47:20 MSK
" Generated by Colortemplate v2.2.0
@@ -26,6 +26,8 @@ hi! link CursorLineFold CursorLine
hi! link CursorLineSign CursorLine
hi! link StatusLineTerm StatusLine
hi! link StatusLineTermNC StatusLineNC
hi! link MessageWindow Pmenu
hi! link PopupNotification Todo
hi Normal guifg=#87ff87 guibg=#000000 gui=NONE cterm=NONE
hi EndOfBuffer guifg=#0000ff guibg=#000000 gui=NONE cterm=NONE
hi StatusLine guifg=#ffffff guibg=#00008b gui=NONE cterm=NONE
@@ -96,6 +98,8 @@ if s:t_Co >= 256
hi! link CursorLineSign CursorLine
hi! link StatusLineTerm StatusLine
hi! link StatusLineTermNC StatusLineNC
hi! link MessageWindow Pmenu
hi! link PopupNotification Todo
hi Normal ctermfg=120 ctermbg=16 cterm=NONE
hi EndOfBuffer ctermfg=21 ctermbg=16 cterm=NONE
hi StatusLine ctermfg=231 ctermbg=18 cterm=NONE

View File

@@ -3,7 +3,7 @@
" Maintainer: Original maintainerRon Aaron <ron@ronware.org>
" Website: https://github.com/vim/colorschemes
" License: Same as Vim
" Last Updated: Tue 23 Aug 2022 16:50:42 MSK
" Last Updated: Wed 14 Sep 2022 19:05:27 MSK
" Generated by Colortemplate v2.2.0
@@ -17,13 +17,15 @@ let s:t_Co = exists('&t_Co') && !has('gui_running') ? (&t_Co ?? 0) : -1
if (has('termguicolors') && &termguicolors) || has('gui_running')
let g:terminal_ansi_colors = ['#000000', '#cd0000', '#00cd00', '#cdcd00', '#0000ee', '#cd00cd', '#00cdcd', '#e5e5e5', '#7f7f7f', '#ff0000', '#00ff00', '#ffff00', '#5c5cff', '#ff00ff', '#00ffff', '#ffffff']
endif
hi Normal guifg=#ffffff guibg=#000000 gui=NONE cterm=NONE
hi! link Terminal Normal
hi! link StatusLineTerm StatusLine
hi! link StatusLineTermNC StatusLineNC
hi! link CurSearch Search
hi! link CursorLineFold CursorLine
hi! link CursorLineSign CursorLine
hi! link MessageWindow Pmenu
hi! link PopupNotification Todo
hi Normal guifg=#ffffff guibg=#000000 gui=NONE cterm=NONE
hi Comment guifg=#808080 guibg=NONE gui=NONE cterm=NONE
hi Constant guifg=#00ffff guibg=NONE gui=NONE cterm=NONE
hi Identifier guifg=#00c0c0 guibg=NONE gui=NONE cterm=NONE
@@ -88,13 +90,15 @@ hi DiffText guifg=#000000 guibg=#c6c6c6 gui=NONE cterm=NONE
hi DiffDelete guifg=#ffffff guibg=#af5faf gui=NONE cterm=NONE
if s:t_Co >= 256
hi Normal ctermfg=231 ctermbg=16 cterm=NONE
hi! link Terminal Normal
hi! link StatusLineTerm StatusLine
hi! link StatusLineTermNC StatusLineNC
hi! link CurSearch Search
hi! link CursorLineFold CursorLine
hi! link CursorLineSign CursorLine
hi! link MessageWindow Pmenu
hi! link PopupNotification Todo
hi Normal ctermfg=231 ctermbg=16 cterm=NONE
hi Comment ctermfg=244 ctermbg=NONE cterm=NONE
hi Constant ctermfg=51 ctermbg=NONE cterm=NONE
hi Identifier ctermfg=37 ctermbg=NONE cterm=NONE
@@ -117,7 +121,7 @@ if s:t_Co >= 256
hi NonText ctermfg=63 ctermbg=NONE cterm=bold
hi EndOfBuffer ctermfg=63 ctermbg=NONE cterm=bold
hi ErrorMsg ctermfg=231 ctermbg=160 cterm=NONE
hi WarningMsg ctermfg=224 ctermbg=NONE cterm=NONE
hi WarningMsg ctermfg=196 ctermbg=NONE cterm=NONE
hi SignColumn ctermfg=51 ctermbg=248 cterm=NONE
hi ColorColumn ctermfg=NONE ctermbg=239 cterm=NONE
hi FoldColumn ctermfg=102 ctermbg=236 cterm=NONE
@@ -163,12 +167,6 @@ endif
if s:t_Co >= 16
hi Normal ctermfg=white ctermbg=black cterm=NONE
hi! link Terminal Normal
hi! link StatusLineTerm StatusLine
hi! link StatusLineTermNC StatusLineNC
hi! link CurSearch Search
hi! link CursorLineFold CursorLine
hi! link CursorLineSign CursorLine
hi Comment ctermfg=darkgrey ctermbg=NONE cterm=NONE
hi Constant ctermfg=cyan ctermbg=NONE cterm=NONE
hi Identifier ctermfg=darkcyan ctermbg=NONE cterm=NONE
@@ -191,7 +189,7 @@ if s:t_Co >= 16
hi NonText ctermfg=blue ctermbg=NONE cterm=bold
hi EndOfBuffer ctermfg=blue ctermbg=NONE cterm=bold
hi ErrorMsg ctermfg=white ctermbg=darkred cterm=NONE
hi WarningMsg ctermfg=darkred ctermbg=NONE cterm=NONE
hi WarningMsg ctermfg=red ctermbg=NONE cterm=NONE
hi SignColumn ctermfg=cyan ctermbg=black cterm=NONE
hi ColorColumn ctermfg=white ctermbg=darkgrey cterm=NONE
hi FoldColumn ctermfg=NONE ctermbg=NONE cterm=NONE
@@ -282,7 +280,6 @@ if s:t_Co >= 8
hi SpellLocal ctermfg=darkmagenta ctermbg=darkyellow cterm=reverse
hi SpellRare ctermfg=darkgreen ctermbg=NONE cterm=reverse
hi Comment ctermfg=grey ctermbg=NONE cterm=bold
hi Comment ctermfg=darkgrey ctermbg=NONE cterm=NONE
hi Constant ctermfg=darkcyan ctermbg=NONE cterm=bold
hi Identifier ctermfg=darkcyan ctermbg=NONE cterm=NONE
hi Statement ctermfg=darkyellow ctermbg=NONE cterm=bold
@@ -405,7 +402,7 @@ endif
" Color: SpecialKey #00ffff 81 cyan
" Color: StatusLineTerm #90ee90 121 darkgreen
" Color: Title #ff00ff 225 magenta
" Color: WarningMsg #ff0000 224 darkred
" Color: WarningMsg #ff0000 196 red
" Color: ToolbarLine #7f7f7f 242 darkgrey
" Color: ToolbarButton #d3d3d3 254 grey
" Color: Underlined #80a0ff 111 darkgreen

View File

@@ -4,7 +4,7 @@
" Maintainer: Original maintainer David Ne\v{c}as (Yeti) <yeti@physics.muni.cz>
" Website: https://github.com/vim/colorschemes
" License: Same as Vim
" Last Updated: Tue 23 Aug 2022 16:50:42 MSK
" Last Updated: Fri 02 Sep 2022 09:50:02 MSK
" Generated by Colortemplate v2.2.0
@@ -24,6 +24,8 @@ hi! link LineNrBelow LineNr
hi! link CurSearch Search
hi! link CursorLineFold CursorLine
hi! link CursorLineSign CursorLine
hi! link MessageWindow Pmenu
hi! link PopupNotification Todo
hi Normal guifg=#000000 guibg=#ffdab9 gui=NONE cterm=NONE
hi Folded guifg=#000000 guibg=#e3c1a5 gui=NONE cterm=NONE
hi CursorLine guifg=NONE guibg=#f5c195 gui=NONE cterm=NONE
@@ -94,6 +96,8 @@ if s:t_Co >= 256
hi! link CurSearch Search
hi! link CursorLineFold CursorLine
hi! link CursorLineSign CursorLine
hi! link MessageWindow Pmenu
hi! link PopupNotification Todo
hi Normal ctermfg=16 ctermbg=223 cterm=NONE
hi Folded ctermfg=16 ctermbg=252 cterm=NONE
hi CursorLine ctermfg=NONE ctermbg=180 cterm=NONE

View File

@@ -4,7 +4,7 @@
" Maintainer: neutaaaaan <neutaaaaan-gh@protonmail.com>
" Website: https://github.com/vim/colorschemes
" License: Vim License (see `:help license`)`
" Last Updated: Tue 23 Aug 2022 16:50:43 MSK
" Last Updated: Fri 16 Sep 2022 09:52:50 MSK
" Generated by Colortemplate v2.2.0
@@ -16,6 +16,8 @@ let s:t_Co = exists('&t_Co') && !has('gui_running') ? (&t_Co ?? 0) : -1
hi! link Terminal Normal
hi! link StatusLineTerm StatusLine
hi! link StatusLineTermNC StatusLineNC
hi! link MessageWindow Pmenu
hi! link PopupNotification Todo
hi! link Boolean Constant
hi! link Character Constant
hi! link Conditional Statement
@@ -59,8 +61,8 @@ if &background ==# 'dark'
hi DiffChange guifg=#87afd7 guibg=#080808 gui=reverse cterm=reverse
hi DiffDelete guifg=#d75f5f guibg=#080808 gui=reverse cterm=reverse
hi DiffText guifg=#d787d7 guibg=#080808 gui=reverse cterm=reverse
hi Directory guifg=#dadada guibg=#080808 gui=NONE cterm=NONE
hi EndOfBuffer guifg=#dadada guibg=#080808 gui=NONE cterm=NONE
hi Directory guifg=#dadada guibg=NONE gui=NONE cterm=NONE
hi EndOfBuffer guifg=#dadada guibg=NONE gui=NONE cterm=NONE
hi ErrorMsg guifg=#dadada guibg=#080808 gui=reverse cterm=reverse
hi FoldColumn guifg=#707070 guibg=NONE gui=NONE cterm=NONE
hi Folded guifg=#707070 guibg=#080808 gui=NONE cterm=NONE
@@ -84,13 +86,13 @@ if &background ==# 'dark'
hi SpellLocal guifg=#d787d7 guibg=NONE guisp=#d787d7 gui=undercurl cterm=underline
hi SpellRare guifg=#00afaf guibg=NONE guisp=#00afaf gui=undercurl cterm=underline
hi StatusLine guifg=#080808 guibg=#dadada gui=bold cterm=bold
hi StatusLineNC guifg=#707070 guibg=#080808 gui=underline cterm=underline
hi TabLine guifg=#707070 guibg=#080808 gui=underline cterm=underline
hi StatusLineNC guifg=#707070 guibg=#080808 gui=reverse cterm=reverse
hi TabLine guifg=#707070 guibg=#080808 gui=reverse cterm=reverse
hi TabLineFill guifg=#dadada guibg=NONE gui=NONE cterm=NONE
hi TabLineSel guifg=#080808 guibg=#dadada gui=bold cterm=bold
hi Title guifg=#dadada guibg=NONE gui=NONE cterm=NONE
hi Title guifg=NONE guibg=NONE gui=NONE ctermfg=NONE ctermbg=NONE cterm=NONE
hi VertSplit guifg=#707070 guibg=#080808 gui=NONE cterm=NONE
hi Visual guifg=NONE guibg=NONE gui=reverse ctermfg=NONE ctermbg=NONE cterm=reverse
hi Visual guifg=#ffaf00 guibg=#080808 gui=reverse cterm=reverse
hi VisualNOS guifg=NONE guibg=#303030 gui=NONE cterm=NONE
hi WarningMsg guifg=#dadada guibg=NONE gui=NONE cterm=NONE
hi WildMenu guifg=#00afff guibg=#080808 gui=bold cterm=bold
@@ -153,9 +155,9 @@ else
hi TabLine guifg=#080808 guibg=#a8a8a8 gui=NONE cterm=NONE
hi TabLineFill guifg=#080808 guibg=#d7d7d7 gui=NONE cterm=NONE
hi TabLineSel guifg=#eeeeee guibg=#080808 gui=bold cterm=bold
hi Title guifg=#080808 guibg=NONE gui=NONE cterm=NONE
hi Title guifg=NONE guibg=NONE gui=NONE ctermfg=NONE ctermbg=NONE cterm=NONE
hi VertSplit guifg=#626262 guibg=#d7d7d7 gui=NONE cterm=NONE
hi Visual guifg=NONE guibg=NONE gui=reverse ctermfg=NONE ctermbg=NONE cterm=reverse
hi Visual guifg=#ffaf00 guibg=#080808 gui=reverse cterm=reverse
hi VisualNOS guifg=NONE guibg=#eeeeee gui=NONE cterm=NONE
hi WarningMsg guifg=#080808 guibg=NONE gui=NONE cterm=NONE
hi WildMenu guifg=#080808 guibg=#eeeeee gui=bold cterm=bold
@@ -188,8 +190,8 @@ if s:t_Co >= 256
hi DiffChange ctermfg=110 ctermbg=232 cterm=reverse
hi DiffDelete ctermfg=167 ctermbg=232 cterm=reverse
hi DiffText ctermfg=176 ctermbg=232 cterm=reverse
hi Directory ctermfg=253 ctermbg=232 cterm=NONE
hi EndOfBuffer ctermfg=253 ctermbg=232 cterm=NONE
hi Directory ctermfg=253 ctermbg=NONE cterm=NONE
hi EndOfBuffer ctermfg=253 ctermbg=NONE cterm=NONE
hi ErrorMsg ctermfg=253 ctermbg=232 cterm=reverse
hi FoldColumn ctermfg=242 ctermbg=NONE cterm=NONE
hi Folded ctermfg=242 ctermbg=232 cterm=NONE
@@ -213,13 +215,13 @@ if s:t_Co >= 256
hi SpellLocal ctermfg=176 ctermbg=NONE cterm=underline
hi SpellRare ctermfg=37 ctermbg=NONE cterm=underline
hi StatusLine ctermfg=232 ctermbg=253 cterm=bold
hi StatusLineNC ctermfg=242 ctermbg=232 cterm=underline
hi TabLine ctermfg=242 ctermbg=232 cterm=underline
hi StatusLineNC ctermfg=242 ctermbg=232 cterm=reverse
hi TabLine ctermfg=242 ctermbg=232 cterm=reverse
hi TabLineFill ctermfg=253 ctermbg=NONE cterm=NONE
hi TabLineSel ctermfg=232 ctermbg=253 cterm=bold
hi Title ctermfg=253 ctermbg=NONE cterm=NONE
hi Title ctermfg=NONE ctermbg=NONE cterm=NONE
hi VertSplit ctermfg=242 ctermbg=232 cterm=NONE
hi Visual ctermfg=NONE ctermbg=NONE cterm=reverse
hi Visual ctermfg=214 ctermbg=232 cterm=reverse
hi VisualNOS ctermfg=NONE ctermbg=236 cterm=NONE
hi WarningMsg ctermfg=253 ctermbg=NONE cterm=NONE
hi WildMenu ctermfg=39 ctermbg=232 cterm=bold
@@ -279,9 +281,9 @@ if s:t_Co >= 256
hi TabLine ctermfg=232 ctermbg=248 cterm=NONE
hi TabLineFill ctermfg=232 ctermbg=188 cterm=NONE
hi TabLineSel ctermfg=255 ctermbg=232 cterm=bold
hi Title ctermfg=232 ctermbg=NONE cterm=NONE
hi Title ctermfg=NONE ctermbg=NONE cterm=NONE
hi VertSplit ctermfg=241 ctermbg=188 cterm=NONE
hi Visual ctermfg=NONE ctermbg=NONE cterm=reverse
hi Visual ctermfg=214 ctermbg=232 cterm=reverse
hi VisualNOS ctermfg=NONE ctermbg=255 cterm=NONE
hi WarningMsg ctermfg=232 ctermbg=NONE cterm=NONE
hi WildMenu ctermfg=232 ctermbg=255 cterm=bold
@@ -348,7 +350,7 @@ if s:t_Co >= 16
hi TabLineSel ctermfg=NONE ctermbg=NONE cterm=bold,reverse
hi Title ctermfg=NONE ctermbg=NONE cterm=NONE
hi VertSplit ctermfg=NONE ctermbg=NONE cterm=NONE
hi Visual ctermfg=NONE ctermbg=NONE cterm=reverse
hi Visual ctermfg=darkyellow ctermbg=black cterm=reverse
hi VisualNOS ctermfg=NONE ctermbg=NONE cterm=NONE
hi WarningMsg ctermfg=NONE ctermbg=NONE cterm=standout
hi WildMenu ctermfg=NONE ctermbg=NONE cterm=bold
@@ -410,7 +412,7 @@ if s:t_Co >= 16
hi TabLineSel ctermfg=NONE ctermbg=NONE cterm=bold,reverse
hi Title ctermfg=NONE ctermbg=NONE cterm=NONE
hi VertSplit ctermfg=NONE ctermbg=NONE cterm=NONE
hi Visual ctermfg=NONE ctermbg=NONE cterm=reverse
hi Visual ctermfg=darkyellow ctermbg=black cterm=reverse
hi VisualNOS ctermfg=NONE ctermbg=NONE cterm=NONE
hi WarningMsg ctermfg=NONE ctermbg=NONE cterm=standout
hi WildMenu ctermfg=NONE ctermbg=NONE cterm=bold
@@ -477,7 +479,7 @@ if s:t_Co >= 8
hi TabLineSel ctermfg=NONE ctermbg=NONE cterm=bold,reverse
hi Title ctermfg=NONE ctermbg=NONE cterm=NONE
hi VertSplit ctermfg=NONE ctermbg=NONE cterm=NONE
hi Visual ctermfg=NONE ctermbg=NONE cterm=reverse
hi Visual ctermfg=darkyellow ctermbg=black cterm=reverse
hi VisualNOS ctermfg=NONE ctermbg=NONE cterm=NONE
hi WarningMsg ctermfg=NONE ctermbg=NONE cterm=standout
hi WildMenu ctermfg=NONE ctermbg=NONE cterm=bold
@@ -539,7 +541,7 @@ if s:t_Co >= 8
hi TabLineSel ctermfg=NONE ctermbg=NONE cterm=bold,reverse
hi Title ctermfg=NONE ctermbg=NONE cterm=NONE
hi VertSplit ctermfg=NONE ctermbg=NONE cterm=NONE
hi Visual ctermfg=NONE ctermbg=NONE cterm=reverse
hi Visual ctermfg=darkyellow ctermbg=black cterm=reverse
hi VisualNOS ctermfg=NONE ctermbg=NONE cterm=NONE
hi WarningMsg ctermfg=NONE ctermbg=NONE cterm=standout
hi WildMenu ctermfg=NONE ctermbg=NONE cterm=bold
@@ -650,7 +652,7 @@ endif
" Color: diffred #d75f5f 167 darkred
" Color: diffgreen #00af00 34 darkgreen
" Color: diffblue #87afd7 110 darkblue
" Color: diffpink #d787d7 176 darkmagenta
" Color: diffpink #d787d7 176 darkmagenta
" Color: uipink #ff00af 199 magenta
" Color: uilime #afff00 154 green
" Color: uiteal #00ffaf 49 green

View File

@@ -3,7 +3,7 @@
" Maintainer: original maintainer Ron Aaron <ron@ronware.org>
" Website: https://www.github.com/vim/colorschemes
" License: Same as Vim
" Last Updated: Tue 23 Aug 2022 16:50:45 MSK
" Last Updated: Fri 02 Sep 2022 09:50:56 MSK
" Generated by Colortemplate v2.2.0
@@ -46,6 +46,8 @@ hi! link CursorLineFold CursorLine
hi! link CursorLineSign CursorLine
hi! link LineNrAbove LineNr
hi! link LineNrBelow LineNr
hi! link MessageWindow Pmenu
hi! link PopupNotification Todo
if (has('termguicolors') && &termguicolors) || has('gui_running')
let g:terminal_ansi_colors = ['#000000', '#cd0000', '#00cd00', '#cdcd00', '#0000ee', '#cd00cd', '#00cdcd', '#e5e5e5', '#7f7f7f', '#ff0000', '#00ff00', '#ffff00', '#5c5cff', '#ff00ff', '#00ffff', '#ffffff']

View File

@@ -4,7 +4,7 @@
" Maintainer: Original maintainer is Yasuhiro Matsumoto <mattn@mail.goo.ne.jp>
" Website: https://github.com/vim/colorschemes
" License: Same as Vim
" Last Updated: Tue 23 Aug 2022 16:50:46 MSK
" Last Updated: Fri 02 Sep 2022 09:51:42 MSK
" Generated by Colortemplate v2.2.0
@@ -28,6 +28,8 @@ hi! link EndOfBuffer NonText
hi! link ErrorMsg Error
hi! link Tag Special
hi! link Operator Statement
hi! link MessageWindow Pmenu
hi! link PopupNotification Todo
hi Normal guifg=#000000 guibg=#ffffff gui=NONE cterm=NONE
hi Folded guifg=#00008b guibg=#dadada gui=NONE cterm=NONE
hi CursorLine guifg=NONE guibg=#dadada gui=NONE cterm=NONE
@@ -104,6 +106,8 @@ if s:t_Co >= 256
hi! link ErrorMsg Error
hi! link Tag Special
hi! link Operator Statement
hi! link MessageWindow Pmenu
hi! link PopupNotification Todo
hi Normal ctermfg=16 ctermbg=231 cterm=NONE
hi Folded ctermfg=18 ctermbg=253 cterm=NONE
hi CursorLine ctermfg=NONE ctermbg=253 cterm=NONE

View File

@@ -4,7 +4,7 @@
" Maintainer: Original maintainer Ralph Amissah <ralph@amissah.com>
" Website: https://github.com/vim/colorschemes
" License: Same as Vim
" Last Updated: Tue 23 Aug 2022 16:50:46 MSK
" Last Updated: Fri 02 Sep 2022 09:52:25 MSK
" Generated by Colortemplate v2.2.0
@@ -24,6 +24,8 @@ hi! link LineNrBelow LineNr
hi! link CurSearch Search
hi! link CursorLineFold CursorLine
hi! link CursorLineSign CursorLine
hi! link MessageWindow Pmenu
hi! link PopupNotification Todo
hi Normal guifg=#ffffff guibg=#262626 gui=NONE cterm=NONE
hi EndOfBuffer guifg=#5f87d7 guibg=NONE gui=NONE cterm=NONE
hi StatusLine guifg=#000000 guibg=#afaf87 gui=NONE cterm=NONE
@@ -99,6 +101,8 @@ if s:t_Co >= 256
hi! link CurSearch Search
hi! link CursorLineFold CursorLine
hi! link CursorLineSign CursorLine
hi! link MessageWindow Pmenu
hi! link PopupNotification Todo
hi Normal ctermfg=231 ctermbg=235 cterm=NONE
hi EndOfBuffer ctermfg=68 ctermbg=NONE cterm=NONE
hi StatusLine ctermfg=16 ctermbg=144 cterm=NONE

View File

@@ -4,7 +4,7 @@
" Maintainer: Original maintainer Thorsten Maerz <info@netztorte.de>
" Website: https://github.com/vim/colorschemes
" License: Same as Vim
" Last Updated: Tue 23 Aug 2022 16:50:47 MSK
" Last Updated: Fri 02 Sep 2022 09:53:21 MSK
" Generated by Colortemplate v2.2.0
@@ -26,6 +26,8 @@ hi! link CursorLineFold CursorLine
hi! link CursorLineSign CursorLine
hi! link StatusLineTerm StatusLine
hi! link StatusLineTermNC StatusLineNC
hi! link MessageWindow Pmenu
hi! link PopupNotification Todo
hi Normal guifg=#cccccc guibg=#000000 gui=NONE cterm=NONE
hi Comment guifg=#80a0ff guibg=NONE gui=NONE cterm=NONE
hi Constant guifg=#ffa0a0 guibg=NONE gui=NONE cterm=NONE
@@ -97,6 +99,8 @@ if s:t_Co >= 256
hi! link CursorLineSign CursorLine
hi! link StatusLineTerm StatusLine
hi! link StatusLineTermNC StatusLineNC
hi! link MessageWindow Pmenu
hi! link PopupNotification Todo
hi Normal ctermfg=251 ctermbg=16 cterm=NONE
hi Comment ctermfg=111 ctermbg=NONE cterm=NONE
hi Constant ctermfg=217 ctermbg=NONE cterm=NONE

View File

@@ -4,7 +4,7 @@
" Maintainer: Original maintainer Ron Aaron <ron@ronware.org>
" Website: https://github.com/vim/colorschemes
" License: Same as Vim
" Last Updated: Tue 23 Aug 2022 16:50:48 MSK
" Last Updated: Fri 02 Sep 2022 09:54:15 MSK
" Generated by Colortemplate v2.2.0
@@ -24,6 +24,8 @@ hi! link LineNrBelow LineNr
hi! link CurSearch Search
hi! link CursorLineFold CursorLine
hi! link CursorLineSign CursorLine
hi! link MessageWindow Pmenu
hi! link PopupNotification Todo
hi Normal guifg=#000000 guibg=#ffffff gui=NONE cterm=NONE
hi Folded guifg=#00008b guibg=#d3d3d3 gui=NONE cterm=NONE
hi CursorLine guifg=NONE guibg=#e5e5e5 gui=NONE cterm=NONE
@@ -95,6 +97,8 @@ if s:t_Co >= 256
hi! link CurSearch Search
hi! link CursorLineFold CursorLine
hi! link CursorLineSign CursorLine
hi! link MessageWindow Pmenu
hi! link PopupNotification Todo
hi Normal ctermfg=16 ctermbg=231 cterm=NONE
hi Folded ctermfg=18 ctermbg=252 cterm=NONE
hi CursorLine ctermfg=NONE ctermbg=254 cterm=NONE

31
runtime/compiler/hare.vim Normal file
View File

@@ -0,0 +1,31 @@
" Vim compiler file
" Compiler: Hare Compiler
" Maintainer: Amelia Clarke <me@rsaihe.dev>
" Last Change: 2022-09-21
if exists("g:current_compiler")
finish
endif
let g:current_compiler = "hare"
let s:cpo_save = &cpo
set cpo&vim
if exists(':CompilerSet') != 2
command -nargs=* CompilerSet setlocal <args>
endif
if filereadable("Makefile") || filereadable("makefile")
CompilerSet makeprg=make
else
CompilerSet makeprg=hare\ build
endif
CompilerSet errorformat=
\Error\ %f:%l:%c:\ %m,
\Syntax\ error:\ %.%#\ at\ %f:%l:%c\\,\ %m,
\%-G%.%#
let &cpo = s:cpo_save
unlet s:cpo_save
" vim: tabstop=2 shiftwidth=2 expandtab

View File

@@ -115,6 +115,7 @@ DOCS = \
todo.txt \
uganda.txt \
undo.txt \
userfunc.txt \
usr_01.txt \
usr_02.txt \
usr_03.txt \
@@ -265,6 +266,7 @@ HTMLS = \
todo.html \
uganda.html \
undo.html \
userfunc.html \
usr_01.html \
usr_02.html \
usr_03.html \

View File

@@ -640,6 +640,8 @@ CmdwinLeave Before leaving the command-line window.
|cmdwin-char|
*ColorScheme*
ColorScheme After loading a color scheme. |:colorscheme|
Not triggered if the color scheme is not
found.
The pattern is matched against the
colorscheme name. <afile> can be used for the
name of the actual file where this option was

View File

@@ -1,4 +1,4 @@
*builtin.txt* For Vim version 9.0. Last change: 2022 Jun 27
*builtin.txt* For Vim version 9.0. Last change: 2022 Sep 17
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -195,7 +195,7 @@ foldlevel({lnum}) Number fold level at {lnum}
foldtext() String line displayed for closed fold
foldtextresult({lnum}) String text for closed fold at {lnum}
foreground() Number bring the Vim window to the foreground
fullcommand({name}) String get full command from {name}
fullcommand({name} [, {vim9}]) String get full command from {name}
funcref({name} [, {arglist}] [, {dict}])
Funcref reference to function {name}
function({name} [, {arglist}] [, {dict}])
@@ -325,6 +325,8 @@ js_encode({expr}) String encode JS style JSON
json_decode({string}) any decode JSON
json_encode({expr}) String encode JSON
keys({dict}) List keys in {dict}
keytrans({string}) String translate internal keycodes to a form
that can be used by |:map|
len({expr}) Number the length of {expr}
libcall({lib}, {func}, {arg}) String call {func} in library {lib} with {arg}
libcallnr({lib}, {func}, {arg}) Number idem, but return a Number
@@ -471,7 +473,8 @@ remove({blob}, {idx} [, {end}]) Number/Blob
remove bytes {idx}-{end} from {blob}
remove({dict}, {key}) any remove entry {key} from {dict}
rename({from}, {to}) Number rename (move) file from {from} to {to}
repeat({expr}, {count}) String repeat {expr} {count} times
repeat({expr}, {count}) List/Blob/String
repeat {expr} {count} times
resolve({filename}) String get filename a shortcut points to
reverse({list}) List reverse {list} in-place
round({expr}) Float round off {expr}
@@ -750,8 +753,6 @@ abs({expr}) *abs()*
Can also be used as a |method|: >
Compute()->abs()
< {only available when compiled with the |+float| feature}
acos({expr}) *acos()*
Return the arc cosine of {expr} measured in radians, as a
@@ -767,8 +768,6 @@ acos({expr}) *acos()*
Can also be used as a |method|: >
Compute()->acos()
< {only available when compiled with the |+float| feature}
add({object}, {expr}) *add()*
Append the item {expr} to |List| or |Blob| {object}. Returns
@@ -901,8 +900,6 @@ asin({expr}) *asin()*
Can also be used as a |method|: >
Compute()->asin()
<
{only available when compiled with the |+float| feature}
assert_ functions are documented here: |assert-functions-details|
@@ -922,8 +919,6 @@ atan({expr}) *atan()*
Can also be used as a |method|: >
Compute()->atan()
<
{only available when compiled with the |+float| feature}
atan2({expr1}, {expr2}) *atan2()*
@@ -940,8 +935,6 @@ atan2({expr1}, {expr2}) *atan2()*
Can also be used as a |method|: >
Compute()->atan2(1)
<
{only available when compiled with the |+float| feature}
autocmd_add({acmds}) *autocmd_add()*
@@ -1425,8 +1418,6 @@ ceil({expr}) *ceil()*
Can also be used as a |method|: >
Compute()->ceil()
<
{only available when compiled with the |+float| feature}
ch_ functions are documented here: |channel-functions-details|
@@ -1671,7 +1662,7 @@ complete_info([{what}]) *complete_info()*
typed text only, or the last completion after
no item is selected when using the <Up> or
<Down> keys)
inserted Inserted string. [NOT IMPLEMENT YET]
inserted Inserted string. [NOT IMPLEMENTED YET]
*complete_info_mode*
mode values are:
@@ -1798,8 +1789,6 @@ cos({expr}) *cos()*
Can also be used as a |method|: >
Compute()->cos()
<
{only available when compiled with the |+float| feature}
cosh({expr}) *cosh()*
@@ -1815,8 +1804,6 @@ cosh({expr}) *cosh()*
Can also be used as a |method|: >
Compute()->cosh()
<
{only available when compiled with the |+float| feature}
count({comp}, {expr} [, {ic} [, {start}]]) *count()*
@@ -2402,8 +2389,6 @@ exp({expr}) *exp()*
Can also be used as a |method|: >
Compute()->exp()
<
{only available when compiled with the |+float| feature}
expand({string} [, {nosuf} [, {list}]]) *expand()*
@@ -2804,8 +2789,6 @@ float2nr({expr}) *float2nr()*
Can also be used as a |method|: >
Compute()->float2nr()
<
{only available when compiled with the |+float| feature}
floor({expr}) *floor()*
@@ -2823,8 +2806,6 @@ floor({expr}) *floor()*
Can also be used as a |method|: >
Compute()->floor()
<
{only available when compiled with the |+float| feature}
fmod({expr1}, {expr2}) *fmod()*
@@ -2845,8 +2826,6 @@ fmod({expr1}, {expr2}) *fmod()*
Can also be used as a |method|: >
Compute()->fmod(1.22)
<
{only available when compiled with |+float| feature}
fnameescape({string}) *fnameescape()*
@@ -2964,14 +2943,20 @@ foreground() Move the Vim window to the foreground. Useful when sent from
{only in the Win32, Motif and GTK GUI versions and the
Win32 console version}
fullcommand({name}) *fullcommand()*
fullcommand({name} [, {vim9}]) *fullcommand()*
Get the full command name from a short abbreviated command
name; see |20.2| for details on command abbreviations.
The string argument {name} may start with a `:` and can
include a [range], these are skipped and not returned.
Returns an empty string if a command doesn't exist or if it's
ambiguous (for user-defined commands).
Returns an empty string if a command doesn't exist, if it's
ambiguous (for user-defined commands) or cannot be shortened
this way. |vim9-no-shorten|
Without the {vim9} argument uses the current script version.
If {vim9} is present and FALSE then legacy script rules are
used. When {vim9} is present and TRUE then Vim9 rules are
used, e.g. "en" is not a short form of "endif".
For example `fullcommand('s')`, `fullcommand('sub')`,
`fullcommand(':%substitute')` all return "substitute".
@@ -3038,10 +3023,10 @@ function({name} [, {arglist}] [, {dict}])
Funcref. The extra arguments are appended to the list of
arguments. Example: >
func Callback(arg1, arg2, name)
...
"...
let Func = function('Callback', ['one'])
let Func2 = function(Func, ['two'])
...
"...
call Func2('name')
< Invokes the function as with: >
call Callback('one', 'two', 'name')
@@ -3051,22 +3036,23 @@ function({name} [, {arglist}] [, {dict}])
function Callback() dict
echo "called for " .. self.name
endfunction
...
"...
let context = {"name": "example"}
let Func = function('Callback', context)
...
"...
call Func() " will echo: called for example
< The use of function() is not needed when there are no extra
arguments, these two are equivalent: >
arguments, these two are equivalent, if Callback() is defined
as context.Callback(): >
let Func = function('Callback', context)
let Func = context.Callback
< The argument list and the Dictionary can be combined: >
function Callback(arg1, count) dict
...
"...
let context = {"name": "example"}
let Func = function('Callback', ['one'], context)
...
"...
call Func(500)
< Invokes the function as with: >
call context.Callback('one', 500)
@@ -5040,8 +5026,6 @@ isinf({expr}) *isinf()*
Can also be used as a |method|: >
Compute()->isinf()
<
{only available when compiled with the |+float| feature}
islocked({expr}) *islocked()* *E786*
The result is a Number, which is |TRUE| when {expr} is the
@@ -5070,8 +5054,6 @@ isnan({expr}) *isnan()*
Can also be used as a |method|: >
Compute()->isnan()
<
{only available when compiled with the |+float| feature}
items({dict}) *items()*
Return a |List| with all the key-value pairs of {dict}. Each
@@ -5203,6 +5185,16 @@ keys({dict}) *keys()*
Can also be used as a |method|: >
mydict->keys()
keytrans({string}) *keytrans()*
Turn the internal byte representation of keys into a form that
can be used for |:map|. E.g. >
:let xx = "\<C-Home>"
:echo keytrans(xx)
< <C-Home>
Can also be used as a |method|: >
"\<C-Home>"->keytrans()
< *len()* *E701*
len({expr}) The result is a Number, which is the length of the argument.
When {expr} is a String or a Number the length in bytes is
@@ -5490,8 +5482,6 @@ log({expr}) *log()*
Can also be used as a |method|: >
Compute()->log()
<
{only available when compiled with the |+float| feature}
log10({expr}) *log10()*
@@ -5506,8 +5496,6 @@ log10({expr}) *log10()*
Can also be used as a |method|: >
Compute()->log10()
<
{only available when compiled with the |+float| feature}
luaeval({expr} [, {expr}]) *luaeval()*
Evaluate Lua expression {expr} and return its result converted
@@ -5515,8 +5503,7 @@ luaeval({expr} [, {expr}]) *luaeval()*
argument accessible as _A inside first {expr}.
Strings are returned as they are.
Boolean objects are converted to numbers.
Numbers are converted to |Float| values if vim was compiled
with |+float| and to numbers otherwise.
Numbers are converted to |Float| values.
Dictionaries and lists obtained by vim.eval() are returned
as-is.
Other objects are returned as zero without any errors.
@@ -5877,7 +5864,7 @@ matchadd({group}, {pattern} [, {priority} [, {id} [, {dict}]]])
respectively. 3 is reserved for use by the |matchparen|
plugin.
If the {id} argument is not specified or -1, |matchadd()|
automatically chooses a free ID.
automatically chooses a free ID, which is at least 1000.
The optional {dict} argument allows for further custom
values. Currently this is used to specify a match specific
@@ -5931,8 +5918,6 @@ matchaddpos({group}, {pos} [, {priority} [, {id} [, {dict}]]])
- A list with three numbers, e.g., [23, 11, 3]. As above, but
the third number gives the length of the highlight in bytes.
The maximum number of positions in {pos} is 8.
Returns -1 on error.
Example: >
@@ -6238,8 +6223,26 @@ min({expr}) Return the minimum value of all items in {expr}. Example: >
mkdir({name} [, {path} [, {prot}]])
Create directory {name}.
If {path} is "p" then intermediate directories are created as
necessary. Otherwise it must be "".
If {path} contains "p" then intermediate directories are
created as necessary. Otherwise it must be "".
If {path} contains "D" then {name} is deleted at the end of
the current function, as with: >
defer delete({name}, 'd')
<
If {path} contains "R" then {name} is deleted recursively at
the end of the current function, as with: >
defer delete({name}, 'rf')
< Note that when {name} has more than one part and "p" is used
some directories may already exist. Only the first one that
is created and what it contains is scheduled to be deleted.
E.g. when using: >
call mkdir('subdir/tmp/autoload', 'pR')
< and "subdir" already exists then "subdir/tmp" will be
scheduled for deletion, like with: >
defer delete('subdir/tmp', 'rf')
< Note that if scheduling the defer fails the directory is not
deleted. This should only happen when out of memory.
If {prot} is given it is used to set the protection bits of
the new directory. The default is 0o755 (rwxr-xr-x: r/w for
@@ -6445,8 +6448,6 @@ pow({x}, {y}) *pow()*
Can also be used as a |method|: >
Compute()->pow(3)
<
{only available when compiled with the |+float| feature}
prevnonblank({lnum}) *prevnonblank()*
Return the line number of the first line at or above {lnum}
@@ -7275,8 +7276,8 @@ repeat({expr}, {count}) *repeat()*
result. Example: >
:let separator = repeat('-', 80)
< When {count} is zero or negative the result is empty.
When {expr} is a |List| the result is {expr} concatenated
{count} times. Example: >
When {expr} is a |List| or a |Blob| the result is {expr}
concatenated {count} times. Example: >
:let longlist = repeat(['a', 'b'], 3)
< Results in ['a', 'b', 'a', 'b', 'a', 'b'].
@@ -7328,8 +7329,6 @@ round({expr}) *round()*
Can also be used as a |method|: >
Compute()->round()
<
{only available when compiled with the |+float| feature}
rubyeval({expr}) *rubyeval()*
Evaluate Ruby expression {expr} and return its result
@@ -8498,8 +8497,6 @@ sin({expr}) *sin()*
Can also be used as a |method|: >
Compute()->sin()
<
{only available when compiled with the |+float| feature}
sinh({expr}) *sinh()*
@@ -8515,8 +8512,6 @@ sinh({expr}) *sinh()*
Can also be used as a |method|: >
Compute()->sinh()
<
{only available when compiled with the |+float| feature}
slice({expr}, {start} [, {end}]) *slice()*
@@ -8783,8 +8778,6 @@ sqrt({expr}) *sqrt()*
Can also be used as a |method|: >
Compute()->sqrt()
<
{only available when compiled with the |+float| feature}
srand([{expr}]) *srand()*
@@ -8858,8 +8851,6 @@ str2float({string} [, {quoted}]) *str2float()*
Can also be used as a |method|: >
let f = text->substitute(',', '', 'g')->str2float()
<
{only available when compiled with the |+float| feature}
str2list({string} [, {utf8}]) *str2list()*
Return a list containing the number values which represent
@@ -9605,8 +9596,6 @@ tan({expr}) *tan()*
Can also be used as a |method|: >
Compute()->tan()
<
{only available when compiled with the |+float| feature}
tanh({expr}) *tanh()*
@@ -9622,8 +9611,6 @@ tanh({expr}) *tanh()*
Can also be used as a |method|: >
Compute()->tanh()
<
{only available when compiled with the |+float| feature}
tempname() *tempname()* *temp-file-name*
@@ -9859,8 +9846,6 @@ trunc({expr}) *trunc()*
Can also be used as a |method|: >
Compute()->trunc()
<
{only available when compiled with the |+float| feature}
*type()*
type({expr}) The result is a Number representing the type of {expr}.
Instead of using the number directly, it is better to use the
@@ -10448,34 +10433,43 @@ writefile({object}, {fname} [, {flags}])
When {object} is a |List| write it to file {fname}. Each list
item is separated with a NL. Each list item must be a String
or Number.
When {flags} contains "b" then binary mode is used: There will
not be a NL after the last list item. An empty item at the
end does cause the last line in the file to end in a NL.
When {object} is a |Blob| write the bytes to file {fname}
unmodified.
When {flags} contains "a" then append mode is used, lines are
appended to the file: >
:call writefile(["foo"], "event.log", "a")
:call writefile(["bar"], "event.log", "a")
<
When {flags} contains "s" then fsync() is called after writing
the file. This flushes the file to disk, if possible. This
takes more time but avoids losing the file if the system
crashes.
When {flags} does not contain "S" or "s" then fsync() is
called if the 'fsync' option is set.
When {flags} contains "S" then fsync() is not called, even
when 'fsync' is set.
All NL characters are replaced with a NUL character.
Inserting CR characters needs to be done before passing {list}
to writefile().
When {object} is a |Blob| write the bytes to file {fname}
unmodified, also when binary mode is not specified.
{flags} must be a String. These characters are recognized:
'b' Binary mode is used: There will not be a NL after the
last list item. An empty item at the end does cause the
last line in the file to end in a NL.
'a' Append mode is used, lines are appended to the file: >
:call writefile(["foo"], "event.log", "a")
:call writefile(["bar"], "event.log", "a")
<
'D' Delete the file when the current function ends. This
works like: >
:defer delete({fname})
< Fails when not in a function. Also see |:defer|.
's' fsync() is called after writing the file. This flushes
the file to disk, if possible. This takes more time but
avoids losing the file if the system crashes.
'S' fsync() is not called, even when 'fsync' is set.
When {flags} does not contain "S" or "s" then fsync() is
called if the 'fsync' option is set.
An existing file is overwritten, if possible.
When the write fails -1 is returned, otherwise 0. There is an
error message if the file can't be created or when writing
fails.
Also see |readfile()|.
To copy a file byte for byte: >
:let fl = readfile("foo", "b")

View File

@@ -1,4 +1,4 @@
*change.txt* For Vim version 9.0. Last change: 2022 May 26
*change.txt* For Vim version 9.0. Last change: 2022 Sep 13
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -1188,11 +1188,20 @@ used. If you do need it you can use |p| with another register. E.g., yank
the text to copy, Visually select the text to replace and use "0p . You can
repeat this as many times as you like, and the unnamed register will be
changed each time.
When you use a blockwise Visual mode command and yank only a single line into
a register, a paste on a visual selected area will paste that single line on
each of the selected lines (thus replacing the blockwise selected region by a
block of the pasted line).
*blockwise-put*
When a register contains text from one line (characterwise), using a
blockwise Visual selection, putting that register will paste that text
repeatedly in each of the selected lines, thus replacing the blockwise
selected region by multiple copies of the register text. For example:
- yank the word "TEXT" into a register with `yw`
- select a visual block, marked with "v" in this text:
aaavvaaa
bbbvvbbb
cccvvccc
- press `p`, results in:
aaaTEXTaaa
bbbTEXTbbb
cccTEXTccc
*blockwise-register*
If you use a blockwise Visual mode command to get the text into the register,

View File

@@ -1,4 +1,4 @@
*cmdline.txt* For Vim version 9.0. Last change: 2022 Jun 16
*cmdline.txt* For Vim version 9.0. Last change: 2022 Sep 26
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -806,7 +806,7 @@ Count and Range *N:*
When giving a count before entering ":", this is translated into:
:.,.+(count - 1)
In words: The 'count' lines at and after the cursor. Example: To delete
In words: The "count" lines at and after the cursor. Example: To delete
three lines: >
3:d<CR> is translated into: .,.+2d<CR>
<

View File

@@ -1,4 +1,4 @@
*develop.txt* For Vim version 9.0. Last change: 2020 Aug 15
*develop.txt* For Vim version 9.0. Last change: 2022 Sep 20
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -188,8 +188,8 @@ C COMPILER *style-compiler* *ANSI-C* *C89* *C99*
The minimal C compiler version supported is C89, also known as ANSI C.
Later standards, such as C99, are not widely supported, or at least not 100%
supported. Therefore we use only some of the C99 features and disallow some
(at least for now).
supported. Therefore we use only some of the C99 features and explicitly
disallow some (this will gradually be adjusted over time).
Please don't make changes everywhere to use the C99 features, it causes merge
problems for existing patches. Only use them for new and changed code.
@@ -215,12 +215,21 @@ Types ~
"long long" is allowed and can be expected to be 64 bits. Use %lld in printf
formats. Also "long long unsigned" with %llu.
Declarations ~
Now that the minimal supported compiler is MSVC 2015 declarations do not need
to be at the start of a block. However, it is often a good idea to do this
anyway.
Declaration of the for loop variable inside the loop is recommended:
for (int i = 0; i < len; ++i)
Since this is clearly an advantage we'll use this more often.
Not to be used ~
These C99 features are not to be used, because not enough compilers support
them:
- Declaration after Statements (MSVC 2012 does not support it). All
declarations need to be at the start of the block.
- Variable length arrays (even in C11 this is an optional feature).
- _Bool and _Complex types.
- "inline" (it's hardly ever needed, let the optimizer do its work)

View File

@@ -376,6 +376,9 @@ Additionally, 'diffexpr' should take care of "icase" and "iwhite" in the
'diffopt' option. 'diffexpr' cannot change the value of 'lines' and
'columns'.
The advantage of using a function call without arguments is that it is faster,
see |expr-option-function|.
Example (this does almost the same as 'diffexpr' being empty): >
set diffexpr=MyDiff()
@@ -441,6 +444,9 @@ will have the same effect. These variables are set to the file names used:
v:fname_diff patch file
v:fname_out resulting patched file
The advantage of using a function call without arguments is that it is faster,
see |expr-option-function|.
Example (this does the same as 'patchexpr' being empty): >
set patchexpr=MyPatch()

View File

@@ -1,4 +1,4 @@
*eval.txt* For Vim version 9.0. Last change: 2022 Jun 17
*eval.txt* For Vim version 9.0. Last change: 2022 Sep 17
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -54,7 +54,6 @@ Number A 32 or 64 bit signed number. |expr-number|
Examples: -123 0x10 0177 0o177 0b1011
Float A floating point number. |floating-point-format| *Float*
{only when compiled with the |+float| feature} *E1076*
Examples: 123.456 1.15e-6 -1.1e3
String A NUL terminated string of 8-bit unsigned characters (bytes).
@@ -1441,7 +1440,6 @@ digits are ignored.
{exp} is the exponent, power of 10.
Only a decimal point is accepted, not a comma. No matter what the current
locale is.
{only when compiled with the |+float| feature}
Examples:
123.456
@@ -1718,6 +1716,9 @@ Recommendation: don't do this.
Notice how execute() is used to execute an Ex command. That's ugly though.
In Vim9 script you can use a command block, see |inline-function|.
Although you can use the loop variable of a `for` command, it must still exist
when the closure is called, otherwise you get an error. *E1302*
Lambda expressions have internal names like '<lambda>42'. If you get an error
for a lambda expression, you can find what it is with the following command: >
:function <lambda>42
@@ -2629,447 +2630,12 @@ help file: |builtin-functions|.
5. Defining functions *user-functions*
New functions can be defined. These can be called just like builtin
functions. The function executes a sequence of Ex commands. Normal mode
commands can be executed with the |:normal| command.
functions. The function takes arguments, executes a sequence of Ex commands
and can return a value.
This section is about the legacy functions. For the Vim9 functions, which
execute much faster, support type checking and more, see |vim9.txt|.
The function name must start with an uppercase letter, to avoid confusion with
builtin functions. To prevent from using the same name in different scripts
avoid obvious, short names. A good habit is to start the function name with
the name of the script, e.g., "HTMLcolor()".
In legacy script it is also possible to use curly braces, see
|curly-braces-names|.
The |autoload| facility is useful to define a function only when it's called.
*local-function*
A function local to a legacy script must start with "s:". A local script
function can only be called from within the script and from functions, user
commands and autocommands defined in the script. It is also possible to call
the function from a mapping defined in the script, but then |<SID>| must be
used instead of "s:" when the mapping is expanded outside of the script.
There are only script-local functions, no buffer-local or window-local
functions.
In |Vim9| script functions are local to the script by default, prefix "g:" to
define a global function.
*:fu* *:function* *E128* *E129* *E123* *E454*
:fu[nction] List all functions and their arguments.
:fu[nction] {name} List function {name}.
{name} can also be a |Dictionary| entry that is a
|Funcref|: >
:function dict.init
:fu[nction] /{pattern} List functions with a name matching {pattern}.
Example that lists all functions ending with "File": >
:function /File$
<
*:function-verbose*
When 'verbose' is non-zero, listing a function will also display where it was
last defined. Example: >
:verbose function SetFileTypeSH
function SetFileTypeSH(name)
Last set from /usr/share/vim/vim-7.0/filetype.vim
<
See |:verbose-cmd| for more information.
*E124* *E125* *E853* *E884*
:fu[nction][!] {name}([arguments]) [range] [abort] [dict] [closure]
Define a new function by the name {name}. The body of
the function follows in the next lines, until the
matching |:endfunction|.
*E1267*
The name must be made of alphanumeric characters and
'_', and must start with a capital or "s:" (see
above). Note that using "b:" or "g:" is not allowed.
(since patch 7.4.260 E884 is given if the function
name has a colon in the name, e.g. for "foo:bar()".
Before that patch no error was given).
{name} can also be a |Dictionary| entry that is a
|Funcref|: >
:function dict.init(arg)
< "dict" must be an existing dictionary. The entry
"init" is added if it didn't exist yet. Otherwise [!]
is required to overwrite an existing function. The
result is a |Funcref| to a numbered function. The
function can only be used with a |Funcref| and will be
deleted if there are no more references to it.
*E127* *E122*
When a function by this name already exists and [!] is
not used an error message is given. There is one
exception: When sourcing a script again, a function
that was previously defined in that script will be
silently replaced.
When [!] is used, an existing function is silently
replaced. Unless it is currently being executed, that
is an error.
NOTE: Use ! wisely. If used without care it can cause
an existing function to be replaced unexpectedly,
which is hard to debug.
NOTE: In Vim9 script script-local functions cannot be
deleted or redefined.
For the {arguments} see |function-argument|.
*:func-range* *a:firstline* *a:lastline*
When the [range] argument is added, the function is
expected to take care of a range itself. The range is
passed as "a:firstline" and "a:lastline". If [range]
is excluded, ":{range}call" will call the function for
each line in the range, with the cursor on the start
of each line. See |function-range-example|.
The cursor is still moved to the first line of the
range, as is the case with all Ex commands.
*:func-abort*
When the [abort] argument is added, the function will
abort as soon as an error is detected.
*:func-dict*
When the [dict] argument is added, the function must
be invoked through an entry in a |Dictionary|. The
local variable "self" will then be set to the
dictionary. See |Dictionary-function|.
*:func-closure* *E932*
When the [closure] argument is added, the function
can access variables and arguments from the outer
scope. This is usually called a closure. In this
example Bar() uses "x" from the scope of Foo(). It
remains referenced even after Foo() returns: >
:function! Foo()
: let x = 0
: function! Bar() closure
: let x += 1
: return x
: endfunction
: return funcref('Bar')
:endfunction
:let F = Foo()
:echo F()
< 1 >
:echo F()
< 2 >
:echo F()
< 3
*function-search-undo*
The last used search pattern and the redo command "."
will not be changed by the function. This also
implies that the effect of |:nohlsearch| is undone
when the function returns.
*:endf* *:endfunction* *E126* *E193* *W22* *E1151*
:endf[unction] [argument]
The end of a function definition. Best is to put it
on a line by its own, without [argument].
[argument] can be:
| command command to execute next
\n command command to execute next
" comment always ignored
anything else ignored, warning given when
'verbose' is non-zero
The support for a following command was added in Vim
8.0.0654, before that any argument was silently
ignored.
To be able to define a function inside an `:execute`
command, use line breaks instead of |:bar|: >
:exe "func Foo()\necho 'foo'\nendfunc"
<
*:delf* *:delfunction* *E131* *E933* *E1084*
:delf[unction][!] {name}
Delete function {name}.
{name} can also be a |Dictionary| entry that is a
|Funcref|: >
:delfunc dict.init
< This will remove the "init" entry from "dict". The
function is deleted if there are no more references to
it.
With the ! there is no error if the function does not
exist.
*:retu* *:return* *E133*
:retu[rn] [expr] Return from a function. When "[expr]" is given, it is
evaluated and returned as the result of the function.
If "[expr]" is not given, the number 0 is returned.
When a function ends without an explicit ":return",
the number 0 is returned.
In a :def function *E1095* is given if unreachable
code follows after the `:return`.
In legacy script there is no check for unreachable
lines, thus there is no warning if commands follow
`:return`.
If the ":return" is used after a |:try| but before the
matching |:finally| (if present), the commands
following the ":finally" up to the matching |:endtry|
are executed first. This process applies to all
nested ":try"s inside the function. The function
returns at the outermost ":endtry".
*function-argument* *a:var*
An argument can be defined by giving its name. In the function this can then
be used as "a:name" ("a:" for argument).
*a:0* *a:1* *a:000* *E740* *...*
Up to 20 arguments can be given, separated by commas. After the named
arguments an argument "..." can be specified, which means that more arguments
may optionally be following. In the function the extra arguments can be used
as "a:1", "a:2", etc. "a:0" is set to the number of extra arguments (which
can be 0). "a:000" is set to a |List| that contains these arguments. Note
that "a:1" is the same as "a:000[0]".
*E742* *E1090*
The a: scope and the variables in it cannot be changed, they are fixed.
However, if a composite type is used, such as |List| or |Dictionary| , you can
change their contents. Thus you can pass a |List| to a function and have the
function add an item to it. If you want to make sure the function cannot
change a |List| or |Dictionary| use |:lockvar|.
It is also possible to define a function without any arguments. You must
still supply the () then.
It is allowed to define another function inside a function body.
*optional-function-argument*
You can provide default values for positional named arguments. This makes
them optional for function calls. When a positional argument is not
specified at a call, the default expression is used to initialize it.
This only works for functions declared with `:function` or `:def`, not for
lambda expressions |expr-lambda|.
Example: >
function Something(key, value = 10)
echo a:key .. ": " .. a:value
endfunction
call Something('empty') "empty: 10"
call Something('key', 20) "key: 20"
The argument default expressions are evaluated at the time of the function
call, not definition. Thus it is possible to use an expression which is
invalid the moment the function is defined. The expressions are also only
evaluated when arguments are not specified during a call.
*none-function_argument*
You can pass |v:none| to use the default expression. Note that this means you
cannot pass v:none as an ordinary value when an argument has a default
expression.
Example: >
function Something(a = 10, b = 20, c = 30)
endfunction
call Something(1, v:none, 3) " b = 20
<
*E989*
Optional arguments with default expressions must occur after any mandatory
arguments. You can use "..." after all optional named arguments.
It is possible for later argument defaults to refer to prior arguments,
but not the other way around. They must be prefixed with "a:", as with all
arguments.
Example that works: >
:function Okay(mandatory, optional = a:mandatory)
:endfunction
Example that does NOT work: >
:function NoGood(first = a:second, second = 10)
:endfunction
<
When not using "...", the number of arguments in a function call must be at
least equal to the number of mandatory named arguments. When using "...", the
number of arguments may be larger than the total of mandatory and optional
arguments.
*local-variables*
Inside a function local variables can be used. These will disappear when the
function returns. Global variables need to be accessed with "g:".
Example: >
:function Table(title, ...)
: echohl Title
: echo a:title
: echohl None
: echo a:0 .. " items:"
: for s in a:000
: echon ' ' .. s
: endfor
:endfunction
This function can then be called with: >
call Table("Table", "line1", "line2")
call Table("Empty Table")
To return more than one value, return a |List|: >
:function Compute(n1, n2)
: if a:n2 == 0
: return ["fail", 0]
: endif
: return ["ok", a:n1 / a:n2]
:endfunction
This function can then be called with: >
:let [success, div] = Compute(102, 6)
:if success == "ok"
: echo div
:endif
<
*:cal* *:call* *E107*
:[range]cal[l] {name}([arguments])
Call a function. The name of the function and its arguments
are as specified with `:function`. Up to 20 arguments can be
used. The returned value is discarded.
In |Vim9| script using `:call` is optional, these two lines do
the same thing: >
call SomeFunc(arg)
SomeFunc(arg)
< Without a range and for functions that accept a range, the
function is called once. When a range is given the cursor is
positioned at the start of the first line before executing the
function.
When a range is given and the function doesn't handle it
itself, the function is executed for each line in the range,
with the cursor in the first column of that line. The cursor
is left at the last line (possibly moved by the last function
call). The arguments are re-evaluated for each line. Thus
this works:
*function-range-example* >
:function Mynumber(arg)
: echo line(".") .. " " .. a:arg
:endfunction
:1,5call Mynumber(getline("."))
<
The "a:firstline" and "a:lastline" are defined anyway, they
can be used to do something different at the start or end of
the range.
Example of a function that handles the range itself: >
:function Cont() range
: execute (a:firstline + 1) .. "," .. a:lastline .. 's/^/\t\\ '
:endfunction
:4,8call Cont()
<
This function inserts the continuation character "\" in front
of all the lines in the range, except the first one.
When the function returns a composite value it can be further
dereferenced, but the range will not be used then. Example: >
:4,8call GetDict().method()
< Here GetDict() gets the range but method() does not.
*E117*
When a function cannot be found the error "E117: Unknown function" will be
given. If the function was using an autoload path or an autoload import and
the script is a |Vim9| script, this may also be caused by the function not
being exported.
*E132*
The recursiveness of user functions is restricted with the |'maxfuncdepth'|
option.
It is also possible to use `:eval`. It does not support a range, but does
allow for method chaining, e.g.: >
eval GetList()->Filter()->append('$')
A function can also be called as part of evaluating an expression or when it
is used as a method: >
let x = GetList()
let y = GetList()->Filter()
AUTOMATICALLY LOADING FUNCTIONS ~
*autoload-functions*
When using many or large functions, it's possible to automatically define them
only when they are used. There are two methods: with an autocommand and with
the "autoload" directory in 'runtimepath'.
Using an autocommand ~
This is introduced in the user manual, section |51.4|.
The autocommand is useful if you have a plugin that is a long Vim script file.
You can define the autocommand and quickly quit the script with `:finish`.
That makes Vim startup faster. The autocommand should then load the same file
again, setting a variable to skip the `:finish` command.
Use the FuncUndefined autocommand event with a pattern that matches the
function(s) to be defined. Example: >
:au FuncUndefined BufNet* source ~/vim/bufnetfuncs.vim
The file "~/vim/bufnetfuncs.vim" should then define functions that start with
"BufNet". Also see |FuncUndefined|.
Using an autoload script ~
*autoload* *E746*
This is introduced in the user manual, section |52.2|.
Using a script in the "autoload" directory is simpler, but requires using
exactly the right file name. A function that can be autoloaded has a name
like this: >
:call filename#funcname()
These functions are always global, in Vim9 script "g:" needs to be used: >
:call g:filename#funcname()
When such a function is called, and it is not defined yet, Vim will search the
"autoload" directories in 'runtimepath' for a script file called
"filename.vim". For example "~/.vim/autoload/filename.vim". That file should
then define the function like this: >
function filename#funcname()
echo "Done!"
endfunction
The file name and the name used before the # in the function must match
exactly, and the defined function must have the name exactly as it will be
called. In Vim9 script the "g:" prefix must be used: >
function g:filename#funcname()
or for a compiled function: >
def g:filename#funcname()
It is possible to use subdirectories. Every # in the function name works like
a path separator. Thus when calling a function: >
:call foo#bar#func()
Vim will look for the file "autoload/foo/bar.vim" in 'runtimepath'.
This also works when reading a variable that has not been set yet: >
:let l = foo#bar#lvar
However, when the autoload script was already loaded it won't be loaded again
for an unknown variable.
When assigning a value to such a variable nothing special happens. This can
be used to pass settings to the autoload script before it's loaded: >
:let foo#bar#toggle = 1
:call foo#bar#func()
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, 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.
Avoid using the autoload functionality at the toplevel.
In |Vim9| script you will get error *E1263* if you define a function with
a "#" character in the name. You should use a name without "#" and use
`:export`.
Hint: If you distribute a bunch of scripts you can pack them together with the
|vimball| utility. Also read the user manual |distribute-script|.
You can find most information about defining functions in |userfunc.txt|.
For Vim9 functions, which execute much faster, support type checking and more,
see |vim9.txt|.
==============================================================================
6. Curly braces names *curly-braces-names*
@@ -3832,7 +3398,8 @@ text...
it will show for three seconds and avoid a
|hit-enter| prompt. If you want to hide it before
that, press Esc in Normal mode (when it would
otherwise beep).
otherwise beep). If it disappears too soon you can
use `:messages` to see the text.
The message window is available when Vim was compiled
with the +timer and the +popupwin features.

View File

@@ -74,8 +74,6 @@ method. The value of the 'foldexpr' option is evaluated to get the foldlevel
of a line. Examples:
This will create a fold for all consecutive lines that start with a tab: >
:set foldexpr=getline(v:lnum)[0]==\"\\t\"
This will call a function to compute the fold level: >
:set foldexpr=MyFoldLevel(v:lnum)
This will make a fold out of paragraphs separated by blank lines: >
:set foldexpr=getline(v:lnum)=~'^\\s*$'&&getline(v:lnum+1)=~'\\S'?'<1':1
This does the same: >
@@ -84,6 +82,10 @@ This does the same: >
Note that backslashes must be used to escape characters that ":set" handles
differently (space, backslash, double quote, etc., see |option-backslash|).
The most efficient is to call a compiled function without arguments: >
:set foldexpr=MyFoldLevel()
The function must use v:lnum. See |expr-option-function|.
These are the conditions with which the expression is evaluated:
- The current buffer and window are set for the line.
- The variable "v:lnum" is set to the line number.

View File

@@ -1,4 +1,4 @@
*ft_context.txt* For Vim version 9.0. Last change: 2022 Aug 12
*ft_context.txt* For Vim version 9.0. Last change: 2022 Sep 27
This is the documentation for the ConTeXt filetype plugin.
@@ -23,13 +23,12 @@ ConTeXt, similarly to LaTeX, is a macro-based typesetting system built on TeX:
<
The ConTeXt plugin provides syntax highlighting, completion and support for
typesetting ConTeXt documents. The recommended way to typeset a document is to
use |:ConTeXt|. This will invoke the `mtxrun` script that is found in $PATH.
use |:ConTeXt|. This will invoke the `mtxrun` script that is found in `$PATH`.
For more fine grained control over the command and its environment, you may
invoke `context.Typeset()` directly (or `context#Typeset()` from legacy Vim
script). For instance, if you have installed a version of ConTeXt in
`~/context`, you may define a function to use it (you may put the following
code in `~/.vim/after/ftplugin/context.vim`) similar to the following:
For more fine grained control over the command and its environment,
`context.Typeset()` can be used directly (or `context#Typeset()` from legacy
Vim script). For instance, if a version of ConTeXt is installed in
`~/context`, you may define a function to use it similar to the following:
>
import autoload 'context.vim'
@@ -38,14 +37,15 @@ code in `~/.vim/after/ftplugin/context.vim`) similar to the following:
printf("%s/context/tex/texmf-<os>-<arch>/bin:%s", $HOME, $PATH)}
context.Typeset("%", env)
enddef
<
and perhaps use it with a mapping:
This code may go in `~/.vim/after/ftplugin/context.vim`. A mapping can then be
defined to invoke the custom command:
>
nnoremap <silent><buffer><leader>t <scriptcmd>MyConTeXt()<cr>
<
`context.Typeset()` accepts a third optional argument to specify a custom
typesetting command. Such argument must be a function that takes a path and
returns the command as a List. For example:
typesetting command. That must be a function that takes a path and returns the
command as a List. For example:
>
def ConTeXtCustomCommand(path: string): list<string>
return ['mtxrun', '--script', 'context', '--nonstopmode, path]
@@ -103,14 +103,20 @@ Stop all the ConTeXt jobs currently running in the background.
Settings ~
*'b:context_ignore_makefile'*
*'g:context_ignore_makefile'*
`make` can be used to (synchronously) typeset a document. If a Makefile exists
`:make` can be used to (synchronously) typeset a document. If a Makefile exists
and this option is not set, standard `make` is used. If this option is set,
`mtxrun` is invoked instead, even if a Makefile exists.
>
g:context_ignore_makefile = 0
<
NOTE: before using `make`, set the working directory of the buffer to the
NOTE: before using `:make`, set the working directory of the buffer to the
directory of the file to be typeset.
*'g:context_extra_options'*
A list of additional options to pass to `mtxrun`.
>
g:context_extra_options = []
<
*'b:context_include'*
*'g:context_include'*
Dictionary of filetype/GROUP pairs for which syntax highlighting should be

View File

@@ -106,8 +106,7 @@ when you have got a new version):
You can also install Vim in the "Send To" menu:
1. Start a Windows Explorer
2. Navigate to your sendto directory:
Windows XP: C:\Documents and Settings\%user%\SendTo
Windows Vista: C:\Users\%user%\AppData\Roaming\Microsoft\Windows\SendTo .
C:\Users\%user%\AppData\Roaming\Microsoft\Windows\SendTo .
3. Right-click in the file pane and select New->Shortcut
4. Follow the shortcut wizard, using the full path to VIM/GVIM.

View File

@@ -141,6 +141,7 @@ Advanced editing ~
|autocmd.txt| automatically executing commands on an event
|eval.txt| expression evaluation, conditional commands
|builtin.txt| builtin functions
|userfunc.txt| defining user functions
|channel.txt| Jobs, Channels, inter-process communication
|fold.txt| hide (fold) ranges of lines

View File

@@ -1227,13 +1227,31 @@ comments will be indented according to the correctly indented code.
VIM *ft-vim-indent*
*g:vim_indent*
Vim scripts indentation can be configured with the `g:vim_indent` dictionary
variable. It supports 3 keys, `line_continuation`, `more_in_bracket_block`,
and `searchpair_timeout`.
`line_continuation` expects a number which will be added to the indent level of
a continuation line starting with a backslash, and defaults to
`shiftwidth() * 3`. It also accepts a string, which is evaluated at runtime.
`more_in_bracket_block` expects a boolean value; when on, an extra
`shiftwidth()` is added inside blocks surrounded with brackets. It defaults to
`v:false`.
`searchpair_timeout` expects a number which will be passed to `searchpair()` as
a timeout. Increasing the value might give more accurate results, but also
causes the indentation to take more time. It defaults to 100 (milliseconds).
Example of configuration:
let g:vim_indent = #{
\ line_continuation: shiftwidth() * 3,
\ more_in_bracket_block: v:false,
\ searchpair_timeout: 100,
\ }
*g:vim_indent_cont*
For indenting Vim scripts there is one variable that specifies the amount of
indent for a continuation line, a line that starts with a backslash: >
:let g:vim_indent_cont = shiftwidth() * 3
Three times shiftwidth is the default value.
This variable is equivalent to `g:vim_indent.line_continuation`.
It's supported for backward compatibility.
vim:tw=78:ts=8:noet:ft=help:norl:

View File

@@ -1,4 +1,4 @@
*intro.txt* For Vim version 9.0. Last change: 2022 Apr 03
*intro.txt* For Vim version 9.0. Last change: 2022 Sep 12
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -533,6 +533,10 @@ examples and use them directly. Or type them literally, including the '<' and
'>' characters. This does NOT work for other commands, like ":set" and
":autocmd"!
The notation can be used in a double quoted strings, using "\<" at the start,
e.g. "\<C-Space>". This results in a special key code. To convert this back
to readable text use `keytrans()`.
==============================================================================
5. Modes, introduction *vim-modes-intro* *vim-modes*

View File

@@ -1,4 +1,4 @@
*map.txt* For Vim version 9.0. Last change: 2022 Jun 18
*map.txt* For Vim version 9.0. Last change: 2022 Sep 26
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -1583,7 +1583,7 @@ completion candidates as the return value.
For the "custom" argument, the function should return the completion
candidates one per line in a newline separated string.
*E1303*
For the "customlist" argument, the function should return the completion
candidates as a Vim List. Non-string items in the list are ignored.
@@ -1761,7 +1761,8 @@ The valid escape sequences are
If the first two characters of an escape sequence are "q-" (for example,
<q-args>) then the value is quoted in such a way as to make it a valid value
for use in an expression. This uses the argument as one single value.
When there is no argument <q-args> is an empty string.
When there is no argument <q-args> is an empty string. See the
|q-args-example| below.
*<f-args>*
To allow commands to pass their arguments on to a user-defined function, there
is a special form <f-args> ("function args"). This splits the command
@@ -1771,7 +1772,7 @@ See the Mycmd example below. If no arguments are given <f-args> is removed.
To embed whitespace into an argument of <f-args>, prepend a backslash.
<f-args> replaces every pair of backslashes (\\) with one backslash. A
backslash followed by a character other than white space or a backslash
remains unmodified. Overview:
remains unmodified. Also see |f-args-example| below. Overview:
command <f-args> ~
XX ab 'ab'
@@ -1785,7 +1786,8 @@ remains unmodified. Overview:
XX a\\\\b 'a\\b'
XX a\\\\ b 'a\\', 'b'
Examples >
Examples for user commands: >
" Delete everything after here to the end
:com Ddel +,$d
@@ -1801,7 +1803,8 @@ Examples >
" Count the number of lines in the range
:com! -range -nargs=0 Lines echo <line2> - <line1> + 1 "lines"
" Call a user function (example of <f-args>)
< *f-args-example*
Call a user function (example of <f-args>) >
:com -nargs=* Mycmd call Myfunc(<f-args>)
When executed as: >
@@ -1809,7 +1812,8 @@ When executed as: >
This will invoke: >
:call Myfunc("arg1","arg2")
:" A more substantial example
< *q-args-example*
A more substantial example: >
:function Allargs(command)
: let i = 0
: while i < argc()

View File

@@ -1,4 +1,4 @@
*mlang.txt* For Vim version 9.0. Last change: 2020 Aug 15
*mlang.txt* For Vim version 9.0. Last change: 2022 Sep 17
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -82,9 +82,9 @@ use of "-" and "_".
characters. This sets $LC_COLLATE.
Without an argument all are set, and additionally
$LANG is set.
When compiled with the |+float| feature the LC_NUMERIC
value will always be set to "C", so that floating
point numbers use '.' as the decimal point.
If available the LC_NUMERIC value will always be set
to "C", so that floating point numbers use '.' as the
decimal point.
This will make a difference for items that depend on
the language (some messages, time and date format).
Not fully supported on all systems

View File

@@ -1,4 +1,4 @@
*motion.txt* For Vim version 9.0. Last change: 2022 Apr 18
*motion.txt* For Vim version 9.0. Last change: 2022 Sep 26
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -1145,7 +1145,7 @@ g; Go to [count] older position in change list.
(not a motion command)
*g,* *E663*
g, Go to [count] newer cursor position in change list.
g, Go to [count] newer position in change list.
Just like |g;| but in the opposite direction.
(not a motion command)

View File

@@ -1,4 +1,4 @@
*options.txt* For Vim version 9.0. Last change: 2022 Jun 27
*options.txt* For Vim version 9.0. Last change: 2022 Sep 27
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -1626,6 +1626,9 @@ A jump table for the options with a short description can be found at |Q_op|.
Note that v:charconvert_from and v:charconvert_to may be different
from 'encoding'. Vim internally uses UTF-8 instead of UCS-2 or UCS-4.
The advantage of using a function call without arguments is that it is
faster, see |expr-option-function|.
Encryption is not done by Vim when using 'charconvert'. If you want
to encrypt the file after conversion, 'charconvert' should take care
of this.
@@ -1702,7 +1705,8 @@ A jump table for the options with a short description can be found at |Q_op|.
after that. Therefore do not append an item with += but use ^= to
prepend, e.g.: >
set clipboard^=unnamed
< These names are recognized:
< When using the GUI see |'go-A'|.
These names are recognized:
*clipboard-unnamed*
unnamed When included, Vim will use the clipboard register '*'
@@ -3663,6 +3667,9 @@ A jump table for the options with a short description can be found at |Q_op|.
< This will invoke the mylang#Format() function in the
autoload/mylang.vim file in 'runtimepath'. |autoload|
The advantage of using a function call without arguments is that it is
faster, see |expr-option-function|.
The expression is also evaluated when 'textwidth' is set and adding
text beyond that limit. This happens under the same conditions as
when internal formatting is used. Make sure the cursor is kept in the
@@ -3978,6 +3985,8 @@ A jump table for the options with a short description can be found at |Q_op|.
"A" - yes
"aA" yes yes
When using a terminal see the 'clipboard' option.
*'go-c'*
'c' Use console dialogs instead of popup dialogs for simple
choices.
@@ -4531,11 +4540,14 @@ A jump table for the options with a short description can be found at |Q_op|.
If the expression starts with s: or |<SID>|, then it is replaced with
the script ID (|local-function|). Example: >
set includeexpr=s:MyIncludeExpr(v:fname)
set includeexpr=<SID>SomeIncludeExpr(v:fname)
set includeexpr=s:MyIncludeExpr()
set includeexpr=<SID>SomeIncludeExpr()
< Otherwise, the expression is evaluated in the context of the script
where the option was set, thus script-local items are available.
It is more efficient if the value is just a function call without
arguments, see |expr-option-function|.
The expression will be evaluated in the |sandbox| when set from a
modeline, see |sandbox-option|.
This option cannot be set in a modeline when 'modelineexpr' is off.
@@ -4617,6 +4629,9 @@ A jump table for the options with a short description can be found at |Q_op|.
< Otherwise, the expression is evaluated in the context of the script
where the option was set, thus script-local items are available.
The advantage of using a function call without arguments is that it is
faster, see |expr-option-function|.
The expression must return the number of spaces worth of indent. It
can return "-1" to keep the current indent (this means 'autoindent' is
used for the indent).
@@ -7287,6 +7302,14 @@ A jump table for the options with a short description can be found at |Q_op|.
reset.
NOTE: This option is reset when 'compatible' is set.
*'smoothscroll'* *'sms'* *'nosmoothscroll'* *'nosms'*
'smoothscroll' 'sms' boolean (default off)
local to window
Scrolling works with screen lines. When 'wrap' is set and the first
line in the window wraps part of it may not be visible, as if it is
above the window.
NOTE: only partly implemented, works with CTRL-E and CTRL-Y.
*'softtabstop'* *'sts'*
'softtabstop' 'sts' number (default 0)
local to buffer
@@ -7467,9 +7490,11 @@ A jump table for the options with a short description can be found at |Q_op|.
The file is used for all languages.
expr:{expr} Evaluate expression {expr}. Use a function to avoid
trouble with spaces. |v:val| holds the badly spelled
word. The expression must evaluate to a List of
Lists, each with a suggestion and a score.
trouble with spaces. Best is to call a function
without arguments, see |expr-option-function|.
|v:val| holds the badly spelled word. The expression
must evaluate to a List of Lists, each with a
suggestion and a score.
Example:
[['the', 33], ['that', 44]] ~
Set 'verbose' and use |z=| to see the scores that the
@@ -7493,6 +7518,22 @@ A jump table for the options with a short description can be found at |Q_op|.
When on, splitting a window will put the new window below the current
one. |:split|
*'splitkeep'* *'spk'
'splitkeep' 'spk' string (default "cursor")
global
The value of this option determines the scroll behavior when opening,
closing or resizing horizontal splits.
Possible values are:
cursor Keep the same relative cursor position.
screen Keep the text on the same screen line.
topline Keep the topline the same.
For the "screen" and "topline" values, the cursor position will be
changed when necessary. In this case, the jumplist will be populated
with the previous cursor position. For "screen", the text cannot always
be kept on the same screen line when 'wrap' is enabled.
*'splitright'* *'spr'* *'nosplitright'* *'nospr'*
'splitright' 'spr' boolean (default off)
global

View File

@@ -1,4 +1,4 @@
*os_win32.txt* For Vim version 9.0. Last change: 2022 May 24
*os_win32.txt* For Vim version 9.0. Last change: 2022 Sep 18
VIM REFERENCE MANUAL by George Reilly
@@ -7,8 +7,11 @@
*win32* *Win32* *MS-Windows*
This file documents the idiosyncrasies of the Win32 version of Vim.
The Win32 version of Vim works on Windows XP, Vista, 7, 8, 10 and 11. There are
both console and GUI versions.
The Win32 version of Vim works on Windows 7, 8, 10 and 11. There are both
console and GUI versions.
If you have Windows XP or Vista then Vim 9.0 up to patch level 495 can be
used.
The 32 bit version also runs on 64 bit MS-Windows systems.

View File

@@ -1,4 +1,4 @@
*pattern.txt* For Vim version 9.0. Last change: 2022 Mar 04
*pattern.txt* For Vim version 9.0. Last change: 2022 Sep 24
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -134,6 +134,11 @@ gD Goto global Declaration. When the cursor is on a
CTRL-C Interrupt current (search) command. Use CTRL-Break on
MS-Windows |dos-CTRL-Break|.
In Normal mode, any pending command is aborted.
When Vim was started with output redirected and there
are no changed buffers CTRL-C exits Vim. That is to
help users who use "vim file | grep word" and don't
know how to get out (blindly typing :qa<CR> would
work).
*:noh* *:nohlsearch*
:noh[lsearch] Stop the highlighting for the 'hlsearch' option. It

View File

@@ -158,13 +158,16 @@ currently specified printdevice: >
If you change this option, using a function is an easy way to avoid having to
escape all the spaces. Example: >
:set printexpr=PrintFile(v:fname_in)
:function PrintFile(fname)
: call system("ghostview " .. a:fname)
: call delete(a:fname)
:set printexpr=PrintFile()
:function PrintFile()
: call system("ghostview " .. v:fname_in)
: call delete(v:fname_in)
: return v:shell_error
:endfunc
It is more efficient if the option is set to just a function call,
see |expr-option-function|.
Be aware that some print programs return control before they have read the
file. If you delete the file too soon it will not be printed. These programs
usually offer an option to have them remove the file when printing is done.

View File

@@ -1,4 +1,4 @@
*quickfix.txt* For Vim version 9.0. Last change: 2022 Feb 22
*quickfix.txt* For Vim version 9.0. Last change: 2022 Sep 26
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -478,7 +478,7 @@ You can parse a list of lines using 'errorformat' without creating or
modifying a quickfix list using the |getqflist()| function. Examples: >
echo getqflist({'lines' : ["F1:10:Line10", "F2:20:Line20"]})
echo getqflist({'lines' : systemlist('grep -Hn quickfix *')})
This returns a dictionary where the 'items' key contains the list of quickfix
This returns a dictionary where the "items" key contains the list of quickfix
entries parsed from lines. The following shows how to use a custom
'errorformat' to parse the lines without modifying the 'errorformat' option: >
echo getqflist({'efm' : '%f#%l#%m', 'lines' : ['F1#10#Line']})
@@ -597,7 +597,7 @@ can go back to the unfiltered list using the |:colder|/|:lolder| command.
quickfix command or function, the |b:changedtick|
variable is incremented. You can get the number of
this buffer using the getqflist() and getloclist()
functions by passing the 'qfbufnr' item. For a
functions by passing the "qfbufnr" item. For a
location list, this buffer is wiped out when the
location list is removed.
@@ -2011,7 +2011,7 @@ The function should return a single line of text to display in the quickfix
window for each entry from start_idx to end_idx. The function can obtain
information about the entries using the |getqflist()| function and specifying
the quickfix list identifier "id". For a location list, getloclist() function
can be used with the 'winid' argument. If an empty list is returned, then the
can be used with the "winid" argument. If an empty list is returned, then the
default format is used to display all the entries. If an item in the returned
list is an empty string, then the default format is used to display the
corresponding entry.

View File

@@ -1,4 +1,4 @@
*quickref.txt* For Vim version 9.0. Last change: 2022 May 05
*quickref.txt* For Vim version 9.0. Last change: 2022 Sep 14
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -910,6 +910,7 @@ Short explanation of each option: *option-list*
'smartcase' 'scs' no ignore case when pattern has uppercase
'smartindent' 'si' smart autoindenting for C programs
'smarttab' 'sta' use 'shiftwidth' when inserting <Tab>
'smoothscroll' 'sms' scroll by screen lines when 'wrap' is set
'softtabstop' 'sts' number of spaces that <Tab> uses while editing
'spell' enable spell checking
'spellcapcheck' 'spc' pattern to locate end of a sentence
@@ -918,6 +919,7 @@ Short explanation of each option: *option-list*
'spelloptions' 'spo' options for spell checking
'spellsuggest' 'sps' method(s) used to suggest spelling corrections
'splitbelow' 'sb' new window from split is below the current one
'splitkeep' 'spk' determines scroll behavior for split windows
'splitright' 'spr' new window is put right of the current one
'startofline' 'sol' commands move cursor to first non-blank in line
'statusline' 'stl' custom format for the status line

View File

@@ -1,4 +1,4 @@
*repeat.txt* For Vim version 9.0. Last change: 2022 Jun 18
*repeat.txt* For Vim version 9.0. Last change: 2022 Sep 22
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -92,7 +92,8 @@ pattern and do not match another pattern: >
This first finds all lines containing "found", but only executes {cmd} when
there is no match for "notfound".
To execute a non-Ex command, you can use the `:normal` command: >
Any Ex command can be used, see |ex-cmd-index|. To execute a Normal mode
command, you can use the `:normal` command: >
:g/pat/normal {commands}
Make sure that {commands} ends with a whole command, otherwise Vim will wait
for you to type the rest of the command for each match. The screen will not
@@ -200,7 +201,8 @@ For writing a Vim script, see chapter 41 of the user manual |usr_41.txt|.
*:source-range*
:[range]so[urce] [++clear]
Read Ex commands from the [range] of lines in the
current buffer.
current buffer. When [range] is omitted read all
lines.
When sourcing commands from the current buffer, the
same script-ID |<SID>| is used even if the buffer is
@@ -904,6 +906,11 @@ executed like a normal Ex command, "step" will stop once in the compiled
context, where local variables can be inspected, and once just before
executing the command.
In a :def function variables that haven't been declared yet cannot be
inspected. Variables that have been declared can be inspected, also when the
block they were declared in has finished. In commands this would not be
possible, thus is slightly misleading (but can be useful).
The backtrace shows the hierarchy of function calls, e.g.:
>bt ~
3 function One[3] ~

View File

@@ -1600,7 +1600,7 @@ CHECKCOMPOUNDTRIPLE (Hunspell) *spell-CHECKCOMPOUNDTRIPLE*
Forbid three identical characters when compounding. Not
supported.
CHECKSHARPS (Hunspell)) *spell-CHECKSHARPS*
CHECKSHARPS (Hunspell) *spell-CHECKSHARPS*
SS letter pair in uppercased (German) words may be upper case
sharp s (ß). Not supported.

View File

@@ -1,4 +1,4 @@
*syntax.txt* For Vim version 9.0. Last change: 2022 Jun 10
*syntax.txt* For Vim version 9.0. Last change: 2022 Sep 26
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -3153,7 +3153,7 @@ The default is to use the twice sh_minlines. Set it to a smaller number to
speed up displaying. The disadvantage is that highlight errors may appear.
syntax/sh.vim tries to flag certain problems as errors; usually things like
extra ']'s, 'done's, 'fi's, etc. If you find the error handling problematic
unmatched "]", "done", "fi", etc. If you find the error handling problematic
for your purposes, you may suppress such error highlighting by putting
the following line in your .vimrc: >

View File

@@ -302,6 +302,7 @@ $quote eval.txt /*$quote*
'fs' options.txt /*'fs'*
'fsync' options.txt /*'fsync'*
'ft' options.txt /*'ft'*
'g:context_extra_options' ft_context.txt /*'g:context_extra_options'*
'g:context_ignore_makefile' ft_context.txt /*'g:context_ignore_makefile'*
'g:context_include' ft_context.txt /*'g:context_include'*
'g:mf_other_macros' ft_mp.txt /*'g:mf_other_macros'*
@@ -718,7 +719,9 @@ $quote eval.txt /*$quote*
'nospell' options.txt /*'nospell'*
'nosplitbelow' options.txt /*'nosplitbelow'*
'nosplitright' options.txt /*'nosplitright'*
'nosplitscroll' options.txt /*'nosplitscroll'*
'nospr' options.txt /*'nospr'*
'nospsc' options.txt /*'nospsc'*
'nosr' options.txt /*'nosr'*
'nossl' options.txt /*'nossl'*
'nosta' options.txt /*'nosta'*
@@ -952,9 +955,11 @@ $quote eval.txt /*$quote*
'spl' options.txt /*'spl'*
'splitbelow' options.txt /*'splitbelow'*
'splitright' options.txt /*'splitright'*
'splitscroll' options.txt /*'splitscroll'*
'spo' options.txt /*'spo'*
'spr' options.txt /*'spr'*
'sps' options.txt /*'sps'*
'spsc' options.txt /*'spsc'*
'sr' options.txt /*'sr'*
'srr' options.txt /*'srr'*
'ss' options.txt /*'ss'*
@@ -1582,7 +1587,7 @@ $quote eval.txt /*$quote*
-xrm gui_x11.txt /*-xrm*
-y starting.txt /*-y*
. repeat.txt /*.*
... eval.txt /*...*
... userfunc.txt /*...*
.Xdefaults gui_x11.txt /*.Xdefaults*
.aff spell.txt /*.aff*
.dic spell.txt /*.dic*
@@ -2260,8 +2265,8 @@ $quote eval.txt /*$quote*
:caddfile quickfix.txt /*:caddfile*
:caf quickfix.txt /*:caf*
:cafter quickfix.txt /*:cafter*
:cal eval.txt /*:cal*
:call eval.txt /*:call*
:cal userfunc.txt /*:cal*
:call userfunc.txt /*:call*
:cat eval.txt /*:cat*
:catch eval.txt /*:catch*
:cb quickfix.txt /*:cb*
@@ -2405,13 +2410,14 @@ $quote eval.txt /*$quote*
:def vim9.txt /*:def*
:defc vim9.txt /*:defc*
:defcompile vim9.txt /*:defcompile*
:defer userfunc.txt /*:defer*
:del change.txt /*:del*
:delc map.txt /*:delc*
:delcommand map.txt /*:delcommand*
:delcr todo.txt /*:delcr*
:delete change.txt /*:delete*
:delf eval.txt /*:delf*
:delfunction eval.txt /*:delfunction*
:delf userfunc.txt /*:delf*
:delfunction userfunc.txt /*:delfunction*
:delm motion.txt /*:delm*
:delmarks motion.txt /*:delmarks*
:di change.txt /*:di*
@@ -2488,10 +2494,10 @@ $quote eval.txt /*$quote*
:endclass vim9.txt /*:endclass*
:enddef vim9.txt /*:enddef*
:endenum vim9.txt /*:endenum*
:endf eval.txt /*:endf*
:endf userfunc.txt /*:endf*
:endfo eval.txt /*:endfo*
:endfor eval.txt /*:endfor*
:endfunction eval.txt /*:endfunction*
:endfunction userfunc.txt /*:endfunction*
:endif eval.txt /*:endif*
:endinterface vim9.txt /*:endinterface*
:endt eval.txt /*:endt*
@@ -2553,13 +2559,13 @@ $quote eval.txt /*$quote*
:foldo fold.txt /*:foldo*
:foldopen fold.txt /*:foldopen*
:for eval.txt /*:for*
:fu eval.txt /*:fu*
:func-abort eval.txt /*:func-abort*
:func-closure eval.txt /*:func-closure*
:func-dict eval.txt /*:func-dict*
:func-range eval.txt /*:func-range*
:function eval.txt /*:function*
:function-verbose eval.txt /*:function-verbose*
:fu userfunc.txt /*:fu*
:func-abort userfunc.txt /*:func-abort*
:func-closure userfunc.txt /*:func-closure*
:func-dict userfunc.txt /*:func-dict*
:func-range userfunc.txt /*:func-range*
:function userfunc.txt /*:function*
:function-verbose userfunc.txt /*:function-verbose*
:g repeat.txt /*:g*
:global repeat.txt /*:global*
:go motion.txt /*:go*
@@ -2599,6 +2605,8 @@ $quote eval.txt /*$quote*
:his cmdline.txt /*:his*
:history cmdline.txt /*:history*
:history-indexing cmdline.txt /*:history-indexing*
:hor windows.txt /*:hor*
:horizontal windows.txt /*:horizontal*
:i insert.txt /*:i*
:ia map.txt /*:ia*
:iabbrev map.txt /*:iabbrev*
@@ -3049,8 +3057,8 @@ $quote eval.txt /*$quote*
:ret change.txt /*:ret*
:retab change.txt /*:retab*
:retab! change.txt /*:retab!*
:retu eval.txt /*:retu*
:return eval.txt /*:return*
:retu userfunc.txt /*:retu*
:return userfunc.txt /*:return*
:rew editing.txt /*:rew*
:rewind editing.txt /*:rewind*
:ri change.txt /*:ri*
@@ -4078,13 +4086,12 @@ E1066 vim9.txt /*E1066*
E1067 eval.txt /*E1067*
E1068 vim9.txt /*E1068*
E1069 vim9.txt /*E1069*
E107 eval.txt /*E107*
E107 userfunc.txt /*E107*
E1071 vim9.txt /*E1071*
E1072 eval.txt /*E1072*
E1073 vim9.txt /*E1073*
E1074 vim9.txt /*E1074*
E1075 vim9.txt /*E1075*
E1076 eval.txt /*E1076*
E1077 vim9.txt /*E1077*
E1078 autocmd.txt /*E1078*
E1079 vim9.txt /*E1079*
@@ -4093,18 +4100,18 @@ E1080 vim9.txt /*E1080*
E1081 eval.txt /*E1081*
E1082 vim9.txt /*E1082*
E1083 editing.txt /*E1083*
E1084 eval.txt /*E1084*
E1084 userfunc.txt /*E1084*
E1085 eval.txt /*E1085*
E1087 vim9.txt /*E1087*
E1088 vim9.txt /*E1088*
E1089 eval.txt /*E1089*
E109 eval.txt /*E109*
E1090 eval.txt /*E1090*
E1090 userfunc.txt /*E1090*
E1091 vim9.txt /*E1091*
E1092 various.txt /*E1092*
E1093 eval.txt /*E1093*
E1094 vim9.txt /*E1094*
E1095 eval.txt /*E1095*
E1095 userfunc.txt /*E1095*
E1096 vim9.txt /*E1096*
E1097 vim9.txt /*E1097*
E1098 eval.txt /*E1098*
@@ -4167,7 +4174,7 @@ E1148 eval.txt /*E1148*
E1149 vim9.txt /*E1149*
E115 eval.txt /*E115*
E1150 vim9.txt /*E1150*
E1151 eval.txt /*E1151*
E1151 userfunc.txt /*E1151*
E1152 vim9.txt /*E1152*
E1153 eval.txt /*E1153*
E1154 eval.txt /*E1154*
@@ -4187,7 +4194,7 @@ E1166 eval.txt /*E1166*
E1167 vim9.txt /*E1167*
E1168 vim9.txt /*E1168*
E1169 eval.txt /*E1169*
E117 eval.txt /*E117*
E117 userfunc.txt /*E117*
E1170 vim9.txt /*E1170*
E1171 vim9.txt /*E1171*
E1172 vim9.txt /*E1172*
@@ -4243,7 +4250,7 @@ E1216 builtin.txt /*E1216*
E1217 vim9.txt /*E1217*
E1218 vim9.txt /*E1218*
E1219 vim9.txt /*E1219*
E122 eval.txt /*E122*
E122 userfunc.txt /*E122*
E1220 vim9.txt /*E1220*
E1221 vim9.txt /*E1221*
E1222 vim9.txt /*E1222*
@@ -4254,7 +4261,7 @@ E1226 vim9.txt /*E1226*
E1227 vim9.txt /*E1227*
E1228 vim9.txt /*E1228*
E1229 eval.txt /*E1229*
E123 eval.txt /*E123*
E123 userfunc.txt /*E123*
E1230 options.txt /*E1230*
E1231 map.txt /*E1231*
E1232 builtin.txt /*E1232*
@@ -4264,7 +4271,7 @@ E1236 vim9.txt /*E1236*
E1237 map.txt /*E1237*
E1238 vim9.txt /*E1238*
E1239 builtin.txt /*E1239*
E124 eval.txt /*E124*
E124 userfunc.txt /*E124*
E1240 change.txt /*E1240*
E1241 change.txt /*E1241*
E1242 change.txt /*E1242*
@@ -4275,7 +4282,7 @@ E1246 eval.txt /*E1246*
E1247 cmdline.txt /*E1247*
E1248 vim9.txt /*E1248*
E1249 syntax.txt /*E1249*
E125 eval.txt /*E125*
E125 userfunc.txt /*E125*
E1250 vim9.txt /*E1250*
E1251 vim9.txt /*E1251*
E1252 vim9.txt /*E1252*
@@ -4286,18 +4293,18 @@ E1256 vim9.txt /*E1256*
E1257 vim9.txt /*E1257*
E1258 vim9.txt /*E1258*
E1259 vim9.txt /*E1259*
E126 eval.txt /*E126*
E126 userfunc.txt /*E126*
E1260 vim9.txt /*E1260*
E1261 vim9.txt /*E1261*
E1262 vim9.txt /*E1262*
E1263 eval.txt /*E1263*
E1263 userfunc.txt /*E1263*
E1264 vim9.txt /*E1264*
E1265 eval.txt /*E1265*
E1266 if_pyth.txt /*E1266*
E1267 eval.txt /*E1267*
E1267 userfunc.txt /*E1267*
E1268 vim9.txt /*E1268*
E1269 vim9.txt /*E1269*
E127 eval.txt /*E127*
E127 userfunc.txt /*E127*
E1270 change.txt /*E1270*
E1271 vim9.txt /*E1271*
E1272 vim9.txt /*E1272*
@@ -4308,7 +4315,7 @@ E1276 builtin.txt /*E1276*
E1277 channel.txt /*E1277*
E1278 eval.txt /*E1278*
E1279 eval.txt /*E1279*
E128 eval.txt /*E128*
E128 userfunc.txt /*E128*
E1280 spell.txt /*E1280*
E1281 pattern.txt /*E1281*
E1282 eval.txt /*E1282*
@@ -4319,7 +4326,7 @@ E1286 builtin.txt /*E1286*
E1287 builtin.txt /*E1287*
E1288 builtin.txt /*E1288*
E1289 builtin.txt /*E1289*
E129 eval.txt /*E129*
E129 userfunc.txt /*E129*
E1290 change.txt /*E1290*
E1291 testing.txt /*E1291*
E1292 cmdline.txt /*E1292*
@@ -4328,10 +4335,19 @@ E1294 textprop.txt /*E1294*
E1295 textprop.txt /*E1295*
E1296 textprop.txt /*E1296*
E1297 vim9.txt /*E1297*
E1298 vim9.txt /*E1298*
E1299 tagsrch.txt /*E1299*
E13 message.txt /*E13*
E131 eval.txt /*E131*
E132 eval.txt /*E132*
E133 eval.txt /*E133*
E1300 userfunc.txt /*E1300*
E1301 vim9.txt /*E1301*
E1302 eval.txt /*E1302*
E1303 map.txt /*E1303*
E1304 vim9.txt /*E1304*
E1305 textprop.txt /*E1305*
E1306 vim9.txt /*E1306*
E131 userfunc.txt /*E131*
E132 userfunc.txt /*E132*
E133 userfunc.txt /*E133*
E134 change.txt /*E134*
E135 autocmd.txt /*E135*
E136 starting.txt /*E136*
@@ -4396,7 +4412,7 @@ E19 message.txt /*E19*
E190 message.txt /*E190*
E191 motion.txt /*E191*
E192 message.txt /*E192*
E193 eval.txt /*E193*
E193 userfunc.txt /*E193*
E194 message.txt /*E194*
E195 starting.txt /*E195*
E196 various.txt /*E196*
@@ -4675,7 +4691,7 @@ E450 popup.txt /*E450*
E451 eval.txt /*E451*
E452 eval.txt /*E452*
E453 syntax.txt /*E453*
E454 eval.txt /*E454*
E454 userfunc.txt /*E454*
E455 print.txt /*E455*
E456 print.txt /*E456*
E457 print.txt /*E457*
@@ -4978,13 +4994,13 @@ E737 builtin.txt /*E737*
E738 eval.txt /*E738*
E739 builtin.txt /*E739*
E74 message.txt /*E74*
E740 eval.txt /*E740*
E740 userfunc.txt /*E740*
E741 eval.txt /*E741*
E742 eval.txt /*E742*
E742 userfunc.txt /*E742*
E743 eval.txt /*E743*
E744 netbeans.txt /*E744*
E745 eval.txt /*E745*
E746 eval.txt /*E746*
E746 userfunc.txt /*E746*
E747 editing.txt /*E747*
E748 repeat.txt /*E748*
E749 various.txt /*E749*
@@ -5101,7 +5117,7 @@ E85 options.txt /*E85*
E850 change.txt /*E850*
E851 gui_x11.txt /*E851*
E852 gui_x11.txt /*E852*
E853 eval.txt /*E853*
E853 userfunc.txt /*E853*
E854 options.txt /*E854*
E855 autocmd.txt /*E855*
E856 testing.txt /*E856*
@@ -5135,7 +5151,7 @@ E880 if_pyth.txt /*E880*
E881 autocmd.txt /*E881*
E882 builtin.txt /*E882*
E883 builtin.txt /*E883*
E884 eval.txt /*E884*
E884 userfunc.txt /*E884*
E885 sign.txt /*E885*
E886 starting.txt /*E886*
E887 if_pyth.txt /*E887*
@@ -5188,8 +5204,8 @@ E929 starting.txt /*E929*
E93 windows.txt /*E93*
E930 builtin.txt /*E930*
E931 message.txt /*E931*
E932 eval.txt /*E932*
E933 eval.txt /*E933*
E932 userfunc.txt /*E932*
E933 userfunc.txt /*E933*
E934 sign.txt /*E934*
E935 builtin.txt /*E935*
E936 autocmd.txt /*E936*
@@ -5250,7 +5266,7 @@ E985 eval.txt /*E985*
E986 tagsrch.txt /*E986*
E987 tagsrch.txt /*E987*
E988 gui_w32.txt /*E988*
E989 eval.txt /*E989*
E989 userfunc.txt /*E989*
E99 diff.txt /*E99*
E990 eval.txt /*E990*
E991 eval.txt /*E991*
@@ -5572,7 +5588,7 @@ W18 syntax.txt /*W18*
W19 autocmd.txt /*W19*
W20 if_pyth.txt /*W20*
W21 if_pyth.txt /*W21*
W22 eval.txt /*W22*
W22 userfunc.txt /*W22*
WORD motion.txt /*WORD*
WSL os_win32.txt /*WSL*
WWW intro.txt /*WWW*
@@ -5707,12 +5723,12 @@ a' motion.txt /*a'*
a( motion.txt /*a(*
a) motion.txt /*a)*
a4 print.txt /*a4*
a:0 eval.txt /*a:0*
a:000 eval.txt /*a:000*
a:1 eval.txt /*a:1*
a:firstline eval.txt /*a:firstline*
a:lastline eval.txt /*a:lastline*
a:var eval.txt /*a:var*
a:0 userfunc.txt /*a:0*
a:000 userfunc.txt /*a:000*
a:1 userfunc.txt /*a:1*
a:firstline userfunc.txt /*a:firstline*
a:lastline userfunc.txt /*a:lastline*
a:var userfunc.txt /*a:var*
a< motion.txt /*a<*
a> motion.txt /*a>*
aB motion.txt /*aB*
@@ -5858,8 +5874,8 @@ autocommand-events autocmd.txt /*autocommand-events*
autocommand-pattern autocmd.txt /*autocommand-pattern*
autocommands autocmd.txt /*autocommands*
autoformat change.txt /*autoformat*
autoload eval.txt /*autoload*
autoload-functions eval.txt /*autoload-functions*
autoload userfunc.txt /*autoload*
autoload-functions userfunc.txt /*autoload-functions*
avoid-hit-enter version5.txt /*avoid-hit-enter*
aw motion.txt /*aw*
a{ motion.txt /*a{*
@@ -5915,6 +5931,7 @@ blob-modification eval.txt /*blob-modification*
blob2list() builtin.txt /*blob2list()*
blockwise-examples visual.txt /*blockwise-examples*
blockwise-operators visual.txt /*blockwise-operators*
blockwise-put change.txt /*blockwise-put*
blockwise-register change.txt /*blockwise-register*
blockwise-visual visual.txt /*blockwise-visual*
blowfish options.txt /*blowfish*
@@ -6493,6 +6510,7 @@ decada_members ft_ada.txt /*decada_members*
deepcopy() builtin.txt /*deepcopy()*
defaults.vim starting.txt /*defaults.vim*
defaults.vim-explained usr_05.txt /*defaults.vim-explained*
define-function userfunc.txt /*define-function*
definition-search tagsrch.txt /*definition-search*
definitions intro.txt /*definitions*
delete() builtin.txt /*delete()*
@@ -6786,6 +6804,7 @@ extendnew() builtin.txt /*extendnew()*
extension-removal cmdline.txt /*extension-removal*
extensions-improvements todo.txt /*extensions-improvements*
f motion.txt /*f*
f-args-example map.txt /*f-args-example*
false vim9.txt /*false*
false-variable eval.txt /*false-variable*
falsy eval.txt /*falsy*
@@ -7131,11 +7150,11 @@ ftplugins usr_05.txt /*ftplugins*
fullcommand() builtin.txt /*fullcommand()*
funcref() builtin.txt /*funcref()*
function() builtin.txt /*function()*
function-argument eval.txt /*function-argument*
function-argument userfunc.txt /*function-argument*
function-key intro.txt /*function-key*
function-list usr_41.txt /*function-list*
function-range-example eval.txt /*function-range-example*
function-search-undo eval.txt /*function-search-undo*
function-range-example userfunc.txt /*function-range-example*
function-search-undo userfunc.txt /*function-search-undo*
function_key intro.txt /*function_key*
functions eval.txt /*functions*
fuzzy-matching pattern.txt /*fuzzy-matching*
@@ -7383,6 +7402,7 @@ g:tex_subscripts syntax.txt /*g:tex_subscripts*
g:tex_superscripts syntax.txt /*g:tex_superscripts*
g:tex_verbspell syntax.txt /*g:tex_verbspell*
g:var eval.txt /*g:var*
g:vim_indent indent.txt /*g:vim_indent*
g:vim_indent_cont indent.txt /*g:vim_indent_cont*
g:vimball_home pi_vimball.txt /*g:vimball_home*
g:vimball_mkdir pi_vimball.txt /*g:vimball_mkdir*
@@ -8114,6 +8134,7 @@ keypad-page-up intro.txt /*keypad-page-up*
keypad-plus intro.txt /*keypad-plus*
keypad-point intro.txt /*keypad-point*
keys() builtin.txt /*keys()*
keytrans() builtin.txt /*keytrans()*
known-bugs todo.txt /*known-bugs*
l motion.txt /*l*
l: eval.txt /*l:*
@@ -8182,10 +8203,10 @@ lnum-variable eval.txt /*lnum-variable*
load-plugins starting.txt /*load-plugins*
load-vim-script repeat.txt /*load-vim-script*
local-additions help.txt /*local-additions*
local-function eval.txt /*local-function*
local-function userfunc.txt /*local-function*
local-options options.txt /*local-options*
local-variable eval.txt /*local-variable*
local-variables eval.txt /*local-variables*
local-variables userfunc.txt /*local-variables*
local_markfilelist pi_netrw.txt /*local_markfilelist*
locale mbyte.txt /*locale*
locale-name mbyte.txt /*locale-name*
@@ -8797,7 +8818,7 @@ no_plugin_maps filetype.txt /*no_plugin_maps*
nocombine syntax.txt /*nocombine*
non-greedy pattern.txt /*non-greedy*
non-zero-arg eval.txt /*non-zero-arg*
none-function_argument eval.txt /*none-function_argument*
none-function_argument userfunc.txt /*none-function_argument*
none-variable eval.txt /*none-variable*
normal-index index.txt /*normal-index*
not-compatible usr_01.txt /*not-compatible*
@@ -8851,7 +8872,7 @@ option-value-function options.txt /*option-value-function*
option-window options.txt /*option-window*
option_restore() todo.txt /*option_restore()*
option_save() todo.txt /*option_save()*
optional-function-argument eval.txt /*optional-function-argument*
optional-function-argument userfunc.txt /*optional-function-argument*
options options.txt /*options*
options-changed version5.txt /*options-changed*
options-in-terminal terminal.txt /*options-in-terminal*
@@ -9156,6 +9177,7 @@ pythonx if_pyth.txt /*pythonx*
pythonx-directory if_pyth.txt /*pythonx-directory*
pyxeval() builtin.txt /*pyxeval()*
q repeat.txt /*q*
q-args-example map.txt /*q-args-example*
q/ cmdline.txt /*q\/*
q: cmdline.txt /*q:*
q? cmdline.txt /*q?*
@@ -10326,6 +10348,7 @@ user-cmd-ambiguous map.txt /*user-cmd-ambiguous*
user-commands map.txt /*user-commands*
user-functions eval.txt /*user-functions*
user-manual usr_toc.txt /*user-manual*
userfunc.txt userfunc.txt /*userfunc.txt*
using-<Plug> usr_51.txt /*using-<Plug>*
using-menus gui.txt /*using-menus*
using-scripts repeat.txt /*using-scripts*
@@ -10705,6 +10728,7 @@ vim9-literal-dict vim9.txt /*vim9-literal-dict*
vim9-mix vim9.txt /*vim9-mix*
vim9-namespace vim9.txt /*vim9-namespace*
vim9-no-dict-function vim9.txt /*vim9-no-dict-function*
vim9-no-shorten vim9.txt /*vim9-no-shorten*
vim9-rationale vim9.txt /*vim9-rationale*
vim9-reload vim9.txt /*vim9-reload*
vim9-s-namespace vim9.txt /*vim9-s-namespace*

View File

@@ -889,13 +889,16 @@ like |CTRL-]|.
The function used for generating the taglist is specified by setting the
'tagfunc' option. The function will be called with three arguments:
a:pattern The tag identifier or pattern used during the tag search.
a:flags String containing flags to control the function behavior.
a:info Dict containing the following entries:
pattern The tag identifier or pattern used during the tag search.
flags String containing flags to control the function behavior.
info Dict containing the following entries:
buf_ffname Full filename which can be used for priority.
user_data Custom data String, if stored in the tag
stack previously by tagfunc.
Note that in a legacy function "a:" needs to be prepended to the argument name
when using it.
Currently up to three flags may be passed to the tag function:
'c' The function was invoked by a normal command being processed
(mnemonic: the tag function may use the context around the
@@ -931,6 +934,8 @@ If the function returns |v:null| instead of a List, a standard tag lookup will
be performed instead.
It is not allowed to change the tagstack from inside 'tagfunc'. *E986*
It is not allowed to close a window or change window from inside 'tagfunc'.
*E1299*
The following is a hypothetical example of a function used for 'tagfunc'. It
uses the output of |taglist()| to generate the result: a list of tags in the

View File

@@ -1,4 +1,4 @@
*textprop.txt* For Vim version 9.0. Last change: 2021 Nov 23
*textprop.txt* For Vim version 9.0. Last change: 2022 Sep 21
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -142,9 +142,12 @@ prop_add({lnum}, {col}, {props})
then "id" must not be present and will be set
automatically to a negative number; otherwise
zero is used
text text to be displayed before {col}, or after the
line if {col} is zero; prepend and/or append
spaces for padding with highlighting
*E1305*
text text to be displayed before {col}, or
above/below the line if {col} is zero; prepend
and/or append spaces for padding with
highlighting; cannot be used with "length",
"end_lnum" and "end_col" |virtual-text|
*E1294*
text_align when "text" is present and {col} is zero;
specifies where to display the text:
@@ -153,9 +156,10 @@ prop_add({lnum}, {col}, {props})
the text wraps to the next screen
line)
below in the next screen line
above just above the line
When omitted "after" is used. Only one
"right" property can fit in each line, if
there are two ore more these will go in a
there are two or more these will go in a
separate line (still right aligned).
text_padding_left *E1296*
used when "text" is present and {col} is zero;
@@ -188,12 +192,23 @@ prop_add({lnum}, {col}, {props})
If not found an error is given.
*virtual-text*
When "text" is used and the column is non-zero then this text
will be displayed at the start location of the text property
after the text. The text of the buffer line will be shifted
to make room. This is called "virtual text".
When the column is zero the virtual text will appear after the
buffer text. The "text_align" and "text_wrap" arguments
determine how it is displayed.
will be displayed at the specified start location of the text
property. The text of the buffer line will be shifted to make
room. This is called "virtual text".
When the column is zero the virtual text will appear above,
after or below the buffer text. The "text_align" and
"text_wrap" arguments determine how it is displayed.
To separate the virtual text from the buffer text prepend
and/or append spaces to the "text" field or use the
"text_padding_left" value.
Make sure to use a highlight that makes clear to the user that
this is virtual text, otherwise it will be very confusing that
the text cannot be edited. When using "above" you need to
make clear this text belongs to the text line below it, when
using "below" you need to make sure it belongs to the text
line above it.
The text will be displayed but it is not part of the actual
buffer line, the cursor cannot be placed on it. A mouse click
in the text will move the cursor to the first character after
@@ -205,11 +220,6 @@ prop_add({lnum}, {col}, {props})
property with "text" has been added for a buffer then using a
negative "id" for any other property will give an error:
*E1293*
Make sure to use a highlight that makes clear to the user that
this is virtual text, otherwise it will be very confusing that
the text cannot be edited.
To separate the virtual text from the buffer text prepend
and/or append spaces to the "text" field.
Can also be used as a |method|: >
GetLnum()->prop_add(col, props)

View File

@@ -1,4 +1,4 @@
*todo.txt* For Vim version 9.0. Last change: 2022 Jun 27
*todo.txt* For Vim version 9.0. Last change: 2022 Sep 27
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -38,14 +38,21 @@ browser use: https://github.com/vim/vim/issues/1234
*known-bugs*
-------------------- Known bugs and current work -----------------------
cmdheight=0:
- :g/pattern should not use message window #11012
From test_global
Found errors in Test_interrupt_global():
Run 1, 02:16:22 - 02:16:27:
command line..script /home/mool/vim/vim90/src/testdir/runtest.vim[469]..function RunTheTest[44]..Test_interrupt_global[13]..WaitForAssert[2]..<SNR>7_WaitForCommon[11]..<lambda>20 line 1: Pattern 'Interrupted' does not match 'Type :qa! and press...l changes and exit Vim 1,1 All'
command line..script /home/mool/vim/vim90/src/testdir/runtest.vim[469]..function RunTheTest[44]..Test_interrupt_global[20]..WaitForAssert[2]..<SNR>7_WaitForCommon[11]..<lambda>21 line 1: Pattern 'Interrupted' does not match 'Entering Ex mode. Type "visual" to go to Normal mode.'
*.sil detection with FTsil() (lacygoill, Aug 25)
Use :defer command:
- Use "D" flag of writefile() and mkdir() in tests.
(testdir/test_e*.vim done)
Avoid using "Xfile" and "Xdir" in tests, use specific names.
New Vim indent script: #11079 OK?
Further Vim9 improvements, possibly after launch:
- For map(), reduce() and filter() use a specific implementation if the second
argument is a compiled function. #11163
- Use Vim9 for more runtime files.
- Check performance with callgrind and kcachegrind.
getline()/substitute()/setline() in #5632
@@ -183,11 +190,6 @@ Terminal emulator window:
- When 'encoding' is not utf-8, or the job is using another encoding, setup
conversions.
Cleanup:
- Remove FEAT_FOOTER ?
Add 'splitscroll' #10682 Useful? Any remaining trouble?
Autoconf: must use autoconf 2.69, later version generates lots of warnings
- try using autoconf 2.71 and fix all "obsolete" warnings
@@ -196,6 +198,18 @@ Can deref_func_name() and deref_function_name() be merged?
After patch 8.2.4915 w_botline is computed much more often. Can this be
reduced?
Add BufDeletePost. #11041
Test property disappears when using CR twice in a row. OK when some text was
entered. (#11151)
Add a string to the 'display' option ("smoothscroll" ?) to make CTRL-E and
CTRL-Y scroll one screen line, also if this means the first line doesn't start
with the first character (like what happens with a last line that doesn't
fit). Display "<<<" at the start of the first visible line (like "@@@" is
displayed in the last line). (Arseny Nasokin, #5154)
Neovim PR: https://github.com/neovim/neovim/pull/11014
NFA regexp does not handle composing characters well: #10286
[ɔ̃] matches both ɔ and ɔ̃
\(ɔ\|ɔ̃\) matches ɔ and not ɔ̃
@@ -274,6 +288,9 @@ Also, z= in German on a long word can take a very long time, but CTRL-C to
interrupt does not work. Where to add ui_breakcheck()?
New English spell files also have very slow suggestions.
French spell files don't work correctly. #4916
Make Vim understand the format somehow?
Make "g>" and "g<" in Visual mode move the text right or left.
Also for a block selection. #8558
@@ -554,12 +571,6 @@ Bug: script written with "-W scriptout" contains Key codes, while the script
read with "-s scriptin" expects escape codes. Probably "scriptout" needs to
be adjusted. (Daniel Steinberg, 2019 Feb 24, #4041)
Add a string to the 'display' option ("smoothscroll" ?) to make CTRL-E and
CTRL-Y scroll one screen line, also if this means the first line doesn't start
with the first character (like what happens with a last line that doesn't
fit). Display "<<<" at the start of the first visible line (like "@@@" is
displayed in the last line). (Arseny Nasokin, #5154)
Window size changes after closing a tab. (#4741)
Problem with colors in terminal window. (Jason Franklin, 2019 May 12)
@@ -2644,6 +2655,11 @@ Better 'rightleft' or BIDI support:
Spell checking:
- List of common misspellings in English:
https://en.wikipedia.org/wiki/Wikipedia:Lists_of_common_misspellings/For_machines
German:
https://de.wikipedia.org/wiki/Wikipedia:Liste_von_Tippfehlern/F%C3%BCr_Maschinen
There are other languages.
- [s does not find missing capital at start of the line. #10838
Probably because the dot at the end of the previous line isn't seen.
- When 'cursorline' is set and the first word should have SpellCap
@@ -3753,6 +3769,7 @@ Syntax highlighting:
- use treesitter, NeoVim uses it - Many people don't like it.
After changes requires rebuilding the library.
- use TextMate, vscode uses it. #9087 - Other people don't like it.
https://github.com/icedman/vim-textmate
Vscode is asked to switch to treesitter:
https://github.com/microsoft/vscode/issues/50140
- sublime grammar?

531
runtime/doc/userfunc.txt Normal file
View File

@@ -0,0 +1,531 @@
*userfunc.txt* For Vim version 9.0. Last change: 2022 Sep 09
VIM REFERENCE MANUAL by Bram Moolenaar
Defining and using functions.
This is introduced in section |41.7| of the user manual.
1. Defining a fuction |define-function|
2. Calling a fuction |:call|
3. Cleaning up in a function |:defer|
4. Automatically loading functions |autoload-functions|
==============================================================================
1. Defining a function ~
*define-function*
New functions can be defined. These can be called just like builtin
functions. The function executes a sequence of Ex commands. Normal mode
commands can be executed with the |:normal| command.
The function name must start with an uppercase letter, to avoid confusion with
builtin functions. To prevent from using the same name in different scripts
make them script-local. If you do use a global function then avoid obvious,
short names. A good habit is to start the function name with the name of the
script, e.g., "HTMLcolor()".
In legacy script it is also possible to use curly braces, see
|curly-braces-names|.
The |autoload| facility is useful to define a function only when it's called.
*local-function*
A function local to a legacy script must start with "s:". A local script
function can only be called from within the script and from functions, user
commands and autocommands defined in the script. It is also possible to call
the function from a mapping defined in the script, but then |<SID>| must be
used instead of "s:" when the mapping is expanded outside of the script.
There are only script-local functions, no buffer-local or window-local
functions.
In |Vim9| script functions are local to the script by default, prefix "g:" to
define a global function.
*:fu* *:function* *E128* *E129* *E123* *E454*
:fu[nction] List all functions and their arguments.
:fu[nction] {name} List function {name}.
{name} can also be a |Dictionary| entry that is a
|Funcref|: >
:function dict.init
:fu[nction] /{pattern} List functions with a name matching {pattern}.
Example that lists all functions ending with "File": >
:function /File$
<
*:function-verbose*
When 'verbose' is non-zero, listing a function will also display where it was
last defined. Example: >
:verbose function SetFileTypeSH
function SetFileTypeSH(name)
Last set from /usr/share/vim/vim-7.0/filetype.vim
<
See |:verbose-cmd| for more information.
*E124* *E125* *E853* *E884*
:fu[nction][!] {name}([arguments]) [range] [abort] [dict] [closure]
Define a new function by the name {name}. The body of
the function follows in the next lines, until the
matching |:endfunction|.
*E1267*
The name must be made of alphanumeric characters and
'_', and must start with a capital or "s:" (see
above). Note that using "b:" or "g:" is not allowed.
(since patch 7.4.260 E884 is given if the function
name has a colon in the name, e.g. for "foo:bar()".
Before that patch no error was given).
{name} can also be a |Dictionary| entry that is a
|Funcref|: >
:function dict.init(arg)
< "dict" must be an existing dictionary. The entry
"init" is added if it didn't exist yet. Otherwise [!]
is required to overwrite an existing function. The
result is a |Funcref| to a numbered function. The
function can only be used with a |Funcref| and will be
deleted if there are no more references to it.
*E127* *E122*
When a function by this name already exists and [!] is
not used an error message is given. There is one
exception: When sourcing a script again, a function
that was previously defined in that script will be
silently replaced.
When [!] is used, an existing function is silently
replaced. Unless it is currently being executed, that
is an error.
NOTE: Use ! wisely. If used without care it can cause
an existing function to be replaced unexpectedly,
which is hard to debug.
NOTE: In Vim9 script script-local functions cannot be
deleted or redefined.
For the {arguments} see |function-argument|.
*:func-range* *a:firstline* *a:lastline*
When the [range] argument is added, the function is
expected to take care of a range itself. The range is
passed as "a:firstline" and "a:lastline". If [range]
is excluded, ":{range}call" will call the function for
each line in the range, with the cursor on the start
of each line. See |function-range-example|.
The cursor is still moved to the first line of the
range, as is the case with all Ex commands.
*:func-abort*
When the [abort] argument is added, the function will
abort as soon as an error is detected.
*:func-dict*
When the [dict] argument is added, the function must
be invoked through an entry in a |Dictionary|. The
local variable "self" will then be set to the
dictionary. See |Dictionary-function|.
*:func-closure* *E932*
When the [closure] argument is added, the function
can access variables and arguments from the outer
scope. This is usually called a closure. In this
example Bar() uses "x" from the scope of Foo(). It
remains referenced even after Foo() returns: >
:function! Foo()
: let x = 0
: function! Bar() closure
: let x += 1
: return x
: endfunction
: return funcref('Bar')
:endfunction
:let F = Foo()
:echo F()
< 1 >
:echo F()
< 2 >
:echo F()
< 3
*function-search-undo*
The last used search pattern and the redo command "."
will not be changed by the function. This also
implies that the effect of |:nohlsearch| is undone
when the function returns.
*:endf* *:endfunction* *E126* *E193* *W22* *E1151*
:endf[unction] [argument]
The end of a function definition. Best is to put it
on a line by its own, without [argument].
[argument] can be:
| command command to execute next
\n command command to execute next
" comment always ignored
anything else ignored, warning given when
'verbose' is non-zero
The support for a following command was added in Vim
8.0.0654, before that any argument was silently
ignored.
To be able to define a function inside an `:execute`
command, use line breaks instead of |:bar|: >
:exe "func Foo()\necho 'foo'\nendfunc"
<
*:delf* *:delfunction* *E131* *E933* *E1084*
:delf[unction][!] {name}
Delete function {name}.
{name} can also be a |Dictionary| entry that is a
|Funcref|: >
:delfunc dict.init
< This will remove the "init" entry from "dict". The
function is deleted if there are no more references to
it.
With the ! there is no error if the function does not
exist.
*:retu* *:return* *E133*
:retu[rn] [expr] Return from a function. When "[expr]" is given, it is
evaluated and returned as the result of the function.
If "[expr]" is not given, the number 0 is returned.
When a function ends without an explicit ":return",
the number 0 is returned.
In a :def function *E1095* is given if unreachable
code follows after the `:return`.
In legacy script there is no check for unreachable
lines, thus there is no warning if commands follow
`:return`.
If the ":return" is used after a |:try| but before the
matching |:finally| (if present), the commands
following the ":finally" up to the matching |:endtry|
are executed first. This process applies to all
nested ":try"s inside the function. The function
returns at the outermost ":endtry".
*function-argument* *a:var*
An argument can be defined by giving its name. In the function this can then
be used as "a:name" ("a:" for argument).
*a:0* *a:1* *a:000* *E740* *...*
Up to 20 arguments can be given, separated by commas. After the named
arguments an argument "..." can be specified, which means that more arguments
may optionally be following. In the function the extra arguments can be used
as "a:1", "a:2", etc. "a:0" is set to the number of extra arguments (which
can be 0). "a:000" is set to a |List| that contains these arguments. Note
that "a:1" is the same as "a:000[0]".
*E742* *E1090*
The a: scope and the variables in it cannot be changed, they are fixed.
However, if a composite type is used, such as |List| or |Dictionary| , you can
change their contents. Thus you can pass a |List| to a function and have the
function add an item to it. If you want to make sure the function cannot
change a |List| or |Dictionary| use |:lockvar|.
It is also possible to define a function without any arguments. You must
still supply the () then.
It is allowed to define another function inside a function body.
*optional-function-argument*
You can provide default values for positional named arguments. This makes
them optional for function calls. When a positional argument is not
specified at a call, the default expression is used to initialize it.
This only works for functions declared with `:function` or `:def`, not for
lambda expressions |expr-lambda|.
Example: >
function Something(key, value = 10)
echo a:key .. ": " .. a:value
endfunction
call Something('empty') "empty: 10"
call Something('key', 20) "key: 20"
The argument default expressions are evaluated at the time of the function
call, not definition. Thus it is possible to use an expression which is
invalid the moment the function is defined. The expressions are also only
evaluated when arguments are not specified during a call.
*none-function_argument*
You can pass |v:none| to use the default expression. Note that this means you
cannot pass v:none as an ordinary value when an argument has a default
expression.
Example: >
function Something(a = 10, b = 20, c = 30)
endfunction
call Something(1, v:none, 3) " b = 20
<
*E989*
Optional arguments with default expressions must occur after any mandatory
arguments. You can use "..." after all optional named arguments.
It is possible for later argument defaults to refer to prior arguments,
but not the other way around. They must be prefixed with "a:", as with all
arguments.
Example that works: >
:function Okay(mandatory, optional = a:mandatory)
:endfunction
Example that does NOT work: >
:function NoGood(first = a:second, second = 10)
:endfunction
<
When not using "...", the number of arguments in a function call must be at
least equal to the number of mandatory named arguments. When using "...", the
number of arguments may be larger than the total of mandatory and optional
arguments.
*local-variables*
Inside a function local variables can be used. These will disappear when the
function returns. Global variables need to be accessed with "g:".
Inside functions local variables are accessed without prepending anything.
But you can also prepend "l:" if you like. This is required for some reserved
names, such as "count".
Example: >
:function Table(title, ...)
: echohl Title
: echo a:title
: echohl None
: echo a:0 .. " items:"
: for s in a:000
: echon ' ' .. s
: endfor
:endfunction
This function can then be called with: >
call Table("Table", "line1", "line2")
call Table("Empty Table")
To return more than one value, return a |List|: >
:function Compute(n1, n2)
: if a:n2 == 0
: return ["fail", 0]
: endif
: return ["ok", a:n1 / a:n2]
:endfunction
This function can then be called with: >
:let [success, div] = Compute(102, 6)
:if success == "ok"
: echo div
:endif
<
==============================================================================
2. Calling a function ~
*:cal* *:call* *E107*
:[range]cal[l] {name}([arguments])
Call a function. The name of the function and its arguments
are as specified with `:function`. Up to 20 arguments can be
used. The returned value is discarded.
In |Vim9| script using `:call` is optional, these two lines do
the same thing: >
call SomeFunc(arg)
SomeFunc(arg)
< Without a range and for functions that accept a range, the
function is called once. When a range is given the cursor is
positioned at the start of the first line before executing the
function.
When a range is given and the function doesn't handle it
itself, the function is executed for each line in the range,
with the cursor in the first column of that line. The cursor
is left at the last line (possibly moved by the last function
call). The arguments are re-evaluated for each line. Thus
this works:
*function-range-example* >
:function Mynumber(arg)
: echo line(".") .. " " .. a:arg
:endfunction
:1,5call Mynumber(getline("."))
<
The "a:firstline" and "a:lastline" are defined anyway, they
can be used to do something different at the start or end of
the range.
Example of a function that handles the range itself: >
:function Cont() range
: execute (a:firstline + 1) .. "," .. a:lastline .. 's/^/\t\\ '
:endfunction
:4,8call Cont()
<
This function inserts the continuation character "\" in front
of all the lines in the range, except the first one.
When the function returns a composite value it can be further
dereferenced, but the range will not be used then. Example: >
:4,8call GetDict().method()
< Here GetDict() gets the range but method() does not.
*E117*
When a function cannot be found the error "E117: Unknown function" will be
given. If the function was using an autoload path or an autoload import and
the script is a |Vim9| script, this may also be caused by the function not
being exported.
*E132*
The recursiveness of user functions is restricted with the |'maxfuncdepth'|
option.
It is also possible to use `:eval`. It does not support a range, but does
allow for method chaining, e.g.: >
eval GetList()->Filter()->append('$')
A function can also be called as part of evaluating an expression or when it
is used as a method: >
let x = GetList()
let y = GetList()->Filter()
==============================================================================
3. Cleaning up in a function ~
*:defer*
:defer {func}({args}) Call {func} when the current function is done.
{args} are evaluated here.
Quite often a command in a function has a global effect, which must be undone
when the function finishes. Handling this in all kinds of situations can be a
hassle. Especially when an unexpected error is encountered. This can be done
with `try` / `finally` blocks, but this gets complicated when there is more
than one.
A much simpler solution is using `defer`. It schedules a function call when
the function is returning, no matter if there is an error. Example: >
func Filter(text) abort
call writefile(a:text, 'Tempfile')
call system('filter < Tempfile > Outfile')
call Handle('Outfile')
call delete('Tempfile')
call delete('Outfile')
endfunc
Here 'Tempfile' and 'Outfile' will not be deleted if something causes the
function to abort. `:defer` can be used to avoid that: >
func Filter(text) abort
call writefile(a:text, 'Tempfile')
defer delete('Tempfile')
defer delete('Outfile')
call system('filter < Tempfile > Outfile')
call Handle('Outfile')
endfunc
Note that deleting "Outfile" is scheduled before calling system(), since it
can be created even when `system()` fails.
The deferred functions are called in reverse order, the last one added is
executed first. A useless example: >
func Useless() abort
for s in range(3)
defer execute('echomsg "number ' .. s .. '"')
endfor
endfunc
Now `:messages` shows:
number 2
number 1
number 0
Any return value of the deferred function is discarded. The function cannot
be followed by anything, such as "->func" or ".member". Currently `:defer
GetArg()->TheFunc()` does not work, it may work in a later version.
Errors are reported but do not cause aborting execution of deferred functions.
No range is accepted. The function can be a partial with extra arguments, but
not with a dictionary. *E1300*
==============================================================================
4. Automatically loading functions ~
*autoload-functions*
When using many or large functions, it's possible to automatically define them
only when they are used. There are two methods: with an autocommand and with
the "autoload" directory in 'runtimepath'.
In |Vim9| script there is also an autoload mechanism for imported scripts, see
|import-autoload|.
Using an autocommand ~
This is introduced in the user manual, section |51.4|.
The autocommand is useful if you have a plugin that is a long Vim script file.
You can define the autocommand and quickly quit the script with `:finish`.
That makes Vim startup faster. The autocommand should then load the same file
again, setting a variable to skip the `:finish` command.
Use the FuncUndefined autocommand event with a pattern that matches the
function(s) to be defined. Example: >
:au FuncUndefined BufNet* source ~/vim/bufnetfuncs.vim
The file "~/vim/bufnetfuncs.vim" should then define functions that start with
"BufNet". Also see |FuncUndefined|.
Using an autoload script ~
*autoload* *E746*
This is introduced in the user manual, section |52.2|.
Using a script in the "autoload" directory is simpler, but requires using
exactly the right file name. A function that can be autoloaded has a name
like this: >
:call filename#funcname()
These functions are always global, in Vim9 script "g:" needs to be used: >
:call g:filename#funcname()
When such a function is called, and it is not defined yet, Vim will search the
"autoload" directories in 'runtimepath' for a script file called
"filename.vim". For example "~/.vim/autoload/filename.vim". That file should
then define the function like this: >
function filename#funcname()
echo "Done!"
endfunction
The file name and the name used before the # in the function must match
exactly, and the defined function must have the name exactly as it will be
called. In Vim9 script the "g:" prefix must be used: >
function g:filename#funcname()
or for a compiled function: >
def g:filename#funcname()
It is possible to use subdirectories. Every # in the function name works like
a path separator. Thus when calling a function: >
:call foo#bar#func()
Vim will look for the file "autoload/foo/bar.vim" in 'runtimepath'.
This also works when reading a variable that has not been set yet: >
:let l = foo#bar#lvar
However, when the autoload script was already loaded it won't be loaded again
for an unknown variable.
When assigning a value to such a variable nothing special happens. This can
be used to pass settings to the autoload script before it's loaded: >
:let foo#bar#toggle = 1
:call foo#bar#func()
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, 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.
Avoid using the autoload functionality at the toplevel.
In |Vim9| script you will get error *E1263* if you define a function with
a "#" character in the name. You should use a name without "#" and use
`:export`.
Hint: If you distribute a bunch of scripts you can pack them together with the
|vimball| utility. Also read the user manual |distribute-script|.
vim:tw=78:ts=8:noet:ft=help:norl:

View File

@@ -737,6 +737,8 @@ String manipulation: *string-functions*
fnameescape() escape a file name for use with a Vim command
tr() translate characters from one set to another
strtrans() translate a string to make it printable
keytrans() translate internal keycodes to a form that
can be used by |:map|
tolower() turn a string to lowercase
toupper() turn a string to uppercase
charclass() class of a character

View File

@@ -1,4 +1,4 @@
*various.txt* For Vim version 9.0. Last change: 2022 Jun 25
*various.txt* For Vim version 9.0. Last change: 2022 Sep 19
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -29,6 +29,8 @@ CTRL-L Clear and redraw the screen. The redraw may happen
Useful to update the status line(s) when 'statusline'
includes an item that doesn't cause automatic
updating.
If the command line is being edited the redraw is
postponed until later.
*:redrawt* *:redrawtabline*
:redrawt[abline] Redraw the tabline. Useful to update the tabline when
@@ -381,7 +383,7 @@ N *+find_in_path* include file searches: |[I|, |:isearch|,
N *+folding* |folding|
*+footer* |gui-footer|
*+fork* Unix only: |fork| shell commands
*+float* Floating point support
T *+float* Floating point support Always enabled since 9.0.0491
N *+gettext* message translations |multi-lang|
- *+GUI_Athena* Unix only: Athena |GUI|
*+GUI_neXtaw* Unix only: neXtaw |GUI|

View File

@@ -72,7 +72,7 @@ Command line completion in a popup menu ~
Before there was the 'wildmenu' option, which uses the space of one line above
the statusline to show matches. Only a few matches fit there.
Now a popup menu can be used by setting "wildoptions' to "pum". This allows
Now a popup menu can be used by setting 'wildoptions' to "pum". This allows
for showing many more matches. This requires redrawing more of the display,
but since computers are fast enough that is not a problem.
@@ -336,7 +336,7 @@ Hide cursor when sleeping using |:sleep!|.
Add "multispace" to 'listchars' to show two or more spaces no matter where
they appear. Add "leadmultispace" to 'listchars' to show two or more leading
spaces. Add "lead" to 'listchars' to set the character used to show leading
spaces. Support specifying a character using the hexdecimal notation in
spaces. Support specifying a character using the hexadecimal notation in
'listchars' (\x, \u and \U).
Make 'listchars', 'virtualedit' and 'thesaurusfunc' global-local options.
@@ -28248,7 +28248,7 @@ Files: runtime/doc/repeat.txt, src/scriptfile.c, src/vim9script.c,
src/proto/vim9script.pro, src/testdir/test_source.vim
Patch 8.2.4608
Problem: getcompletion() does not work properly when 'wildoptions
Problem: getcompletion() does not work properly when 'wildoptions'
contains "fuzzy".
Solution: Do not use addstar(). (Yegappan Lakshmanan, closes #9992,
closes #9986)

View File

@@ -1,4 +1,4 @@
*vim9.txt* For Vim version 9.0. Last change: 2022 Jun 25
*vim9.txt* For Vim version 9.0. Last change: 2022 Sep 19
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -107,7 +107,7 @@ script and `:def` functions; details are below:
`:t`
`:xit`
- Some commands, especially those used for flow control, cannot be shortened.
E.g., `:throw` cannot be written as `:th`.
E.g., `:throw` cannot be written as `:th`. *vim9-no-shorten*
- You cannot use curly-braces names.
- A range before a command must be prefixed with a colon: >
:%s/this/that
@@ -962,6 +962,8 @@ In compiled Vim9 script you get:
3
Generally, you should not change the list that is iterated over. Make a copy
first if needed.
*E1306*
The depth of loops, :for and :while loops added together, cannot exceed 10.
Conditions and expressions ~
@@ -1311,7 +1313,7 @@ Make sure to define the breakpoint before compiling the outer function.
The "inloop" variable will exist only once, all closures put in the list refer
to the same instance, which in the end will have the value 4. This is
efficient, also when looping many times. If you do want a separate context
for each closure call a function to define it: >
for each closure, call a function to define it: >
def GetClosure(i: number): func
var infunc = i
return () => infunc
@@ -1327,6 +1329,29 @@ for each closure call a function to define it: >
In some situations, especially when calling a Vim9 closure from legacy
context, the evaluation will fail. *E1248*
Note that at the script level the loop variable will be invalid after the
loop, also when used in a closure that is called later, e.g. with a timer.
This will generate error |E1302|: >
for n in range(4)
timer_start(500 * n, (_) => {
echowin n
})
endfor
You need to use a block and define a variable there, and use that one in the
closure: >
for n in range(4)
{
var nr = n
timer_start(500 * n, (_) => {
echowin nr
})
}
endfor
Using `echowindow` is useful in a timer, the messages go into a popup and will
not interfere with what the user is doing when it triggers.
Converting a function from legacy to Vim9 ~
*convert_legacy_function_to_vim9*
@@ -1385,6 +1410,21 @@ to a Vim9 function:
'three'
]
Calling a function in an expr option ~
*expr-option-function*
A few options, such as 'foldexpr', are an expresison that is evaluated to get
a value. The evaluation can have quite a bit of overhead. One way to
minimize the overhead, and also to keep the option value very simple, is to
defined a compiled function and set the option to call it without arguments.
Example: >
vim9script
def MyFoldFunc(): any
... compute fold level for line v:lnum
return level
enddef
set foldexpr=s:MyFoldFunc()
==============================================================================
4. Types *vim9-types*
@@ -1618,7 +1658,7 @@ type, it can not be used in Vim9 script.
*E1211* *E1217* *E1218* *E1219* *E1220* *E1221*
*E1222* *E1223* *E1224* *E1225* *E1226* *E1227*
*E1228* *E1238* *E1250* *E1251* *E1252* *E1253*
*E1256* *E1297* *E1298*
*E1256* *E1297* *E1298* *E1301*
Types are checked for most builtin functions to make it easier to spot
mistakes.
@@ -1660,7 +1700,7 @@ deleted.
In Vim9 script the global "g:" namespace can still be used as before. And the
"w:", "b:" and "t:" namespaces. These have in common that variables are not
declared and they can be deleted.
declared, have no specific type and they can be deleted. *E1304*
A side effect of `:vim9script` is that the 'cpoptions' option is set to the
Vim default value, like with: >
@@ -1801,7 +1841,7 @@ And using the "as name" form: >
import "otherfile.vim9script" as that
call s:that.OtherFunc()
However, the namespace cannot be resolved on it's own: >
However, the namespace cannot be resolved on its own: >
import "that.vim"
echo s:that
" ERROR: E1060: Expected dot after name: s:that

View File

@@ -257,13 +257,13 @@ and 'winminwidth' are relevant.
:vert[ical] {cmd}
Execute {cmd}. If it contains a command that splits a window,
it will be split vertically. For `vertical wincmd =` windows
will be equialized only vertically.
will be equalized only vertically.
Doesn't work for |:execute| and |:normal|.
*:hor* *:horizontal*
:hor[izontal] {cmd}
Execute {cmd}. Currently only makes a difference for
`horizontal wincmd =`, which will equal windows only
`horizontal wincmd =`, which will equalize windows only
horizontally.
:lefta[bove] {cmd} *:lefta* *:leftabove*

View File

@@ -1,7 +1,7 @@
" Vim support file to detect file types
"
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2022 Jul 5
" Last Change: 2022 Sep 27
" Listen very carefully, I will say this only once
if exists("did_load_filetypes")
@@ -299,6 +299,9 @@ au BufNewFile,BufRead cfengine.conf setf cfengine
" ChaiScript
au BufRead,BufNewFile *.chai setf chaiscript
" Chatito
au BufNewFile,BufRead *.chatito setf chatito
" Comshare Dimension Definition Language
au BufNewFile,BufRead *.cdl setf cdl
@@ -448,6 +451,9 @@ endif
" Lynx config files
au BufNewFile,BufRead lynx.cfg setf lynx
" LyRiCs
au BufNewFile,BufRead *.lrc setf lyrics
" Modula-3 configuration language (must be before *.cfg and *makefile)
au BufNewFile,BufRead *.quake,cm3.cfg setf m3quake
au BufNewFile,BufRead m3makefile,m3overrides setf m3build
@@ -720,9 +726,16 @@ au BufNewFile,BufRead *.git/worktrees/*/config.worktree setf gitconfig
au BufNewFile,BufRead .gitmodules,*.git/modules/*/config setf gitconfig
if !empty($XDG_CONFIG_HOME)
au BufNewFile,BufRead $XDG_CONFIG_HOME/git/config setf gitconfig
au BufNewFile,BufRead $XDG_CONFIG_HOME/git/attributes setf gitattributes
au BufNewFile,BufRead $XDG_CONFIG_HOME/git/ignore setf gitignore
endif
au BufNewFile,BufRead git-rebase-todo setf gitrebase
au BufRead,BufNewFile .gitsendemail.msg.?????? setf gitsendemail
au BufNewFile,BufRead .gitattributes,*.git/info/attributes setf gitattributes
au BufNewFile,BufRead */.config/git/attributes setf gitattributes
au BufNewFile,BufRead */etc/gitattributes setf gitattributes
au BufNewFile,BufRead .gitignore,*.git/info/exclude setf gitignore
au BufNewFile,BufRead */.config/git/ignore setf gitignore
au BufNewFile,BufRead git-rebase-todo setf gitrebase
au BufRead,BufNewFile .gitsendemail.msg.?????? setf gitsendemail
au BufNewFile,BufRead *.git/*
\ if getline(1) =~# '^\x\{40,\}\>\|^ref: ' |
\ setf git |
@@ -757,8 +770,8 @@ au BufNewFile,BufRead gitolite.conf setf gitolite
au BufNewFile,BufRead {,.}gitolite.rc,example.gitolite.rc setf perl
" Glimmer-flavored TypeScript and JavaScript
au BufNewFile,BufRead *.gts setf typescript.glimmer
au BufNewFile,BufRead *.gjs setf javascript.glimmer
au BufNewFile,BufRead *.gts setf typescript.glimmer
au BufNewFile,BufRead *.gjs setf javascript.glimmer
" Gnuplot scripts
au BufNewFile,BufRead *.gpi,.gnuplot setf gnuplot
@@ -789,6 +802,9 @@ au BufNewFile,BufRead */etc/group,*/etc/group-,*/etc/group.edit,*/etc/gshadow,*/
" GTK RC
au BufNewFile,BufRead .gtkrc,gtkrc setf gtkrc
" GYP
au BufNewFile,BufRead *.gyp,*.gypi setf gyp
" Hack
au BufRead,BufNewFile *.hack,*.hackpartial setf hack
@@ -831,6 +847,9 @@ au BufNewFile,BufRead *.hex,*.h32 setf hex
" Hjson
au BufNewFile,BufRead *.hjson setf hjson
" HLS Playlist (or another form of playlist)
au BufNewFile,BufRead *.m3u,*.m3u8 setf hlsplaylist
" Hollywood
au BufRead,BufNewFile *.hws setf hollywood
@@ -867,11 +886,11 @@ au BufNewFile,BufRead *.htt,*.htb setf httest
" i3
au BufNewFile,BufRead */i3/config setf i3config
au BufNewFile,BufRead */.i3/config setf i3config
au BufNewFile,BufRead */.i3/config setf i3config
" sway
au BufNewFile,BufRead */sway/config setf swayconfig
au BufNewFile,BufRead */.sway/config setf swayconfig
au BufNewFile,BufRead */.sway/config setf swayconfig
" Icon
au BufNewFile,BufRead *.icn setf icon
@@ -940,7 +959,7 @@ au BufNewFile,BufRead *.java,*.jav setf java
au BufNewFile,BufRead *.jj,*.jjt setf javacc
" JavaScript, ECMAScript, ES module script, CommonJS script
au BufNewFile,BufRead *.js,*.javascript,*.es,*.mjs,*.cjs setf javascript
au BufNewFile,BufRead *.js,*.jsm,*.javascript,*.es,*.mjs,*.cjs setf javascript
" JavaScript with React
au BufNewFile,BufRead *.jsx setf javascriptreact
@@ -978,6 +997,9 @@ au BufNewFile,BufRead .babelrc,.eslintrc,.prettierrc,.firebaserc setf json
" JSONC
au BufNewFile,BufRead *.jsonc setf jsonc
" Jsonnet
au BufNewFile,BufRead *.jsonnet,*.libjsonnet setf jsonnet
" Julia
au BufNewFile,BufRead *.jl setf julia
@@ -1007,6 +1029,9 @@ au BufNewFile,BufRead Kconfig,Kconfig.debug setf kconfig
" Lace (ISE)
au BufNewFile,BufRead *.ace,*.ACE setf lace
" Latexmkrc
au BufNewFile,BufRead .latexmkrc,latexmkrc setf perl
" Latte
au BufNewFile,BufRead *.latte,*.lte setf latte
@@ -1087,6 +1112,9 @@ au BufNewFile,BufRead *.lou,*.lout setf lout
" Lua
au BufNewFile,BufRead *.lua setf lua
" Luacheck
au BufNewFile,BufRead .luacheckrc setf lua
" Luarocks
au BufNewFile,BufRead *.rockspec setf lua
@@ -1259,6 +1287,9 @@ au BufNewFile,BufRead .netrc setf netrc
" Nginx
au BufNewFile,BufRead *.nginx,nginx*.conf,*nginx.conf,*/etc/nginx/*,*/usr/local/nginx/conf/*,*/nginx/*.conf setf nginx
" Nim file
au BufNewFile,BufRead *.nim,*.nims,*.nimble setf nim
" Ninja file
au BufNewFile,BufRead *.ninja setf ninja
@@ -1316,7 +1347,7 @@ au BufNewFile,BufRead *.or setf openroad
au BufNewFile,BufRead *.[Oo][Pp][Ll] setf opl
" OpenSCAD
au BufNewFile,BufRead *.scad setf openscad
au BufNewFile,BufRead *.scad setf openscad
" Oracle config file
au BufNewFile,BufRead *.ora setf ora
@@ -1391,7 +1422,8 @@ au BufNewFile,BufRead *.pod setf pod
" Also Phtml (was used for PHP 2 in the past).
" Also .ctp for Cake template file.
" Also .phpt for php tests.
au BufNewFile,BufRead *.php,*.php\d,*.phtml,*.ctp,*.phpt setf php
" Also .theme for Drupal theme files.
au BufNewFile,BufRead *.php,*.php\d,*.phtml,*.ctp,*.phpt,*.theme setf php
" PHP config
au BufNewFile,BufRead php.ini-* setf dosini
@@ -1712,6 +1744,9 @@ au BufNewFile,BufRead *.sdl,*.pr setf sdl
" sed
au BufNewFile,BufRead *.sed setf sed
" SubRip
au BufNewFile,BufRead *.srt setf srt
" svelte
au BufNewFile,BufRead *.svelte setf svelte
@@ -2054,7 +2089,7 @@ au BufNewFile,BufRead *.tsv setf tsv
" TWIG files
au BufNewFile,BufReadPost *.twig setf twig
" Typescript or Qt translation file (which is XML)
" TypeScript or Qt translation file (which is XML)
au BufNewFile,BufReadPost *.ts
\ if getline(1) =~ '<?xml' |
\ setf xml |
@@ -2062,6 +2097,9 @@ au BufNewFile,BufReadPost *.ts
\ setf typescript |
\ endif
" TypeScript module and common
au BufNewFile,BufRead *.mts,*.cts setf typescript
" TypeScript with React
au BufNewFile,BufRead *.tsx setf typescriptreact
@@ -2094,6 +2132,9 @@ au BufNewFile,BufRead */.config/upstart/*.override setf upstart
" Vala
au BufNewFile,BufRead *.vala setf vala
" VDF
au BufNewFile,BufRead *.vdf setf vdf
" VDM
au BufRead,BufNewFile *.vdmpp,*.vpp setf vdmpp
au BufRead,BufNewFile *.vdmrt setf vdmrt
@@ -2250,7 +2291,7 @@ au BufNewFile,BufRead *.fsproj,*.fsproj.user setf xml
au BufNewFile,BufRead *.vbproj,*.vbproj.user setf xml
" Qt Linguist translation source and Qt User Interface Files are XML
" However, for .ts Typescript is more common.
" However, for .ts TypeScript is more common.
au BufNewFile,BufRead *.ui setf xml
" TPM's are RDF-based descriptions of TeX packages (Nikolai Weibull)
@@ -2568,6 +2609,8 @@ au BufNewFile,BufRead *.txt
\| setf text
\| endif
" Blueprint markup files
au BufNewFile,BufRead *.blp setf blueprint
" Use the filetype detect plugins. They may overrule any of the previously
" detected filetypes.

View File

@@ -0,0 +1,15 @@
" Vim filetype plugin
" Language: Chatito
" Maintainer: ObserverOfTime <chronobserver@disroot.org>
" Last Change: 2022 Sep 19
if exists('b:did_ftplugin')
finish
endif
let b:did_ftplugin = 1
setlocal comments=:#,:// commentstring=#\ %s
" indent of 4 spaces is mandated by the spec
setlocal expandtab softtabstop=4 shiftwidth=4
let b:undo_ftplugin = 'setl com< cms< et< sts< sw<'

View File

@@ -0,0 +1,16 @@
" Vim filetype plugin
" Language: crontab
" Maintainer: Keith Smiley <keithbsmiley@gmail.com>
" Last Change: 2022 Sep 11
" Only do this when not done yet for this buffer
if exists("b:did_ftplugin")
finish
endif
" Don't load another plugin for this buffer
let b:did_ftplugin = 1
let b:undo_ftplugin = "setl commentstring<"
setlocal commentstring=#\ %s

View File

@@ -1,7 +1,7 @@
" Elixir filetype plugin
" Language: Elixir
" Maintainer: Mitchell Hanberg <vimNOSPAM@mitchellhanberg.com>
" Last Change: 2022 August 10
" Last Change: 2022 Sep 20
if exists("b:did_ftplugin")
finish
@@ -23,7 +23,11 @@ if exists('loaded_matchit') && !exists('b:match_words')
\ ',{:},\[:\],(:)'
endif
setlocal shiftwidth=2 softtabstop=2 expandtab iskeyword+=!,?
setlocal comments=:#
setlocal commentstring=#\ %s
let b:undo_ftplugin = 'setlocal sw< sts< et< isk< com< cms<'
let &cpo = s:save_cpo
unlet s:save_cpo

View File

@@ -3,6 +3,7 @@ vim9script
# Vim filetype plugin file
# Language: gdscript (Godot game engine scripting language)
# Maintainer: Maxim Kim <habamax@gmail.com>
# Website: https://github.com/habamax/vim-gdscript
if exists("b:did_ftplugin") | finish | endif
@@ -40,14 +41,19 @@ def GDScriptFoldLevel(): string
enddef
# Next/Previous section
def NextSection(back: bool, cnt: number)
for n in range(cnt)
search('^\s*func\s', back ? 'bW' : 'W')
endfor
enddef
if !exists("g:no_plugin_maps")
# Next/Previous section
def NextSection(back: bool, cnt: number)
for n in range(cnt)
search('^\s*func\s', back ? 'bW' : 'W')
endfor
enddef
nnoremap <silent><buffer> ]] <scriptcmd>NextSection(false, v:count1)<CR>
nnoremap <silent><buffer> [[ <scriptcmd>NextSection(true, v:count1)<CR>
xmap <silent><buffer><expr> ]] "\<esc>" .. v:count1 .. ']]m>gv'
xmap <silent><buffer><expr> [[ "\<esc>" .. v:count1 .. '[[m>gv'
nnoremap <silent><buffer> ]] <scriptcmd>NextSection(false, v:count1)<CR>
nnoremap <silent><buffer> [[ <scriptcmd>NextSection(true, v:count1)<CR>
xmap <buffer><expr> ]] $'<C-\><C-N>{v:count1}]]m>gv'
xmap <buffer><expr> [[ $'<C-\><C-N>{v:count1}[[m>gv'
b:undo_ftplugin ..=
\ " | silent exe 'unmap <buffer> [['"
\ .. " | silent exe 'unmap <buffer> ]]'"
endif

View File

@@ -3,6 +3,7 @@ vim9script
# Vim filetype plugin file
# Language: Godot shading language
# Maintainer: Maxim Kim <habamax@gmail.com>
# Website: https://github.com/habamax/vim-gdscript
if exists("b:did_ftplugin") | finish | endif
b:did_ftplugin = 1

View File

@@ -0,0 +1,13 @@
" Vim filetype plugin
" Language: git attributes
" Maintainer: ObserverOfTime <chronobserver@disroot.org>
" Last Change: 2022 Sep 08
if exists('b:did_ftplugin')
finish
endif
let b:did_ftplugin = 1
setl comments=:# commentstring=#\ %s
let b:undo_ftplugin = 'setl com< cms<'

View File

@@ -0,0 +1,13 @@
" Vim filetype plugin
" Language: git ignore
" Maintainer: ObserverOfTime <chronobserver@disroot.org>
" Last Change: 2022 Sep 10
if exists('b:did_ftplugin')
finish
endif
let b:did_ftplugin = 1
setl comments=:# commentstring=#\ %s
let b:undo_ftplugin = 'setl com< cms<'

14
runtime/ftplugin/gyp.vim Normal file
View File

@@ -0,0 +1,14 @@
" Vim filetype plugin
" Language: GYP
" Maintainer: ObserverOfTime <chronobserver@disroot.org>
" Last Change: 2022 Sep 27
if exists('b:did_ftplugin')
finish
endif
let b:did_ftplugin = 1
setlocal formatoptions-=t
setlocal commentstring=#\ %s comments=b:#,fb:-
let b:undo_ftplugin = 'setlocal fo< cms< com<'

27
runtime/ftplugin/hare.vim Normal file
View File

@@ -0,0 +1,27 @@
" Vim filetype plugin
" Language: Hare
" Maintainer: Amelia Clarke <me@rsaihe.dev>
" Previous Maintainer: Drew DeVault <sir@cmpwn.com>
" Last Updated: 2022-09-21
" Only do this when not done yet for this buffer
if exists('b:did_ftplugin')
finish
endif
" Don't load another plugin for this buffer
let b:did_ftplugin = 1
setlocal noexpandtab
setlocal tabstop=8
setlocal shiftwidth=0
setlocal softtabstop=0
setlocal textwidth=80
setlocal commentstring=//\ %s
" Set 'formatoptions' to break comment lines but not other lines,
" and insert the comment leader when hitting <CR> or using "o".
setlocal fo-=t fo+=croql
compiler hare
" vim: tabstop=2 shiftwidth=2 expandtab

16
runtime/ftplugin/heex.vim Normal file
View File

@@ -0,0 +1,16 @@
" Elixir filetype plugin
" Language: HEEx
" Maintainer: Mitchell Hanberg <vimNOSPAM@mitchellhanberg.com>
" Last Change: 2022 Sep 21
if exists("b:did_ftplugin")
finish
endif
let b:did_ftplugin = 1
setlocal shiftwidth=2 softtabstop=2 expandtab
setlocal comments=:<%!--
setlocal commentstring=<%!--\ %s\ --%>
let b:undo_ftplugin = 'set sw< sts< et< com< cms<'

View File

@@ -0,0 +1,17 @@
" Vim filetype plugin
" Language: Jsonnet
" Maintainer: Cezary Drożak <cezary@drozak.net>
" URL: https://github.com/google/vim-jsonnet
" Last Change: 2022-09-08
" Only do this when not done yet for this buffer
if exists("b:did_ftplugin")
finish
endif
" Don't load another plugin for this buffer
let b:did_ftplugin = 1
setlocal commentstring=//\ %s
let b:undo_ftplugin = "setlocal commentstring<"

View File

@@ -1,46 +1,46 @@
" Vim filetype plugin file.
" Language: Lua
" Language: Lua
" Maintainer: Doug Kearns <dougkearns@gmail.com>
" Previous Maintainer: Max Ischenko <mfi@ukr.net>
" Last Change: 2021 Nov 15
" Contributor: Dorai Sitaram <ds26@gte.com>
" Last Change: 2022 Sep 05
" Only do this when not done yet for this buffer
if exists("b:did_ftplugin")
finish
endif
" Don't load another plugin for this buffer
let b:did_ftplugin = 1
let s:cpo_save = &cpo
set cpo&vim
" Set 'formatoptions' to break comment lines but not other lines, and insert
" the comment leader when hitting <CR> or using "o".
setlocal comments=:--
setlocal commentstring=--\ %s
setlocal formatoptions-=t formatoptions+=croql
setlocal comments=:--
setlocal commentstring=--%s
let &l:define = '\<function\|\<local\%(\s\+function\)\='
setlocal suffixesadd=.lua
let b:undo_ftplugin = "setlocal fo< com< cms< sua<"
let b:undo_ftplugin = "setlocal cms< com< def< fo< sua<"
if exists("loaded_matchit") && !exists("b:match_words")
let b:match_ignorecase = 0
let b:match_words =
\ '\<\%(do\|function\|if\)\>:' .
\ '\<\%(return\|else\|elseif\)\>:' .
\ '\<end\>,' .
\ '\<repeat\>:\<until\>,' .
\ '\%(--\)\=\[\(=*\)\[:]\1]'
let b:undo_ftplugin .= " | unlet! b:match_words b:match_ignorecase"
\ '\<\%(do\|function\|if\)\>:' ..
\ '\<\%(return\|else\|elseif\)\>:' ..
\ '\<end\>,' ..
\ '\<repeat\>:\<until\>,' ..
\ '\%(--\)\=\[\(=*\)\[:]\1]'
let b:undo_ftplugin ..= " | unlet! b:match_words b:match_ignorecase"
endif
if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter")
let b:browsefilter = "Lua Source Files (*.lua)\t*.lua\n" .
\ "All Files (*.*)\t*.*\n"
let b:undo_ftplugin .= " | unlet! b:browsefilter"
let b:browsefilter = "Lua Source Files (*.lua)\t*.lua\n" ..
\ "All Files (*.*)\t*.*\n"
let b:undo_ftplugin ..= " | unlet! b:browsefilter"
endif
let &cpo = s:cpo_save
unlet s:cpo_save
" vim: nowrap sw=2 sts=2 ts=8 noet:

29
runtime/ftplugin/lynx.vim Normal file
View File

@@ -0,0 +1,29 @@
" Vim filetype plugin file
" Language: Lynx Web Browser Configuration
" Maintainer: Doug Kearns <dougkearns@gmail.com>
" Last Change: 2022 Sep 09
if exists("b:did_ftplugin")
finish
endif
let b:did_ftplugin = 1
let s:cpo_save = &cpo
set cpo&vim
setlocal comments=:#
setlocal commentstring=#\ %s
setlocal formatoptions-=t formatoptions+=croql
let b:undo_ftplugin = "setl cms< com< fo<"
if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter")
let b:browsefilter = "Lynx Configuration Files (lynx.cfg .lynxrc)\tlynx.cfg;.lynxrc\n" ..
\ "All Files (*.*)\t*.*\n"
let b:undo_ftplugin ..= " | unlet! b:browsefilter"
endif
let &cpo = s:cpo_save
unlet s:cpo_save
" vim: nowrap sw=2 sts=2 ts=8 noet:

View File

@@ -1,12 +1,12 @@
" Vim filetype plugin file
" Language: sh
"
" This runtime file is looking for a new maintainer.
"
" Former maintainer: Dan Sharp
" Last Changed: 20 Jan 2009
" Language: sh
" Maintainer: Doug Kearns <dougkearns@gmail.com>
" Previous Maintainer: Dan Sharp
" Last Change: 2022 Sep 07
if exists("b:did_ftplugin") | finish | endif
if exists("b:did_ftplugin")
finish
endif
let b:did_ftplugin = 1
" Make sure the continuation lines below do not cause problems in
@@ -14,28 +14,35 @@ let b:did_ftplugin = 1
let s:save_cpo = &cpo
set cpo-=C
setlocal commentstring=#%s
setlocal comments=:#
setlocal commentstring=#\ %s
setlocal formatoptions-=t formatoptions+=croql
let b:undo_ftplugin = "setl com< cms< fo<"
" Shell: thanks to Johannes Zellner
if exists("loaded_matchit")
let s:sol = '\%(;\s*\|^\s*\)\@<=' " start of line
let b:match_words =
\ s:sol.'if\>:' . s:sol.'elif\>:' . s:sol.'else\>:' . s:sol. 'fi\>,' .
\ s:sol.'\%(for\|while\)\>:' . s:sol. 'done\>,' .
\ s:sol.'case\>:' . s:sol. 'esac\>'
if exists("loaded_matchit") && !exists("b:match_words")
let b:match_ignorecase = 0
let s:sol = '\%(;\s*\|^\s*\)\@<=' " start of line
let b:match_words =
\ s:sol .. 'if\>:' .. s:sol.'elif\>:' .. s:sol.'else\>:' .. s:sol .. 'fi\>,' ..
\ s:sol .. '\%(for\|while\)\>:' .. s:sol .. 'done\>,' ..
\ s:sol .. 'case\>:' .. s:sol .. 'esac\>'
unlet s:sol
let b:undo_ftplugin ..= " | unlet! b:match_ignorecase b:match_words"
endif
" Change the :browse e filter to primarily show shell-related files.
if has("gui_win32")
let b:browsefilter="Bourne Shell Scripts (*.sh)\t*.sh\n" .
\ "Korn Shell Scripts (*.ksh)\t*.ksh\n" .
\ "Bash Shell Scripts (*.bash)\t*.bash\n" .
\ "All Files (*.*)\t*.*\n"
if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter")
let b:browsefilter = "Bourne Shell Scripts (*.sh)\t*.sh\n" ..
\ "Korn Shell Scripts (*.ksh)\t*.ksh\n" ..
\ "Bash Shell Scripts (*.bash)\t*.bash\n" ..
\ "All Files (*.*)\t*.*\n"
let b:undo_ftplugin ..= " | unlet! b:browsefilter"
endif
" Undo the stuff we changed.
let b:undo_ftplugin = "setlocal cms< | unlet! b:browsefilter b:match_words"
" Restore the saved compatibility options.
let &cpo = s:save_cpo
unlet s:save_cpo
" vim: nowrap sw=2 sts=2 ts=8 noet:

14
runtime/ftplugin/vdf.vim Normal file
View File

@@ -0,0 +1,14 @@
" Vim filetype plugin
" Language: Valve Data Format
" Maintainer: ObserverOfTime <chronobserver@disroot.org>
" Last Change: 2022 Sep 15
if exists('b:did_ftplugin')
finish
endif
let b:did_ftplugin = 1
setl comments=:// commentstring=//\ %s
setl foldmethod=syntax
let b:undo_ftplugin = 'setl com< cms< fdm<'

View File

@@ -1,7 +1,7 @@
" Vim filetype plugin
" Language: Vim
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2022 Aug 4
" Last Change: 2022 Sep 20
" Only do this when not done yet for this buffer
if exists("b:did_ftplugin")
@@ -48,17 +48,17 @@ setlocal isk+=#
" Use :help to lookup the keyword under the cursor with K.
setlocal keywordprg=:help
" Comments starts with # in Vim9 script. We have to guess which one to use.
if "\n" .. getline(1, 10)->join("\n") =~# '\n\s*vim9\%[script]\>'
" Set 'comments' to format dashed lists in comments
setlocal com=sO:#\ -,mO:#\ \ ,eO:##,:#
" Comments starts with # in Vim9 script
setlocal commentstring=#%s
else
setlocal com=sO:\"\ -,mO:\"\ \ ,eO:\"\",:\"
" Comments starts with a double quote in legacy script
setlocal commentstring=\"%s
endif
" Set 'comments' to format dashed lists in comments, both in Vim9 and legacy
" script.
setlocal com=sO:#\ -,mO:#\ \ ,eO:##,:#,sO:\"\ -,mO:\"\ \ ,eO:\"\",:\"
" set 'include' to recognize import commands
setlocal include=\\v^\\s*import\\s*(autoload)?
@@ -74,14 +74,14 @@ if !exists("no_plugin_maps") && !exists("no_vim_maps")
let b:did_add_maps = 1
" Move around functions.
nnoremap <silent><buffer> [[ m':call search('^\s*\(fu\%[nction]\\|def\)\>', "bW")<CR>
vnoremap <silent><buffer> [[ m':<C-U>exe "normal! gv"<Bar>call search('^\s*\(fu\%[nction]\\|def\)\>', "bW")<CR>
nnoremap <silent><buffer> ]] m':call search('^\s*\(fu\%[nction]\\|def\)\>', "W")<CR>
vnoremap <silent><buffer> ]] m':<C-U>exe "normal! gv"<Bar>call search('^\s*\(fu\%[nction]\\|def\)\>', "W")<CR>
nnoremap <silent><buffer> [] m':call search('^\s*end\(f\%[unction]\\|def\)\>', "bW")<CR>
vnoremap <silent><buffer> [] m':<C-U>exe "normal! gv"<Bar>call search('^\s*end\(f\%[unction]\\|def\)\>', "bW")<CR>
nnoremap <silent><buffer> ][ m':call search('^\s*end\(f\%[unction]\\|def\)\>', "W")<CR>
vnoremap <silent><buffer> ][ m':<C-U>exe "normal! gv"<Bar>call search('^\s*end\(f\%[unction]\\|def\)\>', "W")<CR>
nnoremap <silent><buffer> [[ m':call search('^\s*\(fu\%[nction]\\|\(export\s\+\)\?def\)\>', "bW")<CR>
vnoremap <silent><buffer> [[ m':<C-U>exe "normal! gv"<Bar>call search('^\s*\(fu\%[nction]\\|\(export\s\+\)\?def\)\>', "bW")<CR>
nnoremap <silent><buffer> ]] m':call search('^\s*\(fu\%[nction]\\|\(export\s\+\)\?def\)\>', "W")<CR>
vnoremap <silent><buffer> ]] m':<C-U>exe "normal! gv"<Bar>call search('^\s*\(fu\%[nction]\\|\(export\s\+\)\?def\)\>', "W")<CR>
nnoremap <silent><buffer> [] m':call search('^\s*end\(f\%[unction]\\|\(export\s\+\)\?def\)\>', "bW")<CR>
vnoremap <silent><buffer> [] m':<C-U>exe "normal! gv"<Bar>call search('^\s*end\(f\%[unction]\\|\(export\s\+\)\?def\)\>', "bW")<CR>
nnoremap <silent><buffer> ][ m':call search('^\s*end\(f\%[unction]\\|\(export\s\+\)\?def\)\>', "W")<CR>
vnoremap <silent><buffer> ][ m':<C-U>exe "normal! gv"<Bar>call search('^\s*end\(f\%[unction]\\|\(export\s\+\)\?def\)\>', "W")<CR>
" Move around comments
nnoremap <silent><buffer> ]" :call search('^\(\s*".*\n\)\@<!\(\s*"\)', "W")<CR>

View File

@@ -1,7 +1,7 @@
" Vim filetype plugin file
" Language: Zimbu
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2021 Nov 12
" Last Change: 2022 Sep 07
" Only do this when not done yet for this buffer
if exists("b:did_ftplugin")
@@ -28,7 +28,7 @@ endif
" Set 'comments' to format dashed lists in comments.
" And to keep Zudocu comment characters.
setlocal comments=sO:#\ -,mO:#\ \ ,:#=,:#-,:#%,:#
setlocal comments=sO:#\ -,mO:#\ \ ,exO:#/,s:/*,m:\ ,ex:*/,:#=,:#-,:#%,:#
setlocal errorformat^=%f\ line\ %l\ col\ %c:\ %m,ERROR:\ %m

View File

@@ -2,7 +2,7 @@
" Language: Zsh shell script
" Maintainer: Christian Brabandt <cb@256bit.org>
" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
" Latest Revision: 2020-09-01
" Latest Revision: 2021-04-03
" License: Vim (see :h license)
" Repository: https://github.com/chrisbra/vim-zsh

View File

@@ -0,0 +1,32 @@
" Vim indent file
" Language: Chatito
" Maintainer: ObserverOfTime <chronobserver@disroot.org>
" Last Change: 2022 Sep 20
if exists('b:did_indent')
finish
endif
let b:did_indent = 1
setlocal indentexpr=GetChatitoIndent()
setlocal indentkeys=o,O,*<Return>,0#,!^F
let b:undo_indent = 'setl inde< indk<'
if exists('*GetChatitoIndent')
finish
endif
function GetChatitoIndent()
let l:prev = v:lnum - 1
if getline(prevnonblank(l:prev)) =~# '^[~%@]\['
" shift indent after definitions
return shiftwidth()
elseif getline(l:prev) !~# '^\s*$'
" maintain indent in sentences
return indent(l:prev)
else
" reset indent after a blank line
return 0
end
endfunction

7
runtime/indent/gyp.vim Normal file
View File

@@ -0,0 +1,7 @@
" Vim indent file
" Language: GYP
" Maintainer: ObserverOfTime <chronobserver@disroot.org>
" Last Change: 2022 Sep 27
" JSON indent works well
runtime! indent/json.vim

138
runtime/indent/hare.vim Normal file
View File

@@ -0,0 +1,138 @@
" Vim indent file
" Language: Hare
" Maintainer: Amelia Clarke <me@rsaihe.dev>
" Last Change: 2022 Sep 22
if exists("b:did_indent")
finish
endif
let b:did_indent = 1
if !has("cindent") || !has("eval")
finish
endif
setlocal cindent
" L0 -> don't deindent labels
" (s -> use one indent after a trailing (
" m1 -> if ) starts a line, indent it the same as its matching (
" ks -> add an extra indent to extra lines in an if expression or for expression
" j1 -> indent code inside {} one level when in parentheses
" J1 -> see j1
" *0 -> don't search for unclosed block comments
" #1 -> don't deindent lines that begin with #
setlocal cinoptions=L0,(s,m1,ks,j1,J1,*0,#1
" Controls which keys reindent the current line.
" 0{ -> { at beginning of line
" 0} -> } at beginning of line
" 0) -> ) at beginning of line
" 0] -> ] at beginning of line
" !^F -> <C-f> (not inserted)
" o -> <CR> or `o` command
" O -> `O` command
" e -> else
" 0=case -> case
setlocal indentkeys=0{,0},0),0],!^F,o,O,e,0=case
setlocal cinwords=if,else,for,switch,match
setlocal indentexpr=GetHareIndent()
function! FloorCindent(lnum)
return cindent(a:lnum) / shiftwidth() * shiftwidth()
endfunction
function! GetHareIndent()
let line = getline(v:lnum)
let prevlnum = prevnonblank(v:lnum - 1)
let prevline = getline(prevlnum)
let prevprevline = getline(prevnonblank(prevlnum - 1))
" This is all very hacky and imperfect, but it's tough to do much better when
" working with regex-based indenting rules.
" If the previous line ended with =, indent by one shiftwidth.
if prevline =~# '\v\=\s*(//.*)?$'
return indent(prevlnum) + shiftwidth()
endif
" If the previous line ended in a semicolon and the line before that ended
" with =, deindent by one shiftwidth.
if prevline =~# '\v;\s*(//.*)?$' && prevprevline =~# '\v\=\s*(//.*)?$'
return indent(prevlnum) - shiftwidth()
endif
" TODO: The following edge-case is still indented incorrectly:
" case =>
" if (foo) {
" bar;
" };
" | // cursor is incorrectly deindented by one shiftwidth.
"
" This only happens if the {} block is the first statement in the case body.
" If `case` is typed, the case will also be incorrectly deindented by one
" shiftwidth. Are you having fun yet?
" Deindent cases.
if line =~# '\v^\s*case'
" If the previous line was also a case, don't do any special indenting.
if prevline =~# '\v^\s*case'
return indent(prevlnum)
end
" If the previous line was a multiline case, deindent by one shiftwidth.
if prevline =~# '\v\=\>\s*(//.*)?$'
return indent(prevlnum) - shiftwidth()
endif
" If the previous line started a block, deindent by one shiftwidth.
" This handles the first case in a switch/match block.
if prevline =~# '\v\{\s*(//.*)?$'
return FloorCindent(v:lnum) - shiftwidth()
end
" If the previous line ended in a semicolon and the line before that wasn't
" a case, deindent by one shiftwidth.
if prevline =~# '\v;\s*(//.*)?$' && prevprevline !~# '\v\=\>\s*(//.*)?$'
return FloorCindent(v:lnum) - shiftwidth()
end
let l:indent = FloorCindent(v:lnum)
" If a normal cindent would indent the same amount as the previous line,
" deindent by one shiftwidth. This fixes some issues with `case let` blocks.
if l:indent == indent(prevlnum)
return l:indent - shiftwidth()
endif
" Otherwise, do a normal cindent.
return l:indent
endif
" Don't indent an extra shiftwidth for cases which span multiple lines.
if prevline =~# '\v\=\>\s*(//.*)?$' && prevline !~# '\v^\s*case\W'
return indent(prevlnum)
endif
" Indent the body of a case.
" If the previous line ended in a semicolon and the line before that was a
" case, don't do any special indenting.
if prevline =~# '\v;\s*(//.*)?$' && prevprevline =~# '\v\=\>\s*(//.*)?$' && line !~# '\v^\s*}'
return indent(prevlnum)
endif
let l:indent = FloorCindent(v:lnum)
" If the previous line was a case and a normal cindent wouldn't indent, indent
" an extra shiftwidth.
if prevline =~# '\v\=\>\s*(//.*)?$' && l:indent == indent(prevlnum)
return l:indent + shiftwidth()
endif
" If everything above is false, do a normal cindent.
return l:indent
endfunction
" vim: tabstop=2 shiftwidth=2 expandtab

View File

@@ -3,6 +3,7 @@
" Maintainer: Eli Parra <eli@elzr.com> https://github.com/elzr/vim-json
" Last Change: 2020 Aug 30
" https://github.com/jakar/vim-json/commit/20b650e22aa750c4ab6a66aa646bdd95d7cd548a#diff-e81fc111b2052e306d126bd9989f7b7c
" 2022 Sep 07: b:undo_indent added by Doug Kearns
" Original Author: Rogerz Zhang <rogerz.zhang at gmail.com> http://github.com/rogerz/vim-json
" Acknowledgement: Based off of vim-javascript maintained by Darrick Wiebe
" http://www.vim.org/scripts/script.php?script_id=2765
@@ -22,6 +23,8 @@ setlocal nosmartindent
setlocal indentexpr=GetJSONIndent(v:lnum)
setlocal indentkeys=0{,0},0),0[,0],!^F,o,O,e
let b:undo_indent = "setl inde< indk< si<"
" Only define the function once.
if exists("*GetJSONIndent")
finish

View File

@@ -3,6 +3,7 @@
" Maintainer: Marcus Aurelius Farias <marcus.cf 'at' bol.com.br>
" First Author: Max Ischenko <mfi 'at' ukr.net>
" Last Change: 2017 Jun 13
" 2022 Sep 07: b:undo_indent added by Doug Kearns
" Only load this indent file when no other was loaded.
if exists("b:did_indent")
@@ -18,6 +19,8 @@ setlocal indentkeys+=0=end,0=until
setlocal autoindent
let b:undo_indent = "setlocal autoindent< indentexpr< indentkeys<"
" Only define the function once.
if exists("*GetLuaIndent")
finish

442
runtime/indent/solidity.vim Normal file
View File

@@ -0,0 +1,442 @@
" Vim indent file
" Language: Solidity
" Acknowledgement: Based off of vim-javascript
" Maintainer: Cothi (jiungdev@gmail.com)
" Original Author: tomlion (https://github.com/tomlion/vim-solidity)
" Last Changed: 2022 Sep 27
"
" 0. Initialization {{{1
" =================
" Only load this indent file when no other was loaded.
if exists("b:did_indent")
finish
endif
let b:did_indent = 1
setlocal nosmartindent
" Now, set up our indentation expression and keys that trigger it.
setlocal indentexpr=GetSolidityIndent()
setlocal indentkeys=0{,0},0),0],0\,,!^F,o,O,e
" Only define the function once.
if exists("*GetSolidityIndent")
finish
endif
let s:cpo_save = &cpo
set cpo&vim
" 1. Variables {{{1
" ============
let s:js_keywords = '^\s*\(break\|case\|catch\|continue\|debugger\|default\|delete\|do\|else\|finally\|for\|function\|if\|in\|instanceof\|new\|return\|switch\|this\|throw\|try\|typeof\|var\|void\|while\|with\)'
" Regex of syntax group names that are or delimit string or are comments.
let s:syng_strcom = 'string\|regex\|comment\c'
" Regex of syntax group names that are strings.
let s:syng_string = 'regex\c'
" Regex of syntax group names that are strings or documentation.
let s:syng_multiline = 'comment\c'
" Regex of syntax group names that are line comment.
let s:syng_linecom = 'linecomment\c'
" Expression used to check whether we should skip a match with searchpair().
let s:skip_expr = "synIDattr(synID(line('.'),col('.'),1),'name') =~ '".s:syng_strcom."'"
let s:line_term = '\s*\%(\%(\/\/\).*\)\=$'
" Regex that defines continuation lines, not including (, {, or [.
let s:continuation_regex = '\%([\\*+/.:]\|\%(<%\)\@<![=-]\|\W[|&?]\|||\|&&\)' . s:line_term
" Regex that defines continuation lines.
" TODO: this needs to deal with if ...: and so on
let s:msl_regex = '\%([\\*+/.:([]\|\%(<%\)\@<![=-]\|\W[|&?]\|||\|&&\)' . s:line_term
let s:one_line_scope_regex = '\<\%(if\|else\|for\|while\)\>[^{;]*' . s:line_term
" Regex that defines blocks.
let s:block_regex = '\%([{[]\)\s*\%(|\%([*@]\=\h\w*,\=\s*\)\%(,\s*[*@]\=\h\w*\)*|\)\=' . s:line_term
let s:var_stmt = '^\s*var'
let s:comma_first = '^\s*,'
let s:comma_last = ',\s*$'
let s:ternary = '^\s\+[?|:]'
let s:ternary_q = '^\s\+?'
" 2. Auxiliary Functions {{{1
" ======================
" Check if the character at lnum:col is inside a string, comment, or is ascii.
function s:IsInStringOrComment(lnum, col)
return synIDattr(synID(a:lnum, a:col, 1), 'name') =~ s:syng_strcom
endfunction
" Check if the character at lnum:col is inside a string.
function s:IsInString(lnum, col)
return synIDattr(synID(a:lnum, a:col, 1), 'name') =~ s:syng_string
endfunction
" Check if the character at lnum:col is inside a multi-line comment.
function s:IsInMultilineComment(lnum, col)
return !s:IsLineComment(a:lnum, a:col) && synIDattr(synID(a:lnum, a:col, 1), 'name') =~ s:syng_multiline
endfunction
" Check if the character at lnum:col is a line comment.
function s:IsLineComment(lnum, col)
return synIDattr(synID(a:lnum, a:col, 1), 'name') =~ s:syng_linecom
endfunction
" Find line above 'lnum' that isn't empty, in a comment, or in a string.
function s:PrevNonBlankNonString(lnum)
let in_block = 0
let lnum = prevnonblank(a:lnum)
while lnum > 0
" Go in and out of blocks comments as necessary.
" If the line isn't empty (with opt. comment) or in a string, end search.
let line = getline(lnum)
if line =~ '/\*'
if in_block
let in_block = 0
else
break
endif
elseif !in_block && line =~ '\*/'
let in_block = 1
elseif !in_block && line !~ '^\s*\%(//\).*$' && !(s:IsInStringOrComment(lnum, 1) && s:IsInStringOrComment(lnum, strlen(line)))
break
endif
let lnum = prevnonblank(lnum - 1)
endwhile
return lnum
endfunction
" Find line above 'lnum' that started the continuation 'lnum' may be part of.
function s:GetMSL(lnum, in_one_line_scope)
" Start on the line we're at and use its indent.
let msl = a:lnum
let lnum = s:PrevNonBlankNonString(a:lnum - 1)
while lnum > 0
" If we have a continuation line, or we're in a string, use line as MSL.
" Otherwise, terminate search as we have found our MSL already.
let line = getline(lnum)
let col = match(line, s:msl_regex) + 1
if (col > 0 && !s:IsInStringOrComment(lnum, col)) || s:IsInString(lnum, strlen(line))
let msl = lnum
else
" Don't use lines that are part of a one line scope as msl unless the
" flag in_one_line_scope is set to 1
"
if a:in_one_line_scope
break
end
let msl_one_line = s:Match(lnum, s:one_line_scope_regex)
if msl_one_line == 0
break
endif
endif
let lnum = s:PrevNonBlankNonString(lnum - 1)
endwhile
return msl
endfunction
function s:RemoveTrailingComments(content)
let single = '\/\/\(.*\)\s*$'
let multi = '\/\*\(.*\)\*\/\s*$'
return substitute(substitute(a:content, single, '', ''), multi, '', '')
endfunction
" Find if the string is inside var statement (but not the first string)
function s:InMultiVarStatement(lnum)
let lnum = s:PrevNonBlankNonString(a:lnum - 1)
" let type = synIDattr(synID(lnum, indent(lnum) + 1, 0), 'name')
" loop through previous expressions to find a var statement
while lnum > 0
let line = getline(lnum)
" if the line is a js keyword
if (line =~ s:js_keywords)
" check if the line is a var stmt
" if the line has a comma first or comma last then we can assume that we
" are in a multiple var statement
if (line =~ s:var_stmt)
return lnum
endif
" other js keywords, not a var
return 0
endif
let lnum = s:PrevNonBlankNonString(lnum - 1)
endwhile
" beginning of program, not a var
return 0
endfunction
" Find line above with beginning of the var statement or returns 0 if it's not
" this statement
function s:GetVarIndent(lnum)
let lvar = s:InMultiVarStatement(a:lnum)
let prev_lnum = s:PrevNonBlankNonString(a:lnum - 1)
if lvar
let line = s:RemoveTrailingComments(getline(prev_lnum))
" if the previous line doesn't end in a comma, return to regular indent
if (line !~ s:comma_last)
return indent(prev_lnum) - &sw
else
return indent(lvar) + &sw
endif
endif
return -1
endfunction
" Check if line 'lnum' has more opening brackets than closing ones.
function s:LineHasOpeningBrackets(lnum)
let open_0 = 0
let open_2 = 0
let open_4 = 0
let line = getline(a:lnum)
let pos = match(line, '[][(){}]', 0)
while pos != -1
if !s:IsInStringOrComment(a:lnum, pos + 1)
let idx = stridx('(){}[]', line[pos])
if idx % 2 == 0
let open_{idx} = open_{idx} + 1
else
let open_{idx - 1} = open_{idx - 1} - 1
endif
endif
let pos = match(line, '[][(){}]', pos + 1)
endwhile
return (open_0 > 0) . (open_2 > 0) . (open_4 > 0)
endfunction
function s:Match(lnum, regex)
let col = match(getline(a:lnum), a:regex) + 1
return col > 0 && !s:IsInStringOrComment(a:lnum, col) ? col : 0
endfunction
function s:IndentWithContinuation(lnum, ind, width)
" Set up variables to use and search for MSL to the previous line.
let p_lnum = a:lnum
let lnum = s:GetMSL(a:lnum, 1)
let line = getline(lnum)
" If the previous line wasn't a MSL and is continuation return its indent.
" TODO: the || s:IsInString() thing worries me a bit.
if p_lnum != lnum
if s:Match(p_lnum,s:continuation_regex)||s:IsInString(p_lnum,strlen(line))
return a:ind
endif
endif
" Set up more variables now that we know we aren't continuation bound.
let msl_ind = indent(lnum)
" If the previous line ended with [*+/.-=], start a continuation that
" indents an extra level.
if s:Match(lnum, s:continuation_regex)
if lnum == p_lnum
return msl_ind + a:width
else
return msl_ind
endif
endif
return a:ind
endfunction
function s:InOneLineScope(lnum)
let msl = s:GetMSL(a:lnum, 1)
if msl > 0 && s:Match(msl, s:one_line_scope_regex)
return msl
endif
return 0
endfunction
function s:ExitingOneLineScope(lnum)
let msl = s:GetMSL(a:lnum, 1)
if msl > 0
" if the current line is in a one line scope ..
if s:Match(msl, s:one_line_scope_regex)
return 0
else
let prev_msl = s:GetMSL(msl - 1, 1)
if s:Match(prev_msl, s:one_line_scope_regex)
return prev_msl
endif
endif
endif
return 0
endfunction
" 3. GetSolidityIndent Function {{{1
" =========================
function GetSolidityIndent()
" 3.1. Setup {{{2
" ----------
" Set up variables for restoring position in file. Could use v:lnum here.
let vcol = col('.')
" 3.2. Work on the current line {{{2
" -----------------------------
let ind = -1
" Get the current line.
let line = getline(v:lnum)
" previous nonblank line number
let prevline = prevnonblank(v:lnum - 1)
" If we got a closing bracket on an empty line, find its match and indent
" according to it. For parentheses we indent to its column - 1, for the
" others we indent to the containing line's MSL's level. Return -1 if fail.
let col = matchend(line, '^\s*[],})]')
if col > 0 && !s:IsInStringOrComment(v:lnum, col)
call cursor(v:lnum, col)
let lvar = s:InMultiVarStatement(v:lnum)
if lvar
let prevline_contents = s:RemoveTrailingComments(getline(prevline))
" check for comma first
if (line[col - 1] =~ ',')
" if the previous line ends in comma or semicolon don't indent
if (prevline_contents =~ '[;,]\s*$')
return indent(s:GetMSL(line('.'), 0))
" get previous line indent, if it's comma first return prevline indent
elseif (prevline_contents =~ s:comma_first)
return indent(prevline)
" otherwise we indent 1 level
else
return indent(lvar) + &sw
endif
endif
endif
let bs = strpart('(){}[]', stridx(')}]', line[col - 1]) * 2, 2)
if searchpair(escape(bs[0], '\['), '', bs[1], 'bW', s:skip_expr) > 0
if line[col-1]==')' && col('.') != col('$') - 1
let ind = virtcol('.')-1
else
let ind = indent(s:GetMSL(line('.'), 0))
endif
endif
return ind
endif
" If the line is comma first, dedent 1 level
if (getline(prevline) =~ s:comma_first)
return indent(prevline) - &sw
endif
if (line =~ s:ternary)
if (getline(prevline) =~ s:ternary_q)
return indent(prevline)
else
return indent(prevline) + &sw
endif
endif
" If we are in a multi-line comment, cindent does the right thing.
if s:IsInMultilineComment(v:lnum, 1) && !s:IsLineComment(v:lnum, 1)
return cindent(v:lnum)
endif
" Check for multiple var assignments
" let var_indent = s:GetVarIndent(v:lnum)
" if var_indent >= 0
" return var_indent
" endif
" 3.3. Work on the previous line. {{{2
" -------------------------------
" If the line is empty and the previous nonblank line was a multi-line
" comment, use that comment's indent. Deduct one char to account for the
" space in ' */'.
if line =~ '^\s*$' && s:IsInMultilineComment(prevline, 1)
return indent(prevline) - 1
endif
" Find a non-blank, non-multi-line string line above the current line.
let lnum = s:PrevNonBlankNonString(v:lnum - 1)
" If the line is empty and inside a string, use the previous line.
if line =~ '^\s*$' && lnum != prevline
return indent(prevnonblank(v:lnum))
endif
" At the start of the file use zero indent.
if lnum == 0
return 0
endif
" Set up variables for current line.
let line = getline(lnum)
let ind = indent(lnum)
" If the previous line ended with a block opening, add a level of indent.
if s:Match(lnum, s:block_regex)
return indent(s:GetMSL(lnum, 0)) + &sw
endif
" If the previous line contained an opening bracket, and we are still in it,
" add indent depending on the bracket type.
if line =~ '[[({]'
let counts = s:LineHasOpeningBrackets(lnum)
if counts[0] == '1' && searchpair('(', '', ')', 'bW', s:skip_expr) > 0
if col('.') + 1 == col('$')
return ind + &sw
else
return virtcol('.')
endif
elseif counts[1] == '1' || counts[2] == '1'
return ind + &sw
else
call cursor(v:lnum, vcol)
end
endif
" 3.4. Work on the MSL line. {{{2
" --------------------------
let ind_con = ind
let ind = s:IndentWithContinuation(lnum, ind_con, &sw)
" }}}2
"
"
let ols = s:InOneLineScope(lnum)
if ols > 0
let ind = ind + &sw
else
let ols = s:ExitingOneLineScope(lnum)
while ols > 0 && ind > 0
let ind = ind - &sw
let ols = s:InOneLineScope(ols - 1)
endwhile
endif
return ind
endfunction
" }}}1
let &cpo = s:cpo_save
unlet s:cpo_save

View File

@@ -11,6 +11,7 @@ syn on
set nowrapscan
set report=9999
set modeline
set debug=throw
au! SwapExists * call HandleSwapExists()
func HandleSwapExists()
@@ -84,7 +85,12 @@ for fname in glob('testdir/*.in', 1, 1)
exe start + 1
if pattern == ''
exe 'normal =' . (end - 1) . 'G'
try
exe 'normal =' . (end - 1) . 'G'
catch
call append(indent_at, 'ERROR: ' . v:exception)
let failed = 1
endtry
else
let lnum = search(pattern)
if lnum <= 0
@@ -99,7 +105,12 @@ for fname in glob('testdir/*.in', 1, 1)
else
exe lnum - 1
endif
normal ==
try
normal ==
catch
call append(indent_at, 'ERROR: ' . v:exception)
let failed = 1
endtry
endif
endif
endwhile

View File

@@ -1,7 +1,6 @@
" vim: set ft=vim sw=4 :
" START_INDENT
func Some()
let x = 1
endfunc
@@ -15,15 +14,6 @@ let x = [
\ ]
endif
" TODO: add searchpair() to find matching {
"for x in [
"{
"key: 'value'
"},
"]
"eval 0
"endfor
for x in [
{key: 'value'},
]
@@ -36,6 +26,12 @@ let t = [
\ },
\ ]
def Func()
var d = dd
->extend({
})
eval 0
enddef
" END_INDENT
" START_INDENT
@@ -77,7 +73,7 @@ endfunc
" START_INDENT
" INDENT_NEXT next-line
func Some()
" next-line
" next-line
let f = x
endfunc
" END_INDENT
@@ -96,6 +92,12 @@ nothing
END
" END_INDENT
" START_INDENT
let a =<< trim END
nothing
END
" END_INDENT
" START_INDENT
" INDENT_AT this-line
let a=<< trim END
@@ -104,3 +106,754 @@ let a=<< trim END
blah this-line
END
" END_INDENT
" START_INDENT
if v:true
echo 0
end
" END_INDENT
" START_INDENT
var result = Func(
arg1,
arg2
)
" END_INDENT
" START_INDENT
var result = Func(arg1,
arg2)
" END_INDENT
" START_INDENT
filter(list, (k, v) =>
v > 0)
" END_INDENT
" START_INDENT
filter(list, (k, v) => {
const x = get(list, k, 0)
return x > 0
})
" END_INDENT
" START_INDENT
if x > 0
filter(list, (k, v) => {
const x = get(list, k, 1)
return x > 0
})
endif
" END_INDENT
" START_INDENT
{
var temp = 'temp'
}
" END_INDENT
" START_INDENT
var text = lead
.. middle
.. end
" END_INDENT
" START_INDENT
var text = lead ..
middle ..
end
" END_INDENT
" START_INDENT
var total = start +
end -
correction
" END_INDENT
" START_INDENT
var result = start
:+ print
" END_INDENT
" START_INDENT
var result = positive
? PosFunc(arg)
: NegFunc(arg)
" END_INDENT
" START_INDENT
var result = GetBuilder()
->BuilderSetWidth(333)
->BuilderSetHeight(777)
->BuilderBuild()
" END_INDENT
" START_INDENT
var result = MyDict
.member
" END_INDENT
" START_INDENT
autocmd BufNewFile *.match if condition
| echo 'match'
| endif
" END_INDENT
" START_INDENT
set cpo+=C
var lines =<< trim END
| this works
END
set cpo-=C
" END_INDENT
" START_INDENT
syn region Text
\ start='foo'
#\ comment
\ end='bar'
" END_INDENT
" START_INDENT
au CursorHold * echom 'BEFORE bar'
#\ some comment
| echom 'AFTER bar'
" END_INDENT
" START_INDENT
def MyFunc(text: string,
separator = '-'
): string
enddef
" END_INDENT
" START_INDENT
def MyFunc(
text: string,
separator = '-'
): string
enddef
" END_INDENT
" START_INDENT
[var1, var2] =
Func()
" END_INDENT
" START_INDENT
const list = ['one',
'two']
" END_INDENT
" START_INDENT
const list = [
'one',
'two',
]
" END_INDENT
" START_INDENT
const dict = {one: 1,
two: 2
}
" END_INDENT
" START_INDENT
const dict = {
one: 1,
two: 2
}
" END_INDENT
" START_INDENT
if true
const dict =
{
one: 1,
two: 2
}
endif
" END_INDENT
" START_INDENT
def Func()
return {
one: 1
}
enddef
" END_INDENT
" START_INDENT
echo {
a: 0,
# b
# c
}
" END_INDENT
" START_INDENT
echo search(
# comment
'1'
.. '2'
)
" END_INDENT
" START_INDENT
if true
var v = ( # trailing "(" starts line continuation
3 + 4 # nothing special
) # end of expression indicates continued line
var x: number # needs to align with previous "var"
endif
" END_INDENT
" START_INDENT
def Func() # {{{
# comment
if true
return
endif
enddef
" END_INDENT
" START_INDENT
echo {
key:
'value',
}
" END_INDENT
" START_INDENT
var id = time
->timer_start((_) => {
n = 0
})
" END_INDENT
" START_INDENT
augroup Name
autocmd!
augroup END
" END_INDENT
" START_INDENT
var n =
# comment
1
+ 2
var s = ''
" END_INDENT
" START_INDENT
var keys = {
J: 'j',
"\<Home>": '1G',
"\<End>": 'G',
z: 'zz'
}
" END_INDENT
" START_INDENT
export def Func(
n: number,
s: string,
...l: list<bool>
)
enddef
" END_INDENT
" START_INDENT
var heredoc =<< trim ENDD
var nested_heredoc =<< trim END
END
ENDD
" END_INDENT
" START_INDENT
if true
else " comment
endif
" END_INDENT
" START_INDENT
if true | echo 'one' | endif
if true | echo 'two' | endif
if true | echo 'three' | endif
" END_INDENT
" START_INDENT
if true
:'<-1 mark <
else
echo ''
endif
" END_INDENT
" START_INDENT
substitute/pat /rep /
echo
" END_INDENT
" START_INDENT
try
echo 1
catch /pat / # comment
echo 2
endtry
" END_INDENT
" START_INDENT
def Func()
Cmd %
enddef
" END_INDENT
" START_INDENT
if end == 'xxx' || end == 'yyy'
echo
endif
" END_INDENT
" START_INDENT
if true
popup_move(id, {col: 1,
line: 2})
endif
setwinvar(id, 'name', 3)
" END_INDENT
" START_INDENT
var d = [
{a: 'x',
b: 'y'},
FuncA(),
FuncB(),
]
" END_INDENT
" START_INDENT
var ll = [[
1,
2,
3], [
4,
5,
6], [
7,
8,
9]]
" END_INDENT
" START_INDENT
var ld = [{
a: 'xxx',
b: 'yyy'}, {
c: 'xxx',
d: 'yyy'}, {
e: 'xxx',
f: 'yyy'}, {
}]
" END_INDENT
" START_INDENT
var d = {
a: {
b: {
c: [{
d: 'e',
f: 'g',
h: 'i'
}],
j: 'k',
},
},
}
" END_INDENT
" START_INDENT
if true
var end: any
if true
end = 0
elseif true
echo
endif
endif
" END_INDENT
" START_INDENT
nunmap <buffer> (
nunmap <buffer> )
inoremap [ {
inoremap ] }
silent! xunmap i{
silent! xunmap a{
" END_INDENT
" START_INDENT
def Func(
s: string,
n = 1,
m = 2
)
enddef
" END_INDENT
" START_INDENT
var h =<< END
text
END
def Func()
echo
enddef
" END_INDENT
" START_INDENT
def Func()
var h =<< END
text
END
echo 'test'
enddef
" END_INDENT
" START_INDENT
def Foo()
lcd -
enddef
def Bar()
echo
enddef
" END_INDENT
" START_INDENT
if true
n = Func(1, 2,
3)
endif
" END_INDENT
" START_INDENT
def Func(s: string,
n: number): bool
if true
return false
endif
enddef
" END_INDENT
" START_INDENT
def Func(
n: number)
#
echo
enddef
" END_INDENT
" START_INDENT
" INDENT_AT this-line
def Func(
n: number)
#
echo # this-line
enddef
" END_INDENT
" START_INDENT
if true
if true
normal! ==
endif
endif
" END_INDENT
" START_INDENT
var d = {
a: () => true,
b: () => true
&& true
&& Foo(),
c: () => Bar(),
e: () => Baz(),
}
" END_INDENT
" START_INDENT
def Select(Cont: func(func(any)), Pred: func(any): bool): func(func(any))
return (Emit: func(any)) => {
Cont((t: any) => {
if Pred(t)
Emit(t)
endif
})
}
enddef
" END_INDENT
" START_INDENT
" INDENT_EXE let g:vim_indent = {'more_in_bracket_block': v:true}
def Select(Cont: func(func(any)), Pred: func(any): bool): func(func(any))
return (Emit: func(any)) => {
Cont((t: any) => {
if Pred(t)
Emit(t)
endif
})
}
enddef
" END_INDENT
" START_INDENT
" INDENT_EXE unlet! g:vim_indent
" END_INDENT
" START_INDENT
g:lightline = {
'active': {
'left': [ [ 'mode', 'paste' ], [ 'readonly', 'relativepath', 'modified' ] ],
},
'inactive': {
'left': [ [ 'readonly', 'relativepath', 'modified' ] ],
}
}
" END_INDENT
" START_INDENT
if getline(1, 10)
->map((_, v: string): number => strcharlen(v))
->max() > 1'000
&l:breakindent = false
&l:linebreak = false
else
&l:breakindent = true
&l:linebreak = true
endif
" END_INDENT
" START_INDENT
var ext2cmd: dict<string> = {
doc: $'antiword {fname}',
docx: $'pandoc --from=docx --to=markdown {fname}',
epub: $'pandoc --from=epub --to=markdown {fname}',
odp: $'odt2txt {fname}',
odt: $'odt2txt {fname}',
pdf: $'pdftotext -nopgbrk -layout -q -eol unix {fname} -',
rtf: 'unrtf --text',
}
" END_INDENT
" START_INDENT
const ptybuf: number = term_start(&shell, {
hidden: true,
exit_cb: (_, _) => {
if true
close
else
help
endif
}
})
" END_INDENT
" START_INDENT
var d = {
a: 0,
# a ' quote {{{
#}}}
b: 0,
}
" END_INDENT
" START_INDENT
echo printf('%s () %s',
1,
2
)
" END_INDENT
" START_INDENT
prop_add(1, col('.'), {
length: 2,
type: 'test'
})
" END_INDENT
" START_INDENT
echo (() => " string starting with space")()
echo
" END_INDENT
" START_INDENT
var variables = deepcopy(g:)
->filter((k: string, _): bool =>
k =~ '\c\V' .. keyword->escape('\')
&& k !~ '\%(loaded\|did_plugin_\)')
->items()
->map((_, v): string => v[0] .. ' = ' .. string(v[1]))
new
" END_INDENT
" START_INDENT
var d = freq
->map((_, v) =>
v * (
1
+ 2
))
for item in d
->items()
->sort((a, b) => b[1] - a[1])
echo
endfor
" END_INDENT
" START_INDENT
make_job = job_start([&shell, &shellcmdflag, make_cmd], {
callback: function(MakeProcessOutput, [qfid]),
close_cb: function(MakeCloseCb, [qfid]),
exit_cb: MakeCompleted,
in_io: 'null'
})
" END_INDENT
" START_INDENT
var matching_abbrev: list<dict<string>> = copy(ABBREV)
->filter((_, v: dict<string>): bool =>
stridx(v.lhs, word_to_complete) == 0)
->map((_, v: dict<string>) => ({
word: v.lhs,
menu: AbbrevRhs(v.rhs)->stridx('expand_') >= 0
? AbbrevRhs(v.rhs)->matchstr('.*,\s*''\zs.*\ze'')')
: AbbrevRhs(v.rhs)
}))
" END_INDENT
" START_INDENT
def Func()
if true
vimgrep /^\C\s*\%(fu\%[nction]\|def\)\s\+/ file
endif
enddef
" END_INDENT
" START_INDENT
setlocal iskeyword+=[
cword = expand('<cword>')
" END_INDENT
" START_INDENT
silent if true
echo
endif
" END_INDENT
" START_INDENT
def Func()
sort :^.*[\/]:
enddef
" END_INDENT
" START_INDENT
def Func()
d = {
}
hd =<< trim END
['
]'
END
enddef
" END_INDENT
" START_INDENT
def Func()
if true
var hd =<< trim END
if get(b:, 'current_syntax', '')
endif
END
elseif true
echo
endif
enddef
" END_INDENT
" START_INDENT
# test for control-flow keyword followed by commented fold marker {{{
if true
echo
endif #}}}
" END_INDENT
" START_INDENT
if winsz == 0|let winsz= ""|endif
exe "noswapfile ".winsz."wincmd s"
" END_INDENT
" START_INDENT
if true
if true
windo if true | echo | endif
augroup Name
autocmd WinLeave * if true | eval 1 + 2 | endif
augroup END
endif
endif
" END_INDENT
" START_INDENT
if true
echo ' =<< trim END'
->len()
endif
" END_INDENT
" START_INDENT
function Func()
if true
if true
if true | echo com | endif
if true | echo com | endif
endif
else
endif
endfunction
" END_INDENT
" START_INDENT
function Func()
if v:true
+
echo
-
endif
endfunction
" END_INDENT
" START_INDENT
var matchpairs: string = &matchpairs
var pairs: dict<list<string>>
for [opening: string, closing: string]
in matchpairs
->split(',')
->map((_, v: string): list<string> => split(v, ':'))
pairs[opening] = [escape(opening, '[]'), escape(closing, '[]'), 'nW', 'w$']
pairs[closing] = [escape(opening, '[]'), escape(closing, '[]'), 'bnW', 'w0']
endfor
" END_INDENT
" START_INDENT
{
echo []
+ []
+ [{a: 1,
b: 2}]
}
" END_INDENT
" START_INDENT
silent! argdel *
edit file
" END_INDENT

View File

@@ -1,7 +1,6 @@
" vim: set ft=vim sw=4 :
" START_INDENT
func Some()
let x = 1
endfunc
@@ -15,15 +14,6 @@ if 1
\ ]
endif
" TODO: add searchpair() to find matching {
"for x in [
"{
"key: 'value'
"},
"]
"eval 0
"endfor
for x in [
{key: 'value'},
]
@@ -36,6 +26,12 @@ let t = [
\ },
\ ]
def Func()
var d = dd
->extend({
})
eval 0
enddef
" END_INDENT
" START_INDENT
@@ -62,7 +58,7 @@ let list = [
let list = [
'one',
'two',
]
]
echo
" END_INDENT
@@ -77,8 +73,8 @@ endfunc
" START_INDENT
" INDENT_NEXT next-line
func Some()
" next-line
let f = x
" next-line
let f = x
endfunc
" END_INDENT
@@ -92,6 +88,12 @@ endfunc
" START_INDENT
let a =<< END
nothing
END
" END_INDENT
" START_INDENT
let a =<< trim END
nothing
END
" END_INDENT
@@ -104,3 +106,754 @@ let a=<< trim END
blah this-line
END
" END_INDENT
" START_INDENT
if v:true
echo 0
end
" END_INDENT
" START_INDENT
var result = Func(
arg1,
arg2
)
" END_INDENT
" START_INDENT
var result = Func(arg1,
arg2)
" END_INDENT
" START_INDENT
filter(list, (k, v) =>
v > 0)
" END_INDENT
" START_INDENT
filter(list, (k, v) => {
const x = get(list, k, 0)
return x > 0
})
" END_INDENT
" START_INDENT
if x > 0
filter(list, (k, v) => {
const x = get(list, k, 1)
return x > 0
})
endif
" END_INDENT
" START_INDENT
{
var temp = 'temp'
}
" END_INDENT
" START_INDENT
var text = lead
.. middle
.. end
" END_INDENT
" START_INDENT
var text = lead ..
middle ..
end
" END_INDENT
" START_INDENT
var total = start +
end -
correction
" END_INDENT
" START_INDENT
var result = start
:+ print
" END_INDENT
" START_INDENT
var result = positive
? PosFunc(arg)
: NegFunc(arg)
" END_INDENT
" START_INDENT
var result = GetBuilder()
->BuilderSetWidth(333)
->BuilderSetHeight(777)
->BuilderBuild()
" END_INDENT
" START_INDENT
var result = MyDict
.member
" END_INDENT
" START_INDENT
autocmd BufNewFile *.match if condition
| echo 'match'
| endif
" END_INDENT
" START_INDENT
set cpo+=C
var lines =<< trim END
| this works
END
set cpo-=C
" END_INDENT
" START_INDENT
syn region Text
\ start='foo'
#\ comment
\ end='bar'
" END_INDENT
" START_INDENT
au CursorHold * echom 'BEFORE bar'
#\ some comment
| echom 'AFTER bar'
" END_INDENT
" START_INDENT
def MyFunc(text: string,
separator = '-'
): string
enddef
" END_INDENT
" START_INDENT
def MyFunc(
text: string,
separator = '-'
): string
enddef
" END_INDENT
" START_INDENT
[var1, var2] =
Func()
" END_INDENT
" START_INDENT
const list = ['one',
'two']
" END_INDENT
" START_INDENT
const list = [
'one',
'two',
]
" END_INDENT
" START_INDENT
const dict = {one: 1,
two: 2
}
" END_INDENT
" START_INDENT
const dict = {
one: 1,
two: 2
}
" END_INDENT
" START_INDENT
if true
const dict =
{
one: 1,
two: 2
}
endif
" END_INDENT
" START_INDENT
def Func()
return {
one: 1
}
enddef
" END_INDENT
" START_INDENT
echo {
a: 0,
# b
# c
}
" END_INDENT
" START_INDENT
echo search(
# comment
'1'
.. '2'
)
" END_INDENT
" START_INDENT
if true
var v = ( # trailing "(" starts line continuation
3 + 4 # nothing special
) # end of expression indicates continued line
var x: number # needs to align with previous "var"
endif
" END_INDENT
" START_INDENT
def Func() # {{{
# comment
if true
return
endif
enddef
" END_INDENT
" START_INDENT
echo {
key:
'value',
}
" END_INDENT
" START_INDENT
var id = time
->timer_start((_) => {
n = 0
})
" END_INDENT
" START_INDENT
augroup Name
autocmd!
augroup END
" END_INDENT
" START_INDENT
var n =
# comment
1
+ 2
var s = ''
" END_INDENT
" START_INDENT
var keys = {
J: 'j',
"\<Home>": '1G',
"\<End>": 'G',
z: 'zz'
}
" END_INDENT
" START_INDENT
export def Func(
n: number,
s: string,
...l: list<bool>
)
enddef
" END_INDENT
" START_INDENT
var heredoc =<< trim ENDD
var nested_heredoc =<< trim END
END
ENDD
" END_INDENT
" START_INDENT
if true
else " comment
endif
" END_INDENT
" START_INDENT
if true | echo 'one' | endif
if true | echo 'two' | endif
if true | echo 'three' | endif
" END_INDENT
" START_INDENT
if true
:'<-1 mark <
else
echo ''
endif
" END_INDENT
" START_INDENT
substitute/pat /rep /
echo
" END_INDENT
" START_INDENT
try
echo 1
catch /pat / # comment
echo 2
endtry
" END_INDENT
" START_INDENT
def Func()
Cmd %
enddef
" END_INDENT
" START_INDENT
if end == 'xxx' || end == 'yyy'
echo
endif
" END_INDENT
" START_INDENT
if true
popup_move(id, {col: 1,
line: 2})
endif
setwinvar(id, 'name', 3)
" END_INDENT
" START_INDENT
var d = [
{a: 'x',
b: 'y'},
FuncA(),
FuncB(),
]
" END_INDENT
" START_INDENT
var ll = [[
1,
2,
3], [
4,
5,
6], [
7,
8,
9]]
" END_INDENT
" START_INDENT
var ld = [{
a: 'xxx',
b: 'yyy'}, {
c: 'xxx',
d: 'yyy'}, {
e: 'xxx',
f: 'yyy'}, {
}]
" END_INDENT
" START_INDENT
var d = {
a: {
b: {
c: [{
d: 'e',
f: 'g',
h: 'i'
}],
j: 'k',
},
},
}
" END_INDENT
" START_INDENT
if true
var end: any
if true
end = 0
elseif true
echo
endif
endif
" END_INDENT
" START_INDENT
nunmap <buffer> (
nunmap <buffer> )
inoremap [ {
inoremap ] }
silent! xunmap i{
silent! xunmap a{
" END_INDENT
" START_INDENT
def Func(
s: string,
n = 1,
m = 2
)
enddef
" END_INDENT
" START_INDENT
var h =<< END
text
END
def Func()
echo
enddef
" END_INDENT
" START_INDENT
def Func()
var h =<< END
text
END
echo 'test'
enddef
" END_INDENT
" START_INDENT
def Foo()
lcd -
enddef
def Bar()
echo
enddef
" END_INDENT
" START_INDENT
if true
n = Func(1, 2,
3)
endif
" END_INDENT
" START_INDENT
def Func(s: string,
n: number): bool
if true
return false
endif
enddef
" END_INDENT
" START_INDENT
def Func(
n: number)
#
echo
enddef
" END_INDENT
" START_INDENT
" INDENT_AT this-line
def Func(
n: number)
#
echo # this-line
enddef
" END_INDENT
" START_INDENT
if true
if true
normal! ==
endif
endif
" END_INDENT
" START_INDENT
var d = {
a: () => true,
b: () => true
&& true
&& Foo(),
c: () => Bar(),
e: () => Baz(),
}
" END_INDENT
" START_INDENT
def Select(Cont: func(func(any)), Pred: func(any): bool): func(func(any))
return (Emit: func(any)) => {
Cont((t: any) => {
if Pred(t)
Emit(t)
endif
})
}
enddef
" END_INDENT
" START_INDENT
" INDENT_EXE let g:vim_indent = {'more_in_bracket_block': v:true}
def Select(Cont: func(func(any)), Pred: func(any): bool): func(func(any))
return (Emit: func(any)) => {
Cont((t: any) => {
if Pred(t)
Emit(t)
endif
})
}
enddef
" END_INDENT
" START_INDENT
" INDENT_EXE unlet! g:vim_indent
" END_INDENT
" START_INDENT
g:lightline = {
'active': {
'left': [ [ 'mode', 'paste' ], [ 'readonly', 'relativepath', 'modified' ] ],
},
'inactive': {
'left': [ [ 'readonly', 'relativepath', 'modified' ] ],
}
}
" END_INDENT
" START_INDENT
if getline(1, 10)
->map((_, v: string): number => strcharlen(v))
->max() > 1'000
&l:breakindent = false
&l:linebreak = false
else
&l:breakindent = true
&l:linebreak = true
endif
" END_INDENT
" START_INDENT
var ext2cmd: dict<string> = {
doc: $'antiword {fname}',
docx: $'pandoc --from=docx --to=markdown {fname}',
epub: $'pandoc --from=epub --to=markdown {fname}',
odp: $'odt2txt {fname}',
odt: $'odt2txt {fname}',
pdf: $'pdftotext -nopgbrk -layout -q -eol unix {fname} -',
rtf: 'unrtf --text',
}
" END_INDENT
" START_INDENT
const ptybuf: number = term_start(&shell, {
hidden: true,
exit_cb: (_, _) => {
if true
close
else
help
endif
}
})
" END_INDENT
" START_INDENT
var d = {
a: 0,
# a ' quote {{{
#}}}
b: 0,
}
" END_INDENT
" START_INDENT
echo printf('%s () %s',
1,
2
)
" END_INDENT
" START_INDENT
prop_add(1, col('.'), {
length: 2,
type: 'test'
})
" END_INDENT
" START_INDENT
echo (() => " string starting with space")()
echo
" END_INDENT
" START_INDENT
var variables = deepcopy(g:)
->filter((k: string, _): bool =>
k =~ '\c\V' .. keyword->escape('\')
&& k !~ '\%(loaded\|did_plugin_\)')
->items()
->map((_, v): string => v[0] .. ' = ' .. string(v[1]))
new
" END_INDENT
" START_INDENT
var d = freq
->map((_, v) =>
v * (
1
+ 2
))
for item in d
->items()
->sort((a, b) => b[1] - a[1])
echo
endfor
" END_INDENT
" START_INDENT
make_job = job_start([&shell, &shellcmdflag, make_cmd], {
callback: function(MakeProcessOutput, [qfid]),
close_cb: function(MakeCloseCb, [qfid]),
exit_cb: MakeCompleted,
in_io: 'null'
})
" END_INDENT
" START_INDENT
var matching_abbrev: list<dict<string>> = copy(ABBREV)
->filter((_, v: dict<string>): bool =>
stridx(v.lhs, word_to_complete) == 0)
->map((_, v: dict<string>) => ({
word: v.lhs,
menu: AbbrevRhs(v.rhs)->stridx('expand_') >= 0
? AbbrevRhs(v.rhs)->matchstr('.*,\s*''\zs.*\ze'')')
: AbbrevRhs(v.rhs)
}))
" END_INDENT
" START_INDENT
def Func()
if true
vimgrep /^\C\s*\%(fu\%[nction]\|def\)\s\+/ file
endif
enddef
" END_INDENT
" START_INDENT
setlocal iskeyword+=[
cword = expand('<cword>')
" END_INDENT
" START_INDENT
silent if true
echo
endif
" END_INDENT
" START_INDENT
def Func()
sort :^.*[\/]:
enddef
" END_INDENT
" START_INDENT
def Func()
d = {
}
hd =<< trim END
['
]'
END
enddef
" END_INDENT
" START_INDENT
def Func()
if true
var hd =<< trim END
if get(b:, 'current_syntax', '')
endif
END
elseif true
echo
endif
enddef
" END_INDENT
" START_INDENT
# test for control-flow keyword followed by commented fold marker {{{
if true
echo
endif #}}}
" END_INDENT
" START_INDENT
if winsz == 0|let winsz= ""|endif
exe "noswapfile ".winsz."wincmd s"
" END_INDENT
" START_INDENT
if true
if true
windo if true | echo | endif
augroup Name
autocmd WinLeave * if true | eval 1 + 2 | endif
augroup END
endif
endif
" END_INDENT
" START_INDENT
if true
echo ' =<< trim END'
->len()
endif
" END_INDENT
" START_INDENT
function Func()
if true
if true
if true | echo com | endif
if true | echo com | endif
endif
else
endif
endfunction
" END_INDENT
" START_INDENT
function Func()
if v:true
+
echo
-
endif
endfunction
" END_INDENT
" START_INDENT
var matchpairs: string = &matchpairs
var pairs: dict<list<string>>
for [opening: string, closing: string]
in matchpairs
->split(',')
->map((_, v: string): list<string> => split(v, ':'))
pairs[opening] = [escape(opening, '[]'), escape(closing, '[]'), 'nW', 'w$']
pairs[closing] = [escape(opening, '[]'), escape(closing, '[]'), 'bnW', 'w0']
endfor
" END_INDENT
" START_INDENT
{
echo []
+ []
+ [{a: 1,
b: 2}]
}
" END_INDENT
" START_INDENT
silent! argdel *
edit file
" END_INDENT

View File

@@ -1,198 +1,22 @@
" Vim indent file
" Language: Vim script
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2022 Jun 24
vim9script
" Only load this indent file when no other was loaded.
if exists("b:did_indent")
finish
# Vim indent file
# Language: Vim script
# Maintainer: Bram Moolenaar <Bram@vim.org>
# Last Change: 2022 Sep 27
# Only load this indent file when no other was loaded.
if exists('b:did_indent')
finish
endif
let b:did_indent = 1
setlocal indentexpr=GetVimIndent()
setlocal indentkeys+==endif,=enddef,=endfu,=endfor,=endwh,=endtry,=},=else,=cat,=finall,=END,0\\,0=\"\\\
b:did_indent = true
b:undo_indent = 'setlocal indentkeys< indentexpr<'
import autoload '../autoload/dist/vimindent.vim'
setlocal indentexpr=vimindent.Expr(v:lnum)
setlocal indentkeys+==endif,=enddef,=endfu,=endfor,=endwh,=endtry,=},=else,=cat,=finall,=END,0\\
execute('setlocal indentkeys+=0=\"\\\ ,0=#\\\ ')
setlocal indentkeys-=0#
setlocal indentkeys-=:
let b:undo_indent = "setl indentkeys< indentexpr<"
" Only define the function once.
if exists("*GetVimIndent")
finish
endif
let s:keepcpo= &cpo
set cpo&vim
function GetVimIndent()
let ignorecase_save = &ignorecase
try
let &ignorecase = 0
return GetVimIndentIntern()
finally
let &ignorecase = ignorecase_save
endtry
endfunc
let s:lineContPat = '^\s*\(\\\|"\\ \)'
function GetVimIndentIntern()
" If the current line has line continuation and the previous one too, use
" the same indent. This does not skip empty lines.
let cur_text = getline(v:lnum)
let cur_has_linecont = cur_text =~ s:lineContPat
if cur_has_linecont && v:lnum > 1 && getline(v:lnum - 1) =~ s:lineContPat
return indent(v:lnum - 1)
endif
" Find a non-blank line above the current line.
let lnum = prevnonblank(v:lnum - 1)
" The previous line, ignoring line continuation
let prev_text_end = lnum > 0 ? getline(lnum) : ''
" If the current line doesn't start with '\' or '"\ ' and below a line that
" starts with '\' or '"\ ', use the indent of the line above it.
if !cur_has_linecont
while lnum > 0 && getline(lnum) =~ s:lineContPat
let lnum = lnum - 1
endwhile
endif
" At the start of the file use zero indent.
if lnum == 0
return 0
endif
" the start of the previous line, skipping over line continuation
let prev_text = getline(lnum)
let found_cont = 0
" Add a 'shiftwidth' after :if, :while, :try, :catch, :finally, :function
" and :else. Add it three times for a line that starts with '\' or '"\ '
" after a line that doesn't (or g:vim_indent_cont if it exists).
let ind = indent(lnum)
" In heredoc indenting works completely differently.
if has('syntax_items')
let syn_here = synIDattr(synID(v:lnum, 1, 1), "name")
if syn_here =~ 'vimLetHereDocStop'
" End of heredoc: use indent of matching start line
let lnum = v:lnum - 1
while lnum > 0
let attr = synIDattr(synID(lnum, 1, 1), "name")
if attr != '' && attr !~ 'vimLetHereDoc'
return indent(lnum)
endif
let lnum -= 1
endwhile
return 0
endif
if syn_here =~ 'vimLetHereDoc'
if synIDattr(synID(lnum, 1, 1), "name") !~ 'vimLetHereDoc'
" First line in heredoc: increase indent
return ind + shiftwidth()
endif
" Heredoc continues: no change in indent
return ind
endif
endif
if cur_text =~ s:lineContPat && v:lnum > 1 && prev_text !~ s:lineContPat
let found_cont = 1
if exists("g:vim_indent_cont")
let ind = ind + g:vim_indent_cont
else
let ind = ind + shiftwidth() * 3
endif
elseif prev_text =~ '^\s*aug\%[roup]\s\+' && prev_text !~ '^\s*aug\%[roup]\s\+[eE][nN][dD]\>'
let ind = ind + shiftwidth()
else
" A line starting with :au does not increment/decrement indent.
" A { may start a block or a dict. Assume that when a } follows it's a
" terminated dict.
" ":function" starts a block but "function(" doesn't.
if prev_text !~ '^\s*au\%[tocmd]' && prev_text !~ '^\s*{.*}'
let i = match(prev_text, '\(^\||\)\s*\(export\s\+\)\?\({\|\(if\|wh\%[ile]\|for\|try\|cat\%[ch]\|fina\|finall\%[y]\|def\|el\%[seif]\)\>\|fu\%[nction][! ]\)')
if i >= 0
let ind += shiftwidth()
if strpart(prev_text, i, 1) == '|' && has('syntax_items')
\ && synIDattr(synID(lnum, i, 1), "name") =~ '\(Comment\|String\|PatSep\)$'
let ind -= shiftwidth()
endif
endif
endif
endif
" If the previous line contains an "end" after a pipe, but not in an ":au"
" command. And not when there is a backslash before the pipe.
" And when syntax HL is enabled avoid a match inside a string.
let i = match(prev_text, '[^\\]|\s*\(ene\@!\)')
if i > 0 && prev_text !~ '^\s*au\%[tocmd]'
if !has('syntax_items') || synIDattr(synID(lnum, i + 2, 1), "name") !~ '\(Comment\|String\)$'
let ind = ind - shiftwidth()
endif
endif
" For a line starting with "}" find the matching "{". If it is at the start
" of the line align with it, probably end of a block.
" Use the mapped "%" from matchit to find the match, otherwise we may match
" a { inside a comment or string.
if cur_text =~ '^\s*}'
if maparg('%') != ''
exe v:lnum
silent! normal %
if line('.') < v:lnum && getline('.') =~ '^\s*{'
let ind = indent('.')
endif
else
" todo: use searchpair() to find a match
endif
endif
" Below a line starting with "}" find the matching "{". If it is at the
" end of the line we must be below the end of a dictionary.
if prev_text =~ '^\s*}'
if maparg('%') != ''
exe lnum
silent! normal %
if line('.') == lnum || getline('.') !~ '^\s*{'
let ind = ind - shiftwidth()
endif
else
" todo: use searchpair() to find a match
endif
endif
" Below a line starting with "]" we must be below the end of a list.
" Include a "}" and "},} in case a dictionary ends too.
if prev_text_end =~ '^\s*\(},\=\s*\)\=]'
let ind = ind - shiftwidth()
endif
let ends_in_comment = has('syntax_items')
\ && synIDattr(synID(lnum, len(getline(lnum)), 1), "name") =~ '\(Comment\|String\)$'
" A line ending in "{" or "[" is most likely the start of a dict/list literal,
" indent the next line more. Not for a continuation line or {{{.
if !ends_in_comment && prev_text_end =~ '\s[{[]\s*$' && !found_cont
let ind = ind + shiftwidth()
endif
" Subtract a 'shiftwidth' on a :endif, :endwhile, :endfor, :catch, :finally,
" :endtry, :endfun, :enddef, :else and :augroup END.
" Although ":en" would be enough only match short command names as in
" 'indentkeys'.
if cur_text =~ '^\s*\(endif\|endwh\|endfor\|endtry\|endfu\|enddef\|cat\|finall\|else\|aug\%[roup]\s\+[eE][nN][dD]\)'
let ind = ind - shiftwidth()
if ind < 0
let ind = 0
endif
endif
return ind
endfunction
let &cpo = s:keepcpo
unlet s:keepcpo
" vim:sw=2

12
runtime/indent/vue.vim Normal file
View File

@@ -0,0 +1,12 @@
" Vim indent file placeholder
" Language: Vue
" Maintainer: None, please volunteer if you have a real Vue indent script
" Only load this indent file when no other was loaded.
if exists("b:did_indent")
finish
endif
let b:did_indent = 1
" Html comes closest
runtime! indent/html.vim

View File

@@ -1,7 +1,7 @@
" Vim indent file
" Language: YAML
" Maintainer: Nikolai Pavlov <zyx.vim@gmail.com>
" Last Update: Lukas Reineke
" Last Updates: Lukas Reineke, "lacygoill"
" Last Change: 2022 Jun 17
" Only load this indent file when no other was loaded.
@@ -29,8 +29,8 @@ function s:FindPrevLessIndentedLine(lnum, ...)
let prevlnum = prevnonblank(a:lnum-1)
let curindent = a:0 ? a:1 : indent(a:lnum)
while prevlnum
\&& indent(prevlnum) >= curindent
\&& getline(prevlnum) !~# '^\s*#'
\ && indent(prevlnum) >= curindent
\ && getline(prevlnum) !~# '^\s*#'
let prevlnum = prevnonblank(prevlnum-1)
endwhile
return prevlnum
@@ -54,7 +54,7 @@ let s:c_ns_anchor_name = s:c_ns_anchor_char .. '+'
let s:c_ns_anchor_property = '\v\&' .. s:c_ns_anchor_name
let s:ns_word_char = '\v[[:alnum:]_\-]'
let s:ns_tag_char = '\v%(%\x\x|' .. s:ns_word_char .. '|[#/;?:@&=+$.~*''()])'
let s:ns_tag_char = '\v%(\x\x|' .. s:ns_word_char .. '|[#/;?:@&=+$.~*''()])'
let s:c_named_tag_handle = '\v\!' .. s:ns_word_char .. '+\!'
let s:c_secondary_tag_handle = '\v\!\!'
let s:c_primary_tag_handle = '\v\!'
@@ -63,7 +63,7 @@ let s:c_tag_handle = '\v%(' .. s:c_named_tag_handle.
\ '|' .. s:c_primary_tag_handle .. ')'
let s:c_ns_shorthand_tag = '\v' .. s:c_tag_handle .. s:ns_tag_char .. '+'
let s:c_non_specific_tag = '\v\!'
let s:ns_uri_char = '\v%(%\x\x|' .. s:ns_word_char .. '\v|[#/;?:@&=+$,.!~*''()[\]])'
let s:ns_uri_char = '\v%(\x\x|' .. s:ns_word_char .. '\v|[#/;?:@&=+$,.!~*''()[\]])'
let s:c_verbatim_tag = '\v\!\<' .. s:ns_uri_char.. '+\>'
let s:c_ns_tag_property = '\v' .. s:c_verbatim_tag.
\ '\v|' .. s:c_ns_shorthand_tag.

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