Compare commits

...

139 Commits

Author SHA1 Message Date
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
296 changed files with 8935 additions and 4773 deletions

View File

@@ -26,9 +26,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

23
.github/CODEOWNERS vendored
View File

@@ -69,6 +69,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
@@ -111,6 +115,7 @@ runtime/ftplugin/cucumber.vim @tpope
runtime/ftplugin/desktop.vim @e-kwsm
runtime/ftplugin/dosbatch.vim @mrdubya
runtime/ftplugin/eiffel.vim @dkearns
runtime/ftplugin/elixir.vim @mhanberg
runtime/ftplugin/expect.vim @dkearns
runtime/ftplugin/erlang.vim @hcs42
runtime/ftplugin/eruby.vim @tpope @dkearns
@@ -123,8 +128,10 @@ 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/go.vim @dbarnett
@@ -135,6 +142,7 @@ 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 +151,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 +173,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 +185,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 +198,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
@@ -219,6 +231,7 @@ runtime/indent/gitolite.vim @sitaramc
runtime/indent/go.vim @dbarnett
runtime/indent/haml.vim @tpope
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 +253,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
@@ -321,8 +335,10 @@ 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
@@ -336,6 +352,7 @@ 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 +362,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 +395,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 +417,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 +440,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

View File

@@ -98,17 +98,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: |
@@ -382,35 +382,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 +398,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 +433,7 @@ jobs:
install: tar
pacboy: >-
make:p gcc:p
msystem: ${{ matrix.msystem }}
msystem: ${{ env.MSYSTEM }}
release: false
- name: Checkout repository from github
@@ -451,7 +450,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 +459,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 +481,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 +510,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 +526,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 +561,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 +602,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
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

@@ -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 \
@@ -487,7 +486,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 +514,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 \
@@ -570,6 +568,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 +577,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 \
@@ -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

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

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.
@@ -6238,8 +6225,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 +6450,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 +7278,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 +7331,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 +8499,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 +8514,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 +8780,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 +8853,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 +9598,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 +9613,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 +9848,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 +10435,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 @@
*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

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

@@ -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 12
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.

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 @@
*options.txt* For Vim version 9.0. Last change: 2022 Jun 27
*options.txt* For Vim version 9.0. Last change: 2022 Sep 09
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -7499,6 +7499,18 @@ 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 right of the
current one. |:vsplit|
*'splitscroll'* *'spsc'* *'nosplitscroll'* *'nospsc'*
'splitscroll' 'spsc' boolean (default on)
global
The value of this option determines the scroll behavior when opening,
closing or resizing horizontal splits. When "on", splitting a window
horizontally will keep the same relative cursor position in the old and
new window, as well windows that are resized. When "off", scrolling
will be avoided to stabilize the window content. Instead, the cursor
position will be changed when necessary. In this case, the jumplist
will be populated with the previous cursor position. Scrolling cannot
be guaranteed to be avoided when 'wrap' is enabled.
*'startofline'* *'sol'* *'nostartofline'* *'nosol'*
'startofline' 'sol' boolean (default on)
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 @@
*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
@@ -919,6 +919,7 @@ Short explanation of each option: *option-list*
'spellsuggest' 'sps' method(s) used to suggest spelling corrections
'splitbelow' 'sb' new window from split is below the current one
'splitright' 'spr' new window is put right of the current one
'splitscroll' 'spsc' determines scroll behavior for split windows
'startofline' 'sol' commands move cursor to first non-blank in line
'statusline' 'stl' custom format for the status line
'suffixes' 'su' suffixes that are ignored with multiple match

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

@@ -718,7 +718,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 +954,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 +1586,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 +2264,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 +2409,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 +2493,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 +2558,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 +2604,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 +3056,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 +4085,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 +4099,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 +4173,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 +4193,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 +4249,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 +4260,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 +4270,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 +4281,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 +4292,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 +4314,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 +4325,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 +4334,18 @@ 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*
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 +4410,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 +4689,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 +4992,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 +5115,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 +5149,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 +5202,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 +5264,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 +5586,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 +5721,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 +5872,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 +5929,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 +6508,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()*
@@ -7131,11 +7147,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*
@@ -8114,6 +8130,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 +8199,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 +8814,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 +8868,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*
@@ -10326,6 +10343,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 +10723,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 17
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -142,9 +142,11 @@ prop_add({lnum}, {col}, {props})
then "id" must not be present and will be set
automatically to a negative number; otherwise
zero is used
*E1305*
text text to be displayed before {col}, or after the
line if {col} is zero; prepend and/or append
spaces for padding with highlighting
spaces for padding with highlighting; cannot
be used with "length", "end_lnum" and "end_col"
*E1294*
text_align when "text" is present and {col} is zero;
specifies where to display the text:
@@ -153,9 +155,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;

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 18
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -38,12 +38,47 @@ 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
Closure created in for loop can use loop variable? #11094
Nested loops do not work correctly yet.
Would need to save vars for each block separately.
*.sil detection with FTsil() (lacygoill, Aug 25)
Virtual text:
- Virtual text below: padding is highlighted when 'number' is set #11138
- Virtual text above: do not highlight until end of line? #11138
- 'number' should be below "above" virtual text? Might be difficult to
implement.
- Add highlight for the gap before/after virtual text above/below?
- option to hide virtual text?
Avoid using "Xfile" and "Xdir" in tests, use specific names.
Fail with valgrind: test_edit
Found errors in Test_edit_insertmode_ex_edit():
Run 1, 01:19:51 - 01:20:01:
command line..script /home/mool/vim/vim90/src/testdir/runtest.vim[469]..function RunTheTest[44]..Test_edit_insertmode_ex_edit[13]..WaitForAssert[2]..<SNR>6_WaitForCommon[11]..<lambda>4 line 1: Pattern '^-- INSERT --\\s*$' does not match ''
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.'
test_terminal3:
Conditional jump or move depends on uninitialised value(s)
==2819005== at 0x2E9134: jump_to_mouse (mouse.c:2015)
==2819005== by 0x2E69E6: do_mouse (mouse.c:702)
==2819005== by 0x2E95C2: nv_mouse (mouse.c:2166)
option_set(): "get a bit too much"
- refactor to separate function
- check for empty result
Use :defer command:
- Use "D" flag of writefile() and mkdir() in tests.
(testdir/test_c*.vim done)
When using :echomessage do use msg_row and msg_col, but save and restore.
How to test any failure? If nothing fails perhaps it's OK alrady.
New Vim indent script: #11079 Not done yet.
Further Vim9 improvements, possibly after launch:
- Use Vim9 for more runtime files.
@@ -183,11 +218,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 +226,15 @@ 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
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 ɔ̃
@@ -273,6 +312,7 @@ Adding "10" to 'spellsuggest' causes spell suggestions to become very slow.
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 "g>" and "g<" in Visual mode move the text right or left.
Also for a block selection. #8558
@@ -554,12 +594,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 +2678,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 +3792,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 17
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -381,7 +381,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 15
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
@@ -1311,7 +1311,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 +1327,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*
@@ -1618,7 +1641,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 +1683,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 +1824,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 11
" Listen very carefully, I will say this only once
if exists("did_load_filetypes")
@@ -448,6 +448,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 +723,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 |
@@ -867,11 +877,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 +950,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 +988,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
@@ -1316,7 +1329,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 +1404,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 +1726,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
@@ -2094,6 +2111,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
@@ -2568,6 +2588,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,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

@@ -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<'

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 09
" 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)?

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

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

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

@@ -36,6 +36,13 @@ let t = [
\ },
\ ]
def Func()
var d = dd
->extend({
})
eval 0
enddef
" END_INDENT
" START_INDENT

View File

@@ -36,6 +36,13 @@ let t = [
\ },
\ ]
def Func()
var d = dd
->extend({
})
eval 0
enddef
" END_INDENT
" START_INDENT

View File

@@ -33,7 +33,9 @@ function GetVimIndent()
endtry
endfunc
let s:lineContPat = '^\s*\(\\\|"\\ \)'
" Legacy script line continuation and Vim9 script operators that must mean an
" expression that continues from the previous line.
let s:lineContPat = '^\s*\(\\\|"\\ \|->\)'
function GetVimIndentIntern()
" If the current line has line continuation and the previous one too, use
@@ -133,15 +135,15 @@ function GetVimIndentIntern()
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.
" For a line starting with "}" find the matching "{". Align with that line,
" it is either the matching block start or dictionary start.
" 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*{'
if line('.') < v:lnum
let ind = indent('.')
endif
else
@@ -149,19 +151,33 @@ function GetVimIndentIntern()
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()
" Look back for a line to align with
while lnum > 1
" Below a line starting with "}" find the matching "{".
if prev_text =~ '^\s*}'
if maparg('%') != ''
exe lnum
silent! normal %
if line('.') < lnum
let lnum = line('.')
let ind = indent(lnum)
let prev_text = getline(lnum)
else
break
endif
else
" todo: use searchpair() to find a match
break
endif
elseif prev_text =~ s:lineContPat
" looks like a continuation like, go back one line
let lnum = lnum - 1
let ind = indent(lnum)
let prev_text = getline(lnum)
else
" todo: use searchpair() to find a match
break
endif
endif
endwhile
" Below a line starting with "]" we must be below the end of a list.
" Include a "}" and "},} in case a dictionary ends too.

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.

View File

@@ -1,7 +1,7 @@
" These commands create the option window.
"
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2022 Apr 07
" Last Change: 2022 Sep 11
" If there already is an option window, jump to that one.
let buf = bufnr('option-window')
@@ -515,6 +515,8 @@ call <SID>AddOption("splitbelow", gettext("a new window is put below the current
call <SID>BinOptionG("sb", &sb)
call <SID>AddOption("splitright", gettext("a new window is put right of the current one"))
call <SID>BinOptionG("spr", &spr)
call <SID>AddOption("splitscroll", gettext("determines scroll behavior for split windows"))
call <SID>BinOptionG("spsc", &spsc)
call <SID>AddOption("scrollbind", gettext("this window scrolls together with other bound windows"))
call append("$", "\t" .. s:local_to_window)
call <SID>BinOptionL("scb")

View File

@@ -2,12 +2,13 @@
" Language: gdresource
" Maintainer: Maxim Kim <habamax@gmail.com>
" Filenames: *.tscn, *.tres
" Website: https://github.com/habamax/vim-gdscript
if exists("b:current_syntax")
finish
endif
let s:keepcpo= &cpo
let s:keepcpo = &cpo
set cpo&vim
syn match gdResourceNumber "\<0x\%(_\=\x\)\+\>"

View File

@@ -1,13 +1,14 @@
" Vim syntax file for Godot gdscript
" Language: gdscript
" Maintainer: Maxim Kim <habamax@gmail.com>
" Website: https://github.com/habamax/vim-gdscript
" Filenames: *.gd
if exists("b:current_syntax")
finish
endif
let s:keepcpo= &cpo
let s:keepcpo = &cpo
set cpo&vim
syntax sync maxlines=100
@@ -17,8 +18,6 @@ syn keyword gdscriptRepeat for while break continue
syn keyword gdscriptOperator is as not and or in
syn match gdscriptClass "\v<\u\w+>"
syn match gdscriptConstant "\<[_A-Z]\+[0-9_A-Z]*\>"
syn match gdscriptBlockStart ":\s*$"
syn keyword gdscriptKeyword null self owner parent tool
@@ -32,14 +31,16 @@ syn keyword gdscriptStatement onready
syn keyword gdscriptStatement class_name extends
syn keyword gdscriptType void bool int float String contained
syn match gdscriptType ":\s*\zs\h\w*" contained
syn match gdscriptType "->\s*\zs\h\w*" contained
syn keyword gdscriptStatement var nextgroup=gdscriptTypeDecl skipwhite
syn keyword gdscriptStatement const nextgroup=gdscriptTypeDecl skipwhite
syn match gdscriptTypeDecl "\h\w*\s*:\s*\h\w*" contains=gdscriptOperator,gdscriptType,gdscriptClass contained skipwhite
syn match gdscriptTypeDecl "->\s*\h\w*" contains=gdscriptOperator,gdscriptType,gdscriptClass skipwhite
syn match gdscriptTypeDecl "\h\w*\s*:\s*\h\w*" contains=gdscriptType contained skipwhite
syn match gdscriptTypeDecl "->\s*\h\w*" contains=gdscriptType skipwhite
syn keyword gdscriptStatement export nextgroup=gdscriptExportTypeDecl skipwhite
syn match gdscriptExportTypeDecl "(.\{-}[,)]" contains=gdscriptOperator,gdscriptType,gdscriptClass contained skipwhite
syn match gdscriptExportTypeDecl "(.\{-}[,)]" contains=gdscriptOperator,gdscriptType contained skipwhite
syn keyword gdscriptStatement setget nextgroup=gdscriptSetGet,gdscriptSetGetSeparator skipwhite
syn match gdscriptSetGet "\h\w*" nextgroup=gdscriptSetGetSeparator display contained skipwhite
@@ -83,8 +84,6 @@ hi def link gdscriptOperator Operator
hi def link gdscriptRepeat Repeat
hi def link gdscriptSetGet Function
hi def link gdscriptFunctionName Function
hi def link gdscriptClass Type
hi def link gdscriptConstant Constant
hi def link gdscriptBuiltinStruct Typedef
hi def link gdscriptComment Comment
hi def link gdscriptString String

View File

@@ -0,0 +1,63 @@
" Vim syntax file
" Language: git attributes
" Maintainer: ObserverOfTime <chronobserver@disroot.org>
" Filenames: .gitattributes, *.git/info/attributes
" Last Change: 2022 Sep 09
if exists('b:current_syntax')
finish
endif
let s:cpo_save = &cpoptions
set cpoptions&vim
" Comment
syn keyword gitattributesTodo contained TODO FIXME XXX
syn match gitattributesComment /^\s*#.*/ contains=gitattributesTodo
" Pattern
syn match gitattributesPattern /^\s*#\@!\(".\+"\|\S\+\)/ skipwhite
\ nextgroup=gitattributesAttrPrefixed,gitattributesAttrAssigned skipwhite
\ contains=gitattributesGlob,gitattributesRange,gitattributesSeparator
syn match gitattributesGlob /\\\@1<![?*]/ contained
syn match gitattributesRange /\\\@1<!\[.\{-}\]/ contained
syn match gitattributesSeparator '/' contained
" Attribute
syn match gitattributesAttrPrefixed /[!-]\?[A-Za-z0-9_.][-A-Za-z0-9_.]*/
\ transparent contained skipwhite
\ nextgroup=gitattributesAttrPrefixed,gitattributesAttrAssigned
\ contains=gitattributesPrefix,gitattributesName
syn match gitattributesAttrAssigned /[A-Za-z0-9_.][-A-Za-z0-9_.]*=\S\+/
\ transparent contained skipwhite
\ nextgroup=gitattributesAttrPrefixed,gitattributesAttrAssigned
\ contains=gitattributesName,gitattributesAssign,gitattributesBoolean,gitattributesString
syn match gitattributesName /[A-Za-z0-9_.][-A-Za-z0-9_.]*/
\ contained nextgroup=gitattributesAssign
syn match gitattributesPrefix /[!-]/ contained
\ nextgroup=gitAttributesName
syn match gitattributesAssign '=' contained
\ nextgroup=gitattributesBoolean,gitattributesString
syn match gitattributesString /=\@1<=\S\+/ contained
syn keyword gitattributesBoolean true false contained
" Macro
syn match gitattributesMacro /^\s*\[attr\]\s*\S\+/
\ nextgroup=gitattributesAttribute skipwhite
hi def link gitattributesAssign Operator
hi def link gitattributesBoolean Boolean
hi def link gitattributesComment Comment
hi def link gitattributesGlob Special
hi def link gitattributesMacro Define
hi def link gitattributesName Identifier
hi def link gitattributesPrefix SpecialChar
hi def link gitattributesRange Special
hi def link gitattributesSeparator Delimiter
hi def link gitattributesString String
hi def link gitattributesTodo Todo
let b:current_syntax = 'gitattributes'
let &cpoptions = s:cpo_save
unlet s:cpo_save

View File

@@ -0,0 +1,29 @@
" Vim syntax file
" Language: git ignore
" Maintainer: ObserverOfTime <chronobserver@disroot.org>
" Filenames: .gitignore, *.git/info/exclude
" Last Change: 2022 Sep 10
if exists('b:current_syntax')
finish
endif
" Comment
syn keyword gitignoreTodo contained TODO FIXME XXX
syn match gitignoreComment /^#.*/ contains=gitignoreTodo
" Pattern
syn match gitignorePattern /^#\@!.*$/ contains=gitignoreNegation,gitignoreGlob,gitignoreRange,gitignoreSeparator
syn match gitignoreNegation /^!/ contained
syn match gitignoreGlob /\\\@1<![?*]/ contained
syn match gitignoreRange /\\\@1<!\[.\{-}\]/ contained
syn match gitignoreSeparator '/' contained
hi def link gitignoreComment Comment
hi def link gitignoreGlob Special
hi def link gitignoreNegation SpecialChar
hi def link gitignoreRange Special
hi def link gitignoreSeparator Delimiter
hi def link gitignoreTodo Todo
let b:current_syntax = 'gitignore'

View File

@@ -1,11 +1,12 @@
" Vim syntax file
" Language: Lua 4.0, Lua 5.0, Lua 5.1 and Lua 5.2
" Maintainer: Marcus Aurelius Farias <masserahguard-lua 'at' yahoo com>
" First Author: Carlos Augusto Teixeira Mendes <cmendes 'at' inf puc-rio br>
" Last Change: 2022 Mar 31
" Options: lua_version = 4 or 5
" lua_subversion = 0 (4.0, 5.0) or 1 (5.1) or 2 (5.2)
" default 5.2
" Language: Lua 4.0, Lua 5.0, Lua 5.1, Lua 5.2 and Lua 5.3
" Maintainer: Marcus Aurelius Farias <masserahguard-lua 'at' yahoo com>
" First Author: Carlos Augusto Teixeira Mendes <cmendes 'at' inf puc-rio br>
" Last Change: 2022 Sep 07
" Options: lua_version = 4 or 5
" lua_subversion = 0 (for 4.0 or 5.0)
" or 1, 2, 3 (for 5.1, 5.2 or 5.3)
" the default is 5.3
" quit when a syntax file was already loaded
if exists("b:current_syntax")
@@ -16,70 +17,78 @@ let s:cpo_save = &cpo
set cpo&vim
if !exists("lua_version")
" Default is lua 5.2
" Default is lua 5.3
let lua_version = 5
let lua_subversion = 2
let lua_subversion = 3
elseif !exists("lua_subversion")
" lua_version exists, but lua_subversion doesn't. So, set it to 0
" lua_version exists, but lua_subversion doesn't. In this case set it to 0
let lua_subversion = 0
endif
syn case match
" syncing method
syn sync minlines=100
syn sync minlines=1000
" Comments
syn keyword luaTodo contained TODO FIXME XXX
syn match luaComment "--.*$" contains=luaTodo,@Spell
if lua_version == 5 && lua_subversion == 0
syn region luaComment matchgroup=luaComment start="--\[\[" end="\]\]" contains=luaTodo,luaInnerComment,@Spell
syn region luaInnerComment contained transparent start="\[\[" end="\]\]"
elseif lua_version > 5 || (lua_version == 5 && lua_subversion >= 1)
" Comments in Lua 5.1: --[[ ... ]], [=[ ... ]=], [===[ ... ]===], etc.
syn region luaComment matchgroup=luaComment start="--\[\z(=*\)\[" end="\]\z1\]" contains=luaTodo,@Spell
if lua_version >= 5
syn keyword luaMetaMethod __add __sub __mul __div __pow __unm __concat
syn keyword luaMetaMethod __eq __lt __le
syn keyword luaMetaMethod __index __newindex __call
syn keyword luaMetaMethod __metatable __mode __gc __tostring
endif
" First line may start with #!
syn match luaComment "\%^#!.*"
if lua_version > 5 || (lua_version == 5 && lua_subversion >= 1)
syn keyword luaMetaMethod __mod __len
endif
if lua_version > 5 || (lua_version == 5 && lua_subversion >= 2)
syn keyword luaMetaMethod __pairs
endif
if lua_version > 5 || (lua_version == 5 && lua_subversion >= 3)
syn keyword luaMetaMethod __idiv __name
syn keyword luaMetaMethod __band __bor __bxor __bnot __shl __shr
endif
if lua_version > 5 || (lua_version == 5 && lua_subversion >= 4)
syn keyword luaMetaMethod __close
endif
" catch errors caused by wrong parenthesis and wrong curly brackets or
" keywords placed outside their respective blocks
syn region luaParen transparent start='(' end=')' contains=ALLBUT,luaParenError,luaTodo,luaSpecial,luaIfThen,luaElseifThen,luaElse,luaThenEnd,luaBlock,luaLoopBlock,luaIn,luaStatement
syn region luaTableBlock transparent matchgroup=luaTable start="{" end="}" contains=ALLBUT,luaBraceError,luaTodo,luaSpecial,luaIfThen,luaElseifThen,luaElse,luaThenEnd,luaBlock,luaLoopBlock,luaIn,luaStatement
syn region luaParen transparent start='(' end=')' contains=TOP,luaParenError
syn match luaParenError ")"
syn match luaBraceError "}"
syn match luaError "}"
syn match luaError "\<\%(end\|else\|elseif\|then\|until\|in\)\>"
" function ... end
syn region luaFunctionBlock transparent matchgroup=luaFunction start="\<function\>" end="\<end\>" contains=ALLBUT,luaTodo,luaSpecial,luaElseifThen,luaElse,luaThenEnd,luaIn
" if ... then
syn region luaIfThen transparent matchgroup=luaCond start="\<if\>" end="\<then\>"me=e-4 contains=ALLBUT,luaTodo,luaSpecial,luaElseifThen,luaElse,luaIn nextgroup=luaThenEnd skipwhite skipempty
" then ... end
syn region luaThenEnd contained transparent matchgroup=luaCond start="\<then\>" end="\<end\>" contains=ALLBUT,luaTodo,luaSpecial,luaThenEnd,luaIn
" elseif ... then
syn region luaElseifThen contained transparent matchgroup=luaCond start="\<elseif\>" end="\<then\>" contains=ALLBUT,luaTodo,luaSpecial,luaElseifThen,luaElse,luaThenEnd,luaIn
" Function declaration
syn region luaFunctionBlock transparent matchgroup=luaFunction start="\<function\>" end="\<end\>" contains=TOP
" else
syn keyword luaElse contained else
syn keyword luaCondElse matchgroup=luaCond contained containedin=luaCondEnd else
" then ... end
syn region luaCondEnd contained transparent matchgroup=luaCond start="\<then\>" end="\<end\>" contains=TOP
" elseif ... then
syn region luaCondElseif contained containedin=luaCondEnd transparent matchgroup=luaCond start="\<elseif\>" end="\<then\>" contains=TOP
" if ... then
syn region luaCondStart transparent matchgroup=luaCond start="\<if\>" end="\<then\>"me=e-4 contains=TOP nextgroup=luaCondEnd skipwhite skipempty
" do ... end
syn region luaBlock transparent matchgroup=luaStatement start="\<do\>" end="\<end\>" contains=ALLBUT,luaTodo,luaSpecial,luaElseifThen,luaElse,luaThenEnd,luaIn
syn region luaBlock transparent matchgroup=luaStatement start="\<do\>" end="\<end\>" contains=TOP
" repeat ... until
syn region luaLoopBlock transparent matchgroup=luaRepeat start="\<repeat\>" end="\<until\>" contains=ALLBUT,luaTodo,luaSpecial,luaElseifThen,luaElse,luaThenEnd,luaIn
syn region luaRepeatBlock transparent matchgroup=luaRepeat start="\<repeat\>" end="\<until\>" contains=TOP
" while ... do
syn region luaLoopBlock transparent matchgroup=luaRepeat start="\<while\>" end="\<do\>"me=e-2 contains=ALLBUT,luaTodo,luaSpecial,luaIfThen,luaElseifThen,luaElse,luaThenEnd,luaIn nextgroup=luaBlock skipwhite skipempty
syn region luaWhile transparent matchgroup=luaRepeat start="\<while\>" end="\<do\>"me=e-2 contains=TOP nextgroup=luaBlock skipwhite skipempty
" for ... do and for ... in ... do
syn region luaLoopBlock transparent matchgroup=luaRepeat start="\<for\>" end="\<do\>"me=e-2 contains=ALLBUT,luaTodo,luaSpecial,luaIfThen,luaElseifThen,luaElse,luaThenEnd nextgroup=luaBlock skipwhite skipempty
syn region luaFor transparent matchgroup=luaRepeat start="\<for\>" end="\<do\>"me=e-2 contains=TOP nextgroup=luaBlock skipwhite skipempty
syn keyword luaIn contained in
syn keyword luaFor contained containedin=luaFor in
" other keywords
syn keyword luaStatement return local break
@@ -87,35 +96,59 @@ if lua_version > 5 || (lua_version == 5 && lua_subversion >= 2)
syn keyword luaStatement goto
syn match luaLabel "::\I\i*::"
endif
" operators
syn keyword luaOperator and or not
if (lua_version == 5 && lua_subversion >= 3) || lua_version > 5
syn match luaSymbolOperator "[#<>=~^&|*/%+-]\|\.\{2,3}"
elseif lua_version == 5 && (lua_subversion == 1 || lua_subversion == 2)
syn match luaSymbolOperator "[#<>=~^*/%+-]\|\.\{2,3}"
else
syn match luaSymbolOperator "[<>=~^*/+-]\|\.\{2,3}"
endif
" comments
syn keyword luaTodo contained TODO FIXME XXX
syn match luaComment "--.*$" contains=luaTodo,@Spell
if lua_version == 5 && lua_subversion == 0
syn region luaComment matchgroup=luaCommentDelimiter start="--\[\[" end="\]\]" contains=luaTodo,luaInnerComment,@Spell
syn region luaInnerComment contained transparent start="\[\[" end="\]\]"
elseif lua_version > 5 || (lua_version == 5 && lua_subversion >= 1)
" Comments in Lua 5.1: --[[ ... ]], [=[ ... ]=], [===[ ... ]===], etc.
syn region luaComment matchgroup=luaCommentDelimiter start="--\[\z(=*\)\[" end="\]\z1\]" contains=luaTodo,@Spell
endif
" first line may start with #!
syn match luaComment "\%^#!.*"
syn keyword luaConstant nil
if lua_version > 4
syn keyword luaConstant true false
endif
" Strings
if lua_version < 5
syn match luaSpecial contained "\\[\\abfnrtv\'\"]\|\\[[:digit:]]\{,3}"
elseif lua_version == 5
" strings
syn match luaSpecial contained #\\[\\abfnrtv'"[\]]\|\\[[:digit:]]\{,3}#
if lua_version == 5
if lua_subversion == 0
syn match luaSpecial contained #\\[\\abfnrtv'"[\]]\|\\[[:digit:]]\{,3}#
syn region luaString2 matchgroup=luaString start=+\[\[+ end=+\]\]+ contains=luaString2,@Spell
syn region luaString2 matchgroup=luaStringDelimiter start=+\[\[+ end=+\]\]+ contains=luaString2,@Spell
else
if lua_subversion == 1
syn match luaSpecial contained #\\[\\abfnrtv'"]\|\\[[:digit:]]\{,3}#
else " Lua 5.2
syn match luaSpecial contained #\\[\\abfnrtvz'"]\|\\x[[:xdigit:]]\{2}\|\\[[:digit:]]\{,3}#
if lua_subversion >= 2
syn match luaSpecial contained #\\z\|\\x[[:xdigit:]]\{2}#
endif
syn region luaString2 matchgroup=luaString start="\[\z(=*\)\[" end="\]\z1\]" contains=@Spell
if lua_subversion >= 3
syn match luaSpecial contained #\\u{[[:xdigit:]]\+}#
endif
syn region luaString2 matchgroup=luaStringDelimiter start="\[\z(=*\)\[" end="\]\z1\]" contains=@Spell
endif
endif
syn region luaString start=+'+ end=+'+ skip=+\\\\\|\\'+ contains=luaSpecial,@Spell
syn region luaString start=+"+ end=+"+ skip=+\\\\\|\\"+ contains=luaSpecial,@Spell
syn region luaString matchgroup=luaStringDelimiter start=+'+ end=+'+ skip=+\\\\\|\\'+ contains=luaSpecial,@Spell
syn region luaString matchgroup=luaStringDelimiter start=+"+ end=+"+ skip=+\\\\\|\\"+ contains=luaSpecial,@Spell
" integer number
syn match luaNumber "\<\d\+\>"
" floating point number, with dot, optional exponent
syn match luaNumber "\<\d\+\.\d*\%([eE][-+]\=\d\+\)\=\>"
syn match luaNumber "\<\d\+\.\d*\%([eE][-+]\=\d\+\)\="
" floating point number, starting with a dot, optional exponent
syn match luaNumber "\.\d\+\%([eE][-+]\=\d\+\)\=\>"
" floating point number, without dot, with exponent
@@ -130,8 +163,15 @@ if lua_version >= 5
endif
endif
" tables
syn region luaTableBlock transparent matchgroup=luaTable start="{" end="}" contains=TOP,luaStatement
" methods
syntax match luaFunc ":\@<=\k\+"
" built-in functions
syn keyword luaFunc assert collectgarbage dofile error next
syn keyword luaFunc print rawget rawset tonumber tostring type _VERSION
syn keyword luaFunc print rawget rawset self tonumber tostring type _VERSION
if lua_version == 4
syn keyword luaFunc _ALERT _ERRORMESSAGE gcinfo
@@ -168,30 +208,26 @@ elseif lua_version == 5
syn match luaFunc /\<package\.loaded\>/
syn match luaFunc /\<package\.loadlib\>/
syn match luaFunc /\<package\.path\>/
syn match luaFunc /\<package\.preload\>/
if lua_subversion == 1
syn keyword luaFunc getfenv setfenv
syn keyword luaFunc loadstring module unpack
syn match luaFunc /\<package\.loaders\>/
syn match luaFunc /\<package\.preload\>/
syn match luaFunc /\<package\.seeall\>/
elseif lua_subversion == 2
elseif lua_subversion >= 2
syn keyword luaFunc _ENV rawlen
syn match luaFunc /\<package\.config\>/
syn match luaFunc /\<package\.preload\>/
syn match luaFunc /\<package\.searchers\>/
syn match luaFunc /\<package\.searchpath\>/
syn match luaFunc /\<bit32\.arshift\>/
syn match luaFunc /\<bit32\.band\>/
syn match luaFunc /\<bit32\.bnot\>/
syn match luaFunc /\<bit32\.bor\>/
syn match luaFunc /\<bit32\.btest\>/
syn match luaFunc /\<bit32\.bxor\>/
syn match luaFunc /\<bit32\.extract\>/
syn match luaFunc /\<bit32\.lrotate\>/
syn match luaFunc /\<bit32\.lshift\>/
syn match luaFunc /\<bit32\.replace\>/
syn match luaFunc /\<bit32\.rrotate\>/
syn match luaFunc /\<bit32\.rshift\>/
endif
if lua_subversion >= 3
syn match luaFunc /\<coroutine\.isyieldable\>/
endif
if lua_subversion >= 4
syn keyword luaFunc warn
syn match luaFunc /\<coroutine\.close\>/
endif
syn match luaFunc /\<coroutine\.running\>/
endif
@@ -200,6 +236,7 @@ elseif lua_version == 5
syn match luaFunc /\<coroutine\.status\>/
syn match luaFunc /\<coroutine\.wrap\>/
syn match luaFunc /\<coroutine\.yield\>/
syn match luaFunc /\<string\.byte\>/
syn match luaFunc /\<string\.char\>/
syn match luaFunc /\<string\.dump\>/
@@ -218,6 +255,18 @@ elseif lua_version == 5
syn match luaFunc /\<string\.match\>/
syn match luaFunc /\<string\.reverse\>/
endif
if lua_subversion >= 3
syn match luaFunc /\<string\.pack\>/
syn match luaFunc /\<string\.packsize\>/
syn match luaFunc /\<string\.unpack\>/
syn match luaFunc /\<utf8\.char\>/
syn match luaFunc /\<utf8\.charpattern\>/
syn match luaFunc /\<utf8\.codes\>/
syn match luaFunc /\<utf8\.codepoint\>/
syn match luaFunc /\<utf8\.len\>/
syn match luaFunc /\<utf8\.offset\>/
endif
if lua_subversion == 0
syn match luaFunc /\<table\.getn\>/
syn match luaFunc /\<table\.setn\>/
@@ -225,19 +274,40 @@ elseif lua_version == 5
syn match luaFunc /\<table\.foreachi\>/
elseif lua_subversion == 1
syn match luaFunc /\<table\.maxn\>/
elseif lua_subversion == 2
elseif lua_subversion >= 2
syn match luaFunc /\<table\.pack\>/
syn match luaFunc /\<table\.unpack\>/
if lua_subversion >= 3
syn match luaFunc /\<table\.move\>/
endif
endif
syn match luaFunc /\<table\.concat\>/
syn match luaFunc /\<table\.sort\>/
syn match luaFunc /\<table\.insert\>/
syn match luaFunc /\<table\.sort\>/
syn match luaFunc /\<table\.remove\>/
if lua_subversion == 2
syn match luaFunc /\<bit32\.arshift\>/
syn match luaFunc /\<bit32\.band\>/
syn match luaFunc /\<bit32\.bnot\>/
syn match luaFunc /\<bit32\.bor\>/
syn match luaFunc /\<bit32\.btest\>/
syn match luaFunc /\<bit32\.bxor\>/
syn match luaFunc /\<bit32\.extract\>/
syn match luaFunc /\<bit32\.lrotate\>/
syn match luaFunc /\<bit32\.lshift\>/
syn match luaFunc /\<bit32\.replace\>/
syn match luaFunc /\<bit32\.rrotate\>/
syn match luaFunc /\<bit32\.rshift\>/
endif
syn match luaFunc /\<math\.abs\>/
syn match luaFunc /\<math\.acos\>/
syn match luaFunc /\<math\.asin\>/
syn match luaFunc /\<math\.atan\>/
syn match luaFunc /\<math\.atan2\>/
if lua_subversion < 3
syn match luaFunc /\<math\.atan2\>/
endif
syn match luaFunc /\<math\.ceil\>/
syn match luaFunc /\<math\.sin\>/
syn match luaFunc /\<math\.cos\>/
@@ -251,25 +321,36 @@ elseif lua_version == 5
if lua_subversion == 0
syn match luaFunc /\<math\.mod\>/
syn match luaFunc /\<math\.log10\>/
else
if lua_subversion == 1
syn match luaFunc /\<math\.log10\>/
endif
elseif lua_subversion == 1
syn match luaFunc /\<math\.log10\>/
endif
if lua_subversion >= 1
syn match luaFunc /\<math\.huge\>/
syn match luaFunc /\<math\.fmod\>/
syn match luaFunc /\<math\.modf\>/
syn match luaFunc /\<math\.cosh\>/
syn match luaFunc /\<math\.sinh\>/
syn match luaFunc /\<math\.tanh\>/
if lua_subversion == 1 || lua_subversion == 2
syn match luaFunc /\<math\.cosh\>/
syn match luaFunc /\<math\.sinh\>/
syn match luaFunc /\<math\.tanh\>/
endif
endif
syn match luaFunc /\<math\.pow\>/
syn match luaFunc /\<math\.rad\>/
syn match luaFunc /\<math\.sqrt\>/
syn match luaFunc /\<math\.frexp\>/
syn match luaFunc /\<math\.ldexp\>/
if lua_subversion < 3
syn match luaFunc /\<math\.pow\>/
syn match luaFunc /\<math\.frexp\>/
syn match luaFunc /\<math\.ldexp\>/
else
syn match luaFunc /\<math\.maxinteger\>/
syn match luaFunc /\<math\.mininteger\>/
syn match luaFunc /\<math\.tointeger\>/
syn match luaFunc /\<math\.type\>/
syn match luaFunc /\<math\.ult\>/
endif
syn match luaFunc /\<math\.random\>/
syn match luaFunc /\<math\.randomseed\>/
syn match luaFunc /\<math\.pi\>/
syn match luaFunc /\<io\.close\>/
syn match luaFunc /\<io\.flush\>/
syn match luaFunc /\<io\.input\>/
@@ -284,6 +365,7 @@ elseif lua_version == 5
syn match luaFunc /\<io\.tmpfile\>/
syn match luaFunc /\<io\.type\>/
syn match luaFunc /\<io\.write\>/
syn match luaFunc /\<os\.clock\>/
syn match luaFunc /\<os\.date\>/
syn match luaFunc /\<os\.difftime\>/
@@ -295,6 +377,7 @@ elseif lua_version == 5
syn match luaFunc /\<os\.setlocale\>/
syn match luaFunc /\<os\.time\>/
syn match luaFunc /\<os\.tmpname\>/
syn match luaFunc /\<debug\.debug\>/
syn match luaFunc /\<debug\.gethook\>/
syn match luaFunc /\<debug\.getinfo\>/
@@ -307,53 +390,49 @@ elseif lua_version == 5
if lua_subversion == 1
syn match luaFunc /\<debug\.getfenv\>/
syn match luaFunc /\<debug\.setfenv\>/
syn match luaFunc /\<debug\.getmetatable\>/
syn match luaFunc /\<debug\.setmetatable\>/
syn match luaFunc /\<debug\.getregistry\>/
elseif lua_subversion == 2
syn match luaFunc /\<debug\.getmetatable\>/
syn match luaFunc /\<debug\.setmetatable\>/
syn match luaFunc /\<debug\.getregistry\>/
syn match luaFunc /\<debug\.getuservalue\>/
syn match luaFunc /\<debug\.setuservalue\>/
syn match luaFunc /\<debug\.upvalueid\>/
syn match luaFunc /\<debug\.upvaluejoin\>/
endif
if lua_subversion >= 3
"https://www.lua.org/manual/5.3/manual.html#6.5
syn match luaFunc /\<utf8\.char\>/
syn match luaFunc /\<utf8\.charpattern\>/
syn match luaFunc /\<utf8\.codes\>/
syn match luaFunc /\<utf8\.codepoint\>/
syn match luaFunc /\<utf8\.len\>/
syn match luaFunc /\<utf8\.offset\>/
if lua_subversion >= 1
syn match luaFunc /\<debug\.getmetatable\>/
syn match luaFunc /\<debug\.setmetatable\>/
syn match luaFunc /\<debug\.getregistry\>/
if lua_subversion >= 2
syn match luaFunc /\<debug\.getuservalue\>/
syn match luaFunc /\<debug\.setuservalue\>/
syn match luaFunc /\<debug\.upvalueid\>/
syn match luaFunc /\<debug\.upvaluejoin\>/
endif
if lua_subversion >= 4
syn match luaFunc /\<debug.setcstacklimit\>/
endif
endif
endif
" Define the default highlighting.
" Only when an item doesn't have highlighting yet
hi def link luaStatement Statement
hi def link luaRepeat Repeat
hi def link luaFor Repeat
hi def link luaString String
hi def link luaString2 String
hi def link luaNumber Number
hi def link luaOperator Operator
hi def link luaIn Operator
hi def link luaConstant Constant
hi def link luaCond Conditional
hi def link luaElse Conditional
hi def link luaFunction Function
hi def link luaComment Comment
hi def link luaTodo Todo
hi def link luaTable Structure
hi def link luaError Error
hi def link luaParenError Error
hi def link luaBraceError Error
hi def link luaSpecial SpecialChar
hi def link luaFunc Identifier
hi def link luaLabel Label
hi def link luaStatement Statement
hi def link luaRepeat Repeat
hi def link luaFor Repeat
hi def link luaString String
hi def link luaString2 String
hi def link luaStringDelimiter luaString
hi def link luaNumber Number
hi def link luaOperator Operator
hi def link luaSymbolOperator luaOperator
hi def link luaConstant Constant
hi def link luaCond Conditional
hi def link luaCondElse Conditional
hi def link luaFunction Function
hi def link luaMetaMethod Function
hi def link luaComment Comment
hi def link luaCommentDelimiter luaComment
hi def link luaTodo Todo
hi def link luaTable Structure
hi def link luaError Error
hi def link luaParenError Error
hi def link luaSpecial SpecialChar
hi def link luaFunc Identifier
hi def link luaLabel Label
let b:current_syntax = "lua"

43
runtime/syntax/lyrics.vim Normal file
View File

@@ -0,0 +1,43 @@
" Vim syntax file
" Language: LyRiCs
" Maintainer: ObserverOfTime <chronobserver@disroot.org>
" Filenames: *.lrc
" Last Change: 2022 Sep 18
if exists('b:current_syntax')
finish
endif
let s:cpo_save = &cpoptions
set cpoptions&vim
syn case ignore
" Errors
syn match lrcError /^.\+$/
" ID tags
syn match lrcTag /^\s*\[\a\+:.\+\]\s*$/ contains=lrcTagName,lrcTagValue
syn match lrcTagName contained nextgroup=lrcTagValue
\ /\[\zs\(al\|ar\|au\|by\|encoding\|la\|id\|length\|offset\|re\|ti\|ve\)\ze:/
syn match lrcTagValue /:\zs.\+\ze\]/ contained
" Lyrics
syn match lrcLyricTime /^\s*\[\d\d:\d\d\.\d\d\]/
\ contains=lrcNumber nextgroup=lrcLyricLine
syn match lrcLyricLine /.*$/ contained contains=lrcWordTime,@Spell
syn match lrcWordTime /<\d\d:\d\d\.\d\d>/ contained contains=lrcNumber,@NoSpell
syn match lrcNumber /[+-]\=\d\+/ contained
hi def link lrcLyricTime Label
hi def link lrcNumber Number
hi def link lrcTag PreProc
hi def link lrcTagName Identifier
hi def link lrcTagValue String
hi def link lrcWordTime Special
hi def link lrcError Error
let b:current_syntax = 'lyrics'
let &cpoptions = s:cpo_save
unlet s:cpo_save

View File

@@ -2,8 +2,8 @@
" Language: shell (sh) Korn shell (ksh) bash (sh)
" Maintainer: Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
" Previous Maintainer: Lennart Schultz <Lennart.Schultz@ecmwf.int>
" Last Change: Jun 29, 2022
" Version: 202
" Last Change: Jul 08, 2022
" Version: 203
" URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_SH
" For options and settings, please use: :help ft-sh-syntax
" This file includes many ideas from Eric Brunet (eric.brunet@ens.fr) and heredoc fixes from Felipe Contreras
@@ -141,7 +141,7 @@ endif
syn cluster shArithParenList contains=shArithmetic,shArithParen,shCaseEsac,shComment,shDeref,shDo,shDerefSimple,shEcho,shEscape,shNumber,shOperator,shPosnParm,shExSingleQuote,shExDoubleQuote,shHereString,shRedir,shSingleQuote,shDoubleQuote,shStatement,shVariable,shAlias,shTest,shCtrlSeq,shSpecial,shParen,bashSpecialVariables,bashStatement,shIf,shFor,shFunctionKey,shFunctionOne,shFunctionTwo
syn cluster shArithList contains=@shArithParenList,shParenError
syn cluster shCaseEsacList contains=shCaseStart,shCaseLabel,shCase,shCaseBar,shCaseIn,shComment,shDeref,shDerefSimple,shCaseCommandSub,shCaseExSingleQuote,shCaseSingleQuote,shCaseDoubleQuote,shCtrlSeq,@shErrorList,shStringSpecial,shCaseRange
syn cluster shCaseList contains=@shCommandSubList,shCaseEsac,shColon,shCommandSub,shCommandSubBQ,shComment,shDo,shEcho,shExpr,shFor,shHereDoc,shIf,shHereString,shRedir,shSetList,shSource,shStatement,shVariable,shCtrlSeq
syn cluster shCaseList contains=@shCommandSubList,shCaseEsac,shColon,shCommandSub,shCommandSubBQ,shComment,shDblBrace,shDo,shEcho,shExpr,shFor,shHereDoc,shIf,shHereString,shRedir,shSetList,shSource,shStatement,shVariable,shCtrlSeq
if exists("b:is_kornshell") || exists("b:is_bash")
syn cluster shCaseList add=shForPP
endif

62
runtime/syntax/srt.vim Normal file
View File

@@ -0,0 +1,62 @@
" Vim syntax file
" Language: SubRip
" Maintainer: ObserverOfTime <chronobserver@disroot.org>
" Filenames: *.srt
" Last Change: 2022 Sep 12
if exists('b:current_syntax')
finish
endif
syn spell toplevel
syn cluster srtSpecial contains=srtBold,srtItalics,srtStrikethrough,srtUnderline,srtFont,srtTag,srtEscape
" Number
syn match srtNumber /^\d\+$/ contains=@NoSpell
" Range
syn match srtRange /\d\d:\d\d:\d\d[,.]\d\d\d --> \d\d:\d\d:\d\d[,.]\d\d\d/ skipwhite contains=srtArrow,srtTime nextgroup=srtCoordinates
syn match srtArrow /-->/ contained contains=@NoSpell
syn match srtTime /\d\d:\d\d:\d\d[,.]\d\d\d/ contained contains=@NoSpell
syn match srtCoordinates /X1:\d\+ X2:\d\+ Y1:\d\+ Y2:\d\+/ contained contains=@NoSpell
" Bold
syn region srtBold matchgroup=srtFormat start=+<b>+ end=+</b>+ contains=@srtSpecial
syn region srtBold matchgroup=srtFormat start=+{b}+ end=+{/b}+ contains=@srtSpecial
" Italics
syn region srtItalics matchgroup=srtFormat start=+<i>+ end=+</i>+ contains=@srtSpecial
syn region srtItalics matchgroup=srtFormat start=+{i}+ end=+{/i}+ contains=@srtSpecial
" Strikethrough
syn region srtStrikethrough matchgroup=srtFormat start=+<s>+ end=+</s>+ contains=@srtSpecial
syn region srtStrikethrough matchgroup=srtFormat start=+{s}+ end=+{/s}+ contains=@srtSpecial
" Underline
syn region srtUnderline matchgroup=srtFormat start=+<u>+ end=+</u>+ contains=@srtSpecial
syn region srtUnderline matchgroup=srtFormat start=+{u}+ end=+{/u}+ contains=@srtSpecial
" Font
syn region srtFont matchgroup=srtFormat start=+<font[^>]\{-}>+ end=+</font>+ contains=@srtSpecial
" ASS tags
syn match srtTag /{\\[^}]\{1,}}/ contains=@NoSpell
" Special characters
syn match srtEscape /\\[nNh]/ contains=@NoSpell
hi def link srtArrow Delimiter
hi def link srtCoordinates Label
hi def link srtEscape SpecialChar
hi def link srtFormat Special
hi def link srtNumber Number
hi def link srtTag PreProc
hi def link srtTime String
hi srtBold cterm=bold gui=bold
hi srtItalics cterm=italic gui=italic
hi srtStrikethrough cterm=strikethrough gui=strikethrough
hi srtUnderline cterm=underline gui=underline
let b:current_syntax = 'srt'

54
runtime/syntax/vdf.vim Normal file
View File

@@ -0,0 +1,54 @@
" Vim syntax file
" Language: Valve Data Format
" Maintainer: ObserverOfTime <chronobserver@disroot.org>
" Filenames: *.vdf
" Last Change: 2022 Sep 15
if exists('b:current_syntax')
finish
endif
let s:cpo_save = &cpoptions
set cpoptions&vim
" Comment
syn keyword vdfTodo contained TODO FIXME XXX
syn match vdfComment +//.*+ contains=vdfTodo
" Macro
syn match vdfMacro /^\s*#.*/
" Tag
syn region vdfTag start=/"/ skip=/\\"/ end=/"/
\ nextgroup=vdfValue skipwhite oneline
" Section
syn region vdfSection matchgroup=vdfBrace
\ start=/{/ end=/}/ transparent fold
\ contains=vdfTag,vdfSection,vdfComment,vdfConditional
" Conditional
syn match vdfConditional /\[\$\w\{1,1021}\]/ nextgroup=vdfTag
" Value
syn region vdfValue start=/"/ skip=/\\"/ end=/"/
\ oneline contained contains=vdfVariable,vdfNumber,vdfEscape
syn region vdfVariable start=/%/ skip=/\\%/ end=/%/ oneline contained
syn match vdfEscape /\\[nt\\"]/ contained
syn match vdfNumber /"-\?\d\+"/ contained
hi def link vdfBrace Delimiter
hi def link vdfComment Comment
hi def link vdfConditional Constant
hi def link vdfEscape SpecialChar
hi def link vdfMacro Macro
hi def link vdfNumber Number
hi def link vdfTag Keyword
hi def link vdfTodo Todo
hi def link vdfValue String
hi def link vdfVariable Identifier
let b:current_syntax = 'vdf'
let &cpoptions = s:cpo_save
unlet s:cpo_save

View File

@@ -1,8 +1,8 @@
" Vim syntax file
" Language: Vim 9.0 script
" Maintainer: Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
" Last Change: August 17, 2022
" Version: 9.0-02
" Last Change: September 14, 2022
" Version: 9.0-05
" URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_VIM
" Automatically generated keyword lists: {{{1
@@ -19,34 +19,35 @@ syn keyword vimTodo contained COMBAK FIXME TODO XXX
syn cluster vimCommentGroup contains=vimTodo,@Spell
" regular vim commands {{{2
syn keyword vimCommand contained a al[l] arge[dit] bN[ext] bel[owright] bp[revious] bro[wse] cNf[ile] cadde[xpr] cbe[fore] cdo cg[etfile] checkt[ime] clo[se] co[py] con[tinue] cq[uit] cuna[bbrev] defc[ompile] deletl dep diffpu[t] dj[ump] dp earlier el[se] endenum ene[w] export filt[er] fo[ld] fu[nction] h[elp] hi if in iuna[bbrev] keepalt la[st] lan[guage] lbo[ttom] ld[o] lfdo lgrepa[dd] lma lo[adview] lop[en] lua m[ove] mes[sages] mod[e] nbs[tart] nor omapc[lear] packl[oadall] popu[p] profd[el] ptf[irst] pts[elect] py3f[ile] pyx r[ead] redrawt[abline] ri[ght] rundo sIl sal[l] sbf[irst] sc scp se[t] sg sgn sie sip sme snoremenu spelli[nfo] spr[evious] sri star[tinsert] sts[elect] sus[pend] syncbind tabN[ext] tabl[ast] tabr[ewind] tcld[o] tj[ump] tlu tno[remap] tu[nmenu] undol[ist] v vie[w] vne[w] win[size] wq xmapc[lear] xr[estore]
syn keyword vimCommand contained ab ar[gs] argg[lobal] b[uffer] bf[irst] br[ewind] bufdo c[hange] caddf[ile] cbel[ow] ce[nter] cgetb[uffer] chi[story] cmapc[lear] col[der] conf[irm] cr[ewind] cw[indow] delc[ommand] deletp di[splay] diffs[plit] dl dr[op] ec elsei[f] endf[unction] enum exu[sage] fin[d] foldc[lose] go[to] ha[rdcopy] hid[e] ij[ump] inor j[oin] keepj[umps] lab[ove] lat lc[d] le[ft] lfir[st] lh[elpgrep] lmak[e] loadk lp[revious] luado ma[rk] mk[exrc] mz[scheme] new nore on[ly] pc[lose] pp[op] promptf[ind] ptj[ump] pu[t] py[thon] pyxdo rec[over] reg[isters] rightb[elow] rv[iminfo] sIn san[dbox] sbl[ast] scI scr[iptnames] setf[iletype] sgI sgp sig sir smenu so[urce] spellr[are] sr srl startg[replace] substitutepattern sv[iew] syntime tabc[lose] tabm[ove] tabs tclf[ile] tl[ast] tlunmenu to[pleft] tunma[p] unh[ide] var vim9[cmd] vs[plit] winc[md] wqa[ll] xme xunme
syn keyword vimCommand contained abc[lear] arga[dd] argl[ocal] ba[ll] bl[ast] brea[k] buffers ca caf[ter] cbo[ttom] cex[pr] cgete[xpr] cl[ist] cn[ext] colo[rscheme] cons[t] cs d[elete] delel delf[unction] dif[fupdate] difft[his] dli[st] ds[earch] echoc[onsole] em[enu] endfo[r] eval f[ile] fina[lly] foldd[oopen] gr[ep] helpc[lose] his[tory] il[ist] interface ju[mps] keepp[atterns] lad[dexpr] later lch[dir] lefta[bove] lg[etfile] lhi[story] lmapc[lear] loadkeymap lpf[ile] luafile mak[e] mks[ession] mzf[ile] nmapc[lear] nos[wapfile] opt[ions] pe[rl] pre[serve] promptr[epl] ptl[ast] pw[d] pydo pyxfile red[o] res[ize] ru[ntime] sI sIp sav[eas] sbm[odified] sce scripte[ncoding] setg[lobal] sgc sgr sign sl[eep] smile sor[t] spellr[epall] srI srn startr[eplace] substituterepeat sw[apname] t tabd[o] tabn[ext] tags te[aroff] tlm tm[enu] tp[revious] type unl ve[rsion] vim9s[cript] wN[ext] windo wundo xmenu xunmenu
syn keyword vimCommand contained abo[veleft] argd[elete] argu[ment] bad[d] bm[odified] breaka[dd] bun[load] cabc[lear] cal[l] cc cf[ile] changes cla[st] cnew[er] com cope[n] cscope debug delep dell diffg[et] dig[raphs] do dsp[lit] echoe[rr] en[dif] endinterface ex files fini[sh] folddoc[losed] grepa[dd] helpf[ind] i imapc[lear] intro k lN[ext] laddb[uffer] lb[uffer] lcl[ose] leg[acy] lgetb[uffer] ll lne[xt] loc[kmarks] lr[ewind] lv[imgrep] marks mksp[ell] n[ext] noa nu[mber] ownsyntax ped[it] prev[ious] ps[earch] ptn[ext] py3 pyf[ile] q[uit] redi[r] ret[ab] rub[y] sIc sIr sbN[ext] sbn[ext] scg scriptv[ersion] setl[ocal] sge sh[ell] sil[ent] sla[st] sn[ext] sp[lit] spellr[rare] src srp static sun[hide] sy tN[ext] tabe[dit] tabnew tc[d] ter[minal] tlmenu tma[p] tr[ewind] u[ndo] unlo[ckvar] verb[ose] vim[grep] w[rite] winp[os] wv[iminfo] xnoreme xwininfo
syn keyword vimCommand contained abstract argded[upe] as[cii] balt bn[ext] breakd[el] bw[ipeout] cabo[ve] cat[ch] ccl[ose] cfdo chd[ir] class cnf[ile] comc[lear] cp[revious] cstag debugg[reedy] deletel delm[arks] diffo[ff] dir doau e[dit] echom[sg] endclass endt[ry] exi[t] filet fir[st] foldo[pen] gui helpg[rep] ia imp is[earch] kee[pmarks] lNf[ile] laddf[ile] lbe[fore] lcs lex[pr] lgete[xpr] lla[st] lnew[er] lockv[ar] ls lvimgrepa[dd] mat[ch] mkv[imrc] nb[key] noautocmd o[pen] p[rint] perld[o] pro ptN[ext] ptp[revious] py3do python3 qa[ll] redr[aw] retu[rn] rubyd[o] sIe sN[ext] sb[uffer] sbp[revious] sci scs sf[ind] sgi si sim[alt] sm[agic] sno[magic] spe[llgood] spellu[ndo] sre[wind] st[op] stj[ump] sunme syn ta[g] tabf[ind] tabo[nly] tch[dir] tf[irst] tln tmapc[lear] try una[bbreviate] uns[ilent] vert[ical] vimgrepa[dd] wa[ll] wn[ext] x[it] xnoremenu y[ank]
syn keyword vimCommand contained addd argdo au bd[elete] bo[tright] breakl[ist] cN[ext] cad[dbuffer] cb[uffer] cd cfir[st] che[ckpath] cle[arjumps] cnor comp[iler] cpf[ile] cun def deletep delp diffp[atch] disa[ssemble] doaut ea echon enddef endw[hile] exp filetype fix[del] for gvim helpt[ags] iabc[lear] import isp[lit] keepa l[ist] laf[ter] lbel[ow] lcscope lf[ile] lgr[ep] lli[st] lnf[ile] lol[der] lt[ag] lw[indow] menut[ranslate] mkvie[w] nbc[lose] noh[lsearch] ol[dfiles] pa[ckadd] po[p] prof[ile] pta[g] ptr[ewind] py3f[ile] pythonx quita[ll] redraws[tatus] rew[ind] rubyf[ile] sIg sa[rgument] sba[ll] sbr[ewind] scl scscope sfir[st] sgl sic sin sm[ap] snoreme spelld[ump] spellw[rong] srg sta[g] stopi[nsert] sunmenu sync tab tabfir[st] tabp[revious] tcl th[row] tlnoremenu tn[ext] ts[elect] undoj[oin] up[date] vi[sual] viu[sage] wh[ile] wp[revious] xa[ll] xprop z[^.=]
syn keyword vimCommand contained a ar[gs] argl[ocal] bad[d] bn[ext] breakl[ist] cNf[ile] cadde[xpr] cbe[fore] cdo cg[etfile] checkt[ime] clo[se] co[py] con[tinue] cq[uit] cuna[bbrev] defc[ompile] deletl dep diffpu[t] dj[ump] dp earlier echow[indow] enddef endinterface ex files fini[sh] folddoc[losed] go[to] ha[rdcopy] hid[e] if in iuna[bbrev] keepalt la[st] lan[guage] lbo[ttom] ld[o] lfdo lgrepa[dd] lma lo[adview] lop[en] lua m[ove] mes[sages] mod[e] nbs[tart] nor omapc[lear] packl[oadall] popu[p] profd[el] ptf[irst] pts[elect] py3f[ile] pyx r[ead] redrawt[abline] ri[ght] rundo sIl sal[l] sbf[irst] sc scp se[t] sg sgn sie sip sme snoremenu spelli[nfo] spr[evious] sri star[tinsert] sts[elect] sus[pend] syncbind tabN[ext] tabl[ast] tabr[ewind] tcld[o] tj[ump] tlu tno[remap] tu[nmenu] undol[ist] v vie[w] vne[w] win[size] wq xmapc[lear] xr[estore]
syn keyword vimCommand contained ab arga[dd] argu[ment] balt bo[tright] bro[wse] c[hange] caddf[ile] cbel[ow] ce[nter] cgetb[uffer] chi[story] cmapc[lear] col[der] conf[irm] cr[ewind] cw[indow] delc[ommand] deletp di[splay] diffs[plit] dl dr[op] ec el[se] endenum endt[ry] exi[t] filet fir[st] foldo[pen] gr[ep] helpc[lose] his[tory] ij[ump] inor j[oin] keepj[umps] lab[ove] lat lc[d] le[ft] lfir[st] lh[elpgrep] lmak[e] loadk lp[revious] luado ma[rk] mk[exrc] mz[scheme] new nore on[ly] pc[lose] pp[op] promptf[ind] ptj[ump] pu[t] py[thon] pyxdo rec[over] reg[isters] rightb[elow] rv[iminfo] sIn san[dbox] sbl[ast] scI scr[iptnames] setf[iletype] sgI sgp sig sir smenu so[urce] spellr[are] sr srl startg[replace] substitutepattern sv[iew] syntime tabc[lose] tabm[ove] tabs tclf[ile] tl[ast] tlunmenu to[pleft] tunma[p] unh[ide] var vim9[cmd] vs[plit] winc[md] wqa[ll] xme xunme
syn keyword vimCommand contained abc[lear] argd[elete] as[cii] bd[elete] bp[revious] bufdo ca caf[ter] cbo[ttom] cex[pr] cgete[xpr] cl[ist] cn[ext] colo[rscheme] cons[t] cs d[elete] delel delfunction dif[fupdate] difft[his] dli[st] ds[earch] echoc[onsole] elsei[f] endfo[r] endw[hile] exp filetype fix[del] for grepa[dd] helpf[ind] hor[izontal] il[ist] interface ju[mps] keepp[atterns] lad[dexpr] later lch[dir] lefta[bove] lg[etfile] lhi[story] lmapc[lear] loadkeymap lpf[ile] luafile mak[e] mks[ession] mzf[ile] nmapc[lear] nos[wapfile] opt[ions] pe[rl] pre[serve] promptr[epl] ptl[ast] pw[d] pydo pyxfile red[o] res[ize] ru[ntime] sI sIp sav[eas] sbm[odified] sce scripte[ncoding] setg[lobal] sgc sgr sign sl[eep] smile sor[t] spellr[epall] srI srn startr[eplace] substituterepeat sw[apname] t tabd[o] tabn[ext] tags te[aroff] tlm tm[enu] tp[revious] type unl ve[rsion] vim9s[cript] wN[ext] windo wundo xmenu xunmenu
syn keyword vimCommand contained abo[veleft] argded[upe] au bel[owright] br[ewind] buffers cabc[lear] call cc cf[ile] changes cla[st] cnew[er] com cope[n] cscope debug delep dell diffg[et] dig[raphs] do dsp[lit] echoe[rr] em[enu] endfun ene[w] export filt[er] fo[ld] fun gui helpg[rep] i imapc[lear] intro k lN[ext] laddb[uffer] lb[uffer] lcl[ose] leg[acy] lgetb[uffer] ll lne[xt] loc[kmarks] lr[ewind] lv[imgrep] marks mksp[ell] n[ext] noa nu[mber] ownsyntax ped[it] prev[ious] ps[earch] ptn[ext] py3 pyf[ile] q[uit] redi[r] ret[ab] rub[y] sIc sIr sbN[ext] sbn[ext] scg scriptv[ersion] setl[ocal] sge sh[ell] sil[ent] sla[st] sn[ext] sp[lit] spellr[rare] src srp static sun[hide] sy tN[ext] tabe[dit] tabnew tc[d] ter[minal] tlmenu tma[p] tr[ewind] u[ndo] unlo[ckvar] verb[ose] vim[grep] w[rite] winp[os] wv[iminfo] xnoreme xwininfo
syn keyword vimCommand contained abstract argdo bN[ext] bf[irst] brea[k] bun[load] cabo[ve] cat[ch] ccl[ose] cfdo chd[ir] class cnf[ile] comc[lear] cp[revious] cstag debugg[reedy] deletel delm[arks] diffo[ff] dir doau e[dit] echom[sg] en[dif] endfunc enum exu[sage] fin[d] foldc[lose] func gvim helpt[ags] ia imp is[earch] kee[pmarks] lNf[ile] laddf[ile] lbe[fore] lcs lex[pr] lgete[xpr] lla[st] lnew[er] lockv[ar] ls lvimgrepa[dd] mat[ch] mkv[imrc] nb[key] noautocmd o[pen] p[rint] perld[o] pro ptN[ext] ptp[revious] py3do python3 qa[ll] redr[aw] return rubyd[o] sIe sN[ext] sb[uffer] sbp[revious] sci scs sf[ind] sgi si sim[alt] sm[agic] sno[magic] spe[llgood] spellu[ndo] sre[wind] st[op] stj[ump] sunme syn ta[g] tabf[ind] tabo[nly] tch[dir] tf[irst] tln tmapc[lear] try una[bbreviate] uns[ilent] vert[ical] vimgrepa[dd] wa[ll] wn[ext] x[it] xnoremenu y[ank]
syn keyword vimCommand contained addd arge[dit] b[uffer] bl[ast] breaka[dd] bw[ipeout] cad[dbuffer] cb[uffer] cd cfir[st] che[ckpath] cle[arjumps] cnor comp[iler] cpf[ile] cun def deletep delp diffp[atch] disa[ssemble] doaut ea echon endclass endfunction eval f[ile] fina[lly] foldd[oopen] function h[elp] hi iabc[lear] import isp[lit] keepa l[ist] laf[ter] lbel[ow] lcscope lf[ile] lgr[ep] lli[st] lnf[ile] lol[der] lt[ag] lw[indow] menut[ranslate] mkvie[w] nbc[lose] noh[lsearch] ol[dfiles] pa[ckadd] po[p] prof[ile] pta[g] ptr[ewind] py3f[ile] pythonx quita[ll] redraws[tatus] rew[ind] rubyf[ile] sIg sa[rgument] sba[ll] sbr[ewind] scl scscope sfir[st] sgl sic sin sm[ap] snoreme spelld[ump] spellw[rong] srg sta[g] stopi[nsert] sunmenu sync tab tabfir[st] tabp[revious] tcl th[row] tlnoremenu tn[ext] ts[elect] undoj[oin] up[date] vi[sual] viu[sage] wh[ile] wp[revious] xa[ll] xprop z[^.=]
syn keyword vimCommand contained al[l] argg[lobal] ba[ll] bm[odified] breakd[el] cN[ext]
syn match vimCommand contained "\<z[-+^.=]\=\>"
syn keyword vimStdPlugin contained Arguments Asm Break Cfilter Clear Continue DiffOrig Evaluate Finish Gdb Lfilter Man N[ext] Over P[rint] Program Run S Source Step Stop Termdebug TermdebugCommand TOhtml Until Winbar XMLent XMLns
" vimOptions are caught only when contained in a vimSet {{{2
syn keyword vimOption contained acd ambw arshape aw backupskip beval bk bri bufhidden cdh ci cinsd cms commentstring conceallevel cpt cscopetagorder csto cursorlineopt dg dir ed enc errorfile fcl fdn ffs fillchars fo foldmarker formatoptions gdefault gp guifontwide helpheight history hlsearch imaf ims includeexpr infercase iskeyword keywordprg laststatus lispwords lrm magic maxfuncdepth menuitems mm modifiable mousemev mps nu opendevice paste pex pmbfn printencoding pt pythonhome quoteescape renderoptions rlc ruf scb scrolloff selectmode shellquote shiftwidth showmode sj sn spellfile spo st su swf ta taglength tbis termguicolors textmode thesaurusfunc titlestring tpm ttimeoutlen ttyscroll tx undolevels vartabstop vfile virtualedit warn wfh wildchar wim winminheight wmh write
syn keyword vimOption contained ai anti asd awa balloondelay bevalterm bkc briopt buflisted cdhome cin cinw co compatible confirm crb cscopeverbose csverb cwh dict directory edcompatible encoding errorformat fcs fdo fic fixendofline foldclose foldmethod formatprg gfm grepformat guiheadroom helplang hk ic imak imsearch incsearch insertmode isp km lazyredraw list ls makeef maxmapdepth mfd mmd modified mousemodel msm number operatorfunc pastetoggle pexpr popt printexpr pumheight pythonthreedll rdt report rnu ruler scf scrollopt sessionoptions shellredir shm showtabline slm so spelllang spr sta sua switchbuf tabline tagrelative tbs termwinkey textwidth tildeop tl tr ttm ttytype uc undoreload vb vi visualbell wb wfw wildcharm winaltkeys winminwidth wmnu writeany
syn keyword vimOption contained akm antialias autochdir background ballooneval bex bl brk buftype cdpath cindent cinwords cocu complete copyindent cryptmethod csl cuc debug dictionary display ef endofline esckeys fdc fdt fileencoding fixeol foldcolumn foldminlines fp gfn grepprg guiligatures hf hkmap icon imc imsf inde is isprint kmp lbr listchars lsp makeencoding maxmem mh mmp more mousemoveevent mzq numberwidth opfunc patchexpr pfn pp printfont pumwidth pythonthreehome re restorescreen ro rulerformat scl scs sft shellslash shortmess shq sm softtabstop spelloptions sps stal suffixes sws tabpagemax tags tc termwinscroll tf timeout tm ts tty tw udf updatecount vbs viewdir vop wc wh wildignore wincolor winptydll wmw writebackup
syn keyword vimOption contained al ar autoindent backspace balloonevalterm bexpr bo browsedir casemap cedit cink clipboard cole completefunc cot cscopepathcomp cspc cul deco diff dy efm eol et fde fen fileencodings fk foldenable foldnestmax fs gfs gtl guioptions hh hkmapp iconstring imcmdline imst indentexpr isf joinspaces kp lcs lm luadll makeprg maxmempattern mis mmt mouse mouses mzquantum nuw osfiletype patchmode ph preserveindent printheader pvh pyx readonly revins rop runtimepath scr sect sh shelltemp shortname si smartcase sol spellsuggest sr startofline suffixesadd sxe tabstop tagstack tcldll termwinsize tfu timeoutlen to tsl ttybuiltin twk udir updatetime vdir viewoptions vsts wcm whichwrap wildignorecase window winwidth wop writedelay
syn keyword vimOption contained aleph arab autoread backup balloonexpr bg bomb bs cb cf cinkeys cm colorcolumn completeopt cp cscopeprg csprg culopt def diffexpr ea ei ep eventignore fdi fenc fileformat fkmap foldexpr foldopen fsync gfw gtt guipty hi hkp ignorecase imd imstatusfunc indentkeys isfname js langmap linebreak lmap lw mat maxmemtot mkspellmem mod mousef mouseshape mzschemedll odev pa path pheader previewheight printmbcharset pvp pyxversion redrawtime ri rs sb scroll sections shcf shelltype showbreak sidescroll smartindent sp spf srr statusline sw sxq tag tal tenc termwintype tgc title toolbar tsr ttyfast tws ul ur ve vif vts wcr wi wildmenu winfixheight wiv wrap ws
syn keyword vimOption contained allowrevins arabic autoshelldir backupcopy bdir bh breakat bsdir cc cfu cino cmdheight columns completepopup cpo cscopequickfix csqf cursorbind define diffopt ead ek equalalways ex fdl fencs fileformats flp foldignore foldtext ft ghr guicursor guitablabel hid hl im imdisable imstyle indk isi key langmenu lines lnr lz matchpairs mco ml modeline mousefocus mouset mzschemegcdll oft packpath pdev pi previewpopup printmbfont pvw qe regexpengine rightleft rtp sbo scrollbind secure shell shellxescape showcmd sidescrolloff smarttab spc spl ss stl swapfile syn tagbsearch tb term terse tgst titlelen toolbariconsize tsrfu ttym twsl undodir ut verbose viminfo wa wd wic wildmode winfixwidth wiw wrapmargin ww
syn keyword vimOption contained altkeymap arabicshape autowrite backupdir bdlay bin breakindent bsk ccv ch cinoptions cmdwinheight com completeslash cpoptions cscoperelative csre cursorcolumn delcombine digraph eadirection emo equalprg expandtab fdls fex fileignorecase fml foldlevel formatexpr gcr gli guifont guitabtooltip hidden hlg imactivatefunc imi inc inex isident keymap langnoremap linespace loadplugins ma matchtime mef mle modelineexpr mousehide mousetime nf ofu para penc pm previewwindow printoptions pw qftf relativenumber rightleftcmd ru sbr scrollfocus sel shellcmdflag shellxquote showfulltag signcolumn smc spell splitbelow ssl stmp swapsync synmaxcol tagcase tbi termbidi textauto thesaurus titleold top ttimeout ttymouse twt undofile varsofttabstop verbosefile viminfofile wak weirdinvert wig wildoptions winheight wm wrapscan xtermcodes
syn keyword vimOption contained ambiwidth ari autowriteall backupext belloff binary breakindentopt bt cd charconvert cinscopedecls cmp comments concealcursor cpp cscopetag cst cursorline dex dip eb emoji errorbells exrc fdm ff filetype fmr foldlevelstart formatlistpat gd go guifontset helpfile highlight hls imactivatekey iminsert include inf isk keymodel langremap lisp lpl macatsui maxcombine menc mls modelines mousem mp nrformats omnifunc paragraphs perldll pmbcs printdevice prompt pythondll quickfixtextfunc remap rl rubydll sc scrolljump selection shellpipe shiftround showmatch siso smd spellcapcheck splitright ssop sts swb syntax tagfunc tbidi termencoding
syn keyword vimOption contained acd ambw arshape aw backupskip beval bk bri bufhidden cdh ci cinsd cms commentstring conceallevel cpt cscopetagorder csto cursorlineopt dg dir ed enc errorfile fcl fdn ffs fillchars fo foldmarker formatoptions gdefault gp guifontwide helpheight history hlsearch imaf ims includeexpr infercase iskeyword keywordprg laststatus lispwords lrm magic maxfuncdepth menuitems mm modifiable mousemev mps nu opendevice paste pex pmbfn printencoding pt pythonhome quoteescape renderoptions rlc ruf scb scrolloff selectmode shellquote shiftwidth showmode sj sn spellfile splitscroll ssl stmp swapsync synmaxcol tagcase tbi termbidi textauto thesaurusfunc titlestring tpm ttimeoutlen ttyscroll tx undolevels vartabstop vfile virtualedit warn wfh wildchar wim winminheight wmh write
syn keyword vimOption contained ai anti asd awa balloondelay bevalterm bkc briopt buflisted cdhome cin cinw co compatible confirm crb cscopeverbose csverb cwh dict directory edcompatible encoding errorformat fcs fdo fic fixendofline foldclose foldmethod formatprg gfm grepformat guiheadroom helplang hk ic imak imsearch incsearch insertmode isp km lazyredraw list ls makeef maxmapdepth mfd mmd modified mousemodel msm number operatorfunc pastetoggle pexpr popt printexpr pumheight pythonthreedll rdt report rnu ruler scf scrollopt sessionoptions shellredir shm showtabline slm so spelllang spo ssop sts swb syntax tagfunc tbidi termencoding textmode tildeop tl tr ttm ttytype uc undoreload vb vi visualbell wb wfw wildcharm winaltkeys winminwidth wmnu writeany
syn keyword vimOption contained akm antialias autochdir background ballooneval bex bl brk buftype cdpath cindent cinwords cocu complete copyindent cryptmethod csl cuc debug dictionary display ef endofline esckeys fdc fdt fileencoding fixeol foldcolumn foldminlines fp gfn grepprg guiligatures hf hkmap icon imc imsf inde is isprint kmp lbr listchars lsp makeencoding maxmem mh mmp more mousemoveevent mzq numberwidth opfunc patchexpr pfn pp printfont pumwidth pythonthreehome re restorescreen ro rulerformat scl scs sft shellslash shortmess shq sm softtabstop spelloptions spr st su swf ta taglength tbis termguicolors textwidth timeout tm ts tty tw udf updatecount vbs viewdir vop wc wh wildignore wincolor winptydll wmw writebackup
syn keyword vimOption contained al ar autoindent backspace balloonevalterm bexpr bo browsedir casemap cedit cink clipboard cole completefunc cot cscopepathcomp cspc cul deco diff dy efm eol et fde fen fileencodings fk foldenable foldnestmax fs gfs gtl guioptions hh hkmapp iconstring imcmdline imst indentexpr isf joinspaces kp lcs lm luadll makeprg maxmempattern mis mmt mouse mouses mzquantum nuw osfiletype patchmode ph preserveindent printheader pvh pyx readonly revins rop runtimepath scr sect sh shelltemp shortname si smartcase sol spellsuggest sps sta sua switchbuf tabline tagrelative tbs termwinkey tf timeoutlen to tsl ttybuiltin twk udir updatetime vdir viewoptions vsts wcm whichwrap wildignorecase window winwidth wop writedelay
syn keyword vimOption contained aleph arab autoread backup balloonexpr bg bomb bs cb cf cinkeys cm colorcolumn completeopt cp cscopeprg csprg culopt def diffexpr ea ei ep eventignore fdi fenc fileformat fkmap foldexpr foldopen fsync gfw gtt guipty hi hkp ignorecase imd imstatusfunc indentkeys isfname js langmap linebreak lmap lw mat maxmemtot mkspellmem mod mousef mouseshape mzschemedll odev pa path pheader previewheight printmbcharset pvp pyxversion redrawtime ri rs sb scroll sections shcf shelltype showbreak sidescroll smartindent sp spf spsc stal suffixes sws tabpagemax tags tc termwinscroll tfu title toolbar tsr ttyfast tws ul ur ve vif vts wcr wi wildmenu winfixheight wiv wrap ws
syn keyword vimOption contained allowrevins arabic autoshelldir backupcopy bdir bh breakat bsdir cc cfu cino cmdheight columns completepopup cpo cscopequickfix csqf cursorbind define diffopt ead ek equalalways ex fdl fencs fileformats flp foldignore foldtext ft ghr guicursor guitablabel hid hl im imdisable imstyle indk isi key langmenu lines lnr lz matchpairs mco ml modeline mousefocus mouset mzschemegcdll oft packpath pdev pi previewpopup printmbfont pvw qe regexpengine rightleft rtp sbo scrollbind secure shell shellxescape showcmd sidescrolloff smarttab spc spl sr startofline suffixesadd sxe tabstop tagstack tcldll termwinsize tgc titlelen toolbariconsize tsrfu ttym twsl undodir ut verbose viminfo wa wd wic wildmode winfixwidth wiw wrapmargin ww
syn keyword vimOption contained altkeymap arabicshape autowrite backupdir bdlay bin breakindent bsk ccv ch cinoptions cmdwinheight com completeslash cpoptions cscoperelative csre cursorcolumn delcombine digraph eadirection emo equalprg expandtab fdls fex fileignorecase fml foldlevel formatexpr gcr gli guifont guitabtooltip hidden hlg imactivatefunc imi inc inex isident keymap langnoremap linespace loadplugins ma matchtime mef mle modelineexpr mousehide mousetime nf ofu para penc pm previewwindow printoptions pw qftf relativenumber rightleftcmd ru sbr scrollfocus sel shellcmdflag shellxquote showfulltag signcolumn smc spell splitbelow srr statusline sw sxq tag tal tenc termwintype tgst titleold top ttimeout ttymouse twt undofile varsofttabstop verbosefile viminfofile wak weirdinvert wig wildoptions winheight wm wrapscan xtermcodes
syn keyword vimOption contained ambiwidth ari autowriteall backupext belloff binary breakindentopt bt cd charconvert cinscopedecls cmp comments concealcursor cpp cscopetag cst cursorline dex dip eb emoji errorbells exrc fdm ff filetype fmr foldlevelstart formatlistpat gd go guifontset helpfile highlight hls imactivatekey iminsert include inf isk keymodel langremap lisp lpl macatsui maxcombine menc mls modelines mousem mp nrformats omnifunc paragraphs perldll pmbcs printdevice prompt pythondll quickfixtextfunc remap rl rubydll sc scrolljump selection shellpipe shiftround showmatch siso smd spellcapcheck splitright ss stl swapfile syn tagbsearch tb term terse thesaurus
" vimOptions: These are the turn-off setting variants {{{2
syn keyword vimOption contained noacd noallowrevins noantialias noarabic noarshape noautoindent noautowrite noawa noballoonevalterm nobin nobl nobri noci nocompatible nocp nocscopetag nocst nocul nocursorline nodg noea noedcompatible noemoji noequalalways noet noexrc nofileignorecase nofk nofs nogdefault nohidden nohkmapp nohlsearch noignorecase noimcmdline noincsearch noinsertmode nojs nolazyredraw nolisp noloadplugins nolz nomagic nomle nomodelineexpr nomore nomousefocus nonu noodev nopaste nopreserveindent noprompt noreadonly noremap norevins norightleft nornu nors noruler nosc noscf noscrollfocus nosecure noshellslash noshiftround noshowcmd noshowmatch nosi nosmartcase nosmarttab nosn nospell nosplitright nosr nosta nostmp noswf notagbsearch notagstack notbidi notermbidi notextauto notf notildeop notitle notop nottimeout nottyfast noudf novb nowa nowb nowfh nowic nowildmenu nowinfixwidth nowmnu nowrapscan nowriteany nows
syn keyword vimOption contained noai noaltkeymap noar noarabicshape noasd noautoread noautowriteall nobackup nobeval nobinary nobomb nobuflisted nocin noconfirm nocrb nocscopeverbose nocsverb nocursorbind nodeco nodiff noeb noek noendofline noerrorbells noex nofen nofixendofline nofkmap nofsync noguipty nohk nohkp noic noim noimd noinf nois nolangnoremap nolbr nolist nolpl noma nomh nomod nomodifiable nomousef nomousehide nonumber noopendevice nopi nopreviewwindow nopvw norelativenumber norestorescreen nori norl noro noru nosb noscb noscrollbind noscs nosft noshelltemp noshortname noshowfulltag noshowmode nosm nosmartindent nosmd nosol nosplitbelow nospr nossl nostartofline noswapfile nota notagrelative notbi notbs noterse notextmode notgst notimeout noto notr nottybuiltin notx noundofile novisualbell nowarn noweirdinvert nowfw nowildignorecase nowinfixheight nowiv nowrap nowrite nowritebackup noxtermcodes
syn keyword vimOption contained noakm noanti noarab noari noautochdir noautoshelldir noaw noballooneval nobevalterm nobk nobreakindent nocf nocindent nocopyindent nocscoperelative nocsre nocuc nocursorcolumn nodelcombine nodigraph noed noemo noeol noesckeys noexpandtab nofic nofixeol nofoldenable nogd nohid nohkmap nohls noicon noimc noimdisable noinfercase nojoinspaces nolangremap nolinebreak nolnr nolrm nomacatsui noml nomodeline nomodified
syn keyword vimOption contained noacd noallowrevins noantialias noarabic noarshape noautoindent noautowrite noawa noballoonevalterm nobin nobl nobri noci nocompatible nocp nocscopetag nocst nocul nocursorline nodg noea noedcompatible noemoji noequalalways noet noexrc nofileignorecase nofk nofs nogdefault nohidden nohkmapp nohlsearch noignorecase noimcmdline noincsearch noinsertmode nojs nolazyredraw nolisp noloadplugins nolz nomagic nomle nomodelineexpr nomore nomousehide noodev nopaste nopreserveindent noprompt noreadonly noremap norevins norightleft nornu nors noruler nosc noscf noscrollfocus nosecure noshellslash noshiftround noshowcmd noshowmatch nosi nosmartcase nosmarttab nosn nospell nosplitright nospr nosr nosta nostmp noswf notagbsearch notagstack notbidi notermbidi notextauto notf notildeop notitle notop nottimeout nottyfast noudf novb nowa nowb nowfh nowic nowildmenu nowinfixwidth nowmnu nowrapscan nowriteany nows
syn keyword vimOption contained noai noaltkeymap noar noarabicshape noasd noautoread noautowriteall nobackup nobeval nobinary nobomb nobuflisted nocin noconfirm nocrb nocscopeverbose nocsverb nocursorbind nodeco nodiff noeb noek noendofline noerrorbells noex nofen nofixendofline nofkmap nofsync noguipty nohk nohkp noic noim noimd noinf nois nolangnoremap nolbr nolist nolpl noma nomh nomod nomodifiable nomousef nonu noopendevice nopi nopreviewwindow nopvw norelativenumber norestorescreen nori norl noro noru nosb noscb noscrollbind noscs nosft noshelltemp noshortname noshowfulltag noshowmode nosm nosmartindent nosmd nosol nosplitbelow nosplitscroll nospsc nossl nostartofline noswapfile nota notagrelative notbi notbs noterse notextmode notgst notimeout noto notr nottybuiltin notx noundofile novisualbell nowarn noweirdinvert nowfw nowildignorecase nowinfixheight nowiv nowrap nowrite nowritebackup noxtermcodes
syn keyword vimOption contained noakm noanti noarab noari noautochdir noautoshelldir noaw noballooneval nobevalterm nobk nobreakindent nocf nocindent nocopyindent nocscoperelative nocsre nocuc nocursorcolumn nodelcombine nodigraph noed noemo noeol noesckeys noexpandtab nofic nofixeol nofoldenable nogd nohid nohkmap nohls noicon noimc noimdisable noinfercase nojoinspaces nolangremap nolinebreak nolnr nolrm nomacatsui noml nomodeline nomodified nomousefocus nonumber
" vimOptions: These are the invertible variants {{{2
syn keyword vimOption contained invacd invallowrevins invantialias invarabic invarshape invautoindent invautowrite invawa invballoonevalterm invbin invbl invbri invci invcompatible invcp invcscopetag invcst invcul invcursorline invdg invea invedcompatible invemoji invequalalways invet invexrc invfileignorecase invfk invfs invgdefault invhidden invhkmapp invhlsearch invignorecase invimcmdline invincsearch invinsertmode invjs invlazyredraw invlisp invloadplugins invlz invmagic invmle invmodelineexpr invmore invmousefocus invnu invodev invpaste invpreserveindent invprompt invreadonly invremap invrevins invrightleft invrnu invrs invruler invsc invscf invscrollfocus invsecure invshellslash invshiftround invshowcmd invshowmatch invsi invsmartcase invsmarttab invsn invspell invsplitright invsr invsta invstmp invswf invtagbsearch invtagstack invtbidi invtermbidi invtextauto invtf invtildeop invtitle invtop invttimeout invttyfast invudf invvb invwa invwb invwfh invwic invwildmenu invwinfixwidth invwmnu invwrapscan invwriteany invws
syn keyword vimOption contained invai invaltkeymap invar invarabicshape invasd invautoread invautowriteall invbackup invbeval invbinary invbomb invbuflisted invcin invconfirm invcrb invcscopeverbose invcsverb invcursorbind invdeco invdiff inveb invek invendofline inverrorbells invex invfen invfixendofline invfkmap invfsync invguipty invhk invhkp invic invim invimd invinf invis invlangnoremap invlbr invlist invlpl invma invmh invmod invmodifiable invmousef invmousehide invnumber invopendevice invpi invpreviewwindow invpvw invrelativenumber invrestorescreen invri invrl invro invru invsb invscb invscrollbind invscs invsft invshelltemp invshortname invshowfulltag invshowmode invsm invsmartindent invsmd invsol invsplitbelow invspr invssl invstartofline invswapfile invta invtagrelative invtbi invtbs invterse invtextmode invtgst invtimeout invto invtr invttybuiltin invtx invundofile invvisualbell invwarn invweirdinvert invwfw invwildignorecase invwinfixheight invwiv invwrap invwrite invwritebackup invxtermcodes
syn keyword vimOption contained invakm invanti invarab invari invautochdir invautoshelldir invaw invballooneval invbevalterm invbk invbreakindent invcf invcindent invcopyindent invcscoperelative invcsre invcuc invcursorcolumn invdelcombine invdigraph inved invemo inveol invesckeys invexpandtab invfic invfixeol invfoldenable invgd invhid invhkmap invhls invicon invimc invimdisable invinfercase invjoinspaces invlangremap invlinebreak invlnr invlrm invmacatsui invml invmodeline invmodified
syn keyword vimOption contained invacd invallowrevins invantialias invarabic invarshape invautoindent invautowrite invawa invballoonevalterm invbin invbl invbri invci invcompatible invcp invcscopetag invcst invcul invcursorline invdg invea invedcompatible invemoji invequalalways invet invexrc invfileignorecase invfk invfs invgdefault invhidden invhkmapp invhlsearch invignorecase invimcmdline invincsearch invinsertmode invjs invlazyredraw invlisp invloadplugins invlz invmagic invmle invmodelineexpr invmore invmousehide invodev invpaste invpreserveindent invprompt invreadonly invremap invrevins invrightleft invrnu invrs invruler invsc invscf invscrollfocus invsecure invshellslash invshiftround invshowcmd invshowmatch invsi invsmartcase invsmarttab invsn invspell invsplitright invspr invsr invsta invstmp invswf invtagbsearch invtagstack invtbidi invtermbidi invtextauto invtf invtildeop invtitle invtop invttimeout invttyfast invudf invvb invwa invwb invwfh invwic invwildmenu invwinfixwidth invwmnu invwrapscan invwriteany invws
syn keyword vimOption contained invai invaltkeymap invar invarabicshape invasd invautoread invautowriteall invbackup invbeval invbinary invbomb invbuflisted invcin invconfirm invcrb invcscopeverbose invcsverb invcursorbind invdeco invdiff inveb invek invendofline inverrorbells invex invfen invfixendofline invfkmap invfsync invguipty invhk invhkp invic invim invimd invinf invis invlangnoremap invlbr invlist invlpl invma invmh invmod invmodifiable invmousef invnu invopendevice invpi invpreviewwindow invpvw invrelativenumber invrestorescreen invri invrl invro invru invsb invscb invscrollbind invscs invsft invshelltemp invshortname invshowfulltag invshowmode invsm invsmartindent invsmd invsol invsplitbelow invsplitscroll invspsc invssl invstartofline invswapfile invta invtagrelative invtbi invtbs invterse invtextmode invtgst invtimeout invto invtr invttybuiltin invtx invundofile invvisualbell invwarn invweirdinvert invwfw invwildignorecase invwinfixheight invwiv invwrap invwrite invwritebackup invxtermcodes
syn keyword vimOption contained invakm invanti invarab invari invautochdir invautoshelldir invaw invballooneval invbevalterm invbk invbreakindent invcf invcindent invcopyindent invcscoperelative invcsre invcuc invcursorcolumn invdelcombine invdigraph inved invemo inveol invesckeys invexpandtab invfic invfixeol invfoldenable invgd invhid invhkmap invhls invicon invimc invimdisable invinfercase invjoinspaces invlangremap invlinebreak invlnr invlrm invmacatsui invml invmodeline invmodified invmousefocus invnumber
" termcap codes (which can also be set) {{{2
syn keyword vimOption contained t_8b t_8u t_AF t_AL t_bc t_BE t_ce t_cl t_Co t_Cs t_CV t_db t_DL t_Ds t_EI t_F2 t_F4 t_F6 t_F8 t_fd t_fs t_IE t_k1 t_k2 t_K3 t_K4 t_K5 t_K6 t_K7 t_K8 t_K9 t_kb t_KB t_kd t_KD t_KE t_KG t_KH t_KI t_KJ t_KK t_kl t_KL t_kN t_kP t_kr t_ks t_ku t_le t_mb t_md t_me t_mr t_ms t_nd t_op t_PE t_PS t_RB t_RC t_RF t_Ri t_RI t_RS t_RT t_RV t_Sb t_SC t_se t_Sf t_SH t_Si t_SI t_so t_sr t_SR t_ST t_te t_Te t_TE t_ti t_TI t_ts t_Ts t_u7 t_ue t_us t_Us t_ut t_vb t_ve t_vi t_vs t_VS t_WP t_WS t_xn t_xs t_ZH t_ZR
@@ -73,17 +74,17 @@ syn keyword vimAutoEvent contained BufCreate BufEnter BufFilePre BufLeave BufNew
syn keyword vimGroup contained Comment Constant String Character Number Boolean Float Identifier Function Statement Conditional Repeat Label Operator Keyword Exception PreProc Include Define Macro PreCondit Type StorageClass Structure Typedef Special SpecialChar Tag Delimiter SpecialComment Debug Underlined Ignore Error Todo
" Default highlighting groups {{{2
syn keyword vimHLGroup contained ColorColumn CurSearch Cursor CursorColumn CursorIM CursorLine CursorLineFold CursorLineNr CursorLineSign DiffAdd DiffChange DiffDelete DiffText Directory EndOfBuffer ErrorMsg FoldColumn Folded IncSearch LineNr LineNrAbove LineNrBelow MatchParen Menu ModeMsg MoreMsg NonText Normal Pmenu PmenuSbar PmenuSel PmenuThumb Question QuickFixLine Scrollbar Search SignColumn SpecialKey SpellBad SpellCap SpellLocal SpellRare StatusLine StatusLineNC StatusLineTerm StatusLineTermNC TabLine TabLineFill TabLineSel Terminal Title Tooltip VertSplit Visual VisualNOS WarningMsg WildMenu
syn keyword vimHLGroup contained ColorColumn CurSearch Cursor CursorColumn CursorIM CursorLine CursorLineFold CursorLineNr CursorLineSign DiffAdd DiffChange DiffDelete DiffText Directory EndOfBuffer ErrorMsg FoldColumn Folded IncSearch LineNr LineNrAbove LineNrBelow MatchParen Menu MessageWindow ModeMsg MoreMsg NonText Normal Pmenu PmenuSbar PmenuSel PmenuThumb Question QuickFixLine Scrollbar Search SignColumn SpecialKey SpellBad SpellCap SpellLocal SpellRare StatusLine StatusLineNC StatusLineTerm StatusLineTermNC TabLine TabLineFill TabLineSel Terminal Title Tooltip VertSplit Visual VisualNOS WarningMsg WildMenu
syn match vimHLGroup contained "Conceal"
syn case match
" Function Names {{{2
syn keyword vimFuncName contained abs argc assert_equal assert_match atan balloon_show bufexists bufwinid ceil ch_canread ch_getbufnr ch_read ch_status complete_check count deletebufline digraph_set eval exists_compiled extendnew findfile fnameescape foldtextresult get getcharmod getcmdpos getcursorcharpos getftime getmarklist getreg gettagstack getwinvar haslocaldir hlexists indent inputrestore isabsolutepath job_getchannel join keys line2byte listener_flush luaeval mapnew matcharg matchlist min nr2char popup_beval popup_filter_menu popup_getpos popup_move pow prompt_setinterrupt prop_find prop_type_delete py3eval readblob reg_executing remote_expr remote_startserver reverse screenchars search searchpos setcellwidths setenv setpos settagstack sign_define sign_placelist sin soundfold spellsuggest str2float strchars string strtrans swapname synstack tabpagewinnr tempname term_getansicolors term_getscrolled terminalprops term_setapi term_wait test_garbagecollect_soon test_null_channel test_null_partial test_setmouse timer_info tolower type values winbufnr win_getid win_id2win winnr win_splitmove
syn keyword vimFuncName contained acos argidx assert_equalfile assert_nobeep atan2 balloon_split buflisted bufwinnr changenr ch_close ch_getjob ch_readblob cindent complete_info cscope_connection did_filetype digraph_setlist eventhandler exp feedkeys flatten fnamemodify foreground getbufinfo getcharpos getcmdscreenpos getcwd getftype getmatches getreginfo gettext glob hasmapto hlget index inputsave isdirectory job_info js_decode len lispindent listener_remove map mapset matchdelete matchstr mkdir or popup_clear popup_filter_yesno popup_hide popup_notification prevnonblank prompt_setprompt prop_list prop_type_get pyeval readdir reg_recording remote_foreground remove round screencol searchcount server2client setcharpos setfperm setqflist setwinvar sign_getdefined sign_undefine sinh sound_playevent split str2list strdisplaywidth strlen strwidth synconcealed system tagfiles term_dumpdiff term_getattr term_getsize term_list term_setkill test_alloc_fail test_getvalue test_null_dict test_null_string test_settime timer_pause toupper typename virtcol wincol win_gettype winlayout winrestcmd winwidth
syn keyword vimFuncName contained add arglistid assert_exception assert_notequal autocmd_add blob2list bufload byte2line char2nr ch_close_in ch_info ch_readraw clearmatches confirm cursor diff_filler echoraw executable expand filereadable flattennew foldclosed fullcommand getbufline getcharsearch getcmdtype getenv getimstatus getmousepos getregtype getwininfo glob2regpat histadd hlID indexof inputsecret isinf job_setoptions js_encode libcall list2blob localtime maparg match matchend matchstrpos mode pathshorten popup_close popup_findinfo popup_list popup_setoptions printf prop_add prop_remove prop_type_list pyxeval readdirex reltime remote_peek rename rubyeval screenpos searchdecl serverlist setcharsearch setline setreg sha256 sign_getplaced sign_unplace slice sound_playfile sqrt str2nr strftime strpart submatch synID systemlist taglist term_dumpload term_getcursor term_getstatus term_scrape term_setrestore test_autochdir test_gui_event test_null_function test_option_not_set test_srand_seed timer_start tr undofile virtcol2col windowsversion win_gotoid winline winrestview wordcount
syn keyword vimFuncName contained and argv assert_fails assert_notmatch autocmd_delete browse bufloaded byteidx charclass chdir ch_log ch_sendexpr col copy debugbreak diff_hlID empty execute expandcmd filewritable float2nr foldclosedend funcref getbufvar getcharstr getcmdwintype getfontname getjumplist getpid gettabinfo getwinpos globpath histdel hlset input insert islocked job_start json_decode libcallnr list2str log mapcheck matchadd matchfuzzy max mzeval perleval popup_create popup_findpreview popup_locate popup_settext prompt_getprompt prop_add_list prop_type_add pum_getpos rand readfile reltimefloat remote_read repeat screenattr screenrow searchpair setbufline setcmdpos setloclist settabvar shellescape sign_jump sign_unplacelist sort sound_stop srand strcharlen strgetchar strptime substitute synIDattr tabpagebuflist tan term_dumpwrite term_getjob term_gettitle term_sendkeys term_setsize test_feedinput test_ignore_error test_null_job test_override test_unknown timer_stop trim undotree visualmode win_execute winheight win_move_separator winsaveview writefile
syn keyword vimFuncName contained append asin assert_false assert_report autocmd_get browsedir bufname byteidxcomp charcol ch_evalexpr ch_logfile ch_sendraw complete cos deepcopy digraph_get environ exepath expr10 filter floor foldlevel function getchangelist getcmdcompltype getcompletion getfperm getline getpos gettabvar getwinposx has histget hostname inputdialog interrupt isnan job_status json_encode line listener_add log10 maplist matchaddpos matchfuzzypos menu_info nextnonblank popup_atcursor popup_dialog popup_getoptions popup_menu popup_show prompt_setcallback prop_clear prop_type_change pumvisible range reduce reltimestr remote_send resolve screenchar screenstring searchpairpos setbufvar setcursorcharpos setmatches settabwinvar shiftwidth sign_place simplify sound_clear spellbadword state strcharpart stridx strridx swapinfo synIDtrans tabpagenr tanh term_getaltscreen term_getline term_gettty term_setansicolors term_start test_garbagecollect_now test_null_blob test_null_list test_refcount test_void timer_stopall trunc uniq wildmenumode win_findbuf win_id2tabwin win_move_statusline win_screenpos xor
syn keyword vimFuncName contained appendbufline assert_beeps assert_inrange assert_true balloon_gettext bufadd bufnr call charidx ch_evalraw ch_open ch_setoptions complete_add cosh delete digraph_getlist escape exists extend finddir fmod foldtext garbagecollect getchar getcmdline getcurpos getfsize getloclist getqflist gettabwinvar getwinposy has_key histnr iconv inputlist invert items job_stop
syn keyword vimFuncName contained abs argc assert_equal assert_match atan balloon_show bufexists bufwinid ceil ch_canread ch_getbufnr ch_read ch_status complete_check count deletebufline digraph_set eval exists_compiled extendnew findfile fnameescape foldtextresult get getcharmod getcmdpos getcursorcharpos getftime getmarklist getreg gettabwinvar getwinposy has_key histnr iconv inputlist invert items job_stop keys line2byte listener_remove map mapset matchdelete matchstr mkdir or popup_clear popup_filter_yesno popup_hide popup_notification prevnonblank prompt_setprompt prop_list prop_type_get pyeval readdir reg_recording remote_foreground remove round screencol searchcount server2client setcharpos setenv setpos settagstack sign_define sign_placelist sin soundfold spellsuggest str2float strchars string strtrans swapname synstack tabpagewinnr tempname term_getansicolors term_getscrolled terminalprops term_setapi term_wait test_garbagecollect_soon test_null_channel test_null_partial test_setmouse timer_info tolower type values winbufnr win_getid win_id2win winnr win_splitmove
syn keyword vimFuncName contained acos argidx assert_equalfile assert_nobeep atan2 balloon_split buflisted bufwinnr changenr ch_close ch_getjob ch_readblob cindent complete_info cscope_connection did_filetype digraph_setlist eventhandler exp feedkeys flatten fnamemodify foreground getbufinfo getcharpos getcmdscreenpos getcwd getftype getmatches getreginfo gettagstack getwinvar haslocaldir hlexists indent inputrestore isabsolutepath job_getchannel join keytrans lispindent localtime maparg match matchend matchstrpos mode pathshorten popup_close popup_findinfo popup_list popup_setoptions printf prop_add prop_remove prop_type_list pyxeval readdirex reltime remote_peek rename rubyeval screenpos searchdecl serverlist setcharsearch setfperm setqflist setwinvar sign_getdefined sign_undefine sinh sound_playevent split str2list strdisplaywidth strlen strwidth synconcealed system tagfiles term_dumpdiff term_getattr term_getsize term_list term_setkill test_alloc_fail test_getvalue test_null_dict test_null_string test_settime timer_pause toupper typename virtcol wincol win_gettype winlayout winrestcmd winwidth
syn keyword vimFuncName contained add arglistid assert_exception assert_notequal autocmd_add blob2list bufload byte2line char2nr ch_close_in ch_info ch_readraw clearmatches confirm cursor diff_filler echoraw executable expand filereadable flattennew foldclosed fullcommand getbufline getcharsearch getcmdtype getenv getimstatus getmousepos getregtype gettext glob hasmapto hlget index inputsave isdirectory job_info js_decode len list2blob log mapcheck matchadd matchfuzzy max mzeval perleval popup_create popup_findpreview popup_locate popup_settext prompt_getprompt prop_add_list prop_type_add pum_getpos rand readfile reltimefloat remote_read repeat screenattr screenrow searchpair setbufline setcmdline setline setreg sha256 sign_getplaced sign_unplace slice sound_playfile sqrt str2nr strftime strpart submatch synID systemlist taglist term_dumpload term_getcursor term_getstatus term_scrape term_setrestore test_autochdir test_gui_event test_null_function test_option_not_set test_srand_seed timer_start tr undofile virtcol2col windowsversion win_gotoid winline winrestview wordcount
syn keyword vimFuncName contained and argv assert_fails assert_notmatch autocmd_delete browse bufloaded byteidx charclass chdir ch_log ch_sendexpr col copy debugbreak diff_hlID empty execute expandcmd filewritable float2nr foldclosedend funcref getbufvar getcharstr getcmdwintype getfontname getjumplist getpid getscriptinfo getwininfo glob2regpat histadd hlID indexof inputsecret isinf job_setoptions js_encode libcall list2str log10 maplist matchaddpos matchfuzzypos menu_info nextnonblank popup_atcursor popup_dialog popup_getoptions popup_menu popup_show prompt_setcallback prop_clear prop_type_change pumvisible range reduce reltimestr remote_send resolve screenchar screenstring searchpairpos setbufvar setcmdpos setloclist settabvar shellescape sign_jump sign_unplacelist sort sound_stop srand strcharlen strgetchar strptime substitute synIDattr tabpagebuflist tan term_dumpwrite term_getjob term_gettitle term_sendkeys term_setsize test_feedinput test_ignore_error test_null_job test_override test_unknown timer_stop trim undotree visualmode win_execute winheight win_move_separator winsaveview writefile
syn keyword vimFuncName contained append asin assert_false assert_report autocmd_get browsedir bufname byteidxcomp charcol ch_evalexpr ch_logfile ch_sendraw complete cos deepcopy digraph_get environ exepath expr10 filter floor foldlevel function getchangelist getcmdcompltype getcompletion getfperm getline getpos gettabinfo getwinpos globpath histdel hlset input insert islocked job_start json_decode libcallnr listener_add luaeval mapnew matcharg matchlist min nr2char popup_beval popup_filter_menu popup_getpos popup_move pow prompt_setinterrupt prop_find prop_type_delete py3eval readblob reg_executing remote_expr remote_startserver reverse screenchars search searchpos setcellwidths setcursorcharpos setmatches settabwinvar shiftwidth sign_place simplify sound_clear spellbadword state strcharpart stridx strridx swapinfo synIDtrans tabpagenr tanh term_getaltscreen term_getline term_gettty term_setansicolors term_start test_garbagecollect_now test_null_blob test_null_list test_refcount test_void timer_stopall trunc uniq wildmenumode win_findbuf win_id2tabwin win_move_statusline win_screenpos xor
syn keyword vimFuncName contained appendbufline assert_beeps assert_inrange assert_true balloon_gettext bufadd bufnr call charidx ch_evalraw ch_open ch_setoptions complete_add cosh delete digraph_getlist escape exists extend finddir fmod foldtext garbagecollect getchar getcmdline getcurpos getfsize getloclist getqflist gettabvar getwinposx has histget hostname inputdialog interrupt isnan job_status json_encode line listener_flush
"--- syntax here and above generated by mkvimvim ---
" Special Vim Highlighting (not automatic) {{{1

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-11-21
" Latest Revision: 2022-07-26
" License: Vim (see :h license)
" Repository: https://github.com/chrisbra/vim-zsh
@@ -19,9 +19,9 @@ function! s:ContainedGroup()
" vim-pandoc syntax defines the @langname cluster for embedded syntax languages
" However, if no syntax is defined yet, `syn list @zsh` will return
" "No syntax items defined", so make sure the result is actually a valid syn cluster
for cluster in ['markdownHighlightzsh', 'zsh']
for cluster in ['markdownHighlight_zsh', 'zsh']
try
" markdown syntax defines embedded clusters as @markdownhighlight<lang>,
" markdown syntax defines embedded clusters as @markdownhighlight_<lang>,
" pandoc just uses @<lang>, so check both for both clusters
let a=split(execute('syn list @'. cluster), "\n")
if len(a) == 2 && a[0] =~# '^---' && a[1] =~? cluster
@@ -48,17 +48,28 @@ syn match zshPOSIXQuoted '\\u[0-9a-fA-F]\{1,4}'
syn match zshPOSIXQuoted '\\U[1-9a-fA-F]\{1,8}'
syn region zshString matchgroup=zshStringDelimiter start=+"+ end=+"+
\ contains=zshQuoted,@zshDerefs,@zshSubst fold
\ contains=zshQuoted,@zshDerefs,@zshSubstQuoted fold
syn region zshString matchgroup=zshStringDelimiter start=+'+ end=+'+ fold
syn region zshPOSIXString matchgroup=zshStringDelimiter start=+\$'+
\ skip=+\\[\\']+ end=+'+ contains=zshPOSIXQuoted,zshQuoted
syn match zshJobSpec '%\(\d\+\|?\=\w\+\|[%+-]\)'
syn match zshNumber '[+-]\=\<\d\+\>'
syn match zshNumber '[+-]\=\<0x\x\+\>'
syn match zshNumber '[+-]\=\<0\o\+\>'
syn match zshNumber '[+-]\=\d\+#[-+]\=\w\+\>'
syn match zshNumber '[+-]\=\d\+\.\d\+\>'
syn keyword zshPrecommand noglob nocorrect exec command builtin - time
syn keyword zshDelimiter do done end
syn keyword zshConditional if then elif else fi case in esac select
syn keyword zshConditional if then elif else fi esac select
syn keyword zshCase case nextgroup=zshCaseWord skipwhite
syn match zshCaseWord /\S\+/ nextgroup=zshCaseIn skipwhite contained transparent
syn keyword zshCaseIn in nextgroup=zshCasePattern skipwhite skipnl contained
syn match zshCasePattern /\S[^)]*)/ contained
syn keyword zshRepeat while until repeat
@@ -73,9 +84,13 @@ syn match zshFunction '^\s*\k\+\ze\s*()'
syn match zshOperator '||\|&&\|;\|&!\='
syn match zshRedir '\d\=\(<\|<>\|<<<\|<&\s*[0-9p-]\=\)'
syn match zshRedir '\d\=\(>\|>>\|>&\s*[0-9p-]\=\|&>\|>>&\|&>>\)[|!]\='
syn match zshRedir '|&\='
" <<<, <, <>, and variants.
syn match zshRedir '\d\=\(<<<\|<&\s*[0-9p-]\=\|<>\?\)'
" >, >>, and variants.
syn match zshRedir '\d\=\(>&\s*[0-9p-]\=\|&>>\?\|>>\?&\?\)[|!]\='
" | and |&, but only if it's not preceeded or
" followed by a | to avoid matching ||.
syn match zshRedir '|\@1<!|&\=|\@!'
syn region zshHereDoc matchgroup=zshRedir
\ start='<\@<!<<\s*\z([^<]\S*\)'
@@ -125,7 +140,7 @@ syn keyword zshCommands alias autoload bg bindkey break bye cap cd
\ enable eval exec exit export false fc fg
\ functions getcap getln getopts hash history
\ jobs kill let limit log logout popd print
\ printf pushd pushln pwd r read
\ printf prompt pushd pushln pwd r read
\ rehash return sched set setcap shift
\ source stat suspend test times trap true
\ ttyctl type ulimit umask unalias unfunction
@@ -139,10 +154,120 @@ syn case ignore
syn match zshOptStart
\ /\v^\s*%(%(un)?setopt|set\s+[-+]o)/
\ nextgroup=zshOption skipwhite
syn match zshOption nextgroup=zshOption,zshComment skipwhite contained /\v
\ <%(no_?)?%(
\ auto_?cd|auto_?pushd|cdable_?vars|cd_?silent|chase_?dots|chase_?links|posix_?cd|pushd_?ignore_?dups|pushd_?minus|pushd_?silent|pushd_?to_?home|always_?last_?prompt|always_?to_?end|auto_?list|auto_?menu|auto_?name_?dirs|auto_?param_?keys|auto_?param_?slash|auto_?remove_?slash|bash_?auto_?list|complete_?aliases|complete_?in_?word|glob_?complete|hash_?list_?all|list_?ambiguous|list_?beep|list_?packed|list_?rows_?first|list_?types|menu_?complete|rec_?exact|bad_?pattern|bare_?glob_?qual|brace_?ccl|case_?glob|case_?match|case_?paths|csh_?null_?glob|equals|extended_?glob|force_?float|glob|glob_?assign|glob_?dots|glob_?star_?short|glob_?subst|hist_?subst_?pattern|ignore_?braces|ignore_?close_?braces|ksh_?glob|magic_?equal_?subst|mark_?dirs|multibyte|nomatch|null_?glob|numeric_?glob_?sort|rc_?expand_?param|rematch_?pcre|sh_?glob|unset|warn_?create_?global|warn_?nested_?var|warnnestedvar|append_?history|bang_?hist|extended_?history|hist_?allow_?clobber|hist_?beep|hist_?expire_?dups_?first|hist_?fcntl_?lock|hist_?find_?no_?dups|hist_?ignore_?all_?dups|hist_?ignore_?dups|hist_?ignore_?space|hist_?lex_?words|hist_?no_?functions|hist_?no_?store|hist_?reduce_?blanks|hist_?save_?by_?copy|hist_?save_?no_?dups|hist_?verify|inc_?append_?history|inc_?append_?history_?time|share_?history|all_?export|global_?export|global_?rcs|rcs|aliases|clobber|clobber_?empty|correct|correct_?all|dvorak|flow_?control|ignore_?eof|interactive_?comments|hash_?cmds|hash_?dirs|hash_?executables_?only|mail_?warning|path_?dirs|path_?script|print_?eight_?bit|print_?exit_?value|rc_?quotes|rm_?star_?silent|rm_?star_?wait|short_?loops|short_?repeat|sun_?keyboard_?hack|auto_?continue|auto_?resume|bg_?nice|check_?jobs|check_?running_?jobs|hup|long_?list_?jobs|monitor|notify|posix_?jobs|prompt_?bang|prompt_?cr|prompt_?sp|prompt_?percent|prompt_?subst|transient_?rprompt|alias_?func_?def|c_?bases|c_?precedences|debug_?before_?cmd|err_?exit|err_?return|eval_?lineno|exec|function_?argzero|local_?loops|local_?options|local_?patterns|local_?traps|multi_?func_?def|multios|octal_?zeroes|pipe_?fail|source_?trace|typeset_?silent|typeset_?to_?unset|verbose|xtrace|append_?create|bash_?rematch|bsd_?echo|continue_?on_?error|csh_?junkie_?history|csh_?junkie_?loops|csh_?junkie_?quotes|csh_?nullcmd|ksh_?arrays|ksh_?autoload|ksh_?option_?print|ksh_?typeset|ksh_?zero_?subscript|posix_?aliases|posix_?argzero|posix_?builtins|posix_?identifiers|posix_?strings|posix_?traps|sh_?file_?expansion|sh_?nullcmd|sh_?option_?letters|sh_?word_?split|traps_?async|interactive|login|privileged|restricted|shin_?stdin|single_?command|beep|combining_?chars|emacs|overstrike|single_?line_?zle|vi|zle|brace_?expand|dot_?glob|hash_?all|hist_?append|hist_?expand|log|mail_?warn|one_?cmd|physical|prompt_?vars|stdin|track_?all|no_?match
\)>/
syn keyword zshOption nextgroup=zshOption,zshComment skipwhite contained
\ auto_cd no_auto_cd autocd noautocd auto_pushd no_auto_pushd autopushd noautopushd cdable_vars
\ no_cdable_vars cdablevars nocdablevars cd_silent no_cd_silent cdsilent nocdsilent chase_dots
\ no_chase_dots chasedots nochasedots chase_links no_chase_links chaselinks nochaselinks posix_cd
\ posixcd no_posix_cd noposixcd pushd_ignore_dups no_pushd_ignore_dups pushdignoredups
\ nopushdignoredups pushd_minus no_pushd_minus pushdminus nopushdminus pushd_silent no_pushd_silent
\ pushdsilent nopushdsilent pushd_to_home no_pushd_to_home pushdtohome nopushdtohome
\ always_last_prompt no_always_last_prompt alwayslastprompt noalwayslastprompt always_to_end
\ no_always_to_end alwaystoend noalwaystoend auto_list no_auto_list autolist noautolist auto_menu
\ no_auto_menu automenu noautomenu auto_name_dirs no_auto_name_dirs autonamedirs noautonamedirs
\ auto_param_keys no_auto_param_keys autoparamkeys noautoparamkeys auto_param_slash
\ no_auto_param_slash autoparamslash noautoparamslash auto_remove_slash no_auto_remove_slash
\ autoremoveslash noautoremoveslash bash_auto_list no_bash_auto_list bashautolist nobashautolist
\ complete_aliases no_complete_aliases completealiases nocompletealiases complete_in_word
\ no_complete_in_word completeinword nocompleteinword glob_complete no_glob_complete globcomplete
\ noglobcomplete hash_list_all no_hash_list_all hashlistall nohashlistall list_ambiguous
\ no_list_ambiguous listambiguous nolistambiguous list_beep no_list_beep listbeep nolistbeep
\ list_packed no_list_packed listpacked nolistpacked list_rows_first no_list_rows_first listrowsfirst
\ nolistrowsfirst list_types no_list_types listtypes nolisttypes menu_complete no_menu_complete
\ menucomplete nomenucomplete rec_exact no_rec_exact recexact norecexact bad_pattern no_bad_pattern
\ badpattern nobadpattern bare_glob_qual no_bare_glob_qual bareglobqual nobareglobqual brace_ccl
\ no_brace_ccl braceccl nobraceccl case_glob no_case_glob caseglob nocaseglob case_match
\ no_case_match casematch nocasematch case_paths no_case_paths casepaths nocasepaths csh_null_glob
\ no_csh_null_glob cshnullglob nocshnullglob equals no_equals noequals extended_glob no_extended_glob
\ extendedglob noextendedglob force_float no_force_float forcefloat noforcefloat glob no_glob noglob
\ glob_assign no_glob_assign globassign noglobassign glob_dots no_glob_dots globdots noglobdots
\ glob_star_short no_glob_star_short globstarshort noglobstarshort glob_subst no_glob_subst globsubst
\ noglobsubst hist_subst_pattern no_hist_subst_pattern histsubstpattern nohistsubstpattern
\ ignore_braces no_ignore_braces ignorebraces noignorebraces ignore_close_braces
\ no_ignore_close_braces ignoreclosebraces noignoreclosebraces ksh_glob no_ksh_glob kshglob nokshglob
\ magic_equal_subst no_magic_equal_subst magicequalsubst nomagicequalsubst mark_dirs no_mark_dirs
\ markdirs nomarkdirs multibyte no_multibyte nomultibyte nomatch no_nomatch nonomatch null_glob
\ no_null_glob nullglob nonullglob numeric_glob_sort no_numeric_glob_sort numericglobsort
\ nonumericglobsort rc_expand_param no_rc_expand_param rcexpandparam norcexpandparam rematch_pcre
\ no_rematch_pcre rematchpcre norematchpcre sh_glob no_sh_glob shglob noshglob unset no_unset nounset
\ warn_create_global no_warn_create_global warncreateglobal nowarncreateglobal warn_nested_var
\ no_warn_nested_var warnnestedvar no_warnnestedvar append_history no_append_history appendhistory
\ noappendhistory bang_hist no_bang_hist banghist nobanghist extended_history no_extended_history
\ extendedhistory noextendedhistory hist_allow_clobber no_hist_allow_clobber histallowclobber
\ nohistallowclobber hist_beep no_hist_beep histbeep nohistbeep hist_expire_dups_first
\ no_hist_expire_dups_first histexpiredupsfirst nohistexpiredupsfirst hist_fcntl_lock
\ no_hist_fcntl_lock histfcntllock nohistfcntllock hist_find_no_dups no_hist_find_no_dups
\ histfindnodups nohistfindnodups hist_ignore_all_dups no_hist_ignore_all_dups histignorealldups
\ nohistignorealldups hist_ignore_dups no_hist_ignore_dups histignoredups nohistignoredups
\ hist_ignore_space no_hist_ignore_space histignorespace nohistignorespace hist_lex_words
\ no_hist_lex_words histlexwords nohistlexwords hist_no_functions no_hist_no_functions
\ histnofunctions nohistnofunctions hist_no_store no_hist_no_store histnostore nohistnostore
\ hist_reduce_blanks no_hist_reduce_blanks histreduceblanks nohistreduceblanks hist_save_by_copy
\ no_hist_save_by_copy histsavebycopy nohistsavebycopy hist_save_no_dups no_hist_save_no_dups
\ histsavenodups nohistsavenodups hist_verify no_hist_verify histverify nohistverify
\ inc_append_history no_inc_append_history incappendhistory noincappendhistory
\ inc_append_history_time no_inc_append_history_time incappendhistorytime noincappendhistorytime
\ share_history no_share_history sharehistory nosharehistory all_export no_all_export allexport
\ noallexport global_export no_global_export globalexport noglobalexport global_rcs no_global_rcs
\ globalrcs noglobalrcs rcs no_rcs norcs aliases no_aliases noaliases clobber no_clobber noclobber
\ clobber_empty no_clobber_empty clobberempty noclobberempty correct no_correct nocorrect correct_all
\ no_correct_all correctall nocorrectall dvorak no_dvorak nodvorak flow_control no_flow_control
\ flowcontrol noflowcontrol ignore_eof no_ignore_eof ignoreeof noignoreeof interactive_comments
\ no_interactive_comments interactivecomments nointeractivecomments hash_cmds no_hash_cmds hashcmds
\ nohashcmds hash_dirs no_hash_dirs hashdirs nohashdirs hash_executables_only
\ no_hash_executables_only hashexecutablesonly nohashexecutablesonly mail_warning no_mail_warning
\ mailwarning nomailwarning path_dirs no_path_dirs pathdirs nopathdirs path_script no_path_script
\ pathscript nopathscript print_eight_bit no_print_eight_bit printeightbit noprinteightbit
\ print_exit_value no_print_exit_value printexitvalue noprintexitvalue rc_quotes no_rc_quotes
\ rcquotes norcquotes rm_star_silent no_rm_star_silent rmstarsilent normstarsilent rm_star_wait
\ no_rm_star_wait rmstarwait normstarwait short_loops no_short_loops shortloops noshortloops
\ short_repeat no_short_repeat shortrepeat noshortrepeat sun_keyboard_hack no_sun_keyboard_hack
\ sunkeyboardhack nosunkeyboardhack auto_continue no_auto_continue autocontinue noautocontinue
\ auto_resume no_auto_resume autoresume noautoresume bg_nice no_bg_nice bgnice nobgnice check_jobs
\ no_check_jobs checkjobs nocheckjobs check_running_jobs no_check_running_jobs checkrunningjobs
\ nocheckrunningjobs hup no_hup nohup long_list_jobs no_long_list_jobs longlistjobs nolonglistjobs
\ monitor no_monitor nomonitor notify no_notify nonotify posix_jobs posixjobs no_posix_jobs
\ noposixjobs prompt_bang no_prompt_bang promptbang nopromptbang prompt_cr no_prompt_cr promptcr
\ nopromptcr prompt_sp no_prompt_sp promptsp nopromptsp prompt_percent no_prompt_percent
\ promptpercent nopromptpercent prompt_subst no_prompt_subst promptsubst nopromptsubst
\ transient_rprompt no_transient_rprompt transientrprompt notransientrprompt alias_func_def
\ no_alias_func_def aliasfuncdef noaliasfuncdef c_bases no_c_bases cbases nocbases c_precedences
\ no_c_precedences cprecedences nocprecedences debug_before_cmd no_debug_before_cmd debugbeforecmd
\ nodebugbeforecmd err_exit no_err_exit errexit noerrexit err_return no_err_return errreturn
\ noerrreturn eval_lineno no_eval_lineno evallineno noevallineno exec no_exec noexec function_argzero
\ no_function_argzero functionargzero nofunctionargzero local_loops no_local_loops localloops
\ nolocalloops local_options no_local_options localoptions nolocaloptions local_patterns
\ no_local_patterns localpatterns nolocalpatterns local_traps no_local_traps localtraps nolocaltraps
\ multi_func_def no_multi_func_def multifuncdef nomultifuncdef multios no_multios nomultios
\ octal_zeroes no_octal_zeroes octalzeroes nooctalzeroes pipe_fail no_pipe_fail pipefail nopipefail
\ source_trace no_source_trace sourcetrace nosourcetrace typeset_silent no_typeset_silent
\ typesetsilent notypesetsilent typeset_to_unset no_typeset_to_unset typesettounset notypesettounset
\ verbose no_verbose noverbose xtrace no_xtrace noxtrace append_create no_append_create appendcreate
\ noappendcreate bash_rematch no_bash_rematch bashrematch nobashrematch bsd_echo no_bsd_echo bsdecho
\ nobsdecho continue_on_error no_continue_on_error continueonerror nocontinueonerror
\ csh_junkie_history no_csh_junkie_history cshjunkiehistory nocshjunkiehistory csh_junkie_loops
\ no_csh_junkie_loops cshjunkieloops nocshjunkieloops csh_junkie_quotes no_csh_junkie_quotes
\ cshjunkiequotes nocshjunkiequotes csh_nullcmd no_csh_nullcmd cshnullcmd nocshnullcmd ksh_arrays
\ no_ksh_arrays ksharrays noksharrays ksh_autoload no_ksh_autoload kshautoload nokshautoload
\ ksh_option_print no_ksh_option_print kshoptionprint nokshoptionprint ksh_typeset no_ksh_typeset
\ kshtypeset nokshtypeset ksh_zero_subscript no_ksh_zero_subscript kshzerosubscript
\ nokshzerosubscript posix_aliases no_posix_aliases posixaliases noposixaliases posix_argzero
\ no_posix_argzero posixargzero noposixargzero posix_builtins no_posix_builtins posixbuiltins
\ noposixbuiltins posix_identifiers no_posix_identifiers posixidentifiers noposixidentifiers
\ posix_strings no_posix_strings posixstrings noposixstrings posix_traps no_posix_traps posixtraps
\ noposixtraps sh_file_expansion no_sh_file_expansion shfileexpansion noshfileexpansion sh_nullcmd
\ no_sh_nullcmd shnullcmd noshnullcmd sh_option_letters no_sh_option_letters shoptionletters
\ noshoptionletters sh_word_split no_sh_word_split shwordsplit noshwordsplit traps_async
\ no_traps_async trapsasync notrapsasync interactive no_interactive nointeractive login no_login
\ nologin privileged no_privileged noprivileged restricted no_restricted norestricted shin_stdin
\ no_shin_stdin shinstdin noshinstdin single_command no_single_command singlecommand nosinglecommand
\ beep no_beep nobeep combining_chars no_combining_chars combiningchars nocombiningchars emacs
\ no_emacs noemacs overstrike no_overstrike nooverstrike single_line_zle no_single_line_zle
\ singlelinezle nosinglelinezle vi no_vi novi zle no_zle nozle brace_expand no_brace_expand
\ braceexpand nobraceexpand dot_glob no_dot_glob dotglob nodotglob hash_all no_hash_all hashall
\ nohashall hist_append no_hist_append histappend nohistappend hist_expand no_hist_expand histexpand
\ nohistexpand log no_log nolog mail_warn no_mail_warn mailwarn nomailwarn one_cmd no_one_cmd onecmd
\ noonecmd physical no_physical nophysical prompt_vars no_prompt_vars promptvars nopromptvars stdin
\ no_stdin nostdin track_all no_track_all trackall notrackall
syn case match
syn keyword zshTypes float integer local typeset declare private readonly
@@ -150,15 +275,12 @@ syn keyword zshTypes float integer local typeset declare private read
" XXX: this may be too much
" syn match zshSwitches '\s\zs--\=[a-zA-Z0-9-]\+'
syn match zshNumber '[+-]\=\<\d\+\>'
syn match zshNumber '[+-]\=\<0x\x\+\>'
syn match zshNumber '[+-]\=\<0\o\+\>'
syn match zshNumber '[+-]\=\d\+#[-+]\=\w\+\>'
syn match zshNumber '[+-]\=\d\+\.\d\+\>'
" TODO: $[...] is the same as $((...)), so add that as well.
syn cluster zshSubst contains=zshSubst,zshOldSubst,zshMathSubst
syn cluster zshSubstQuoted contains=zshSubstQuoted,zshOldSubst,zshMathSubst
exe 'syn region zshSubst matchgroup=zshSubstDelim transparent start=/\$(/ skip=/\\)/ end=/)/ contains='.s:contained. ' fold'
exe 'syn region zshSubstQuoted matchgroup=zshSubstDelim transparent start=/\$(/ skip=/\\)/ end=/)/ contains='.s:contained. ' fold'
syn region zshSubstQuoted matchgroup=zshSubstDelim start='\${' skip='\\}' end='}' contains=@zshSubst,zshBrackets,zshQuoted fold
syn region zshParentheses transparent start='(' skip='\\)' end=')' fold
syn region zshGlob start='(#' end=')'
syn region zshMathSubst matchgroup=zshSubstDelim transparent
@@ -201,6 +323,8 @@ hi def link zshJobSpec Special
hi def link zshPrecommand Special
hi def link zshDelimiter Keyword
hi def link zshConditional Conditional
hi def link zshCase zshConditional
hi def link zshCaseIn zshCase
hi def link zshException Exception
hi def link zshRepeat Repeat
hi def link zshKeyword Keyword
@@ -223,6 +347,7 @@ hi def link zshTypes Type
hi def link zshSwitches Special
hi def link zshNumber Number
hi def link zshSubst PreProc
hi def link zshSubstQuoted zshSubst
hi def link zshMathSubst zshSubst
hi def link zshOldSubst zshSubst
hi def link zshSubstDelim zshSubst

98
src/GvimExt/Make_mvc.mak Normal file
View File

@@ -0,0 +1,98 @@
# Makefile for GvimExt, using MSVC
# Options:
# DEBUG=yes Build debug version (for VC7 and maybe later)
# CPUARG= /arch:IA32/AVX/etc, call from main makefile to set
# automatically from CPUNR
#
TARGETOS = WINNT
!ifndef APPVER
APPVER = 5.01
!endif
!ifndef WINVER
WINVER = 0x0501
!endif
!if "$(DEBUG)" != "yes"
NODEBUG = 1
!endif
!ifdef PROCESSOR_ARCHITECTURE
# On Windows NT
! ifndef CPU
CPU = i386
! if !defined(PLATFORM) && defined(TARGET_CPU)
PLATFORM = $(TARGET_CPU)
! endif
! ifdef PLATFORM
! if ("$(PLATFORM)" == "x64") || ("$(PLATFORM)" == "X64")
CPU = AMD64
! elseif ("$(PLATFORM)" == "arm64") || ("$(PLATFORM)" == "ARM64")
CPU = ARM64
! elseif ("$(PLATFORM)" != "x86") && ("$(PLATFORM)" != "X86")
! error *** ERROR Unknown target platform "$(PLATFORM)". Make aborted.
! endif
! endif
! endif
!else
CPU = i386
!endif
!ifdef SDK_INCLUDE_DIR
!include $(SDK_INCLUDE_DIR)\Win32.mak
!elseif "$(USE_WIN32MAK)"=="yes"
!include <Win32.mak>
!else
cc = cl
link = link
rc = rc
cflags = -nologo -c
lflags = -incremental:no -nologo
rcflags = /r
olelibsdll = ole32.lib uuid.lib oleaut32.lib user32.lib gdi32.lib advapi32.lib
!endif
# include CPUARG
cflags = $(cflags) $(CPUARG)
# set WINVER and _WIN32_WINNT
cflags = $(cflags) -DWINVER=$(WINVER) -D_WIN32_WINNT=$(WINVER)
!if "$(CL)" == "/D_USING_V110_SDK71_"
rcflags = $(rcflags) /D_USING_V110_SDK71_
!endif
SUBSYSTEM = console
!if "$(SUBSYSTEM_VER)" != ""
SUBSYSTEM = $(SUBSYSTEM),$(SUBSYSTEM_VER)
!endif
!if "$(CPU)" == "AMD64" || "$(CPU)" == "ARM64"
OFFSET = 0x11C000000
!else
OFFSET = 0x1C000000
!endif
all: gvimext.dll
gvimext.dll: gvimext.obj \
gvimext.res
$(link) $(lflags) -dll -def:gvimext.def -base:$(OFFSET) -out:$*.dll $** $(olelibsdll) shell32.lib comctl32.lib -subsystem:$(SUBSYSTEM)
if exist $*.dll.manifest mt -nologo -manifest $*.dll.manifest -outputresource:$*.dll;2
gvimext.obj: gvimext.h
.cpp.obj:
$(cc) $(cflags) -DFEAT_GETTEXT $(cvarsmt) $*.cpp
gvimext.res: gvimext.rc
$(rc) /nologo $(rcflags) $(rcvars) gvimext.rc
clean:
- if exist gvimext.dll del gvimext.dll
- if exist gvimext.lib del gvimext.lib
- if exist gvimext.exp del gvimext.exp
- if exist gvimext.obj del gvimext.obj
- if exist gvimext.res del gvimext.res
- if exist gvimext.dll.manifest del gvimext.dll.manifest

View File

@@ -1,98 +1,4 @@
# Makefile for GvimExt, using MSVC
# Options:
# DEBUG=yes Build debug version (for VC7 and maybe later)
# CPUARG= /arch:IA32/AVX/etc, call from main makefile to set
# automatically from CPUNR
#
!message This makefile is deprecated. Use Make_mvc.mak instead.
!message
TARGETOS = WINNT
!ifndef APPVER
APPVER = 5.01
!endif
!ifndef WINVER
WINVER = 0x0501
!endif
!if "$(DEBUG)" != "yes"
NODEBUG = 1
!endif
!ifdef PROCESSOR_ARCHITECTURE
# On Windows NT
! ifndef CPU
CPU = i386
! if !defined(PLATFORM) && defined(TARGET_CPU)
PLATFORM = $(TARGET_CPU)
! endif
! ifdef PLATFORM
! if ("$(PLATFORM)" == "x64") || ("$(PLATFORM)" == "X64")
CPU = AMD64
! elseif ("$(PLATFORM)" == "arm64") || ("$(PLATFORM)" == "ARM64")
CPU = ARM64
! elseif ("$(PLATFORM)" != "x86") && ("$(PLATFORM)" != "X86")
! error *** ERROR Unknown target platform "$(PLATFORM)". Make aborted.
! endif
! endif
! endif
!else
CPU = i386
!endif
!ifdef SDK_INCLUDE_DIR
!include $(SDK_INCLUDE_DIR)\Win32.mak
!elseif "$(USE_WIN32MAK)"=="yes"
!include <Win32.mak>
!else
cc = cl
link = link
rc = rc
cflags = -nologo -c
lflags = -incremental:no -nologo
rcflags = /r
olelibsdll = ole32.lib uuid.lib oleaut32.lib user32.lib gdi32.lib advapi32.lib
!endif
# include CPUARG
cflags = $(cflags) $(CPUARG)
# set WINVER and _WIN32_WINNT
cflags = $(cflags) -DWINVER=$(WINVER) -D_WIN32_WINNT=$(WINVER)
!if "$(CL)" == "/D_USING_V110_SDK71_"
rcflags = $(rcflags) /D_USING_V110_SDK71_
!endif
SUBSYSTEM = console
!if "$(SUBSYSTEM_VER)" != ""
SUBSYSTEM = $(SUBSYSTEM),$(SUBSYSTEM_VER)
!endif
!if "$(CPU)" == "AMD64" || "$(CPU)" == "ARM64"
OFFSET = 0x11C000000
!else
OFFSET = 0x1C000000
!endif
all: gvimext.dll
gvimext.dll: gvimext.obj \
gvimext.res
$(link) $(lflags) -dll -def:gvimext.def -base:$(OFFSET) -out:$*.dll $** $(olelibsdll) shell32.lib comctl32.lib -subsystem:$(SUBSYSTEM)
if exist $*.dll.manifest mt -nologo -manifest $*.dll.manifest -outputresource:$*.dll;2
gvimext.obj: gvimext.h
.cpp.obj:
$(cc) $(cflags) -DFEAT_GETTEXT $(cvarsmt) $*.cpp
gvimext.res: gvimext.rc
$(rc) /nologo $(rcflags) $(rcvars) gvimext.rc
clean:
- if exist gvimext.dll del gvimext.dll
- if exist gvimext.lib del gvimext.lib
- if exist gvimext.exp del gvimext.exp
- if exist gvimext.obj del gvimext.obj
- if exist gvimext.res del gvimext.res
- if exist gvimext.dll.manifest del gvimext.dll.manifest
!include Make_mvc.mak

View File

@@ -12,7 +12,7 @@ this, then you will get the default behavior as is documented, which should
be fine for most people.
This document assumes that you are building Vim for Win32 or later (Windows
XP/2003/Vista/7/8/10). There are also instructions for pre-XP systems, but
7/8/10/11). There are also instructions for pre-Vista and pre-XP systems, but
they might no longer work.
The recommended way is to build a 32 bit Vim, also on 64 bit systems. You can
@@ -42,9 +42,9 @@ Contents:
The currently recommended way (that means it has been verified to work) is
using the "Visual Studio Community 2015" installation. This includes the SDK
needed to target Windows XP. But not older Windows versions (95, 98), see
"OLDER VERSIONS" below for that.
using the "Visual Studio Community 2015" installation. This doesn't include
the SDK for older Windows versions (95, 98), see "OLDER VERSIONS" below for
that.
1. Microsoft Visual C++
@@ -57,16 +57,17 @@ execute the installer from it.
When installing "Visual Studio Community 2015 with Update 3" or "Visual C++
Build Tools for Visual Studio 2015 with Update 3" make sure to
select "custom" and check "Windows XP Support for C++" and all checkboxes
under "Universal Windows App Development Tools". Or whatever they are called
now.
select "custom" and check all checkboxes under "Universal Windows App
Development Tools". Or whatever they are called now.
(If you still want to target Windows XP, check also "Windows XP Support for
C++". Note that this is no longer supported.)
Visual Studio
-------------
Building with Visual Studio (VS2010, VS2012, VS2013, VS2015, VS2017 and VS2019)
is straightforward.
Building with Visual Studio (VS2010, VS2012, VS2013, VS2015, VS2017, VS2019
and VS2022) is straightforward.
To build Vim from the command line with MSVC, use Make_mvc.mak.
Visual Studio installed a batch file called vcvars32.bat, which you must
@@ -104,6 +105,9 @@ Vim with Make_mvc.mak.
Targeting Windows XP with MSVC 2012 and later *new-msvc-windows-xp*
---------------------------------------------
(The support for pre-Vista was removed in patch 9.0.0xxx. If you want to
target Windows XP, use the source code before that.)
Beginning with Visual C++ 2012, Microsoft changed the behavior of LINK.EXE
so that it targets Windows 6.0 (Vista) by default. In order to override
this, the target Windows version number needs to be passed to LINK like
@@ -141,9 +145,6 @@ compiler by using the "x64" option:
The following Visual C++ team blog can serve as a reference page:
http://blogs.msdn.com/b/vcblog/archive/2012/10/08/windows-xp-targeting-with-c-in-visual-studio-2012.aspx
VC 2019 dropped support for targeting Windows XP. If you want a binary that
targeting Windows XP, use VC 2017 or earlier.
Cross compile support for Windows on ARM64
------------------------------------------
@@ -156,7 +157,7 @@ The ARM64 support was provided by Leendert van Doorn.
OLDER VERSIONS
The minimal supported version is Windows XP. Building with older compilers
The minimal supported version is Windows 7. Building with older compilers
might still work, but these instructions might be outdated.
If you need the executable to run on Windows 98 or ME, use the 2005 one
@@ -774,12 +775,12 @@ config.h and Ruby's DLL name. Here are the steps for working around them:
nmake -f Make_mvc.mak
RUBY=C:\Ruby24 DYNAMIC_RUBY=yes RUBY_VER=24 RUBY_API_VER_LONG=2.4.0
RUBY_MSVCRT_NAME=msvcrt
WINVER=0x501
WINVER=0x601
For 64-bit version, replace RUBY=C:\Ruby24 with RUBY=C:\Ruby24-x64.
If you set WINVER explicitly, it must be set to >=0x500, when building
with Ruby 2.1 or later. (Default is 0x501.)
with Ruby 2.1 or later. (Default is 0x601.)
When using this trick, you also need to set RUBY_MSVCRT_NAME to msvcrt
which is used for the Ruby's DLL name.
@@ -790,11 +791,11 @@ After you install RubyInstaller, just type this (as one line):
mingw32-make -f Make_ming.mak
RUBY=C:/Ruby24 DYNAMIC_RUBY=yes RUBY_VER=24 RUBY_API_VER_LONG=2.4.0
WINVER=0x600
WINVER=0x601
For 64-bit version, replace RUBY=C:/Ruby24 with RUBY=C:/Ruby24-x64.
If you set WINVER explicitly, it must be set to >=0x500, when building with
Ruby 2.1 or later. (Default is 0x600.)
Ruby 2.1 or later. (Default is 0x601.)

View File

@@ -87,10 +87,9 @@ POSTSCRIPT=no
# Set to yes to enable OLE support.
OLE=no
# Set the default $(WINVER). Use 0x0501 to make it work with WinXP.
# Set the default $(WINVER). Use 0x0601 to make it work with Windows 7.
ifndef WINVER
# WINVER = 0x0501
WINVER = 0x0600
WINVER = 0x0601
endif
# Set to yes to enable Cscope support.
@@ -1149,7 +1148,7 @@ xxd/xxd.exe: xxd/xxd.c
$(MAKE) -C xxd -f Make_ming.mak CC='$(CC)'
tee/tee.exe: tee/tee.c
$(MAKE) -C tee CC='$(CC)'
$(MAKE) -C tee -f Make_ming.mak CC='$(CC)'
GvimExt/gvimext.dll: GvimExt/gvimext.cpp GvimExt/gvimext.rc GvimExt/gvimext.h
$(MAKE) -C GvimExt -f Make_ming.mak CROSS=$(CROSS) CROSS_COMPILE=$(CROSS_COMPILE) CXX='$(CXX)' STATIC_STDCPLUS=$(STATIC_STDCPLUS)
@@ -1176,7 +1175,7 @@ ifdef MZSCHEME
endif
$(MAKE) -C GvimExt -f Make_ming.mak clean
$(MAKE) -C xxd -f Make_ming.mak clean
$(MAKE) -C tee clean
$(MAKE) -C tee -f Make_ming.mak clean
# Run vim script to generate the Ex command lookup table.
# This only needs to be run when a command name has been added or changed.
@@ -1321,7 +1320,7 @@ ifeq (16, $(RUBY))
endif
$(OUTDIR)/iscygpty.o: iscygpty.c $(CUI_INCL)
$(CC) -c $(CFLAGS) iscygpty.c -o $(OUTDIR)/iscygpty.o -U_WIN32_WINNT -D_WIN32_WINNT=0x0600 -DUSE_DYNFILEID -DENABLE_STUB_IMPL
$(CC) -c $(CFLAGS) iscygpty.c -o $@
$(OUTDIR)/main.o: main.c $(INCL) $(CUI_INCL)
$(CC) -c $(CFLAGS) main.c -o $@

View File

@@ -1,7 +1,7 @@
# Makefile for Vim on Win32 (Windows XP/2003/Vista/7/8/10) and Win64,
# using the Microsoft Visual C++ compilers. Known to work with VC10 (VS2010),
# VC11 (VS2012), VC12 (VS2013), VC14 (VS2015), VC14.1 (VS2017) and
# VC14.2 (VS2019).
# Makefile for Vim on Win32 (Windows 7/8/10/11) and Win64, using the Microsoft
# Visual C++ compilers. Known to work with VC10 (VS2010), VC11 (VS2012), VC12
# (VS2013), VC14 (VS2015), VC14.1 (VS2017), VC14.2 (VS2019) and VC14.3
# (VS2022).
#
# To build using other Windows compilers, see INSTALLpc.txt
#
@@ -128,13 +128,13 @@
#
# Optimization: OPTIMIZE=[SPACE, SPEED, MAXSPEED] (default is MAXSPEED)
#
# Processor Version: CPUNR=[any, i586, i686, sse, sse2, avx, avx2] (default is
# any)
# Processor Version: CPUNR=[any, i686, sse, sse2, avx, avx2] (default is
# sse2)
# avx is available on Visual C++ 2010 and after.
# avx2 is available on Visual C++ 2013 Update 2 and after.
#
# Version Support: WINVER=[0x0501, 0x0502, 0x0600, 0x0601, 0x0602,
# 0x0603, 0x0A00] (default is 0x0501)
# Version Support: WINVER=[0x0601, 0x0602, 0x0603, 0x0A00] (default is
# 0x0601)
# Supported versions depends on your target SDK, check SDKDDKVer.h
# See https://docs.microsoft.com/en-us/cpp/porting/modifying-winver-and-win32-winnt
#
@@ -303,9 +303,9 @@ MSVCRT_NAME = msvcr$(MSVCRT_VER)
MSVCRT_NAME = vcruntime$(MSVCRT_VER)
!endif
### Set the default $(WINVER) to make it work with VC++7.0 (VS.NET)
### Set the default $(WINVER) to make it work with Windows 7
!ifndef WINVER
WINVER = 0x0501
WINVER = 0x0601
!endif
# Use multiprocess build
@@ -523,27 +523,27 @@ OUTDIR=$(OBJDIR)
### Validate CPUNR
!ifndef CPUNR
# default to untargeted code
CPUNR = any
!elseif "$(CPUNR)" == "i386" || "$(CPUNR)" == "i486"
# alias i386 and i486 to i586
# default to SSE2
CPUNR = sse2
!elseif "$(CPUNR)" == "i386" || "$(CPUNR)" == "i486" || "$(CPUNR)" == "i586"
# alias i386, i486 and i586 to i686
! message *** WARNING CPUNR=$(CPUNR) is not a valid target architecture.
! message Windows XP is the minimum target OS, with a minimum target
! message architecture of i586.
! message Retargeting to i586
CPUNR = i586
! message Windows 7 is the minimum target OS, with a minimum target
! message architecture of i686.
! message Retargeting to i686
CPUNR = i686
!elseif "$(CPUNR)" == "pentium4"
# alias pentium4 to sse2
! message *** WARNING CPUNR=pentium4 is deprecated in favour of sse2.
! message Retargeting to sse2.
CPUNR = sse2
!elseif "$(CPUNR)" != "any" && "$(CPUNR)" != "i586" && "$(CPUNR)" != "i686" && "$(CPUNR)" != "sse" && "$(CPUNR)" != "sse2" && "$(CPUNR)" != "avx" && "$(CPUNR)" != "avx2"
!elseif "$(CPUNR)" != "any" && "$(CPUNR)" != "i686" && "$(CPUNR)" != "sse" && "$(CPUNR)" != "sse2" && "$(CPUNR)" != "avx" && "$(CPUNR)" != "avx2"
! error *** ERROR Unknown target architecture "$(CPUNR)". Make aborted.
!endif
# Convert processor ID to MVC-compatible number
# IA32/SSE/SSE2 are only supported on x86
!if "$(ASSEMBLY_ARCHITECTURE)" == "i386" && ("$(CPUNR)" == "i586" || "$(CPUNR)" == "i686" || "$(CPUNR)" == "any")
!if "$(ASSEMBLY_ARCHITECTURE)" == "i386" && ("$(CPUNR)" == "i686" || "$(CPUNR)" == "any")
# VC<11 generates fp87 code by default
! if $(MSVC_MAJOR) < 11
CPUARG =
@@ -1400,7 +1400,7 @@ tee/tee.exe: tee/tee.c
GvimExt/gvimext.dll: GvimExt/gvimext.cpp GvimExt/gvimext.rc GvimExt/gvimext.h
cd GvimExt
$(MAKE) /NOLOGO -f Makefile $(MAKEFLAGS_GVIMEXT)
$(MAKE) /NOLOGO -f Make_mvc.mak $(MAKEFLAGS_GVIMEXT)
cd ..
@@ -1441,7 +1441,7 @@ clean: testclean
$(MAKE) /NOLOGO -f Make_mvc.mak clean
cd ..
cd GvimExt
$(MAKE) /NOLOGO -f Makefile clean
$(MAKE) /NOLOGO -f Make_mvc.mak clean
cd ..
# Run vim script to generate the Ex command lookup table.
@@ -1463,27 +1463,27 @@ nvcmdidxs: nv_cmds.h
test:
cd testdir
$(MAKE) /NOLOGO -f Make_dos.mak
$(MAKE) /NOLOGO -f Make_mvc.mak
cd ..
testgvim testgui:
cd testdir
$(MAKE) /NOLOGO -f Make_dos.mak VIMPROG=..\gvim
$(MAKE) /NOLOGO -f Make_mvc.mak VIMPROG=..\gvim
cd ..
testtiny:
cd testdir
$(MAKE) /NOLOGO -f Make_dos.mak tiny
$(MAKE) /NOLOGO -f Make_mvc.mak tiny
cd ..
testgvimtiny:
cd testdir
$(MAKE) /NOLOGO -f Make_dos.mak tiny VIMPROG=..\gvim
$(MAKE) /NOLOGO -f Make_mvc.mak tiny VIMPROG=..\gvim
cd ..
testclean:
cd testdir
$(MAKE) /NOLOGO -f Make_dos.mak clean
$(MAKE) /NOLOGO -f Make_mvc.mak clean
cd ..
# Run individual OLD style test.
@@ -1491,8 +1491,8 @@ testclean:
$(SCRIPTS_TINY):
cd testdir
- if exist $@.out del $@.out
$(MAKE) /NOLOGO -f Make_dos.mak VIMPROG=..\$(VIMTESTTARGET) nolog
$(MAKE) /NOLOGO -f Make_dos.mak VIMPROG=..\$(VIMTESTTARGET) $@.out
$(MAKE) /NOLOGO -f Make_mvc.mak VIMPROG=..\$(VIMTESTTARGET) nolog
$(MAKE) /NOLOGO -f Make_mvc.mak VIMPROG=..\$(VIMTESTTARGET) $@.out
@ if exist test.log ( type test.log & exit /b 1 )
cd ..
@@ -1501,9 +1501,9 @@ $(SCRIPTS_TINY):
$(NEW_TESTS):
cd testdir
- if exist $@.res del $@.res
$(MAKE) /NOLOGO -f Make_dos.mak VIMPROG=..\$(VIMTESTTARGET) nolog
$(MAKE) /NOLOGO -f Make_dos.mak VIMPROG=..\$(VIMTESTTARGET) $@.res
$(MAKE) /NOLOGO -f Make_dos.mak VIMPROG=..\$(VIMTESTTARGET) report
$(MAKE) /NOLOGO -f Make_mvc.mak VIMPROG=..\$(VIMTESTTARGET) nolog
$(MAKE) /NOLOGO -f Make_mvc.mak VIMPROG=..\$(VIMTESTTARGET) $@.res
$(MAKE) /NOLOGO -f Make_mvc.mak VIMPROG=..\$(VIMTESTTARGET) report
cd ..
# Run Vim9 tests.
@@ -1511,9 +1511,9 @@ $(NEW_TESTS):
test_vim9:
cd testdir
-del test_vim9_*.res
$(MAKE) /NOLOGO -f Make_dos.mak VIMPROG=..\$(VIMTESTTARGET) nolog
$(MAKE) /NOLOGO -f Make_dos.mak VIMPROG=..\$(VIMTESTTARGET) $(TEST_VIM9_RES)
$(MAKE) /NOLOGO -f Make_dos.mak VIMPROG=..\$(VIMTESTTARGET) report
$(MAKE) /NOLOGO -f Make_mvc.mak VIMPROG=..\$(VIMTESTTARGET) nolog
$(MAKE) /NOLOGO -f Make_mvc.mak VIMPROG=..\$(VIMTESTTARGET) $(TEST_VIM9_RES)
$(MAKE) /NOLOGO -f Make_mvc.mak VIMPROG=..\$(VIMTESTTARGET) report
cd ..
###########################################################################
@@ -1684,7 +1684,7 @@ $(OUTDIR)/if_tcl.obj: $(OUTDIR) if_tcl.c $(INCL)
$(CC) $(CFLAGS_OUTDIR) $(TCL_INC) if_tcl.c
$(OUTDIR)/iscygpty.obj: $(OUTDIR) iscygpty.c $(CUI_INCL)
$(CC) $(CFLAGS_OUTDIR) iscygpty.c -D_WIN32_WINNT=0x0600 -DUSE_DYNFILEID -DENABLE_STUB_IMPL
$(CC) $(CFLAGS_OUTDIR) iscygpty.c
$(OUTDIR)/job.obj: $(OUTDIR) job.c $(INCL)

View File

@@ -4191,7 +4191,7 @@ objects/vim9type.o: vim9type.c vim.h protodef.h auto/config.h feature.h os_unix.
auto/osdef.h ascii.h keymap.h termdefs.h macros.h option.h beval.h \
proto/gui_beval.pro structs.h regexp.h gui.h libvterm/include/vterm.h \
libvterm/include/vterm_keycodes.h alloc.h ex_cmds.h spell.h proto.h \
globals.h errors.h
globals.h errors.h vim9.h
objects/viminfo.o: viminfo.c vim.h protodef.h auto/config.h feature.h os_unix.h \
auto/osdef.h ascii.h keymap.h termdefs.h macros.h option.h beval.h \
proto/gui_beval.pro structs.h regexp.h gui.h libvterm/include/vterm.h \

View File

@@ -87,17 +87,17 @@ vim_mem_profile_dump(void)
j = 0;
for (i = 0; i < MEM_SIZES - 1; i++)
{
if (mem_allocs[i] || mem_frees[i])
if (mem_allocs[i] == 0 && mem_frees[i] == 0)
continue;
if (mem_frees[i] > mem_allocs[i])
printf("\r\n%s", _("ERROR: "));
printf("[%4d / %4lu-%-4lu] ", i + 1, mem_allocs[i], mem_frees[i]);
j++;
if (j > 3)
{
if (mem_frees[i] > mem_allocs[i])
printf("\r\n%s", _("ERROR: "));
printf("[%4d / %4lu-%-4lu] ", i + 1, mem_allocs[i], mem_frees[i]);
j++;
if (j > 3)
{
j = 0;
printf("\r\n");
}
j = 0;
printf("\r\n");
}
}
@@ -332,22 +332,22 @@ mem_realloc(void *ptr, size_t size)
void
do_outofmem_msg(size_t size)
{
if (!did_outofmem_msg)
{
// Don't hide this message
emsg_silent = 0;
if (did_outofmem_msg)
return;
// Must come first to avoid coming back here when printing the error
// message fails, e.g. when setting v:errmsg.
did_outofmem_msg = TRUE;
// Don't hide this message
emsg_silent = 0;
semsg(_(e_out_of_memory_allocating_nr_bytes), (long_u)size);
// Must come first to avoid coming back here when printing the error
// message fails, e.g. when setting v:errmsg.
did_outofmem_msg = TRUE;
if (starting == NO_SCREEN)
// Not even finished with initializations and already out of
// memory? Then nothing is going to work, exit.
mch_exit(123);
}
semsg(_(e_out_of_memory_allocating_nr_bytes), (long_u)size);
if (starting == NO_SCREEN)
// Not even finished with initializations and already out of
// memory? Then nothing is going to work, exit.
mch_exit(123);
}
#if defined(EXITFREE) || defined(PROTO)
@@ -780,20 +780,20 @@ ga_concat_strings(garray_T *gap, char *sep)
len += (int)STRLEN(((char_u **)(gap->ga_data))[i]) + sep_len;
s = alloc(len + 1);
if (s != NULL)
if (s == NULL)
return NULL;
*s = NUL;
p = s;
for (i = 0; i < gap->ga_len; ++i)
{
*s = NUL;
p = s;
for (i = 0; i < gap->ga_len; ++i)
if (p != s)
{
if (p != s)
{
STRCPY(p, sep);
p += sep_len;
}
STRCPY(p, ((char_u **)(gap->ga_data))[i]);
p += STRLEN(p);
STRCPY(p, sep);
p += sep_len;
}
STRCPY(p, ((char_u **)(gap->ga_data))[i]);
p += STRLEN(p);
}
return s;
}

View File

@@ -105,25 +105,25 @@ alist_expand(int *fnum_list, int fnum_len)
char_u *save_p_su = p_su;
int i;
old_arg_files = ALLOC_MULT(char_u *, GARGCOUNT);
if (old_arg_files == NULL)
return;
// Don't use 'suffixes' here. This should work like the shell did the
// expansion. Also, the vimrc file isn't read yet, thus the user
// can't set the options.
p_su = empty_option;
old_arg_files = ALLOC_MULT(char_u *, GARGCOUNT);
if (old_arg_files != NULL)
for (i = 0; i < GARGCOUNT; ++i)
old_arg_files[i] = vim_strsave(GARGLIST[i].ae_fname);
old_arg_count = GARGCOUNT;
if (expand_wildcards(old_arg_count, old_arg_files,
&new_arg_file_count, &new_arg_files,
EW_FILE|EW_NOTFOUND|EW_ADDSLASH|EW_NOERROR) == OK
&& new_arg_file_count > 0)
{
for (i = 0; i < GARGCOUNT; ++i)
old_arg_files[i] = vim_strsave(GARGLIST[i].ae_fname);
old_arg_count = GARGCOUNT;
if (expand_wildcards(old_arg_count, old_arg_files,
&new_arg_file_count, &new_arg_files,
EW_FILE|EW_NOTFOUND|EW_ADDSLASH|EW_NOERROR) == OK
&& new_arg_file_count > 0)
{
alist_set(&global_alist, new_arg_file_count, new_arg_files,
TRUE, fnum_list, fnum_len);
FreeWild(old_arg_count, old_arg_files);
}
alist_set(&global_alist, new_arg_file_count, new_arg_files,
TRUE, fnum_list, fnum_len);
FreeWild(old_arg_count, old_arg_files);
}
p_su = save_p_su;
}
@@ -383,6 +383,57 @@ alist_add_list(
vim_free(files[i]);
}
/*
* Delete the file names in 'alist_ga' from the argument list.
*/
static void
arglist_del_files(garray_T *alist_ga)
{
regmatch_T regmatch;
int didone;
int i;
char_u *p;
int match;
// Delete the items: use each item as a regexp and find a match in the
// argument list.
regmatch.rm_ic = p_fic; // ignore case when 'fileignorecase' is set
for (i = 0; i < alist_ga->ga_len && !got_int; ++i)
{
p = ((char_u **)alist_ga->ga_data)[i];
p = file_pat_to_reg_pat(p, NULL, NULL, FALSE);
if (p == NULL)
break;
regmatch.regprog = vim_regcomp(p, magic_isset() ? RE_MAGIC : 0);
if (regmatch.regprog == NULL)
{
vim_free(p);
break;
}
didone = FALSE;
for (match = 0; match < ARGCOUNT; ++match)
if (vim_regexec(&regmatch, alist_name(&ARGLIST[match]),
(colnr_T)0))
{
didone = TRUE;
vim_free(ARGLIST[match].ae_fname);
mch_memmove(ARGLIST + match, ARGLIST + match + 1,
(ARGCOUNT - match - 1) * sizeof(aentry_T));
--ALIST(curwin)->al_ga.ga_len;
if (curwin->w_arg_idx > match)
--curwin->w_arg_idx;
--match;
}
vim_regfree(regmatch.regprog);
vim_free(p);
if (!didone)
semsg(_(e_no_match_str_2), ((char_u **)alist_ga->ga_data)[i]);
}
ga_clear(alist_ga);
}
/*
* "what" == AL_SET: Redefine the argument list to 'str'.
* "what" == AL_ADD: add files in 'str' to the argument list after "after".
@@ -401,8 +452,6 @@ do_arglist(
int exp_count;
char_u **exp_files;
int i;
char_u *p;
int match;
int arg_escaped = TRUE;
if (check_arglist_locked() == FAIL)
@@ -422,48 +471,7 @@ do_arglist(
return FAIL;
if (what == AL_DEL)
{
regmatch_T regmatch;
int didone;
// Delete the items: use each item as a regexp and find a match in the
// argument list.
regmatch.rm_ic = p_fic; // ignore case when 'fileignorecase' is set
for (i = 0; i < new_ga.ga_len && !got_int; ++i)
{
p = ((char_u **)new_ga.ga_data)[i];
p = file_pat_to_reg_pat(p, NULL, NULL, FALSE);
if (p == NULL)
break;
regmatch.regprog = vim_regcomp(p, magic_isset() ? RE_MAGIC : 0);
if (regmatch.regprog == NULL)
{
vim_free(p);
break;
}
didone = FALSE;
for (match = 0; match < ARGCOUNT; ++match)
if (vim_regexec(&regmatch, alist_name(&ARGLIST[match]),
(colnr_T)0))
{
didone = TRUE;
vim_free(ARGLIST[match].ae_fname);
mch_memmove(ARGLIST + match, ARGLIST + match + 1,
(ARGCOUNT - match - 1) * sizeof(aentry_T));
--ALIST(curwin)->al_ga.ga_len;
if (curwin->w_arg_idx > match)
--curwin->w_arg_idx;
--match;
}
vim_regfree(regmatch.regprog);
vim_free(p);
if (!didone)
semsg(_(e_no_match_str_2), ((char_u **)new_ga.ga_data)[i]);
}
ga_clear(&new_ga);
}
arglist_del_files(&new_ga);
else
{
i = expand_wildcards(new_ga.ga_len, (char_u **)new_ga.ga_data,
@@ -566,49 +574,57 @@ ex_args(exarg_T *eap)
alist_new();
}
// ":args file ..": define new argument list, handle like ":next"
// Also for ":argslocal file .." and ":argsglobal file ..".
if (*eap->arg != NUL)
{
if (check_arglist_locked() == FAIL)
return;
// ":args file ..": define new argument list, handle like ":next"
// Also for ":argslocal file .." and ":argsglobal file ..".
ex_next(eap);
return;
}
else if (eap->cmdidx == CMD_args)
// ":args": list arguments.
if (eap->cmdidx == CMD_args)
{
// ":args": list arguments.
if (ARGCOUNT > 0)
{
char_u **items = ALLOC_MULT(char_u *, ARGCOUNT);
char_u **items;
if (items != NULL)
{
// Overwrite the command, for a short list there is no
// scrolling required and no wait_return().
gotocmdline(TRUE);
if (ARGCOUNT <= 0)
return; // empty argument list
for (i = 0; i < ARGCOUNT; ++i)
items[i] = alist_name(&ARGLIST[i]);
list_in_columns(items, ARGCOUNT, curwin->w_arg_idx);
vim_free(items);
}
}
items = ALLOC_MULT(char_u *, ARGCOUNT);
if (items == NULL)
return;
// Overwrite the command, for a short list there is no scrolling
// required and no wait_return().
gotocmdline(TRUE);
for (i = 0; i < ARGCOUNT; ++i)
items[i] = alist_name(&ARGLIST[i]);
list_in_columns(items, ARGCOUNT, curwin->w_arg_idx);
vim_free(items);
return;
}
else if (eap->cmdidx == CMD_arglocal)
// ":argslocal": make a local copy of the global argument list.
if (eap->cmdidx == CMD_arglocal)
{
garray_T *gap = &curwin->w_alist->al_ga;
// ":argslocal": make a local copy of the global argument list.
if (GA_GROW_OK(gap, GARGCOUNT))
for (i = 0; i < GARGCOUNT; ++i)
if (GARGLIST[i].ae_fname != NULL)
{
AARGLIST(curwin->w_alist)[gap->ga_len].ae_fname =
vim_strsave(GARGLIST[i].ae_fname);
AARGLIST(curwin->w_alist)[gap->ga_len].ae_fnum =
GARGLIST[i].ae_fnum;
++gap->ga_len;
}
if (GA_GROW_FAILS(gap, GARGCOUNT))
return;
for (i = 0; i < GARGCOUNT; ++i)
if (GARGLIST[i].ae_fname != NULL)
{
AARGLIST(curwin->w_alist)[gap->ga_len].ae_fname =
vim_strsave(GARGLIST[i].ae_fname);
AARGLIST(curwin->w_alist)[gap->ga_len].ae_fnum =
GARGLIST[i].ae_fnum;
++gap->ga_len;
}
}
}
@@ -908,77 +924,45 @@ alist_name(aentry_T *aep)
}
/*
* do_arg_all(): Open up to 'count' windows, one for each argument.
* State used by the :all command to open all the files in the argument list in
* separate windows.
*/
static void
do_arg_all(
int count,
int forceit, // hide buffers in current windows
int keep_tabs) // keep current tabs, for ":tab drop file"
{
int i;
win_T *wp, *wpnext;
typedef struct {
alist_T *alist; // argument list to be used
int had_tab;
int keep_tabs;
int forceit;
int use_firstwin; // use first window for arglist
char_u *opened; // Array of weight for which args are open:
// 0: not opened
// 1: opened in other tab
// 2: opened in curtab
// 3: opened in curtab and curwin
//
int opened_len; // length of opened[]
int use_firstwin = FALSE; // use first window for arglist
int tab_drop_empty_window = FALSE;
int split_ret = OK;
int p_ea_save;
alist_T *alist; // argument list to be used
buf_T *buf;
win_T *new_curwin;
tabpage_T *new_curtab;
} arg_all_state_T;
/*
* Close all the windows containing files which are not in the argument list.
* Used by the ":all" command.
*/
static void
arg_all_close_unused_windows(arg_all_state_T *aall)
{
win_T *wp;
win_T *wpnext;
tabpage_T *tpnext;
int had_tab = cmdmod.cmod_tab;
win_T *old_curwin, *last_curwin;
tabpage_T *old_curtab, *last_curtab;
win_T *new_curwin = NULL;
tabpage_T *new_curtab = NULL;
int prev_arglist_locked = arglist_locked;
#ifdef FEAT_CMDWIN
if (cmdwin_type != 0)
{
emsg(_(e_invalid_in_cmdline_window));
return;
}
#endif
if (ARGCOUNT <= 0)
{
// Don't give an error message. We don't want it when the ":all"
// command is in the .vimrc.
return;
}
setpcmark();
opened_len = ARGCOUNT;
opened = alloc_clear(opened_len);
if (opened == NULL)
return;
// Autocommands may do anything to the argument list. Make sure it's not
// freed while we are working here by "locking" it. We still have to
// watch out for its size to be changed.
alist = curwin->w_alist;
++alist->al_refcount;
arglist_locked = TRUE;
buf_T *buf;
int i;
win_T *old_curwin;
tabpage_T *old_curtab;
old_curwin = curwin;
old_curtab = curtab;
#ifdef FEAT_GUI
need_mouse_correct = TRUE;
#endif
// Try closing all windows that are not in the argument list.
// Also close windows that are not full width;
// When 'hidden' or "forceit" set the buffer becomes hidden.
// Windows that have a changed buffer and can't be hidden won't be closed.
// When the ":tab" modifier was used do this for all tab pages.
if (had_tab > 0)
if (aall->had_tab > 0)
goto_tabpage_tp(first_tabpage, TRUE, TRUE);
for (;;)
{
@@ -988,17 +972,18 @@ do_arg_all(
wpnext = wp->w_next;
buf = wp->w_buffer;
if (buf->b_ffname == NULL
|| (!keep_tabs && (buf->b_nwindows > 1
|| (!aall->keep_tabs && (buf->b_nwindows > 1
|| wp->w_width != Columns)))
i = opened_len;
i = aall->opened_len;
else
{
// check if the buffer in this window is in the arglist
for (i = 0; i < opened_len; ++i)
for (i = 0; i < aall->opened_len; ++i)
{
if (i < alist->al_ga.ga_len
&& (AARGLIST(alist)[i].ae_fnum == buf->b_fnum
|| fullpathcmp(alist_name(&AARGLIST(alist)[i]),
if (i < aall->alist->al_ga.ga_len
&& (AARGLIST(aall->alist)[i].ae_fnum == buf->b_fnum
|| fullpathcmp(alist_name(
&AARGLIST(aall->alist)[i]),
buf->b_ffname, TRUE, TRUE) & FPC_SAME))
{
int weight = 1;
@@ -1010,26 +995,27 @@ do_arg_all(
++weight;
}
if (weight > (int)opened[i])
if (weight > (int)aall->opened[i])
{
opened[i] = (char_u)weight;
aall->opened[i] = (char_u)weight;
if (i == 0)
{
if (new_curwin != NULL)
new_curwin->w_arg_idx = opened_len;
new_curwin = wp;
new_curtab = curtab;
if (aall->new_curwin != NULL)
aall->new_curwin->w_arg_idx =
aall->opened_len;
aall->new_curwin = wp;
aall->new_curtab = curtab;
}
}
else if (keep_tabs)
i = opened_len;
else if (aall->keep_tabs)
i = aall->opened_len;
if (wp->w_alist != alist)
if (wp->w_alist != aall->alist)
{
// Use the current argument list for all windows
// containing a file from it.
alist_unlink(wp->w_alist);
wp->w_alist = alist;
wp->w_alist = aall->alist;
++wp->w_alist->al_refcount;
}
break;
@@ -1038,9 +1024,9 @@ do_arg_all(
}
wp->w_arg_idx = i;
if (i == opened_len && !keep_tabs)// close this window
if (i == aall->opened_len && !aall->keep_tabs)// close this window
{
if (buf_hide(buf) || forceit || buf->b_nwindows > 1
if (buf_hide(buf) || aall->forceit || buf->b_nwindows > 1
|| !bufIsChanged(buf))
{
// If the buffer was changed, and we would like to hide it,
@@ -1063,8 +1049,9 @@ do_arg_all(
}
// don't close last window
if (ONE_WINDOW
&& (first_tabpage->tp_next == NULL || !had_tab))
use_firstwin = TRUE;
&& (first_tabpage->tp_next == NULL
|| !aall->had_tab))
aall->use_firstwin = TRUE;
else
{
win_close(wp, !buf_hide(buf) && !bufIsChanged(buf));
@@ -1078,7 +1065,7 @@ do_arg_all(
}
// Without the ":tab" modifier only do the current tab page.
if (had_tab == 0 || tpnext == NULL)
if (aall->had_tab == 0 || tpnext == NULL)
break;
// check if autocommands removed the next tab page
@@ -1087,54 +1074,56 @@ do_arg_all(
goto_tabpage_tp(tpnext, TRUE, TRUE);
}
}
// Open a window for files in the argument list that don't have one.
// ARGCOUNT may change while doing this, because of autocommands.
if (count > opened_len || count <= 0)
count = opened_len;
/*
* Open upto "count" windows for the files in the argument list 'aall->alist'.
*/
static void
arg_all_open_windows(arg_all_state_T *aall, int count)
{
win_T *wp;
int tab_drop_empty_window = FALSE;
int i;
int split_ret = OK;
int p_ea_save;
// Don't execute Win/Buf Enter/Leave autocommands here.
++autocmd_no_enter;
++autocmd_no_leave;
last_curwin = curwin;
last_curtab = curtab;
win_enter(lastwin, FALSE);
// ":tab drop file" should re-use an empty window to avoid "--remote-tab"
// leaving an empty tab page when executed locally.
if (keep_tabs && BUFEMPTY() && curbuf->b_nwindows == 1
if (aall->keep_tabs && BUFEMPTY() && curbuf->b_nwindows == 1
&& curbuf->b_ffname == NULL && !curbuf->b_changed)
{
use_firstwin = TRUE;
aall->use_firstwin = TRUE;
tab_drop_empty_window = TRUE;
}
for (i = 0; i < count && !got_int; ++i)
{
if (alist == &global_alist && i == global_alist.al_ga.ga_len - 1)
if (aall->alist == &global_alist && i == global_alist.al_ga.ga_len - 1)
arg_had_last = TRUE;
if (opened[i] > 0)
if (aall->opened[i] > 0)
{
// Move the already present window to below the current window
if (curwin->w_arg_idx != i)
{
FOR_ALL_WINDOWS(wpnext)
FOR_ALL_WINDOWS(wp)
{
if (wpnext->w_arg_idx == i)
if (wp->w_arg_idx == i)
{
if (keep_tabs)
if (aall->keep_tabs)
{
new_curwin = wpnext;
new_curtab = curtab;
aall->new_curwin = wp;
aall->new_curtab = curtab;
}
else if (wpnext->w_frame->fr_parent
!= curwin->w_frame->fr_parent)
else if (wp->w_frame->fr_parent
!= curwin->w_frame->fr_parent)
{
emsg(_(e_window_layout_changed_unexpectedly));
i = count;
break;
}
else
win_move_after(wpnext, curwin);
win_move_after(wp, curwin);
break;
}
}
@@ -1145,7 +1134,7 @@ do_arg_all(
// trigger events for tab drop
if (tab_drop_empty_window && i == count - 1)
--autocmd_no_enter;
if (!use_firstwin) // split current window
if (!aall->use_firstwin) // split current window
{
p_ea_save = p_ea;
p_ea = TRUE; // use space from all windows
@@ -1161,35 +1150,111 @@ do_arg_all(
curwin->w_arg_idx = i;
if (i == 0)
{
new_curwin = curwin;
new_curtab = curtab;
aall->new_curwin = curwin;
aall->new_curtab = curtab;
}
(void)do_ecmd(0, alist_name(&AARGLIST(alist)[i]), NULL, NULL,
ECMD_ONE,
((buf_hide(curwin->w_buffer)
|| bufIsChanged(curwin->w_buffer)) ? ECMD_HIDE : 0)
+ ECMD_OLDBUF, curwin);
(void)do_ecmd(0, alist_name(&AARGLIST(aall->alist)[i]), NULL, NULL,
ECMD_ONE,
((buf_hide(curwin->w_buffer)
|| bufIsChanged(curwin->w_buffer)) ? ECMD_HIDE : 0)
+ ECMD_OLDBUF, curwin);
if (tab_drop_empty_window && i == count - 1)
++autocmd_no_enter;
if (use_firstwin)
if (aall->use_firstwin)
++autocmd_no_leave;
use_firstwin = FALSE;
aall->use_firstwin = FALSE;
}
ui_breakcheck();
// When ":tab" was used open a new tab for a new window repeatedly.
if (had_tab > 0 && tabpage_index(NULL) <= p_tpm)
if (aall->had_tab > 0 && tabpage_index(NULL) <= p_tpm)
cmdmod.cmod_tab = 9999;
}
}
/*
* do_arg_all(): Open up to "count" windows, one for each argument.
*/
static void
do_arg_all(
int count,
int forceit, // hide buffers in current windows
int keep_tabs) // keep current tabs, for ":tab drop file"
{
arg_all_state_T aall;
win_T *last_curwin;
tabpage_T *last_curtab;
int prev_arglist_locked = arglist_locked;
#ifdef FEAT_CMDWIN
if (cmdwin_type != 0)
{
emsg(_(e_invalid_in_cmdline_window));
return;
}
#endif
if (ARGCOUNT <= 0)
{
// Don't give an error message. We don't want it when the ":all"
// command is in the .vimrc.
return;
}
setpcmark();
aall.use_firstwin = FALSE;
aall.had_tab = cmdmod.cmod_tab;
aall.new_curwin = NULL;
aall.new_curtab = NULL;
aall.forceit = forceit;
aall.keep_tabs = keep_tabs;
aall.opened_len = ARGCOUNT;
aall.opened = alloc_clear(aall.opened_len);
if (aall.opened == NULL)
return;
// Autocommands may do anything to the argument list. Make sure it's not
// freed while we are working here by "locking" it. We still have to
// watch out for its size being changed.
aall.alist = curwin->w_alist;
++aall.alist->al_refcount;
arglist_locked = TRUE;
#ifdef FEAT_GUI
need_mouse_correct = TRUE;
#endif
// Try closing all windows that are not in the argument list.
// Also close windows that are not full width;
// When 'hidden' or "forceit" set the buffer becomes hidden.
// Windows that have a changed buffer and can't be hidden won't be closed.
// When the ":tab" modifier was used do this for all tab pages.
arg_all_close_unused_windows(&aall);
// Open a window for files in the argument list that don't have one.
// ARGCOUNT may change while doing this, because of autocommands.
if (count > aall.opened_len || count <= 0)
count = aall.opened_len;
// Don't execute Win/Buf Enter/Leave autocommands here.
++autocmd_no_enter;
++autocmd_no_leave;
last_curwin = curwin;
last_curtab = curtab;
win_enter(lastwin, FALSE);
/*
* Open upto "count" windows.
*/
arg_all_open_windows(&aall, count);
// Remove the "lock" on the argument list.
alist_unlink(alist);
alist_unlink(aall.alist);
arglist_locked = prev_arglist_locked;
--autocmd_no_enter;
// restore last referenced tabpage's curwin
if (last_curtab != new_curtab)
if (last_curtab != aall.new_curtab)
{
if (valid_tabpage(last_curtab))
goto_tabpage_tp(last_curtab, TRUE, TRUE);
@@ -1197,13 +1262,13 @@ do_arg_all(
win_enter(last_curwin, FALSE);
}
// to window with first arg
if (valid_tabpage(new_curtab))
goto_tabpage_tp(new_curtab, TRUE, TRUE);
if (win_valid(new_curwin))
win_enter(new_curwin, FALSE);
if (valid_tabpage(aall.new_curtab))
goto_tabpage_tp(aall.new_curtab, TRUE, TRUE);
if (win_valid(aall.new_curwin))
win_enter(aall.new_curwin, FALSE);
--autocmd_no_leave;
vim_free(opened);
vim_free(aall.opened);
}
/*
@@ -1374,40 +1439,41 @@ f_argv(typval_T *argvars, typval_T *rettv)
&& check_for_opt_number_arg(argvars, 1) == FAIL)))
return;
if (argvars[0].v_type != VAR_UNKNOWN)
if (argvars[0].v_type == VAR_UNKNOWN)
{
if (argvars[1].v_type == VAR_UNKNOWN)
{
arglist = ARGLIST;
argcount = ARGCOUNT;
}
else if (argvars[1].v_type == VAR_NUMBER
&& tv_get_number(&argvars[1]) == -1)
{
arglist = GARGLIST;
argcount = GARGCOUNT;
}
else
{
win_T *wp = find_win_by_nr_or_id(&argvars[1]);
get_arglist_as_rettv(ARGLIST, ARGCOUNT, rettv);
return;
}
if (wp != NULL)
{
// Use the argument list of the specified window
arglist = WARGLIST(wp);
argcount = WARGCOUNT(wp);
}
}
rettv->v_type = VAR_STRING;
rettv->vval.v_string = NULL;
idx = tv_get_number_chk(&argvars[0], NULL);
if (arglist != NULL && idx >= 0 && idx < argcount)
rettv->vval.v_string = vim_strsave(alist_name(&arglist[idx]));
else if (idx == -1)
get_arglist_as_rettv(arglist, argcount, rettv);
if (argvars[1].v_type == VAR_UNKNOWN)
{
arglist = ARGLIST;
argcount = ARGCOUNT;
}
else if (argvars[1].v_type == VAR_NUMBER
&& tv_get_number(&argvars[1]) == -1)
{
arglist = GARGLIST;
argcount = GARGCOUNT;
}
else
get_arglist_as_rettv(ARGLIST, ARGCOUNT, rettv);
{
win_T *wp = find_win_by_nr_or_id(&argvars[1]);
if (wp != NULL)
{
// Use the argument list of the specified window
arglist = WARGLIST(wp);
argcount = WARGCOUNT(wp);
}
}
rettv->v_type = VAR_STRING;
rettv->vval.v_string = NULL;
idx = tv_get_number_chk(&argvars[0], NULL);
if (arglist != NULL && idx >= 0 && idx < argcount)
rettv->vval.v_string = vim_strsave(alist_name(&arglist[idx]));
else if (idx == -1)
get_arglist_as_rettv(arglist, argcount, rettv);
}
#endif

42
src/auto/configure vendored
View File

@@ -13379,48 +13379,6 @@ _ACEOF
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for strtod() and other floating point functions" >&5
$as_echo_n "checking for strtod() and other floating point functions... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#ifdef HAVE_MATH_H
# include <math.h>
#endif
#if STDC_HEADERS
# include <stdlib.h>
# include <stddef.h>
#endif
int
main ()
{
char *s; double d;
d = strtod("1.1", &s);
d = fabs(1.11);
d = ceil(1.11);
d = floor(1.11);
d = log10(1.11);
d = pow(1.11, 2.22);
d = sqrt(1.11);
d = sin(1.11);
d = cos(1.11);
d = atan(1.11);
;
return 0;
}
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }; $as_echo "#define HAVE_FLOAT_FUNCS 1" >>confdefs.h
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for isinf()" >&5
$as_echo_n "checking for isinf()... " >&6; }

View File

@@ -1404,12 +1404,19 @@ open_line(
int vreplace_mode;
int did_append; // appended a new line
int saved_pi = curbuf->b_p_pi; // copy of preserveindent setting
#ifdef FEAT_PROP_POPUP
int at_eol; // cursor after last character
#endif
// make a copy of the current line so we can mess with it
saved_line = vim_strsave(ml_get_curline());
if (saved_line == NULL) // out of memory!
return FALSE;
#ifdef FEAT_PROP_POPUP
at_eol = curwin->w_cursor.col >= (int)STRLEN(saved_line);
#endif
if (State & VREPLACE_FLAG)
{
// With MODE_VREPLACE we make a copy of the next line, which we will be
@@ -2133,7 +2140,7 @@ open_line(
if ((State & MODE_INSERT) && (State & VREPLACE_FLAG) == 0)
// Properties after the split move to the next line.
adjust_props_for_split(curwin->w_cursor.lnum, curwin->w_cursor.lnum,
curwin->w_cursor.col + 1, 0);
curwin->w_cursor.col + 1, 0, at_eol);
#endif
}
else

View File

@@ -3589,6 +3589,24 @@ channel_free_all(void)
// Buffer size for reading incoming messages.
#define MAXMSGSIZE 4096
/*
* Check if there are remaining data that should be written for "in_part".
*/
static int
is_channel_write_remaining(chanpart_T *in_part)
{
buf_T *buf = in_part->ch_bufref.br_buf;
if (in_part->ch_writeque.wq_next != NULL)
return TRUE;
if (buf == NULL)
return FALSE;
return in_part->ch_buf_append
? (in_part->ch_buf_bot < buf->b_ml.ml_line_count)
: (in_part->ch_buf_top <= in_part->ch_buf_bot
&& in_part->ch_buf_top <= buf->b_ml.ml_line_count);
}
#if defined(HAVE_SELECT)
/*
* Add write fds where we are waiting for writing to be possible.
@@ -3604,8 +3622,7 @@ channel_fill_wfds(int maxfd_arg, fd_set *wfds)
chanpart_T *in_part = &ch->ch_part[PART_IN];
if (in_part->ch_fd != INVALID_FD
&& (in_part->ch_bufref.br_buf != NULL
|| in_part->ch_writeque.wq_next != NULL))
&& is_channel_write_remaining(in_part))
{
FD_SET((int)in_part->ch_fd, wfds);
if ((int)in_part->ch_fd >= maxfd)
@@ -3629,8 +3646,7 @@ channel_fill_poll_write(int nfd_in, struct pollfd *fds)
chanpart_T *in_part = &ch->ch_part[PART_IN];
if (in_part->ch_fd != INVALID_FD
&& (in_part->ch_bufref.br_buf != NULL
|| in_part->ch_writeque.wq_next != NULL))
&& is_channel_write_remaining(in_part))
{
in_part->ch_poll_idx = nfd;
fds[nfd].fd = in_part->ch_fd;
@@ -3865,8 +3881,6 @@ channel_read(channel_T *channel, ch_part_T part, char *func)
// Store the read message in the queue.
channel_save(channel, part, buf, len, FALSE, "RECV ");
readlen += len;
if (len < MAXMSGSIZE)
break; // did read everything that's available
}
// Reading a disconnection (readlen == 0), or an error.

View File

@@ -943,19 +943,18 @@ vim_isprintc_strict(int c)
init_chartabsize_arg(
chartabsize_T *cts,
win_T *wp,
linenr_T lnum,
linenr_T lnum UNUSED,
colnr_T col,
char_u *line,
char_u *ptr)
{
CLEAR_POINTER(cts);
cts->cts_win = wp;
cts->cts_lnum = lnum;
cts->cts_vcol = col;
cts->cts_line = line;
cts->cts_ptr = ptr;
#ifdef FEAT_PROP_POPUP
if (lnum > 0)
if (lnum > 0 && !ignore_text_props)
{
char_u *prop_start;
int count;
@@ -1070,40 +1069,6 @@ lbr_chartabsize_adv(chartabsize_T *cts)
return retval;
}
#if defined(FEAT_PROP_POPUP) || defined(PROTO)
/*
* Return the cell size of virtual text after truncation.
*/
int
textprop_size_after_trunc(
win_T *wp,
int below,
int added,
char_u *text,
int *n_used_ptr)
{
int space = below ? wp->w_width : added;
int len = (int)STRLEN(text);
int strsize = 0;
int n_used;
// if the remaining size is to small wrap
// anyway and use the next line
if (space < PROP_TEXT_MIN_CELLS)
space += wp->w_width;
for (n_used = 0; n_used < len; n_used += (*mb_ptr2len)(text + n_used))
{
int clen = ptr2cells(text + n_used);
if (strsize + clen > space)
break;
strsize += clen;
}
*n_used_ptr = n_used;
return strsize;
}
#endif
/*
* Return the screen size of the character indicated by "cts".
* "cts->cts_cur_text_width" is set to the extra size for a text property that
@@ -1143,6 +1108,7 @@ win_lbr_chartabsize(
#if defined(FEAT_PROP_POPUP)
cts->cts_cur_text_width = 0;
cts->cts_first_char = 0;
#endif
#if defined(FEAT_LINEBREAK) || defined(FEAT_PROP_POPUP)
@@ -1195,9 +1161,12 @@ win_lbr_chartabsize(
if (tp->tp_id < 0
&& ((tp->tp_col - 1 >= col
&& tp->tp_col - 1 < col + charlen)
|| (tp->tp_col == MAXCOL && (s[0] == NUL || s[1] == NUL)
&& cts->cts_with_trailing))
&& -tp->tp_id - 1 < gap->ga_len)
|| (tp->tp_col == MAXCOL
&& ((tp->tp_flags & TP_FLAG_ALIGN_ABOVE)
? col == 0
: (s[0] == NUL || s[1] == NUL)
&& cts->cts_with_trailing)))
&& tp->tp_id - 1 < gap->ga_len)
{
char_u *p = ((char_u **)gap->ga_data)[-tp->tp_id - 1];
@@ -1219,6 +1188,8 @@ win_lbr_chartabsize(
else
cells = vim_strsize(p);
cts->cts_cur_text_width += cells;
if (tp->tp_flags & TP_FLAG_ALIGN_ABOVE)
cts->cts_first_char += cells;
cts->cts_start_incl = tp->tp_flags & TP_FLAG_START_INCL;
size += cells;
if (*s == TAB)
@@ -1309,6 +1280,9 @@ win_lbr_chartabsize(
numberextra = numberwidth;
vcol += numberextra + mb_added;
#ifdef FEAT_PROP_POPUP
vcol -= wp->w_virtcol_first_char;
#endif
if (vcol >= (colnr_T)wp->w_width)
{
vcol -= wp->w_width;
@@ -1565,6 +1539,11 @@ getvcol(
#endif
break;
}
#ifdef FEAT_PROP_POPUP
if (cursor == &wp->w_virtcol && cts.cts_ptr == cts.cts_line)
// do not count the virtual text above for w_curswant
wp->w_virtcol_first_char = cts.cts_first_char;
#endif
if (posptr != NULL && cts.cts_ptr >= posptr)
// character at pos->col
@@ -1600,6 +1579,9 @@ getvcol(
if (((State & MODE_INSERT) == 0 || cts.cts_start_incl) && !on_NUL)
// cursor is after inserted text, unless on the NUL
vcol += cts.cts_cur_text_width;
else
// insertion also happens after the "above" virtual text
vcol += cts.cts_first_char;
#endif
*cursor = vcol + head; // cursor at start
}

View File

@@ -423,9 +423,7 @@ cmdsrv_main(
if (argtype == ARGTYPE_EDIT_WAIT)
{
int numFiles = *argc - i - 1;
int j;
char_u *done = alloc(numFiles);
char_u *p;
# ifdef FEAT_GUI_MSWIN
NOTIFYICONDATA ni;
int count = 0;
@@ -450,6 +448,8 @@ cmdsrv_main(
vim_memset(done, 0, numFiles);
while (memchr(done, 0, numFiles) != NULL)
{
char_u *p;
int j;
# ifdef MSWIN
p = serverGetReply(srv, NULL, TRUE, TRUE, 0);
if (p == NULL)
@@ -459,6 +459,7 @@ cmdsrv_main(
break;
# endif
j = atoi((char *)p);
vim_free(p);
if (j >= 0 && j < numFiles)
{
# ifdef FEAT_GUI_MSWIN

View File

@@ -2394,6 +2394,7 @@ expand_cmdline(
/*
* Expand file or directory names.
* Returns OK or FAIL.
*/
static int
expand_files_and_dirs(

View File

@@ -157,7 +157,6 @@
#undef HAVE_FCHDIR
#undef HAVE_FCHOWN
#undef HAVE_FCHMOD
#undef HAVE_FLOAT_FUNCS
#undef HAVE_FSEEKO
#undef HAVE_FSYNC
#undef HAVE_FTRUNCATE

View File

@@ -3952,32 +3952,8 @@ AC_LINK_IFELSE([AC_LANG_PROGRAM([
AC_MSG_RESULT(yes); AC_DEFINE(HAVE_NL_LANGINFO_CODESET),
AC_MSG_RESULT(no))
dnl Need various functions for floating point support. Only enable
dnl floating point when they are all present.
dnl Floating point support may require the "m" library
AC_CHECK_LIB(m, strtod)
AC_MSG_CHECKING([for strtod() and other floating point functions])
AC_LINK_IFELSE([AC_LANG_PROGRAM([
#ifdef HAVE_MATH_H
# include <math.h>
#endif
#if STDC_HEADERS
# include <stdlib.h>
# include <stddef.h>
#endif
], [char *s; double d;
d = strtod("1.1", &s);
d = fabs(1.11);
d = ceil(1.11);
d = floor(1.11);
d = log10(1.11);
d = pow(1.11, 2.22);
d = sqrt(1.11);
d = sin(1.11);
d = cos(1.11);
d = atan(1.11);
])],
AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FLOAT_FUNCS),
AC_MSG_RESULT(no))
dnl isinf() and isnan() need to include header files and may need -lm.
AC_MSG_CHECKING([for isinf()])

View File

@@ -135,9 +135,14 @@ do_debug(char_u *cmd)
ignore_script = TRUE;
}
// don't debug any function call, e.g. from an expression mapping
n = debug_break_level;
debug_break_level = -1;
vim_free(cmdline);
cmdline = getcmdline_prompt('>', NULL, 0, EXPAND_NOTHING, NULL);
debug_break_level = n;
if (typeahead_saved)
{
restore_typeahead(&typeaheadbuf, TRUE);

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