Compare commits

...

268 Commits

Author SHA1 Message Date
Bram Moolenaar
417e88bb75 patch 9.0.1069: diff mode highlight fails for special characters
Problem:    Diff mode highlight fails for special characters.
Solution:   Adjust condition for setting "diff_hlf".
2022-12-17 15:03:02 +00:00
Bram Moolenaar
8d754fada8 patch 9.0.1068: no information about whether request term codes has an effect
Problem:    No information about whether requesting term codes has an effect.
Solution:   Add ch_log() calls to report the effect of term code responses.
            Avoid deleting an entry and then adding back the same one.
2022-12-17 13:49:16 +00:00
Bram Moolenaar
d097af7779 patch 9.0.1067: in diff mode virtual text is highlighted incorrectly
Problem:    In diff mode virtual text is highlighted incorrectly. (Rick Howe)
Solution:   Do not use diff attributes for virtual text. (closes #11714)
2022-12-17 11:33:00 +00:00
zeertzjq
67f3094397 patch 9.0.1066: test function name is wrong
Problem:    Test function name is wrong.
Solution:   Rename to what is actually being tested. (closes #11712)
2022-12-17 10:40:15 +00:00
Bram Moolenaar
9d1184cd1d patch 9.0.1065: a shell command switching screens may still have a problem
Problem:    A shell command switching screens may still have a problem with
            the kitty keyboard protocol.
Solution:   Disable the kitty keyboard protocol both in the current and the
            alternate screen, if there are indications it might be needed.
            (issue #11705)  Also fix naming.
2022-12-16 18:33:20 +00:00
Christian Brabandt
9aee8ec400 patch 9.0.1064: code for making 'shortmess' temporarily empty is repeated
Problem:    Code for making 'shortmess' temporarily empty is repeated.
Solution:   Add functions for making 'shortmess' empty and restoring it.
            (Christian Brabandt, closes #11709)
2022-12-16 16:41:23 +00:00
Bram Moolenaar
4ab1f4a32f patch 9.0.1063: when using Kitty a shell command may mess up the key state
Problem:    When using Kitty a shell command may mess up the key protocol
            state.
Solution:   Output t_te before t_TE.  If t_te switches between the main and
            the alternate screen then deactivating the key protocol by t_TE
            should happen after switching screen. (issue #11705)
2022-12-16 13:08:36 +00:00
zeertzjq
4cd45f1408 patch 9.0.1062: some test function names do not match what they are doing
Problem:    Some test function names do not match what they are doing.
Solution:   Leave out user data for the test that is called "NoUserData".
            (closes #11703)
2022-12-15 13:48:30 +00:00
Luuk van Baal
ba936f6f4e patch 9.0.1061: cannot display 'showcmd' somewhere else
Problem:    Cannot display 'showcmd' somewhere else.
Solution:   Add the 'showcmdloc' option. (Luuk van Baal, closes #11684)
2022-12-15 13:15:39 +00:00
Bram Moolenaar
3d473ee1a6 patch 9.0.1060: private and public object members are not implemented yet
problem:    Private and public object members are not implemented yet.
Solution:   Implement private and public object members.
2022-12-14 20:59:32 +00:00
Bram Moolenaar
f94178db8d patch 9.0.1059: build failure with some compilers
Problem:    Build failure with some compilers that can't handle a
            declaration directly after a "case" statement.
Solution:   Add a block to put the declarations in.
2022-12-14 17:50:00 +00:00
Bram Moolenaar
91c9d6d772 patch 9.0.1058: string value of class and object do not have information
Problem:    String value of class and object do not have useful information.
Solution:   Add the class name and for the object the member values.
2022-12-14 17:30:37 +00:00
Chris Kipp
70ef3f546b patch 9.0.1057: conflict between supercollider and scala filetype detection
Problem:    Conflict between supercollider and scala filetype detection.
Solution:   Do not check for "Class : Method", it can appear in both
            filetypes. (Chris Kipp, closes #11699)
2022-12-14 16:42:15 +00:00
Bram Moolenaar
eb53350c02 patch 9.0.1056: leaking memory when disassembling an object method
Problem:    Leaking memory when disassembling an object method.
Solution:   Free the typval of the class.
2022-12-14 15:06:11 +00:00
Bram Moolenaar
f593fc891c patch 9.0.1055: Coverity warns for using uninitialized memory
Problem:    Coverity warns for using uninitialized memory.
Solution:   Clear the "lhs" field earlier.
2022-12-14 13:50:02 +00:00
Bram Moolenaar
74e1274edf patch 9.0.1054: object member can't get type from initializer
Problem:    Object member can't get type from initializer.
Solution:   If there is no type specified try to use the type of the
            initializer.  Check for a valid type.
2022-12-13 21:14:28 +00:00
Bram Moolenaar
65b0d16768 patch 9.0.1053: default constructor arguments are not optional
Problem:    Default constructor arguments are not optional.
Solution:   Use "= v:none" to make constructor arguments optional.
2022-12-13 18:43:22 +00:00
Bram Moolenaar
692fe0889c patch 9.0.1052: using freed memory on exit when EXITFREE is defined
Problem:    Using freed memory on exit when EXITFREE is defined.
Solution:   Make a deep copy of the type.  Make sure TTFLAG_STATIC is not set
            in the copy.
2022-12-13 13:42:37 +00:00
Rob Pilling
cb94c91070 patch 9.0.1051: after a failed CTRL-W ] next command splits window
Problem:    After a failed CTRL-W ] next command splits window.
Solution:   Reset postponed_split. (Rob Pilling, closes #11698)
2022-12-13 12:26:09 +00:00
Bram Moolenaar
6342e2c5a6 patch 9.0.1050: using freed memory when assigning to variable twice
Problem:    Using freed memory when assigning to variable twice.
Solution:   Make copy of the list type. (closes #11691)
2022-12-12 18:56:32 +00:00
Bram Moolenaar
67578e5bcf patch 9.0.1049: crash when opening a very small terminal window
Problem:    Crash when opening a very small terminal window.
Solution:   Instead of crashing fix the cursor position. (closes #11697)
2022-12-12 13:47:44 +00:00
zeertzjq
b7acea1806 patch 9.0.1048: with "screenline" in 'culopt' cursorline highlight is wrong
Problem:    With "screenline" in 'culopt' cursorline highlight is wrong.
Solution:   Apply the priority logic also when "screenline is in 'culopt'.
            (closes #11696)
2022-12-12 13:20:43 +00:00
Bram Moolenaar
7db29e4b5c Update runtime files 2022-12-11 15:53:04 +00:00
Bram Moolenaar
79336e19cb patch 9.0.1047: matchparen is slow
Problem:    Matchparen is slow.
Solution:   Actually use the position where the match started, not the
            position where the search started. (closes #11644)
2022-12-11 14:18:31 +00:00
Bram Moolenaar
3ea8a1b129 patch 9.0.1046: class method disassemble test fails on MS-Windows
Problem:    Class method disassemble test fails on MS-Windows.
Solution:   Do not match with a specific size.
2022-12-10 19:03:51 +00:00
Bram Moolenaar
7ce7daf6cd patch 9.0.1045: in a class object members cannot be initialized
Problem:    In a class object members cannot be initialized.
Solution:   Support initializing object members. Make "dissassemble" work on
            an object method.
2022-12-10 18:42:12 +00:00
Bram Moolenaar
6c87bbb4e4 patch 9.0.1044: setting window height using Python may cause errors
Problem:    Setting window height using Python may cause errors.
Solution:   When setting "curwin" also set "curbuf". (closes #11687)
2022-12-10 11:17:11 +00:00
zeertzjq
c51a376265 patch 9.0.1043: macro has confusing name and is duplicated
Problem:    Macro has confusing name and is duplicated.
Solution:   Use one macro with an understandable name. (closes #11686)
2022-12-10 10:22:29 +00:00
Bram Moolenaar
4ae0057308 patch 9.0.1042: ASAN gives false alarm about array access.
Problem:    ASAN gives false alarm about array access.
Solution:   Use an intermediate pointer.
2022-12-09 22:49:23 +00:00
Bram Moolenaar
ffdaca9e6f patch 9.0.1041: cannot define a method in a class
Problem:    Cannot define a method in a class.
Solution:   Implement defining an object method.  Make calling an object
            method work.
2022-12-09 21:41:48 +00:00
Bram Moolenaar
148bcd3610 patch 9.0.1040: test for <Cmd> mapping with CmdlineChanged fails
Problem:    Test for <Cmd> mapping with CmdlineChanged fails.
Solution:   Put back the check for the cmdline length not changing.
2022-12-09 12:41:32 +00:00
Bram Moolenaar
bb393d8259 patch 9.0.1039: using a <Cmd> mapping CmdlineChanged may be triggered twice
Problem:    Using a <Cmd> mapping CmdlineChanged may be triggered twice.
Solution:   Count the number of times CmdlineChanged is triggered and avoid
            doing it twice. (closes #116820
2022-12-09 12:21:50 +00:00
zeertzjq
ffa4e9b43a patch 9.0.1038: function name does not match what it is used for
Problem:    Function name does not match what it is used for.
Solution:   Include the modifier in the name. (closes #11679)
2022-12-09 11:36:36 +00:00
Bram Moolenaar
98aeb2100c patch 9.0.1037: lalloc(0) error for a class without members
Problem:    lalloc(0) error for a class without members.
Solution:   Don't allocate room for members if there aren't any.
            Don't create the class if there was an error.
2022-12-08 22:09:14 +00:00
Bram Moolenaar
3f8f827723 patch 9.0.1036: undo misbehaves when writing from an insert mode mapping
Problem:    Undo misbehaves when writing from an insert mode mapping.
Solution:   Sync undo when writing. (closes #11674)
2022-12-08 21:49:35 +00:00
Bram Moolenaar
d28d7b94f5 patch 9.0.1035: object members are not being marked as used
Problem:    Object members are not being marked as used, garbage collection
            may free them.
Solution:   Mark object members as used.  Fix reference counting.
2022-12-08 20:42:00 +00:00
Bram Moolenaar
e5eae82bb7 patch 9.0.1034: reporting swap file when windows are split
Problem:    Reporting swap file when windows are split.
Solution:   Close extra windows after running a test.
2022-12-08 16:30:16 +00:00
Bram Moolenaar
83c43ab319 patch 9.0.1033: tiny build fails because of conflicting typedef
Problem:    Tiny build fails because of conflicting typedef.
Solution:   Remove one typedef.
2022-12-08 16:10:01 +00:00
Bram Moolenaar
b9603f6498 patch 9.0.1032: test fails when terminal feature is missing
Problem:    Test fails when terminal feature is missing.
Solution:   Use CheckRunVimInTerminal.
2022-12-08 15:44:22 +00:00
Bram Moolenaar
00b28d6c23 patch 9.0.1031: Vim9 class is not implemented yet
Problem:    Vim9 class is not implemented yet.
Solution:   Add very basic class support.
2022-12-08 15:32:33 +00:00
Bram Moolenaar
038e6d20e6 patch 9.0.1030: using freed memory with the cmdline popup menu
Problem:    Using freed memory with the cmdline popup menu.
Solution:   Clear the popup menu when clearing the matches. (closes #11677)
2022-12-08 12:00:50 +00:00
Bram Moolenaar
84dbf855fb patch 9.0.1029: autoload directory missing from distribution
Problem:    Autoload directory missing from distribution.
Solution:   Add the autoload/zig directory to the list of distributed files.
2022-12-08 10:03:48 +00:00
Yee Cheng Chin
1881abfc34 patch 9.0.1028: mouse shape test is flaky, especially on Mac OS
Problem:    Mouse shape test is flaky, especially on Mac OS.
Solution:   Instead of starting all timers at the same time, start the next
            one in the callback of the previous one. (Yee Cheng Chin,
            closes #11673)  Also use "bwipe!" instead of "close!" to avoid
            swap files remaining.
2022-12-08 09:41:24 +00:00
Philip H
647b8dfa7f patch 9.0.1027: LGTM is soon shutting down
Problem:    LGTM is soon shutting down.
Solution:   Remove LGTM from CI. (closes #11671)
2022-12-07 23:00:26 +00:00
Bram Moolenaar
2e613453ee patch 9.0.1026: type of w_last_topfill is wrong
Problem:    type of w_last_topfill is wrong.
Solution:   Use "int" instead of "linenr_T". (closes #11670)
2022-12-07 22:30:18 +00:00
zeertzjq
3fc84dc2c7 patch 9.0.1025: WinScrolled is not triggered when filler lines change
Problem:    WinScrolled is not triggered when filler lines change.
Solution:   Add "topfill" to the values that WinScrolled triggers on.
            (closes #11668)
2022-12-07 09:17:59 +00:00
Bram Moolenaar
86b4816766 Update runtime files 2022-12-06 18:20:10 +00:00
Philip H
5e0c004f0c patch 9.0.1024: CI doesn't use the latest FreeBSD version
Problem:    CI doesn't use the latest FreeBSD version.
Solution:   Go from 12.3 to 12.4. (closes #11423)
2022-12-06 16:56:44 +00:00
K.Takata
a8cdb4eef8 patch 9.0.1023: MS-Windows: dynamic loading of libsodium doesn't work
Problem:    MS-Windows: dynamic loading of libsodium doesn't work.
Solution:   Add "randombytes_random". (Ken Takata, closes #11667)
2022-12-06 16:17:01 +00:00
Bram Moolenaar
af34543b92 patch 9.0.1022: suspend test fails on Mac OS when suspending Vim
Problem:    Suspend test fails on Mac OS when suspending Vim.
Solution:   Make 'keyprotocol' empty.
2022-12-06 16:09:52 +00:00
Bram Moolenaar
d6e74f5479 patch 9.0.1021: test trips over g:name
Problem:    Test trips over g:name.
Solution:   Delete g:name after using it.
2022-12-06 15:07:56 +00:00
Bram Moolenaar
6572a90287 patch 9.0.1020: tests call GetSwapFileList() before it is defined
Problem:    Tests call GetSwapFileList() before it is defined.
Solution:   Move the call to after defining the function. (Christopher
            Plewright)
2022-12-06 14:21:09 +00:00
Bram Moolenaar
56a40fea9c patch 9.0.1019: 'smoothscroll' and virtual text above don't work together
Problem:    'smoothscroll' and virtual text above don't work together.
            (Yee Cheng Chin)
Solution:   Skip virtual text above when w_skipcol is non-zero.
            (closes #11665)
2022-12-06 14:17:57 +00:00
Bram Moolenaar
7155fb6614 patch 9.0.1018: suspend test still fails on Mac OS
Problem:    Suspend test still fails on Mac OS.
Solution:   Make 'keyprotocol' empty.
2022-12-06 09:11:39 +00:00
Bram Moolenaar
9dacdb1d56 patch 9.0.1017: test for srand() fails on MS-Windows
Problem:    Test for srand() fails on MS-Windows.
Solution:   Do not expect the same result a second time.
2022-12-06 09:05:25 +00:00
Bram Moolenaar
1cb16c3a20 patch 9.0.1016: screenpos() does not count filler lines for diff mode
Problem:    screenpos() does not count filler lines for diff mode.
Solution:   Add filler lines. (closes 11658)
2022-12-05 22:26:44 +00:00
Yasuhiro Matsumoto
f0a9c00482 patch 9.0.1015: without /dev/urandom srand() seed is too predictable
Problem:    Without /dev/urandom srand() seed is too predictable.
Solution:   Use micro seconds and XOR with process ID. (Yasuhiro Matsumoto,
            closes #11656)
2022-12-05 21:55:55 +00:00
Bram Moolenaar
25201016d5 patch 9.0.1014: zir files are not recognized
Problem:    Zir files are not recognized.
Solution:   Add a pattern for Zir files. (closes #11664)
2022-12-05 21:40:39 +00:00
Bram Moolenaar
0a2f891adf patch 9.0.1013: suspend test often fails on Mac OS
Problem:    Suspend test often fails on Mac OS.
Solution:   Make t_RP empty.
2022-12-05 21:21:46 +00:00
Bram Moolenaar
fa2533c8bb patch 9.0.1012: tests may get stuck in buffer with swap file
Problem:    Tests may get stuck in buffer with swap file.
Solution:   Bail out when bwipe! doesn't get another buffer.
2022-12-05 20:58:04 +00:00
Bram Moolenaar
99d19438ca patch 9.0.1011: ml_get error when using screenpos()
Problem:    ml_get error when using screenpos().
Solution:   Give an error for the line number. (closes #11661)
2022-12-05 16:23:24 +00:00
Bram Moolenaar
23526d2539 patch 9.0.1010: stray warnings for existing swap files
Problem:    Stray warnings for existing swap files.
Solution:   Wipe out the buffer until it has no name and no swap file.
2022-12-05 15:50:41 +00:00
Bram Moolenaar
72b5b0d51a patch 9.0.1009: test for catch after interrupt is flaky on MS-Windows
Problem:    Test for catch after interrupt is flaky on MS-Windows.
Solution:   Mark the test as flaky.
2022-12-05 15:24:20 +00:00
Bram Moolenaar
6cf3151f0e patch 9.0.1008: test for swapfilelist() fails on MS-Windows
Problem:    Test for swapfilelist() fails on MS-Windows.
Solution:   Only check the tail of the path.  Mark a test as flaky.
2022-12-05 15:01:05 +00:00
Bram Moolenaar
c216a7a21a patch 9.0.1007: there is no way to get a list of swap file names
Problem:    There is no way to get a list of swap file names.
Solution:   Add the swapfilelist() function.  Use it in the test script to
            clean up.  Remove deleting individual swap files.
2022-12-05 13:50:55 +00:00
Bram Moolenaar
65214053f6 patch 9.0.1006: suspend test still sometimes fails on MacOS
Problem:    Suspend test still sometimes fails on MacOS.
Solution:   Wait a little while for terminal responses.
2022-12-04 23:30:19 +00:00
Bram Moolenaar
d0f8d39d20 patch 9.0.1005: a failed test may leave a swap file behind
Problem:    A failed test may leave a swap file behind.
Solution:   Delete the swap file to avoid another test to fail.  Use another
            file name.
2022-12-04 23:00:41 +00:00
Bram Moolenaar
a0a6f3a22a patch 9.0.1004: suspend test sometimes fails on MacOS
Problem:    Suspend test sometimes fails on MacOS.
Solution:   Wait a short while for terminal responses.
2022-12-04 22:26:40 +00:00
Bram Moolenaar
3d3e2aa826 patch 9.0.1003: tiny build fails
Problem:    Tiny build fails.
Solution:   Remove #ifdef from error message.
2022-12-04 21:40:51 +00:00
Bram Moolenaar
9163efb5b8 patch 9.0.1002: command list test fails
Problem:    Command list test fails.
Solution:   Add commands added to the list.
2022-12-04 21:09:48 +00:00
Bram Moolenaar
c1c365c1ca patch 9.0.1001: classes are not documented or implemented yet
Problem:    Classes are not documented or implemented yet.
Solution:   Make the first steps at documenting Vim9 objects, classes and
            interfaces.  Make initial choices for the syntax.  Add a skeleton
            implementation.  Add "public" and "this" in the command table.
2022-12-04 20:13:24 +00:00
Bram Moolenaar
b21b8e9ed0 patch 9.0.1000: with 'smoothscroll' skipcol may be reset unnecessarily
Problem:    With 'smoothscroll' skipcol may be reset unnecessarily.
Solution:   Check the line does actually fit in the window.
2022-12-03 18:35:07 +00:00
Bram Moolenaar
c0370529c0 patch 9.0.0999: memory may leak
Problem:    Memory may leak.
Solution:   Free the sound callback function name if it was allocated.
2022-12-03 13:52:24 +00:00
Bram Moolenaar
1b73edd9ee patch 9.0.0998: "gk" may reset skipcol when not needed
Problem:    "gk" may reset skipcol when not needed.
Solution:   Only reset skipcol if the cursor column is less.
2022-12-03 11:51:54 +00:00
Bram Moolenaar
8ffb7e051d patch 9.0.0997: Coverity warns for dead code
Problem:    Coverity warns for dead code.
Solution:   Don't use ASCII_ISUPPER() for a negative value.
2022-12-03 10:13:30 +00:00
Bram Moolenaar
af19ec0bfa patch 9.0.0996: if 'keyprotocol' is empty "xterm" still uses modifyOtherKeys
Problem:    If 'keyprotocol' is empty "xterm" still uses modifyOtherKeys.
Solution:   Remove t_TI, t_RK and t_TE from the "xterm" builtin termcap and
            let the default value of 'keyprotocol' add those.
2022-12-03 00:00:38 +00:00
Bram Moolenaar
37f088eead patch 9.0.0995: padding before virtual text is highlighted
Problem:    Padding before virtual text below is highlighted when 'number' and
            'nowrap' are set.
Solution:   Save and restore n_attr_skip. (closes #11643)
2022-12-02 21:50:14 +00:00
Bram Moolenaar
267db7c3e3 patch 9.0.0994: tests for empty prop type name fail
Problem:    Tests for empty prop type name fail.
Solution:   Correct the error number.
2022-12-02 21:37:45 +00:00
Bram Moolenaar
89469d157a patch 9.0.0993: display errors when adding or removing text property type
Problem:    Display errors when adding or removing text property type.
Solution:   Perform a full redraw.  Only use text properties for which the
            type is defined. (closes #11655)
2022-12-02 20:46:26 +00:00
mityu
500c444283 patch 9.0.0992: Vim9 script: get E1096 when comment follows return
Problem:    Vim9 script: get E1096 when comment follows return.
Solution:   Adjust condition for return without expression. (closes #11654)
2022-12-02 18:12:05 +00:00
Bram Moolenaar
c67c89c758 patch 9.0.0991: crash when reading help index with various options set
Problem:    Crash when reading help index with various options set. (Marius
            Gedminas)
Solution:   Do not set wlv.c_extra to NUL when wlv.p_extra is NULL.
            (closes #11651)
2022-12-02 16:39:44 +00:00
Bram Moolenaar
c96b7f5d2a patch 9.0.0990: callback name argument is changed by setqflist()
Problem:    Callback name argument is changed by setqflist().
Solution:   Use the expanded function name for the callback, do not store it
            in the argument. (closes #11653)
2022-12-02 15:58:38 +00:00
Bram Moolenaar
9c8d12c811 patch 9.0.0989: popupwin test is more flaky on MacOS
Problem:    Popupwin test is more flaky on MacOS.
Solution:   Use a longer wait time.
2022-12-02 15:06:07 +00:00
Bram Moolenaar
b55ae8ce42 patch 9.0.0988: using feedkeys() does not show up in a channel log
Problem:    Using feedkeys() does not show up in a channel log.
Solution:   Add ch_log() calls and clean up the code.
2022-12-02 13:37:36 +00:00
Bram Moolenaar
cf650b7c9b patch 9.0.0987: file missing from list of distributed files
Problem:    File missing from list of distributed files.
Solution:   Add logfile.pro to list of distributed files.
2022-12-02 13:20:19 +00:00
Bram Moolenaar
5390c05a3c patch 9.0.0986: build failure with tiny version
Problem:    Build failure with tiny version.
Solution:   Add #ifdef.
2022-12-02 13:10:03 +00:00
Bram Moolenaar
1a173409ae patch 9.0.0985: when using kitty keyboard protocol function keys may not work
Problem:    When using kitty keyboard protocol function keys may not work.
            (Kovid Goyal)
Solution:   Recognize CSI ending in [ABCDEFHPQRS] also when the termcap
            entries are not specified. (closes #11648)
2022-12-02 12:28:47 +00:00
Bram Moolenaar
023930d62e patch 9.0.0984: GUI: remote_foreground() does not always work
Problem:    GUI: remote_foreground() does not always work. (Ron Aaron)
Solution:   For GTK use gtk_window_set_keep_above(). (issue #11641)
2022-12-01 19:40:55 +00:00
Bram Moolenaar
184a622ada patch 9.0.0983: stray characters displayed when starting the GUI
Problem:    Stray characters displayed when starting the GUI.
Solution:   Add t_RK to the list of terminal options.
2022-12-01 19:25:04 +00:00
Bram Moolenaar
45e4eead2a patch 9.0.0982: 'cursorline' not drawn before virtual text below
Problem:    'cursorline' not drawn before virtual text below.
Solution:   Add the 'cursorline' attribute to the empty space. (closes #11647)
2022-12-01 18:38:02 +00:00
Bram Moolenaar
c3f1881aed patch 9.0.0981: build error in tiny version
Problem:    Build error in tiny version.
Solution:   Add #ifdef.
2022-12-01 12:29:43 +00:00
Bram Moolenaar
733a69b29f patch 9.0.0980: the keyboard state response may end up in a shell command
Problem:    The keyboard state response may end up in a shell command.
Solution:   Only request the keyboard protocol state when the typeahead is
            empty, no more commands are following and not exiting.  Add the
            t_RK termcap entry for this.
2022-12-01 12:03:47 +00:00
Bram Moolenaar
4f501171f7 patch 9.0.0979: ch_log() text can be hard to find in the log file
Problem:    ch_log() text can be hard to find in the log file.
Solution:   Prepend "ch_log()" to the text.
2022-12-01 11:02:23 +00:00
Bram Moolenaar
3b8c7083b2 patch 9.0.0978: build errors without the +channel feature
Problem:    Build errors without the +channel feature. (John Marriott)
Solution:   Adjust #ifdefs.
2022-11-30 20:20:56 +00:00
Bram Moolenaar
4c5678ff0c patch 9.0.0977: it is not easy to see what client-server commands are doing
Problem:    It is not easy to see what client-server commands are doing.
Solution:   Add channel log messages if ch_log() is available.  Move the
            channel logging and make it available with the +eval feature.
2022-11-30 18:12:19 +00:00
Bram Moolenaar
a87749e3ea patch 9.0.0976: enabling the kitty keyboard protocol uses push/pop
Problem:    Enabling the kitty keyboard protocol uses push/pop.
Solution:   Use the start/stop codes to avoid unpredictable behavior.
2022-11-30 10:23:17 +00:00
Bram Moolenaar
7c02ad9f89 patch 9.0.0975: virtual text below empty line misplaced when 'number' set
Problem:    Virtual text below an empty line is misplaced when 'number' is
            set.
Solution:   Adjust the computations. (closes #11629)
2022-11-29 21:37:13 +00:00
Bram Moolenaar
dffa6ea85c patch 9.0.0974: even when Esc is encoded a timeout is used
Problem:    Even when Esc is encoded a timeout is used.
Solution:   Use K_ESC when an encoded Esc is found.
2022-11-29 20:33:20 +00:00
Bram Moolenaar
064fd67e6a patch 9.0.0973: Kitty keyboard protocol key with NumLock not decoded
Problem:    Kitty keyboard protocol key not decoded when it has an unsupported
            modifier, such as NumLock.
Solution:   Accept a key with any modifier. (closes #11638)
2022-11-29 18:32:32 +00:00
Bram Moolenaar
4e6072b8d3 patch 9.0.0972: build failure on some systems
Problem:    Build failure on some systems.
Solution:   Adjust #ifdefs related to the termresponse feature.
2022-11-29 16:09:18 +00:00
Bram Moolenaar
6f2a227565 patch 9.0.0971: escape sequences not recognized without termresponse feature
Problem:    Escape sequences not recognized without the termresponse feature.
Solution:   Recognize escape sequences to avoid display mess up.
2022-11-29 13:59:13 +00:00
Bram Moolenaar
3719989431 patch 9.0.0970: Coverity warns for uninitialized variable
Problem:    Coverity warns for uninitialized variable.
Solution:   Initialize "ren_ret".
2022-11-29 13:46:48 +00:00
Bram Moolenaar
28a896f54d patch 9.0.0969: matchparen highlight is not updated when switching buffers
Problem:    Matchparen highlight is not updated when switching buffers.
Solution:   Listen to the BufLeave and the BufWinEnter autocmd events.
            (closes #11626)
2022-11-28 22:21:12 +00:00
Bram Moolenaar
c13e998d4a patch 9.0.0968: GUI mouse event test is a bit flaky
Problem:    GUI mouse event test is a bit flaky.
Solution:   Mark the test case as flaky.  Move test function failure checks to
            a separate test function.
2022-11-28 21:20:48 +00:00
Bram Moolenaar
84497cd06f patch 9.0.0967: leaking memory from autocmd windows
Problem:    Leaking memory from autocmd windows.
Solution:   Free window when auc_win is not NULL.
2022-11-28 20:34:52 +00:00
Bram Moolenaar
f86490ed4f patch 9.0.0966: some compilers don't allow a declaration after a label
Problem:    Some compilers don't allow a declaration after a label.
Solution:   Move the declaration to the start of the block. (John Marriott)
2022-11-28 19:11:02 +00:00
Bram Moolenaar
e76062c078 patch 9.0.0965: using one window for executing autocommands is insufficient
Problem:    Using one window for executing autocommands is insufficient.
Solution:   Use up to five windows for executing autocommands.
2022-11-28 18:51:43 +00:00
Luuk van Baal
74a694dbe2 patch 9.0.0964: status line not redrawn when 'splitkeep' is "screen"
Problem:    Status line of other window not redrawn when dragging it when
            'splitkeep' is set to "screen".
Solution:   Set w_redr_status earlier. (Luuk van Baal, closes #11635,
            closes #11632)
2022-11-28 16:49:36 +00:00
zeertzjq
269aa2b29a patch 9.0.0963: function name does not match autocmd event name
Problem:    Function name does not match autocmd event name.
Solution:   Rename "optionsset" to "optionset". (closes #11630)
2022-11-28 11:36:50 +00:00
porygonisaduck
38854b565a patch 9.0.0962: virtual text below cannot be placed below empty lines
Problem:    Virtual text below cannot be placed below empty lines.
Solution:   Add one character. (James Alvarado, closes #11606, closes #11520)
2022-11-27 20:55:05 +00:00
Bram Moolenaar
3da8597fc0 patch 9.0.0961: using deletebufline() may jump to another window
Problem:    Using deletebufline() may jump to another window.
Solution:   Do not use a window where the buffer was only in the past.
            (closes #11594)
2022-11-27 19:45:49 +00:00
Bram Moolenaar
502e91756e patch 9.0.0960: error when using the "Spelling / Find More Languages" menu
Problem:    Error when using the "Tools / Spelling / Find More Languages"
            menu.
Solution:   Remove "<SID>".  Reset "g:menutrans_set_lang_to" when 'encoding'
            changes. (closes #11625)
2022-11-27 16:18:33 +00:00
Bram Moolenaar
8b336a6614 patch 9.0.0959: error when using the "File Settings / Text Width" menu
Problem:    Error when using the "File Settings / Text Width" menu.
Solution:   Use str2nr(). (closes #11624)
2022-11-27 15:51:46 +00:00
Bram Moolenaar
19cf525c20 patch 9.0.0958: messages test is flaky
Problem:    Messages test is flaky.
Solution:   Add a short delay.
2022-11-27 14:39:31 +00:00
Bram Moolenaar
64fabf3802 patch 9.0.0957: tests fail without the terminal feature
Problem:    Tests fail without the terminal feature.
Solution:   Move functions to another utility script.
2022-11-27 13:51:22 +00:00
Bram Moolenaar
9f14557d6a patch 9.0.0956: terminal tests fail when using key with modifier
Problem:    Terminal tests fail when using key with modifier.
Solution:   Use the modifyOtherKeys encoding when using RunVimInTerminal().
2022-11-27 12:45:41 +00:00
Bram Moolenaar
cc0907165d patch 9.0.0955: libvterm does not support the XTQMODKEYS request
Problem:    Libvterm does not support the XTQMODKEYS request.
Solution:   Implement the XTQMODKEYS request and response.  Update the keycode
            check results.
2022-11-27 11:31:23 +00:00
Bram Moolenaar
c255b78965 patch 9.0.0954: cannot detect whether modifyOtherKeys is enabled
Problem:    Cannot detect whether modifyOtherKeys is enabled.
Solution:   Use XTQMODKEYS introduced by xterm version 377 to request the
            modifyOtherKeys level.  Update the keycode check results.
2022-11-26 19:16:48 +00:00
Bram Moolenaar
837ca8f43b patch 9.0.0953: part of making search more efficient is missing
Problem:    Part of making search more efficient is missing.
Solution:   Add the change in searchit().
2022-11-26 18:59:19 +00:00
ObserverOfTime
f3f198b634 patch 9.0.0952: Eclipse preference files are not recognized
Problem:    Eclipse preference files are not recognized.
Solution:   Add a pattern to use "jproperties" for Eclipse preference files.
            (closes #11618)
2022-11-26 13:03:20 +00:00
Bram Moolenaar
01105b37a1 patch 9.0.0951: trying every character position for a match is inefficient
Problem:    Trying every character position for a match is inefficient.
Solution:   Use the start position of the match ignoring "\zs".
2022-11-26 11:47:10 +00:00
Bram Moolenaar
c96311b5be patch 9.0.0950: the pattern "\_s\zs" matches at EOL
Problem:    The pattern "\_s\zs" matches at EOL.
Solution:   Make the pattern "\_s\zs" match at the start of the next line.
            (closes #11617)
2022-11-25 21:13:47 +00:00
Bram Moolenaar
ef2c325f5e patch 9.0.0949: crash when unletting a variable while listing variables
Problem:    Crash when unletting a variable while listing variables.
Solution:   Disallow changing a hashtable while going over the entries.
            (closes #11435)
2022-11-25 16:31:51 +00:00
Bram Moolenaar
c1cf4c9107 patch 9.0.0948: 'ttyfast' is set for arbitrary terminals
Problem:    'ttyfast' is set for arbitrary terminals.
Solution:   Always set 'ttyfast'. (closes #11549)
2022-11-25 15:09:35 +00:00
Bram Moolenaar
cc762a48d4 patch 9.0.0947: invalid memory access in substitute with function
Problem:    Invalid memory access in substitute with function that goes to
            another file.
Solution:   Check for text locked in CTRL-W gf.
2022-11-25 13:03:31 +00:00
K.Takata
ad85af5b38 patch 9.0.0946: CI: Error in Coverity flow is not reported
Problem:    CI: Error in Coverity flow is not reported.
Solution:   Use another way to avoid errors in a forked repository. (Ken
            Takata, closes #11609)
2022-11-25 00:57:05 +00:00
Bram Moolenaar
637862fc3c patch 9.0.0945: failures in the cursorline test
Problem:    Failures in the cursorline test.
Solution:   Reset extra_attr only after a text property.
2022-11-24 23:04:02 +00:00
Bram Moolenaar
6ac16f0c0f patch 9.0.0944: 'cursorline' causes virtual text highlight to continue
Problem:    'cursorline' causes virtual text highlight to continue.
Solution:   Save and restore line_attr. (closes #11588)
2022-11-24 22:42:29 +00:00
Bram Moolenaar
d330e8422d patch 9.0.0943: pretending to go out of Insert mode when Esc is received
Problem:    Pretending to go out of Insert mode when Esc is received has side
            effects.
Solution:   When the kitty keyboard protocol is enabled expect Esc to always
            be the start of an escape sequence.
2022-11-24 20:23:24 +00:00
Matt Dunford
f60bdc3417 patch 9.0.0942: Workflow Description Language files are not recognized
Problem:    Workflow Description Language files are not recognized.
Solution:   Add a pattern for the "wdl" filetype. (Matt Dunford,
            closes #11611)
2022-11-24 20:01:18 +00:00
Philip H
1273dfb015 patch 9.0.0941: CI failures in sound dummy
Problem:    CI failures in sound dummy.
Solution:   Temporarily disable building sound dummy. (closes #11610)
2022-11-24 15:15:08 +00:00
Bram Moolenaar
ebed1b0bea patch 9.0.0940: crash when typing a letter in a terminal window
Problem:    Crash when typing a letter in a terminal window. (Shane-XB-Qian)
Solution:   Use the "vterm" variable instead of getting the terminal pointer
            from the current buffer.  (closes #11608)
2022-11-24 14:05:19 +00:00
Bram Moolenaar
47f1fdc28c patch 9.0.0939: still using simplified mappings when using kitty protocol
Problem:    Still using simplified mappings when using the kitty keyboard
            protocol.
Solution:   Use the kitty_protocol_state value to decide whether to use
            simplified mappings.  Improve how seenModifyOtherKeys is set and
            reset.
2022-11-24 13:27:36 +00:00
Christopher Plewright
0b228cddc7 patch 9.0.0938: MS-Windows: debug executable not found when running test
Problem:    MS-Windows: debug executable not found when running test.
Solution:   Look for vimd.exe. (Christopher Plewright, closes #11602)
2022-11-24 12:19:50 +00:00
shane.xb.qian
e2da59851a patch 9.0.0937: forked repositories send out useless email
Problem:    Forked repositories send out useless email.
Solution:   When Coverity fails to run just ignore it. (Shane-XB-Qian,
            closes #11604)
2022-11-24 12:01:45 +00:00
Bram Moolenaar
82946e1439 patch 9.0.0936: wrong type for "isunnamed" returned by getreginfo()
Problem:    Wrong type for "isunnamed" returned by getreginfo().
Solution:   Use VAR_BOOL instead of VAR_SPECIAL. (closes #11598)
2022-11-24 11:31:29 +00:00
Eisuke Kawashima
24482fbfd5 patch 9.0.0935: when using dash it may not be recognize as filetype "sh"
Problem:    When using dash it may not be recognize as filetype "sh".
Solution:   Add checks for "dash". (Eisuke Kawashima,closes #11600)
2022-11-24 10:58:10 +00:00
Bram Moolenaar
24fe33a83a patch 9.0.0934: various code formatting issues
Problem:    Various code formatting issues.
Solution:   Improve code formatting.
2022-11-24 00:09:02 +00:00
Bram Moolenaar
b59ae59a58 Update runtime files 2022-11-23 23:46:31 +00:00
Bram Moolenaar
43300f6034 patch 9.0.0933: Kitty shows "already at oldest change" on startup
Problem:    Kitty shows "already at oldest change" on startup.
Solution:   When receiving the keyboard protocol state return the ignore key.
            (closes #11601)
2022-11-23 23:30:58 +00:00
Bram Moolenaar
ecfd511e8d patch 9.0.0932: Oblivion files are not recognized
Problem:    Oblivion files are not recognized.
Solution:   Recognize Oblivion files and alike as "obse". (closes #11540)
2022-11-23 22:34:23 +00:00
Christopher Plewright
36446bbb62 patch 9.0.0931: MS-Windows: mouse column limited to 223
Problem:    MS-Windows: mouse column limited to 223.
Solution:   Use two bytes for each mouse coordinate.  Add the mouse position
            to scroll events. (Christopher Plewright, closes #11597)
2022-11-23 22:28:08 +00:00
Bram Moolenaar
63a2e360cc patch 9.0.0930: cannot debug the Kitty keyboard protocol with TermDebug
Problem:    Cannot debug the Kitty keyboard protocol with TermDebug.
Solution:   Add Kitty keyboard protocol support to the libvterm fork.
            Recognize the escape sequences that the protocol generates.  Add
            the 'keyprotocol' option to allow the user to specify for which
            terminal what protocol is to be used, instead of hard-coding this.
            Add recognizing the kitty keyboard protocol status.
2022-11-23 20:20:18 +00:00
Bram Moolenaar
0b6d6a186e patch 9.0.0929: build failure with tiny version
Problem:    Build failure with tiny version. (Tony Mechelynck)
Solution:   Add #ifdef.
2022-11-23 14:33:01 +00:00
Zdenek Dohnal
1d822afaf6 patch 9.0.0928: using Ruby LDFLAGS may cause build problems
Problem:    Using Ruby LDFLAGS may cause build problems.
Solution:   Do not add Ruby LDFLAGS to Vim's LDFLAGS. (Zdenek Dohnal,
            closes #11592)
2022-11-23 12:06:08 +00:00
Bram Moolenaar
96cbbe29de patch 9.0.0927: Coverity warns for using a NULL pointer
Problem:    Coverity warns for using a NULL pointer.
Solution:   Check for memory allocaion failure.
2022-11-23 11:36:22 +00:00
Bram Moolenaar
bc222152d8 patch 9.0.0926: Coverity warns for not using return value of dict_add()
Problem:    Coverity warns for not using return value of dict_add().
Solution:   When dict_add() fails then don't call hash_remove().
2022-11-23 11:34:01 +00:00
zeertzjq
df3c0eb41e patch 9.0.0925: two conditions are always false
Problem:    Two conditions are always false.
Solution:   Remove the conditions.  Update return value types to make clear
            what could be returned. (closes #11593)
2022-11-23 11:23:17 +00:00
Bram Moolenaar
c3e06e4bfa patch 9.0.0924: the first termcap entry of a builtin termcap is not used
Problem:    The first termcap entry of a builtin termcap is not used.
Solution:   Remove increment that was previously skipping the KS_NAME entry.
2022-11-22 22:03:39 +00:00
Bram Moolenaar
a787c24e00 patch 9.0.0923: second SIGWINCH signal may be ignored
Problem:    Second SIGWINCH signal may be ignored.
Solution:   When set_shellsize() is busy when called then run the inner code
            again when it's done.  (issue #424)
2022-11-22 20:41:05 +00:00
Bram Moolenaar
364438d1e8 patch 9.0.0922: Mermaid files are not recognized
Problem:    Mermaid files are not recognized.
Solution:   Add patterns for Mermaid. (Crag MacEachern)
2022-11-22 19:16:29 +00:00
Bram Moolenaar
9af2ea80a8 patch 9.0.0921: missing defined(PROTO) in #ifdef
Problem:    Missing defined(PROTO) in #ifdef.
Solution:   Adjust #ifdef so that proto works with different features.
            Clean up some preprocessor indenting.
2022-11-22 18:18:38 +00:00
Bram Moolenaar
b775e72439 patch 9.0.0920: cannot find an import prefixed with "s:"
Problem:    Cannot find an import prefixed with "s:". (Doug Kearns)
Solution:   Skip over the "s:". (closes #11585)
2022-11-22 18:12:44 +00:00
Bram Moolenaar
9c5b7cb4cf patch 9.0.0919: build failure with tiny features
Problem:    Build failure with tiny features.
Solution:   Adjust #ifdef's.
2022-11-22 13:29:20 +00:00
Christopher Plewright
0319306f20 patch 9.0.0918: MS-Windows: modifier keys do not work with mouse scroll event
Problem:    MS-Windows: modifier keys do not work with mouse scroll events.
Solution:   Use K_SPECIAL instead of CSI for the modifier keys. (Christopher
            Plewright, closes #11587)
2022-11-22 12:58:27 +00:00
Bram Moolenaar
35fc61cb5b patch 9.0.0917: the WinScrolled autocommand event is not enough
Problem:    The WinScrolled autocommand event is not enough.
Solution:   Add WinResized and provide information about what changed.
            (closes #11576)
2022-11-22 12:40:50 +00:00
Bram Moolenaar
ce30ccc06a patch 9.0.0916: getbufline() is inefficient for getting a single line
Problem:    getbufline() is inefficient for getting a single line.
Solution:   Add getbufoneline().
2022-11-21 19:57:04 +00:00
Bram Moolenaar
2996773276 patch 9.0.0915: WinScrolled may trigger immediately when defined
Problem:    WinScrolled may trigger immediately when defined.
Solution:   Initialize the fields in all windows. (closes #11582)
2022-11-20 12:11:45 +00:00
zeertzjq
228e422855 patch 9.0.0914: deletebufline() may move marks in the wrong window
Problem:    deletebufline() may move marks in the wrong window.
Solution:   Find a window for the buffer being changed. (closes #11583)
2022-11-20 11:13:17 +00:00
Bram Moolenaar
0a60f79fd0 patch 9.0.0913: only change in current window triggers the WinScrolled event
Problem:    Only a change in the current window triggers the WinScrolled
            event.
Solution:   Trigger WinScrolled if any window scrolled or changed size.
            (issue #11576)
2022-11-19 21:18:11 +00:00
Bram Moolenaar
c896adbcde patch 9.0.0912: libvterm with modifyOtherKeys level 2 does not match xterm
Problem:    libvterm with modifyOtherKeys level 2 does not match xterm.
Solution:   Adjust key code escape sequences to be the same as what xterm
            sends in modifyOtherKeys level 2 mode.  Check the value of
            no_reduce_keys before using it.
2022-11-19 19:02:40 +00:00
Yee Cheng Chin
e6392b1021 patch 9.0.0911: with 'smoothscroll' set mouse click position may be wrong
Problem:    With 'smoothscroll' set mouse click position may be wrong.
Solution:   Adjust computations for w_skipcol. (Yee Cheng Chin, closes #11514)
2022-11-19 14:31:08 +00:00
Bram Moolenaar
c934bfa1b7 patch 9.0.0910: setting lines in another buffer may not work well
Problem:    Setting lines in another buffer may not work well.
Solution:   Make sure the buffer being changed has a window. (issue #11558)
2022-11-19 13:59:43 +00:00
Bram Moolenaar
9fda81515b patch 9.0.0909: error message for layout change does not match action
Problem:    Error message for layout change does not match action.
Solution:   Pass the command to where the error is given. (closes #11573)
2022-11-19 13:14:10 +00:00
Yee Cheng Chin
361895d2a1 patch 9.0.0908: with 'smoothscroll' cursor may end up in wrong position
Problem:    With 'smoothscroll' cursor may end up in wrong position.
Solution:   Correct the computation of screen lines. (Yee Cheng Chin,
            closes #11502)
2022-11-19 12:25:16 +00:00
Bram Moolenaar
d63a85592c patch 9.0.0907: restoring window after WinScrolled may fail
Problem:    Restoring window after WinScrolled may fail.
Solution:   Lock the window layout when triggering WinScrolled.
2022-11-19 11:41:30 +00:00
Christopher Plewright
ff95ce0930 patch 9.0.0906: mouse scroll code is not optimal
Problem:    Mouse scroll code is not optimal.
Solution:   Properly organise Normal mode, Insert mode and common code.
            (Christopher Plewright, closes #11572)
2022-11-19 10:47:49 +00:00
Bram Moolenaar
02edfaa610 patch 9.0.0905: virtual text after the line wraps when 'wrap' is off
Problem:    Virtual text after the line wraps when 'wrap' is off.
Solution:   Only set text_prop_follows when wrapping. (closes #11463)
2022-11-18 23:13:47 +00:00
Bram Moolenaar
88456cd3c4 patch 9.0.0904: various comment and indent flaws
Problem:    Various comment and indent flaws.
Solution:   Improve comments and indenting.
2022-11-18 22:14:09 +00:00
Bram Moolenaar
d13166e788 Update runtime files 2022-11-18 21:49:57 +00:00
Bram Moolenaar
236dffab43 patch 9.0.0903: key code checker doesn't check modifyOtherKeys resource
Problem:    Key code checker doesn't check modifyOtherKeys resource.
Solution:   Request the modifyOtherKeys resource value.  Drop resource DCS
            responses.
2022-11-18 21:20:25 +00:00
Christopher Plewright
696d0a8625 patch 9.0.0902: some mouse scroll code is not in a good place
Problem:    Some mouse scroll code is not in a good place.
Solution:   Refactor the code. (Christopher Plewright, closes #11561)
2022-11-18 17:53:34 +00:00
Bram Moolenaar
0c34d56264 patch 9.0.0901: setting w_leftcol and handling side effects is confusing
Problem:    Setting w_leftcol and handling side effects is confusing.
Solution:   Use a function to set w_leftcol() and handle side effects.
2022-11-18 14:07:20 +00:00
Yee Cheng Chin
81ba26e9de patch 9.0.0900: cursor moves too far with 'smoothscroll'
Problem:    Cursor moves too far with 'smoothscroll'.
Solution:   Only move as far as really needed. (Yee Cheng Chin, closes #11504)
2022-11-18 12:52:50 +00:00
Bram Moolenaar
4654d63dec patch 9.0.0899: the builtin terminals are in one long list
Problem:    The builtin terminals are in one long list.
Solution:   Refactor into multiple lists and an index of the lists.
2022-11-17 22:05:12 +00:00
Bram Moolenaar
75ac25b496 patch 9.0.0898: with 'smoothscroll' cursor is one screen line too far down
Problem:    With 'smoothscroll' cursor is one screen line too far down. (Ernie
            Rael)
Solution:   Add a test that currently has the wrong result so that a fix can
            be made. (issue #11436)
2022-11-17 19:00:14 +00:00
mgramigna
12babe45a3 patch 9.0.0897: Clinical Quality Language files are not recognized
Problem:    Clinical Quality Language files are not recognized.
Solution:   Add the "*.cql" pattern. (Matthew Gramigna, closes #11452)
2022-11-17 18:30:16 +00:00
Bram Moolenaar
1d8765daba patch 9.0.0896: test for home key fails when 'term' is "tmux"
Problem:    Test for home key fails when 'term' is "tmux".
Solution:   Only save termcap entries that exist.  Adjust code for xHome to
            what xterm uses. (closes #11566)
2022-11-17 16:43:35 +00:00
zeertzjq
780154bf7a patch 9.0.0895: file renamed twice in test, missing feature check
Problem:    File renamed twice in test; missing feature check.
Solution:   Remove a rename() call.  Add check for cryptv feature.
            (closes #11564)
2022-11-17 15:23:52 +00:00
Bram Moolenaar
ee28c707e4 patch 9.0.0894: virtual text property highlight ignores window background
Problem:    Virtual text property highlight ignores window background.
Solution:   Combine text prop attribute with win_attr into extra_attr.
            (closes #11462)
2022-11-17 14:56:00 +00:00
Yee Cheng Chin
01ee52bab6 patch 9.0.0893: 'smoothscroll' cursor calculations wrong when 'number' is set
Problem:    'smoothscroll' cursor calculations wrong when 'number' is set.
Solution:   Correct the code that computes the width. (closes #11492)
2022-11-17 12:41:42 +00:00
Bram Moolenaar
f32fb93e43 patch 9.0.0892: may redraw when not needed
Problem:    May redraw when not needed, causing slow scrolling.
Solution:   Do not redraw when w_skipcol doesn't change.  When w_skipcol
            changes only redraw from the top. (issue #11559)
2022-11-17 11:34:38 +00:00
Bram Moolenaar
fc1b2d0961 patch 9.0.0891: virtual text below after match has wrong highlight
Problem:    Virtual text below after match has wrong highlight.
Solution:   Restore search_attr only after the virtual text.
            (closes #11446)
2022-11-16 22:12:57 +00:00
Bram Moolenaar
1573e73f1c patch 9.0.0890: no test for what patch 9.0.0827 fixes
Problem:    No test for what patch 9.0.0827 fixes.
Solution:   Add a test (still doesn't fail when fix is reverted).
2022-11-16 20:33:21 +00:00
Bram Moolenaar
8303035d67 patch 9.0.0889: keycode check script has a few flaws
Problem:    Keycode check script has a few flaws.
Solution:   Sort on terminal name.  Ignore XTGETTCAP responses.  Check for
            version and status response.  Update entries.
2022-11-16 16:08:30 +00:00
Aedin Louis Xavier
f10952e8c0 patch 9.0.0888: MS-Windows GUI: CTRL-] does not work on Swiss keyboard
Problem:    MS-Windows GUI: CTRL-] does not work on Swiss keyboard.
Solution:   Check the key code and don't consider it as a dead key. (Aedin
            Louis Xavier, closes #11556)
2022-11-16 12:02:28 +00:00
Bram Moolenaar
a44c7811ff patch 9.0.0887: cannot easily try out what codes various keys produce
Problem:    Cannot easily try out what codes various keys produce.
Solution:   Add a script to gather key code information, with an initial list
            of codes to compare with.
2022-11-15 22:59:07 +00:00
Christopher Plewright
44c2209352 patch 9.0.0886: horizontal mouse scroll only works in the GUI
Problem:    Horizontal mouse scroll only works in the GUI.
Solution:   Make horizontal mouse scroll also work in a terminal.
            (Christopher Plewright, closes #11448)
2022-11-15 17:43:36 +00:00
Bram Moolenaar
b53a190e9f patch 9.0.0885: informational message has an error message number
Problem:    Informational message has an error message number.
Solution:   Use a message without an error number. (closes #11530)
2022-11-15 13:57:38 +00:00
zeertzjq
cdeb65729d patch 9.0.0884: mouse shape remains in op-pending mode after failed change
Problem:    Mouse shape remains in op-pending mode after failed change.
Solution:   Reset finish_op and restore it. (closes #11545)
2022-11-15 13:46:12 +00:00
Bram Moolenaar
698a00f55d patch 9.0.0883: a silent mapping may cause dots on the command line
Problem:    A silent mapping may cause dots on the command line.
Solution:   Don't show dots for completion if they are not going to be removed
            again. (closes #11501)
2022-11-14 22:07:45 +00:00
Bram Moolenaar
c3d27ada14 patch 9.0.0882: using freed memory after SpellFileMissing autocmd uses bwipe
Problem:    Using freed memory after SpellFileMissing autocmd uses bwipe.
Solution:   Bail out if the window no longer exists.
2022-11-14 20:52:14 +00:00
Bram Moolenaar
24dc19cdb2 patch 9.0.0881: cannot get the currently showing mouse shape
Problem:    Cannot get the currently showing mouse shape.
Solution:   Add getmouseshape().
2022-11-14 19:49:15 +00:00
K.Takata
161b6ac04f patch 9.0.0880: preprocessor indenting is off
Problem:    Preprocessor indenting is off.
Solution:   Adjust preprocessor indentation. (Ken Takata, closes #11546)
2022-11-14 15:31:07 +00:00
K.Takata
dcbdd82d05 patch 9.0.0879: unnecessary nesting in makefile
Problem:    Unnecessary nesting in makefile.
Solution:   Join "else" and "ifeq". (Ken Takata, closes #11547)
2022-11-14 14:50:15 +00:00
Bram Moolenaar
b298fe6cba patch 9.0.0878: Coverity warns for dead code
Problem:    Coverity warns for dead code.
Solution:   Remove the dead code.
2022-11-14 14:36:41 +00:00
Bram Moolenaar
cf2594fbf3 patch 9.0.0877: using freed memory with :comclear while listing commands
Problem:    Using freed memory with :comclear while listing commands.
Solution:   Bail out when the command list has changed. (closes #11440)
2022-11-13 23:30:06 +00:00
Yegappan Lakshmanan
68353e5270 patch 9.0.0876: code is indented more than needed
Problem:    Code is indented more than needed.
Solution:   Split ExpandEscape() in two. (Yegappan Lakshmanan, closes #11539)
2022-11-13 22:38:10 +00:00
Bram Moolenaar
398a26f7fc patch 9.0.0875: using freed memory when executing delfunc at more prompt
Problem:    Using freed memory when executing delfunc at the more prompt.
Solution:   Check function list not changed in another place. (closes #11437)
2022-11-13 22:13:33 +00:00
Bram Moolenaar
920d311480 patch 9.0.0874: using freed memory when executing unmenu at more prompt
Problem:    Using freed memory when executing unmenu at the more prompt.
Solution:   Do not clear menus while listing them. (closes #11439)
2022-11-13 21:10:02 +00:00
Bram Moolenaar
bf533e4e88 patch 9.0.0873: using freed memory when executing mapclear at more prompt
Problem:    Using freed memory when executing mapclear at the more prompt.
Solution:   Do not clear mappings while listing them. (closes #11438)
2022-11-13 20:43:19 +00:00
Yegappan Lakshmanan
623e94e138 patch 9.0.0872: code is indented more than needed
Problem:    Code is indented more than needed.
Solution:   Return early. (Yegappan Lakshmanan, closes #11538)
2022-11-13 18:11:17 +00:00
Bram Moolenaar
3b014befa0 patch 9.0.0871: using freed memory when clearing augroup at more prompt
Problem:    Using freed memory when clearing augroup at more prompt.
Solution:   Delay clearing augroup until it's safe. (closes #11441)
2022-11-13 17:53:46 +00:00
Bram Moolenaar
2f7bfe66a1 patch 9.0.0870: get E967 when using text property in quickfix window
Problem:    Get E967 when using text property in quickfix window. (Sergey
            Vlasov)
Solution:   Do not add an extra NUL and compute the text length correctly.
            (closes #11513)
2022-11-13 12:54:50 +00:00
Bram Moolenaar
28c56d5013 patch 9.0.0869: bogus error when string used after :elseif
Problem:    Bogus error when string used after :elseif.
Solution:   Do not consider a double quote the start of a comment.
            (closes #11534)
2022-11-12 23:12:55 +00:00
Christopher Plewright
1140b51e83 patch 9.0.0868: MS-Windows: after Vim exits console resizing problem
Problem:    MS-Windows: after Vim exits console resizing does not work
            properly.
Solution:   Restore screen behavior checks for various WT and VTP
            combinations. (Christopher Plewright, closes #11526,
            closes #11507)
2022-11-12 18:46:05 +00:00
Bram Moolenaar
d6e91385f0 patch 9.0.0867: wildmenu redrawing code is spread out
Problem:    Wildmenu redrawing code is spread out.
Solution:   Refactor to move code together. (closes #11528)
2022-11-12 17:44:13 +00:00
zeertzjq
f7570f2107 patch 9.0.0866: no test for what patch 8.2.2207 fixes
Problem:    No test for what patch 8.2.2207 fixes.
Solution:   Add a test case. (closes #11531)
2022-11-12 17:30:25 +00:00
Nir Lichtman
b3052aa1b5 patch 9.0.0865: duplicate arguments are not always detected
Problem:    Duplicate arguments are not always detected.
Solution:   Expand to full path before comparing arguments. (Nir Lichtman,
            closes #11505, closes #9402)
2022-11-12 17:00:31 +00:00
Bram Moolenaar
6600447c7b patch 9.0.0864: crash when using "!!" without a previous shell command
Problem:    Crash when using "!!" without a previous shell command.
Solution:   Check "prevcmd" is not NULL. (closes #11487)
2022-11-12 16:36:35 +00:00
Yegappan Lakshmanan
4c8d2f02b3 patch 9.0.0863: col() and charcol() only work for the current window
Problem:    col() and charcol() only work for the current window.
Solution:   Add an optional winid argument. (Yegappan Lakshmanan,
            closes #11466, closes #11461)
2022-11-12 16:07:47 +00:00
Bram Moolenaar
0aad88f073 patch 9.0.0862: default value of 'endoffile' is wrong
Problem:    Default value of 'endoffile' is wrong.
Solution:   The default must be 'noendoffile'.
2022-11-12 11:54:26 +00:00
Bram Moolenaar
9954dc39ea patch 9.0.0861: solution for "!!sort" in closed fold is not optimal
Problem:    Solution for "!!sort" in closed fold is not optimal.
Solution:   Use a different range instead of the subtle difference in handling
            a range with an offset. (issue #11487)
2022-11-11 22:58:36 +00:00
Bram Moolenaar
a20be06f97 patch 9.0.0860: MS-Windows: windres fails with clang 15.0.4
Problem:    MS-Windows: windres fails with clang 15.0.4.
Solution:   Use llvm-windres. (John Marriott)
2022-11-11 21:24:18 +00:00
Bram Moolenaar
fd3084b6e2 patch 9.0.0859: compiler warning for unused variable
Problem:    Compiler warning for unused variable.
Solution:   Add #ifdef.
2022-11-11 01:40:48 +00:00
Bram Moolenaar
f00112d558 patch 9.0.0858: "!!sort" in a closed fold sorts too many lines
Problem:    "!!sort" in a closed fold sorts too many lines.
Solution:   Round to end of fold after adding the line count. (closes #11487)
2022-11-11 01:20:35 +00:00
K.Takata
37f1030fd6 patch 9.0.0857: selecting MSVC 2017 does not set $PLATFORM
Problem:    Selecting MSVC 2017 does not set $PLATFORM.
Solution:   Use $VSCMD_ARG_TGT_ARCH. (Ken Takata, closes #11485)
2022-11-10 23:17:19 +00:00
Christopher Plewright
d55bfcaa9b patch 9.0.0856: MS-Windows: executable not found when running test
Problem:    MS-Windows: executable not found when running individual test.
Solution:   Also look for vimd.exe. (Christopher Plewright, closes #11525)
2022-11-10 18:21:30 +00:00
zeertzjq
09a93e3e66 patch 9.0.0855: comment not located above the code it refers to
Problem:    Comment not located above the code it refers to.
Solution:   Move the comment. (closes #11527)
2022-11-10 17:05:28 +00:00
zeertzjq
7265851b2b patch 9.0.0854: no proper test for what 9.0.0846 fixes
Problem:    No proper test for what 9.0.0846 fixes.
Solution:   Run test in a terminal so that the hit-enter prompt can show up.
            (closes #11523)
2022-11-10 13:21:34 +00:00
Bram Moolenaar
98aebcc2c6 patch 9.0.0853: terminal mouse test is still flaky on MacOS M1
Problem:    Terminal mouse test is still flaky on MacOS M1.
Solution:   Also wait for the file to have some contents.
2022-11-10 12:38:16 +00:00
Bram Moolenaar
90e66ec1e1 patch 9.0.0852: crypt test is skipped if xxd is not found
Problem:    Crypt test is skipped if xxd is not found.
Solution:   Find xxd where it was supposed to be build.
2022-11-10 00:25:05 +00:00
Bram Moolenaar
1d139a012e patch 9.0.0851: terminal mouse test is still flaky
Problem:    Terminal mouse test is still flaky.
Solution:   Also use WaitForAssert().
2022-11-10 00:09:22 +00:00
Christopher Plewright
38804d6457 patch 9.0.0850: MS-Windows Terminal has unstable color control
Problem:    MS-Windows Terminal has unstable color control.
Solution:   Do not try to read the old command prompt colortable, use modern
            VT sequences. (Christopher Plewright, closes #11450,
            closes #11373)
2022-11-09 23:55:52 +00:00
James McCoy
157241e879 patch 9.0.0849: terminal mouse test is a bit flaky
Problem:    Terminal mouse test is a bit flaky.
Solution:   Add WaitFor() calls. (James McCoy closes #11519)  Tune wait times
            to reduce flakiness.
2022-11-09 23:29:14 +00:00
Bram Moolenaar
76db9e0763 Update runtime files 2022-11-09 21:21:04 +00:00
K.Takata
0fd7be7f95 patch 9.0.0848: help item for --log argument is not aligned nicely
Problem:    Help item for --log argument is not aligned nicely.
Solution:   Add a Tab. (Ken Takata, closes #11521)
2022-11-09 16:29:24 +00:00
K.Takata
80613d64e6 patch 9.0.0847: CI: not totally clear what MS-Windows version is used
Problem:    CI: not totally clear what MS-Windows version is used.
Solution:   Show the Windows version. (Ken Takata, closes #11524)
2022-11-09 16:12:47 +00:00
Bram Moolenaar
f220643c26 patch 9.0.0846: using assert_fails() may cause hit-enter prompt
Problem:    Using assert_fails() may cause hit-enter prompt.
Solution:   Set no_wait_return. (closes #11522)
2022-11-09 00:44:30 +00:00
shane.xb.qian
4e7590ec00 patch 9.0.0845: shell command with just space gives strange error
Problem:    Shell command with just space gives strange error.
Solution:   Skip white space at start of the argument. (Christian Brabandt,
            Shane-XB-Qian, closes #11515, closes #11495)
2022-11-08 21:40:04 +00:00
Luuk van Baal
7b224fdf4a patch 9.0.0844: handling 'statusline' errors is spread out
Problem:    Handling 'statusline' errors is spread out.
Solution:   Pass the option name to the lower levels so the option can be
            reset there when an error is encountered. (Luuk van Baal,
            closes #11467)
2022-11-07 12:16:51 +00:00
Carlos A Becker
1756f4b218 patch 9.0.0843: VHS tape files are not recognized
Problem:    VHS tape files are not recognized.
Solution:   Add a filetype pattern. (Carlos Alexandro Becker, closes #11452)
2022-11-07 11:17:29 +00:00
Yee Cheng Chin
0e364c9fca patch 9.0.0842: Unicode range for Apple SF symbols is outdated
Problem:    Unicode range for Apple SF symbols is outdated.
Solution:   Update to SF Symbols 4. (Yee Cheng Chin, closes #11474)
2022-11-07 11:05:52 +00:00
zeertzjq
7af3ee2b83 patch 9.0.0841: deletebufline() does not always return 1 on failure
Problem:    deletebufline() does not always return 1 on failure.
Solution:   Refactor the code to make it work more predictable. (closes #11511)
2022-11-06 22:26:05 +00:00
Bram Moolenaar
adbc08fd69 patch 9.0.0840: cannot change a slice of a const list
Problem:    Cannot change a slice of a const list. (Takumi KAGIYAMA)
Solution:   Remove the const flag from the slice type. (closes #11490)
2022-11-06 18:27:17 +00:00
Yee Cheng Chin
69a8bb8dc1 patch 9.0.0839: test may fail depending on sequence of events
Problem:    Test may fail depending on sequence of events.
Solution:   Accept error codes in either order. (Yee Cheng Chin,
            closes #11510)
2022-11-06 12:25:47 +00:00
Bram Moolenaar
a25f718431 patch 9.0.0838: compiler warnings for unused variables
Problem:    Compiler warnings for unused variables.
Solution:   Addjust #ifdef and remove unused variables. (John Marriott)
2022-11-06 11:27:46 +00:00
Bram Moolenaar
cd9c8d400c patch 9.0.0837: append() reports failure when not appending anything
Problem:    append() reports failure when not appending anything.
Solution:   Only report failure when appending something. (closes #11498)
2022-11-05 23:46:43 +00:00
zeertzjq
91c75d18d9 patch 9.0.0836: wrong error when using extend() with funcref
Problem:    Wrong error when using extend() with funcref.
Solution:   Better check the variable type. (closes #11468, closes #11455)
2022-11-05 20:21:58 +00:00
K.Takata
845bbb72ed patch 9.0.0835: the window title is not redrawn when 'endoffile' changes
Problem:    The window title is not redrawn when 'endoffile' changes.
Solution:   redraw the window title when 'endoffile' is changed. (Ken Takata,
            closes #11488)
2022-11-05 18:31:19 +00:00
Sam James
f8ea10677d patch 9.0.0834: warning for missing return type
Problem:    Warning for missing return type.
Solution:   Add "int". (San James, closes #11496)
2022-11-05 15:13:50 +00:00
Yee Cheng Chin
25b8420c2b patch 9.0.0833: Mac: no +sound feature in huge build
Problem:    Mac: no +sound feature in huge build.
Solution:   Enable +sound in Mac huge build. (closes #11497)
2022-11-05 14:23:14 +00:00
Philip H
5a5f17f9b3 patch 9.0.0832: deprecation warning causes build failure
Problem:    Deprecation warning causes build failure.
Solution:   Suppress deprecation warning. (closes #11503)
2022-11-05 14:05:31 +00:00
ichizok
6c3d3e6904 patch 9.0.0831: compiler warning for redefining HAVE_DUP
Problem:    Compiler warning for redefining HAVE_DUP.
Solution:   Undefine HAVE_DUP if needed. (Ozaki Kiichi, closes #11484)
2022-11-04 22:38:11 +00:00
Philip H
5375205761 patch 9.0.0830: compiling with Perl on Mac 12 fails
Problem:    Compiling with Perl on Mac 12 fails.
Solution:   Suppress infinite warnings. (closes #11499)
2022-11-04 22:32:21 +00:00
zeertzjq
3d19c81a11 patch 9.0.0829: wrong counts in macro comment
Problem:    Wrong counts in macro comment.
Solution:   Update the value counts. (closes #11480)
2022-11-04 21:58:36 +00:00
dundargoc
c57b5bcd22 patch 9.0.0828: various typos
Problem:    Various typos.
Solution:   Correct typos. (closes #11432)
2022-11-02 13:30:51 +00:00
Bram Moolenaar
1410d1841b patch 9.0.0827: <Home> key in tmux doesn't work when 'term' set to "xterm"
Problem:    The <Home> key in tmux doesn't work when 'term' is set to "xterm".
            (Dominique Pellé)
Solution:   Only use '@' in a termcap key entry for "1" when ";" follows.
            (closes #11429)
2022-11-01 22:04:40 +00:00
K.Takata
3af982196b patch 9.0.0826: if 'endofline' is set CTRL-Z may be written in a wrong place
Problem:    If 'endofline' is set the CTRL-Z may be written in the wrong
            place.
Solution:   Write CTRL-Z at the end of the file.  Update the help to explain
            the possibilities better. (Ken Takata, closes #11486)
2022-11-01 20:36:19 +00:00
zeertzjq
8e0ccb6bc2 patch 9.0.0825: cannot drag an entry in the tabpage line
Problem:    Cannot drag an entry in the tabpage line.
Solution:   Clear dragwin instead of got_click. (closes #11483,
            closes #11482)
2022-11-01 18:35:27 +00:00
zeertzjq
873f41a018 patch 9.0.0824: crash when using win_move_separator() in other tab page
Problem:    Crash when using win_move_separator() in other tab page.
Solution:   Check for valid window in current tab page.
            (closes #11479, closes #11427)
2022-11-01 11:44:43 +00:00
Bram Moolenaar
7a7db047dc patch 9.0.0823: mouse drag test fails
Problem:    Mouse drag test fails.
Solution:   Only reset the mouse click flag when actually switching to another
            tab page.  Disable test that keeps failing.
2022-10-31 23:07:11 +00:00
Bram Moolenaar
8ab9ca93ee patch 9.0.0822: crash when dragging the statusline with a mapping
Problem:    Crash when dragging the statusline with a mapping.
Solution:   Check for valid window pointer. (issue #11427)
2022-10-31 13:06:26 +00:00
Bram Moolenaar
86e6717ace patch 9.0.0820: memory leak with empty shell command
Problem:    Memory leak with empty shell command.
Solution:   Free the empty string.
2022-10-31 12:24:12 +00:00
Bram Moolenaar
03d6e6f42b patch 9.0.0820: memory leak with empty shell command
Problem:    Memory leak with empty shell command.
Solution:   Free the empty string.
2022-10-29 21:53:08 +01:00
Bram Moolenaar
1577537f10 patch 9.0.0819 2022-10-29 20:01:52 +01:00
Bram Moolenaar
6ebe4f970b Update runtime files 2022-10-28 20:47:54 +01:00
Bram Moolenaar
3f68a4136e Add missing entry for the 'endoffile' option. 2022-10-28 17:04:21 +01:00
Bram Moolenaar
72c8e3c070 Fix wrong struct access for member. 2022-10-28 16:51:46 +01:00
Bram Moolenaar
f0b567e32a Revert unintended Makefile change 2022-10-28 16:47:14 +01:00
Bram Moolenaar
ad353244f2 patch 9.0.0818 2022-10-22 12:23:12 +01:00
Bram Moolenaar
fb0cf2357e patch 9.0.0817 2022-10-22 11:25:19 +01:00
Martin Tournoij
9c50eeb401 patch 9.0.0815 2022-10-22 09:02:56 +01:00
Justin M. Keyes
436e5d395f patch 9.0.0814: aws config files are not recognized
Problem:    Aws config files are not recognized.
Solution:   Use "confini" for aws config files. (Justin M. Keyes,
            closes #11416)
2022-10-21 14:34:25 +01:00
Bram Moolenaar
4bc85f23ed patch 9.0.0813: Kitty terminal is not recognized
Problem:    Kitty terminal is not recognized.
Solution:   Recognize Kitty by the termresponse and then do not set
            seenModifyOtherKeys, since Kitty doesn't support that.
            (issue #11413)
2022-10-21 14:17:24 +01:00
Christopher Plewright
7fa02bcb3b patch 9.0.0812: GUI mouse scrollwheel mappings don't work
Problem:    GUI mouse scrollwheel mappings don't work.
Solution:   Add check for "gui.in_use". (Christopher Plewright, closes #11418)
2022-10-21 13:03:33 +01:00
Bram Moolenaar
2435adf8eb patch 9.0.0811: error if :echowin is preceded by a command modifier
Problem:    Error if :echowin is preceded by a command modifier.
Solution:   Do not give an error for range when there is a modifier.
            (closes #11414)
2022-10-21 12:05:46 +01:00
Bram Moolenaar
5b2a3d77d3 patch 9.0.0810: readblob() returns empty when trying to read too much
Problem:    readblob() returns empty when trying to read too much.
Solution:   Return what is available.
2022-10-21 11:25:30 +01:00
431 changed files with 20779 additions and 4940 deletions

View File

@@ -8,9 +8,9 @@ freebsd_task:
- name: FreeBSD 13.1
freebsd_instance:
image_family: freebsd-13-1
- name: FreeBSD 12.3
- name: FreeBSD 12.4
freebsd_instance:
image_family: freebsd-12-3
image_family: freebsd-12-4
timeout_in: 20m
install_script:
- pkg update -f

9
.github/CODEOWNERS vendored
View File

@@ -51,6 +51,7 @@ runtime/compiler/dartanalyser.vim @dkearns
runtime/compiler/dartdevc.vim @dkearns
runtime/compiler/dartdoc.vim @dkearns
runtime/compiler/dartfmt.vim @dkearns
runtime/compiler/dotnet.vim @nickspoons
runtime/compiler/eruby.vim @dkearns
runtime/compiler/fbc.vim @dkearns
runtime/compiler/gawk.vim @dkearns
@@ -104,6 +105,7 @@ runtime/doc/pi_vimball.txt @cecamp
runtime/doc/pi_zip.txt @cecamp
runtime/doc/ps1.txt @heaths
runtime/ftplugin/abaqus.vim @costerwi
runtime/ftplugin/apache.vim @dubgeiser
runtime/ftplugin/awk.vim @dkearns
runtime/ftplugin/basic.vim @dkearns
runtime/ftplugin/bst.vim @tpope
@@ -166,6 +168,7 @@ runtime/ftplugin/nginx.vim @chr4
runtime/ftplugin/nroff.vim @a-vrma
runtime/ftplugin/nsis.vim @k-takata
runtime/ftplugin/octave.vim @dkearns
runtime/ftplugin/openvpn.vim @ObserverOfTime
runtime/ftplugin/pascal.vim @dkearns
runtime/ftplugin/pbtxt.vim @lakshayg
runtime/ftplugin/pdf.vim @tpope
@@ -179,6 +182,7 @@ runtime/ftplugin/python.vim @tpict
runtime/ftplugin/qb64.vim @dkearns
runtime/ftplugin/r.vim @jalvesaq
runtime/ftplugin/racket.vim @benknoble
runtime/ftplugin/readline.vim @dkearns
runtime/ftplugin/rhelp.vim @jalvesaq
runtime/ftplugin/rmd.vim @jalvesaq
runtime/ftplugin/rnoweb.vim @jalvesaq
@@ -294,6 +298,7 @@ runtime/plugin/netrwPlugin.vim @cecamp
runtime/plugin/tarPlugin.vim @cecamp
runtime/plugin/vimballPlugin.vim @cecamp
runtime/plugin/zipPlugin.vim @cecamp
runtime/plugin/manpager.vim @Konfekt
runtime/syntax/abaqus.vim @costerwi
runtime/syntax/aidl.vim @dpelle
runtime/syntax/amiga.vim @cecamp
@@ -360,6 +365,7 @@ runtime/syntax/haml.vim @tpope
runtime/syntax/hare.vim @rsaihe
runtime/syntax/haskell.vim @coot
runtime/syntax/hgcommit.vim @k-takata
runtime/syntax/hollywood.vim @sodero
runtime/syntax/html.vim @dkearns
runtime/syntax/i3config.vim @hiqua
runtime/syntax/icon.vim @dkearns
@@ -390,8 +396,10 @@ runtime/syntax/n1ql.vim @pr3d4t0r
runtime/syntax/netrw.vim @cecamp
runtime/syntax/nginx.vim @chr4
runtime/syntax/ninja.vim @nico
runtime/syntax/nix.vim @equill
runtime/syntax/nroff.vim @jmarshall
runtime/syntax/nsis.vim @k-takata
runtime/syntax/openvpn.vim @ObserverOfTime
runtime/syntax/pascal.vim @dkearns
runtime/syntax/pbtxt.vim @lakshayg
runtime/syntax/pdf.vim @tpope
@@ -459,6 +467,7 @@ runtime/syntax/vdf.vim @ObserverOfTime
runtime/syntax/vim.vim @cecamp
runtime/syntax/vroom.vim @dbarnett
runtime/syntax/wast.vim @rhysd
runtime/syntax/wdl.vim @zenmatic
runtime/syntax/wget.vim @dkearns
runtime/syntax/wget2.vim @dkearns
runtime/syntax/xbl.vim @dkearns

View File

@@ -174,22 +174,23 @@ jobs:
sudo usermod -a -G audio "${USER}"
sudo bash ci/setup-xvfb.sh
- name: Cache snd-dummy
uses: actions/cache@v3
with:
path: ${{ env.SND_DUMMY_DIR }}
key: linux-${{ env.LINUX_VERSION }}-snd-dummy
# FIXME: Temporarily disabled because of build errors
#- name: Cache snd-dummy
# uses: actions/cache@v3
# with:
# path: ${{ env.SND_DUMMY_DIR }}
# key: linux-${{ env.LINUX_VERSION }}-snd-dummy
- name: Set up snd-dummy
run: |
if [[ ! -e ${SND_DUMMY_DIR}/snd-dummy.ko ]]; then
bash ci/build-snd-dummy.sh
fi
cd "${SND_DUMMY_DIR}"
sudo insmod soundcore.ko
sudo insmod snd.ko
sudo insmod snd-pcm.ko
sudo insmod snd-dummy.ko
#- name: Set up snd-dummy
# run: |
# if [[ ! -e ${SND_DUMMY_DIR}/snd-dummy.ko ]]; then
# bash ci/build-snd-dummy.sh
# fi
# cd "${SND_DUMMY_DIR}"
# sudo insmod soundcore.ko
# sudo insmod snd.ko
# sudo insmod snd-pcm.ko
# sudo insmod snd-dummy.ko
- name: Check autoconf
if: contains(matrix.extra, 'unittests')
@@ -401,6 +402,9 @@ jobs:
id: init
shell: bash
run: |
# Show Windows version
cmd /c ver
git config --global core.autocrlf input
if [ "${{ matrix.arch }}" = "x64" ]; then
@@ -422,9 +426,9 @@ jobs:
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
choco install python2 --no-progress --forcex86
else
choco install python2
choco install python2 --no-progress
fi
fi
python3_dir=$(cat "/proc/$cygreg/HKEY_LOCAL_MACHINE/SOFTWARE/Python/PythonCore/${PYTHON3_VER_DOT}$pyreg/InstallPath/@")

View File

@@ -15,20 +15,22 @@ jobs:
CC: gcc
CFLAGS: -Wno-deprecated-declarations
DEBIAN_FRONTEND: noninteractive
TOKEN: ${{ secrets.COVERITY_SCAN_TOKEN }}
steps:
- name: Checkout repository from github
if: env.TOKEN
uses: actions/checkout@v3
- name: Download Coverity
if: env.TOKEN
run: |
wget -q https://scan.coverity.com/download/cxx/linux64 --post-data "token=$TOKEN&project=vim" -O coverity_tool.tgz
mkdir cov-scan
tar ax -f coverity_tool.tgz --strip-components=1 -C cov-scan
env:
TOKEN: ${{ secrets.COVERITY_SCAN_TOKEN }}
- name: Install packages
if: env.TOKEN
run: |
sudo apt update && sudo apt install -y \
autoconf \
@@ -47,6 +49,7 @@ jobs:
libsodium-dev
- name: Set up environment
if: env.TOKEN
run: |
echo "$(pwd)/cov-scan/bin" >> $GITHUB_PATH
(
@@ -55,6 +58,7 @@ jobs:
) >> $GITHUB_ENV
- name: Configure
if: env.TOKEN
run: |
./configure --with-features=huge ${CONFOPT} --enable-fail-if-missing
# Append various warning flags to CFLAGS.
@@ -62,10 +66,12 @@ jobs:
sed -i -f ci/config.mk.${CC}.sed src/auto/config.mk
- name: Build/scan vim
if: env.TOKEN
run: |
cov-build --dir cov-int make -j${NPROC}
- name: Submit results
if: env.TOKEN
run: |
tar zcf cov-scan.tgz cov-int
curl --form token=$TOKEN \
@@ -75,5 +81,4 @@ jobs:
--form description="Automatic GHA scan" \
'https://scan.coverity.com/builds?project=vim'
env:
TOKEN: ${{ secrets.COVERITY_SCAN_TOKEN }}
EMAIL: ${{ secrets.COVERITY_SCAN_EMAIL }}

View File

@@ -1,4 +0,0 @@
# Format of this file: https://lgtm.com/help/lgtm/lgtm.yml-configuration-file
path_classifiers:
documentation:
- runtime/tutor/tutor*

View File

@@ -12,9 +12,9 @@ SRC_ALL = \
.github/workflows/ci.yml \
.github/workflows/codeql-analysis.yml \
.github/workflows/coverity.yml \
.github/dependabot.yml \
.gitignore \
.hgignore \
.lgtm.yml \
.appveyor.yml \
.codecov.yml \
ci/appveyor.bat \
@@ -87,10 +87,11 @@ SRC_ALL = \
src/job.c \
src/json.c \
src/json_test.c \
src/keymap.h \
src/kword_test.c \
src/list.c \
src/locale.c \
src/keymap.h \
src/logfile.c \
src/macros.h \
src/main.c \
src/map.c \
@@ -161,6 +162,7 @@ SRC_ALL = \
src/version.h \
src/vim.h \
src/vim9.h \
src/vim9class.c \
src/vim9cmds.c \
src/vim9compile.c \
src/vim9execute.c \
@@ -177,6 +179,8 @@ SRC_ALL = \
src/testdir/Make_all.mak \
src/testdir/*.in \
src/testdir/*.py \
src/testdir/keycode_check.vim \
src/testdir/keycode_check.json \
src/testdir/lsan-suppress.txt \
src/testdir/sautest/autoload/*.vim \
src/testdir/testluaplugin/lua/testluaplugin/*.lua \
@@ -271,6 +275,7 @@ SRC_ALL = \
src/proto/json.pro \
src/proto/list.pro \
src/proto/locale.pro \
src/proto/logfile.pro \
src/proto/main.pro \
src/proto/map.pro \
src/proto/mark.pro \
@@ -322,6 +327,7 @@ SRC_ALL = \
src/proto/usercmd.pro \
src/proto/userfunc.pro \
src/proto/version.pro \
src/proto/vim9class.pro \
src/proto/vim9cmds.pro \
src/proto/vim9compile.pro \
src/proto/vim9execute.pro \
@@ -394,6 +400,7 @@ SRC_ALL = \
src/libvterm/t/66screen_extent.test \
src/libvterm/t/67screen_dbl_wh.test \
src/libvterm/t/68screen_termprops.test \
src/libvterm/t/69screen_reflow.test \
src/libvterm/t/90vttest_01-movement-1.test \
src/libvterm/t/90vttest_01-movement-2.test \
src/libvterm/t/90vttest_01-movement-3.test \
@@ -641,6 +648,7 @@ SRC_MAC = \
src/os_mac_conv.c \
src/os_macosx.m \
src/proto/os_mac_conv.pro \
src/proto/os_macosx.pro \
# source files for VMS (in the extra archive)
SRC_VMS = \
@@ -775,6 +783,7 @@ RT_SCRIPTS = \
runtime/autoload/README.txt \
runtime/autoload/dist/*.vim \
runtime/autoload/xml/*.vim \
runtime/autoload/zig/*.vim \
runtime/colors/*.vim \
runtime/colors/README.txt \
runtime/colors/lists/*.vim \

View File

@@ -3,7 +3,7 @@ vim9script
# Vim functions for file type detection
#
# Maintainer: Bram Moolenaar <Bram@vim.org>
# Last Change: 2022 Apr 13
# Last Change: 2022 Nov 24
# These functions are moved here from runtime/filetype.vim to make startup
# faster.
@@ -712,7 +712,8 @@ export def SetFileTypeSH(name: string)
if exists("b:is_sh")
unlet b:is_sh
endif
elseif name =~ '\<sh\>'
elseif name =~ '\<sh\>' || name =~ '\<dash\>'
# Ubuntu links "sh" to "dash", thus it is expected to work the same way
b:is_sh = 1
if exists("b:is_kornshell")
unlet b:is_kornshell
@@ -809,10 +810,13 @@ export def SQL()
enddef
# This function checks the first 25 lines of file extension "sc" to resolve
# detection between scala and SuperCollider
# detection between scala and SuperCollider.
# NOTE: We don't check for 'Class : Method', as this can easily be confused
# with valid Scala like `val x : Int = 3`. So we instead only rely on
# checks that can't be confused.
export def FTsc()
for lnum in range(1, min([line("$"), 25]))
if getline(lnum) =~# '[A-Za-z0-9]*\s:\s[A-Za-z0-9]\|var\s<\|classvar\s<\|\^this.*\||\w*|\|+\s\w*\s{\|\*ar\s'
if getline(lnum) =~# 'var\s<\|classvar\s<\|\^this.*\||\w\+|\|+\s\w*\s{\|\*ar\s'
setf supercollider
return
endif

View File

@@ -4,7 +4,7 @@ vim9script
# Invoked from "scripts.vim" in 'runtimepath'
#
# Maintainer: Bram Moolenaar <Bram@vim.org>
# Last Change: 2022 Feb 13
# Last Change: 2022 Nov 24
export def DetectFiletype()
var line1 = getline(1)
@@ -53,8 +53,8 @@ def DetectFromHashBang(firstline: string)
name = 'wish'
endif
# Bourne-like shell scripts: bash bash2 ksh ksh93 sh
if name =~ '^\(bash\d*\|\|ksh\d*\|sh\)\>'
# Bourne-like shell scripts: bash bash2 dash ksh ksh93 sh
if name =~ '^\(bash\d*\|dash\|ksh\d*\|sh\)\>'
call dist#ft#SetFileTypeSH(line1)
# csh scripts

View File

@@ -712,6 +712,9 @@ func! tohtml#GetUserSettings() "{{{
call tohtml#GetOption(user_settings, 'no_foldcolumn', user_settings.ignore_folding)
call tohtml#GetOption(user_settings, 'hover_unfold', 0 )
call tohtml#GetOption(user_settings, 'no_pre', 0 )
call tohtml#GetOption(user_settings, 'no_doc', 0 )
call tohtml#GetOption(user_settings, 'no_links', 0 )
call tohtml#GetOption(user_settings, 'no_modeline', 0 )
call tohtml#GetOption(user_settings, 'no_invalid', 0 )
call tohtml#GetOption(user_settings, 'whole_filler', 0 )
call tohtml#GetOption(user_settings, 'use_xhtml', 0 )
@@ -752,7 +755,7 @@ func! tohtml#GetUserSettings() "{{{
" pre_wrap doesn't do anything if not using pre or not using CSS
if user_settings.no_pre || !user_settings.use_css
let user_settings.pre_wrap=0
let user_settings.pre_wrap = 0
endif
"}}}

View File

@@ -0,0 +1,100 @@
" Adapted from fatih/vim-go: autoload/go/fmt.vim
"
" Copyright 2011 The Go Authors. All rights reserved.
" Use of this source code is governed by a BSD-style
" license that can be found in the LICENSE file.
"
" Upstream: https://github.com/ziglang/zig.vim
function! zig#fmt#Format() abort
" Save cursor position and many other things.
let view = winsaveview()
if !executable('zig')
echohl Error | echomsg "no zig binary found in PATH" | echohl None
return
endif
let cmdline = 'zig fmt --stdin --ast-check'
let current_buf = bufnr('')
" The formatted code is output on stdout, the errors go on stderr.
if exists('*systemlist')
silent let out = systemlist(cmdline, current_buf)
else
silent let out = split(system(cmdline, current_buf))
endif
if len(out) == 1
if out[0] == "error: unrecognized parameter: '--ast-check'"
let cmdline = 'zig fmt --stdin'
if exists('*systemlist')
silent let out = systemlist(cmdline, current_buf)
else
silent let out = split(system(cmdline, current_buf))
endif
endif
endif
let err = v:shell_error
if err == 0
" remove undo point caused via BufWritePre.
try | silent undojoin | catch | endtry
" Replace the file content with the formatted version.
if exists('*deletebufline')
call deletebufline(current_buf, len(out), line('$'))
else
silent execute ':' . len(out) . ',' . line('$') . ' delete _'
endif
call setline(1, out)
" No errors detected, close the loclist.
call setloclist(0, [], 'r')
lclose
elseif get(g:, 'zig_fmt_parse_errors', 1)
let errors = s:parse_errors(expand('%'), out)
call setloclist(0, [], 'r', {
\ 'title': 'Errors',
\ 'items': errors,
\ })
let max_win_height = get(g:, 'zig_fmt_max_window_height', 5)
" Prevent the loclist from becoming too long.
let win_height = min([max_win_height, len(errors)])
" Open the loclist, but only if there's at least one error to show.
execute 'silent! lwindow ' . win_height
endif
call winrestview(view)
if err != 0
echohl Error | echomsg "zig fmt returned error" | echohl None
return
endif
" Run the syntax highlighter on the updated content and recompute the folds if
" needed.
syntax sync fromstart
endfunction
" parse_errors parses the given errors and returns a list of parsed errors
function! s:parse_errors(filename, lines) abort
" list of errors to be put into location list
let errors = []
for line in a:lines
let tokens = matchlist(line, '^\(.\{-}\):\(\d\+\):\(\d\+\)\s*\(.*\)')
if !empty(tokens)
call add(errors,{
\"filename": a:filename,
\"lnum": tokens[2],
\"col": tokens[3],
\"text": tokens[4],
\ })
endif
endfor
return errors
endfunction
" vim: sw=2 ts=2 et

View File

@@ -0,0 +1,39 @@
" Vim compiler file
" Compiler: dotnet build (.NET CLI)
" Maintainer: Nick Jensen <nickspoon@gmail.com>
" Last Change: 2022-12-06
" License: Vim (see :h license)
" Repository: https://github.com/nickspoons/vim-cs
if exists("current_compiler")
finish
endif
let current_compiler = "dotnet"
if exists(":CompilerSet") != 2 " older Vim always used :setlocal
command -nargs=* CompilerSet setlocal <args>
endif
let s:cpo_save = &cpo
set cpo&vim
if get(g:, "dotnet_errors_only", v:false)
CompilerSet makeprg=dotnet\ build\ -nologo
\\ -consoleloggerparameters:NoSummary
\\ -consoleloggerparameters:ErrorsOnly
else
CompilerSet makeprg=dotnet\ build\ -nologo\ -consoleloggerparameters:NoSummary
endif
if get(g:, "dotnet_show_project_file", v:true)
CompilerSet errorformat=%E%f(%l\\,%c):\ %trror\ %m,
\%W%f(%l\\,%c):\ %tarning\ %m,
\%-G%.%#
else
CompilerSet errorformat=%E%f(%l\\,%c):\ %trror\ %m\ [%.%#],
\%W%f(%l\\,%c):\ %tarning\ %m\ [%.%#],
\%-G%.%#
endif
let &cpo = s:cpo_save
unlet s:cpo_save

28
runtime/compiler/zig.vim Normal file
View File

@@ -0,0 +1,28 @@
" Vim compiler file
" Compiler: Zig Compiler
" Upstream: https://github.com/ziglang/zig.vim
if exists("current_compiler")
finish
endif
let current_compiler = "zig"
let s:save_cpo = &cpo
set cpo&vim
if exists(":CompilerSet") != 2
command -nargs=* CompilerSet setlocal <args>
endif
" a subcommand must be provided for the this compiler (test, build-exe, etc)
if has('patch-7.4.191')
CompilerSet makeprg=zig\ \$*\ \%:S
else
CompilerSet makeprg=zig\ \$*\ \"%\"
endif
" TODO: improve errorformat as needed.
let &cpo = s:save_cpo
unlet s:save_cpo
" vim: tabstop=8 shiftwidth=4 softtabstop=4 expandtab

View File

@@ -0,0 +1,29 @@
" Vim compiler file
" Compiler: Zig Compiler (zig build)
" Upstream: https://github.com/ziglang/zig.vim
if exists('current_compiler')
finish
endif
runtime compiler/zig.vim
let current_compiler = 'zig_build'
let s:save_cpo = &cpo
set cpo&vim
if exists(':CompilerSet') != 2
command -nargs=* CompilerSet setlocal <args>
endif
if exists('g:zig_build_makeprg_params')
execute 'CompilerSet makeprg=zig\ build\ '.escape(g:zig_build_makeprg_params, ' \|"').'\ $*'
else
CompilerSet makeprg=zig\ build\ $*
endif
" TODO: anything to add to errorformat for zig build specifically?
let &cpo = s:save_cpo
unlet s:save_cpo
" vim: tabstop=8 shiftwidth=4 softtabstop=4 expandtab

View File

@@ -0,0 +1,27 @@
" Vim compiler file
" Compiler: Zig Compiler (zig build-exe)
" Upstream: https://github.com/ziglang/zig.vim
if exists('current_compiler')
finish
endif
runtime compiler/zig.vim
let current_compiler = 'zig_build_exe'
let s:save_cpo = &cpo
set cpo&vim
if exists(':CompilerSet') != 2
command -nargs=* CompilerSet setlocal <args>
endif
if has('patch-7.4.191')
CompilerSet makeprg=zig\ build-exe\ \%:S\ \$*
else
CompilerSet makeprg=zig\ build-exe\ \"%\"\ \$*
endif
let &cpo = s:save_cpo
unlet s:save_cpo
" vim: tabstop=8 shiftwidth=4 softtabstop=4 expandtab

View File

@@ -0,0 +1,27 @@
" Vim compiler file
" Compiler: Zig Compiler (zig test)
" Upstream: https://github.com/ziglang/zig.vim
if exists('current_compiler')
finish
endif
runtime compiler/zig.vim
let current_compiler = 'zig_test'
let s:save_cpo = &cpo
set cpo&vim
if exists(':CompilerSet') != 2
command -nargs=* CompilerSet setlocal <args>
endif
if has('patch-7.4.191')
CompilerSet makeprg=zig\ test\ \%:S\ \$*
else
CompilerSet makeprg=zig\ test\ \"%\"\ \$*
endif
let &cpo = s:save_cpo
unlet s:save_cpo
" vim: tabstop=8 shiftwidth=4 softtabstop=4 expandtab

View File

@@ -161,6 +161,7 @@ DOCS = \
version9.txt \
vi_diff.txt \
vim9.txt \
vim9class.txt \
visual.txt \
windows.txt \
workshop.txt
@@ -313,6 +314,7 @@ HTMLS = \
vi_diff.html \
vimindex.html \
vim9.html \
vim9class.html \
visual.html \
windows.html \
workshop.html

View File

@@ -1,4 +1,4 @@
*autocmd.txt* For Vim version 9.0. Last change: 2022 May 24
*autocmd.txt* For Vim version 9.0. Last change: 2022 Nov 22
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -1058,8 +1058,8 @@ QuickFixCmdPre Before a quickfix command is run (|:make|,
QuickFixCmdPost Like QuickFixCmdPre, but after a quickfix
command is run, before jumping to the first
location. For |:cfile| and |:lfile| commands
it is run after error file is read and before
moving to the first error.
it is run after the error file is read and
before moving to the first error.
See |QuickFixCmdPost-example|.
*QuitPre*
QuitPre When using `:quit`, `:wq` or `:qall`, before
@@ -1342,8 +1342,9 @@ VimSuspend When the Vim instance is suspended. Only when
CTRL-Z was typed inside Vim, or when the SIGTSTP
signal was sent to Vim, but not for SIGSTOP.
*WinClosed*
WinClosed After closing a window. The pattern is
matched against the |window-ID|. Both
WinClosed When closing a window, just before it is
removed from the window layout. The pattern
is matched against the |window-ID|. Both
<amatch> and <afile> are set to the
|window-ID|. Non-recursive (event cannot
trigger itself).
@@ -1371,17 +1372,42 @@ WinNew When a new window was created. Not done for
Before a WinEnter event.
*WinScrolled*
WinScrolled After scrolling the content of a window or
resizing a window.
The pattern is matched against the
|window-ID|. Both <amatch> and <afile> are
set to the |window-ID|.
Non-recursive (the event cannot trigger
itself). However, if the command causes the
window to scroll or change size another
WinScrolled After any window in the current tab page
scrolled the text (horizontally or vertically)
or changed width or height. See
|win-scrolled-resized|.
The pattern is matched against the |window-ID|
of the first window that scrolled or resized.
Both <amatch> and <afile> are set to the
|window-ID|.
|v:event| is set with information about size
and scroll changes. |WinScrolled-event|
Only starts triggering after startup finished
and the first screen redraw was done.
Does not trigger when defining the first
WinScrolled or WinResized event, but may
trigger when adding more.
Non-recursive: the event will not trigger
while executing commands for the WinScrolled
event. However, if the command causes a
window to scroll or change size, then another
WinScrolled event will be triggered later.
Does not trigger when the command is added,
only after the first scroll or resize.
*WinResized*
WinResized After a window in the current tab page changed
width or height.
See |win-scrolled-resized|.
|v:event| is set with information about size
changes. |WinResized-event|
Same behavior as |WinScrolled| for the
pattern, triggering and recursiveness.
==============================================================================
6. Patterns *autocmd-patterns* *{aupat}*

View File

@@ -1,4 +1,4 @@
*builtin.txt* For Vim version 9.0. Last change: 2022 Oct 14
*builtin.txt* For Vim version 9.0. Last change: 2022 Dec 05
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -116,13 +116,13 @@ ch_status({handle} [, {options}])
changenr() Number current change number
char2nr({expr} [, {utf8}]) Number ASCII/UTF-8 value of first char in {expr}
charclass({string}) Number character class of {string}
charcol({expr}) Number column number of cursor or mark
charcol({expr} [, {winid}]) Number column number of cursor or mark
charidx({string}, {idx} [, {countcc}])
Number char index of byte {idx} in {string}
chdir({dir}) String change current working directory
cindent({lnum}) Number C indent for line {lnum}
clearmatches([{win}]) none clear all matches
col({expr}) Number column byte index of cursor or mark
col({expr} [, {winid}]) Number column byte index of cursor or mark
complete({startcol}, {matches}) none set Insert mode completion
complete_add({expr}) Number add completion match
complete_check() Number check for key typed during completion
@@ -208,6 +208,7 @@ get({func}, {what}) any get property of funcref/partial {func}
getbufinfo([{buf}]) List information about buffers
getbufline({buf}, {lnum} [, {end}])
List lines {lnum} to {end} of buffer {buf}
getbufoneline({buf}, {lnum}) String line {lnum} of buffer {buf}
getbufvar({buf}, {varname} [, {def}])
any variable {varname} in buffer {buf}
getchangelist([{buf}]) List list of change list items
@@ -246,6 +247,7 @@ getloclist({nr}, {what}) Dict get specific location list properties
getmarklist([{buf}]) List list of global/local marks
getmatches([{win}]) List list of current matches
getmousepos() Dict last known mouse position
getmouseshape() String current mouse shape name
getpid() Number process ID of Vim
getpos({expr}) List position of cursor, mark, etc.
getqflist() List list of quickfix items
@@ -606,6 +608,7 @@ submatch({nr} [, {list}]) String or List
specific match in ":s" or substitute()
substitute({expr}, {pat}, {sub}, {flags})
String all {pat} in {expr} replaced with {sub}
swapfilelist() List swap files found in 'directory'
swapinfo({fname}) Dict information about swap file {fname}
swapname({buf}) String swap file of buffer {buf}
synID({lnum}, {col}, {trans}) Number syntax ID at {lnum} and {col}
@@ -806,8 +809,10 @@ append({lnum}, {text}) *append()*
{lnum} can be zero to insert a line before the first one.
{lnum} is used like with |getline()|.
Returns 1 for failure ({lnum} out of range or out of memory),
0 for success. In |Vim9| script an invalid argument or
negative number results in an error. Example: >
0 for success. When {text} is an empty list zero is returned,
no matter the value of {lnum}.
In |Vim9| script an invalid argument or negative number
results in an error. Example: >
:let failed = append(line('$'), "# THE END")
:let failed = append(0, ["Chapter 1", "the beginning"])
@@ -835,7 +840,9 @@ appendbufline({buf}, {lnum}, {text}) *appendbufline()*
If {buf} is not a valid buffer or {lnum} is not valid, an
error message is given. Example: >
:let failed = appendbufline(13, 0, "# THE START")
<
< However, when {text} is an empty list then no error is given
for an invalid {lnum}, since {lnum} isn't actually used.
Can also be used as a |method| after a List, the base is
passed as the second argument: >
mylist->appendbufline(buf, lnum)
@@ -981,7 +988,7 @@ autocmd_add({acmds}) *autocmd_add()*
let acmd.bufnr = 5
let acmd.cmd = 'call BufEnterFunc()'
call autocmd_add([acmd])
<
Can also be used as a |method|: >
GetAutocmdList()->autocmd_add()
<
@@ -1317,7 +1324,8 @@ bufwinid({buf}) *bufwinid()*
echo "A window containing buffer 1 is " .. (bufwinid(1))
<
Only deals with the current tab page.
Only deals with the current tab page. See |win_findbuf()| for
finding more.
Can also be used as a |method|: >
FindBuffer()->bufwinid()
@@ -1469,7 +1477,7 @@ charclass({string}) *charclass()*
Returns 0 if {string} is not a |String|.
charcol({expr}) *charcol()*
charcol({expr} [, {winid}]) *charcol()*
Same as |col()| but returns the character index of the column
position given with {expr} instead of the byte position.
@@ -1552,8 +1560,8 @@ clearmatches([{win}]) *clearmatches()*
Can also be used as a |method|: >
GetWin()->clearmatches()
<
*col()*
col({expr}) The result is a Number, which is the byte index of the column
col({expr} [, {winid}) *col()*
The result is a Number, which is the byte index of the column
position given with {expr}. The accepted positions are:
. the cursor position
$ the end of the cursor line (the result is the
@@ -1568,6 +1576,8 @@ col({expr}) The result is a Number, which is the byte index of the column
and column number. Most useful when the column is "$", to get
the last column of a specific line. When "lnum" or "col" is
out of range then col() returns zero.
With the optional {winid} argument the values are obtained for
that window instead of the current window.
To get the line number use |line()|. To get both use
|getpos()|.
For the screen column position use |virtcol()|. For the
@@ -1578,16 +1588,15 @@ col({expr}) The result is a Number, which is the byte index of the column
col("$") length of cursor line plus one
col("'t") column of mark t
col("'" .. markname) column of mark markname
< The first column is 1. Returns 0 if {expr} is invalid.
< The first column is 1. Returns 0 if {expr} is invalid or when
the window with ID {winid} is not found.
For an uppercase mark the column may actually be in another
buffer.
For the cursor position, when 'virtualedit' is active, the
column is one higher if the cursor is after the end of the
line. This can be used to obtain the column in Insert mode: >
:imap <F2> <C-O>:let save_ve = &ve<CR>
\<C-O>:set ve=all<CR>
\<C-O>:echo col(".") .. "\n" <Bar>
\let &ve = save_ve<CR>
line. Also, when using a <Cmd> mapping the cursor isn't
moved, this can be used to obtain the column in Insert mode: >
:imap <F2> <Cmd>echowin col(".")<CR>
< Can also be used as a |method|: >
GetPos()->col()
@@ -2771,7 +2780,7 @@ flattennew({list} [, {maxdepth}]) *flattennew()*
float2nr({expr}) *float2nr()*
Convert {expr} to a Number by omitting the part after the
decimal point.
{expr} must evaluate to a |Float| or a Number.
{expr} must evaluate to a |Float| or a |Number|.
Returns 0 if {expr} is not a |Float| or a |Number|.
When the value of {expr} is out of range for a |Number| the
result is truncated to 0x7fffffff or -0x7fffffff (or when
@@ -3197,7 +3206,8 @@ getbufinfo([{dict}])
getbufline({buf}, {lnum} [, {end}])
Return a |List| with the lines starting from {lnum} to {end}
(inclusive) in the buffer {buf}. If {end} is omitted, a
|List| with only the line {lnum} is returned.
|List| with only the line {lnum} is returned. See
`getbufoneline()` for only getting the line.
For the use of {buf}, see |bufname()| above.
@@ -3220,6 +3230,11 @@ getbufline({buf}, {lnum} [, {end}])
< Can also be used as a |method|: >
GetBufnr()->getbufline(lnum)
<
*getbufoneline()*
getbufoneline({buf}, {lnum})
Just like `getbufline()` but only get one line and return it
as a string.
getbufvar({buf}, {varname} [, {def}]) *getbufvar()*
The result is the value of option or local buffer variable
@@ -3764,7 +3779,8 @@ getline({lnum} [, {end}])
< Can also be used as a |method|: >
ComputeLnum()->getline()
< To get lines from another buffer see |getbufline()|
< To get lines from another buffer see |getbufline()| and
|getbufoneline()|
getloclist({nr} [, {what}]) *getloclist()*
Returns a |List| with all the entries in the location list for
@@ -3873,6 +3889,12 @@ getmousepos() *getmousepos()*
When using |getchar()| the Vim variables |v:mouse_lnum|,
|v:mouse_col| and |v:mouse_winid| also provide these values.
getmouseshape() *getmouseshape()*
Returns the name of the currently showing mouse pointer.
When the |+mouseshape| feature is not supported or the shape
is unknown an empty string is returned.
This function is mainly intended for testing.
*getpid()*
getpid() Return a Number which is the process ID of the Vim process.
On Unix and MS-Windows this is a unique number, until Vim
@@ -5551,6 +5573,10 @@ map({expr1}, {expr2}) *map()*
If {expr2} is a |Funcref| it is called with two arguments:
1. The key or the index of the current item.
2. the value of the current item.
With a legacy script lambda you don't get an error if it only
accepts one argument, but with a Vim9 lambda you get "E1106:
One argument too many", the number of arguments must match.
The function must return the new value of the item. Example
that changes each value by "key-value": >
func KeyValue(key, val)
@@ -6866,8 +6892,10 @@ readblob({fname} [, {offset} [, {size}]]) *readblob()*
readblob('/dev/ttyS0', 0, 10)
< When the file can't be opened an error message is given and
the result is an empty |Blob|.
When trying to read bytes beyond the end of the file the
result is an empty blob.
When the offset is beyond the end of the file the result is an
empty blob.
When trying to read more bytes than are available the result
is truncated.
Also see |readfile()| and |writefile()|.
@@ -7873,9 +7901,10 @@ setbufline({buf}, {lnum}, {text}) *setbufline()*
To insert lines use |appendbufline()|.
Any text properties in {lnum} are cleared.
{text} can be a string to set one line, or a list of strings
to set multiple lines. If the list extends below the last
line then those lines are added.
{text} can be a string to set one line, or a List of strings
to set multiple lines. If the List extends below the last
line then those lines are added. If the List is empty then
nothing is changed and zero is returned.
For the use of {buf}, see |bufname()| above.
@@ -7914,29 +7943,38 @@ setbufvar({buf}, {varname}, {val}) *setbufvar()*
setcellwidths({list}) *setcellwidths()*
Specify overrides for cell widths of character ranges. This
tells Vim how wide characters are, counted in screen cells.
This overrides 'ambiwidth'. Example: >
setcellwidths([[0xad, 0xad, 1],
\ [0x2194, 0x2199, 2]])
tells Vim how wide characters are when displayed in the
terminal, counted in screen cells. The values override
'ambiwidth'. Example: >
call setcellwidths([
\ [0x111, 0x111, 1],
\ [0x2194, 0x2199, 2],
\ ])
< *E1109* *E1110* *E1111* *E1112* *E1113* *E1114*
The {list} argument is a list of lists with each three
numbers. These three numbers are [low, high, width]. "low"
and "high" can be the same, in which case this refers to one
character. Otherwise it is the range of characters from "low"
to "high" (inclusive). "width" is either 1 or 2, indicating
the character width in screen cells.
An error is given if the argument is invalid, also when a
range overlaps with another.
< The {list} argument is a List of Lists with each three
numbers: [{low}, {high}, {width}]. *E1109* *E1110*
{low} and {high} can be the same, in which case this refers to
one character. Otherwise it is the range of characters from
{low} to {high} (inclusive). *E1111* *E1114*
Only characters with value 0x100 and higher can be used.
{width} must be either 1 or 2, indicating the character width
in screen cells. *E1112*
An error is given if the argument is invalid, also when a
range overlaps with another. *E1113*
If the new value causes 'fillchars' or 'listchars' to become
invalid it is rejected and an error is given.
To clear the overrides pass an empty list: >
To clear the overrides pass an empty {list}: >
setcellwidths([]);
< You can use the script $VIMRUNTIME/tools/emoji_list.vim to see
the effect for known emoji characters.
the effect for known emoji characters. Move the cursor
through the text to check if the cell widths of your terminal
match with what Vim knows about each emoji. If it doesn't
look right you need to adjust the {list} argument.
setcharpos({expr}, {list}) *setcharpos()*
Same as |setpos()| but uses the specified column number as the
@@ -8060,7 +8098,8 @@ setline({lnum}, {text}) *setline()*
When {lnum} is just below the last line the {text} will be
added below the last line.
{text} can be any type or a List of any type, each item is
converted to a String.
converted to a String. When {text} is an empty List then
nothing is changed and FALSE is returned.
If this succeeds, FALSE is returned. If this fails (most likely
because {lnum} is invalid) TRUE is returned.
@@ -9276,6 +9315,17 @@ substitute({string}, {pat}, {sub}, {flags}) *substitute()*
Can also be used as a |method|: >
GetString()->substitute(pat, sub, flags)
swapfilelist() *swapfilelist()*
Returns a list of swap file names, like what "vim -r" shows.
See the |-r| command argument. The 'directory' option is used
for the directories to inspect. If you only want to get a
list of swap files in the current directory then temporarily
set 'directory' to a dot: >
let save_dir = &directory
let &directory = '.'
let swapfiles = swapfilelist()
let &directory = save_dir
swapinfo({fname}) *swapinfo()*
The result is a dictionary, which holds information about the
swapfile {fname}. The available fields are:
@@ -9668,6 +9718,7 @@ terminalprops() *terminalprops()*
cursor_blink_mode whether sending |t_RC| works **
underline_rgb whether |t_8u| works **
mouse mouse type supported
kitty whether Kitty terminal was detected
** value 'u' for unknown, 'y' for yes, 'n' for no
@@ -10197,6 +10248,7 @@ win_move_separator({nr}, {offset}) *win_move_separator()*
FALSE otherwise.
This will fail for the rightmost window and a full-width
window, since it has no separator on the right.
Only works for the current tab page. *E1308*
Can also be used as a |method|: >
GetWinnr()->win_move_separator(offset)
@@ -10211,6 +10263,7 @@ win_move_statusline({nr}, {offset}) *win_move_statusline()*
movement may be smaller than specified (e.g., as a consequence
of maintaining 'winminheight'). Returns TRUE if the window can
be found and FALSE otherwise.
Only works for the current tab page.
Can also be used as a |method|: >
GetWinnr()->win_move_statusline(offset)

View File

@@ -1,4 +1,4 @@
*change.txt* For Vim version 9.0. Last change: 2022 Sep 13
*change.txt* For Vim version 9.0. Last change: 2022 Nov 20
VIM REFERENCE MANUAL by Bram Moolenaar

View File

@@ -1,4 +1,4 @@
*channel.txt* For Vim version 9.0. Last change: 2022 Jun 23
*channel.txt* For Vim version 9.0. Last change: 2022 Dec 01
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -465,7 +465,7 @@ a close callback to the channel.
To read all normal output from a RAW channel that is available: >
let output = ch_readraw(channel)
To read all error output from a RAW channel that is available:: >
To read all error output from a RAW channel that is available: >
let output = ch_readraw(channel, {"part": "err"})
Note that if the channel is in NL mode, ch_readraw() will only return one line
for each call.
@@ -618,6 +618,9 @@ ch_info({handle}) *ch_info()*
ch_log({msg} [, {handle}]) *ch_log()*
Write String {msg} in the channel log file, if it was opened
with |ch_logfile()|.
The text "ch_log():" is prepended to the message to make clear
it came from this function call and make it easier to find in
the log file.
When {handle} is passed the channel number is used for the
message.
{handle} can be a Channel or a Job that has a Channel. The

View File

@@ -1,4 +1,4 @@
*cmdline.txt* For Vim version 9.0. Last change: 2022 Sep 26
*cmdline.txt* For Vim version 9.0. Last change: 2022 Nov 11
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -736,7 +736,9 @@ Line numbers may be specified with: *:range* *{address}*
'T position of mark T (uppercase); when the mark is in
another file it cannot be used in a range
/{pattern}[/] the next line where {pattern} matches *:/*
also see |:range-pattern| below
?{pattern}[?] the previous line where {pattern} matches *:?*
also see |:range-pattern| below
\/ the next line where the previously used search
pattern matches
\? the previous line where the previously used search
@@ -744,11 +746,49 @@ Line numbers may be specified with: *:range* *{address}*
\& the next line where the previously used substitute
pattern matches
*:range-offset*
Each may be followed (several times) by '+' or '-' and an optional number.
This number is added or subtracted from the preceding line number. If the
number is omitted, 1 is used. If there is nothing before the '+' or '-' then
the current line is used.
*:range-closed-fold*
When a line number after the comma is in a closed fold it is adjusted to the
last line of the fold, thus the whole fold is included.
When a number is added this is done after the adjustment to the last line of
the fold. This means these lines are additionally included in the range. For
example: >
:3,4+2print
On this text:
1 one ~
2 two ~
3 three ~
4 four FOLDED ~
5 five FOLDED ~
6 six ~
7 seven ~
8 eight ~
Where lines four and five are a closed fold, ends up printing lines 3 to 7.
The 7 comes from the "4" in the range, which is adjusted to the end of the
closed fold, which is 5, and then the offset 2 is added.
An example for subtracting (which isn't very useful): >
:2,4-1print
On this text:
1 one ~
2 two ~
3 three FOLDED~
4 four FOLDED ~
5 five FOLDED ~
6 six FOLDED ~
7 seven ~
8 eight ~
Where lines three to six are a closed fold, ends up printing lines 2 to 6.
The 6 comes from the "4" in the range, which is adjusted to the end of the
closed fold, which is 6, and then 1 is subtracted, then this is still in the
closed fold and the last line of that fold is used, which is 6.
*:range-pattern*
The "/" and "?" after {pattern} are required to separate the pattern from
anything that follows.
@@ -804,7 +844,7 @@ always be swapped then.
Count and Range *N:*
When giving a count before entering ":", this is translated into:
When giving a count before entering ":", this is translated into: >
:.,.+(count - 1)
In words: The "count" lines at and after the cursor. Example: To delete
three lines: >

View File

@@ -1,4 +1,4 @@
*digraph.txt* For Vim version 9.0. Last change: 2021 Jul 19
*digraph.txt* For Vim version 9.0. Last change: 2022 Nov 22
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -162,7 +162,7 @@ These are the RFC1345 digraphs for the one-byte characters. See the output of
":digraphs" for the others.
EURO
*euro* *euro-digraph*
Exception: RFC1345 doesn't specify the euro sign. In Vim the digraph =e was
added for this. Note the difference between latin1, where the digraph Cu is
used for the currency sign, and latin9 (iso-8859-15), where the digraph =e is

View File

@@ -1,4 +1,4 @@
*editing.txt* For Vim version 9.0. Last change: 2022 Apr 16
*editing.txt* For Vim version 9.0. Last change: 2022 Nov 02
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -578,6 +578,43 @@ single <NL> characters are unexpectedly replaced with <CR><NL>.
You can encrypt files that are written by setting the 'key' option. This
provides some security against others reading your files. |encryption|
END OF LINE AND END OF FILE *eol-and-eof*
Vim has several options to control the file format:
'fileformat' the <EOL> style: Unix, DOS, Mac
'endofline' whether the last line ends with a <EOL>
'endoffile' whether the file ends with a CTRL-Z
'fixendofline' whether to fix eol and eof
The first three values are normally detected automatically when reading the
file and are used when writing the text to a file. While editing the buffer
it looks like every line has a line ending and the CTRL-Z isn't there (an
exception is when 'binary' is set, it works differently then).
The 'fixendofline' option can be used to choose what to write. You can also
change the option values to write the file differently than how it was read.
Here are some examples how to use them.
If you want files in Unix format (every line NL terminated): >
setl ff=unix fixeol
You should probably do this on any Unix-like system. Also modern MS-Windows
systems tend to work well with this. It is recommended to always use this
format for Vim scripts.
If you want to use an old MS-DOS file in a modern environment, fixing line
endings and dropping CTRL-Z, but keeping the <CR><NL> style <EOL>: >
setl ff=dos fixeol
This is useful for many MS-Windows programs, they regularly expect the
<CR><NL> line endings.
If you want to drop the final <EOL> and add a final CTRL-Z (e.g. for an old
system like CP/M): >
setl ff=dos nofixeol noeol eof
If you want to preserve the fileformat exactly as-is, including any final
<EOL> and final CTRL-Z: >
setl nofixeol
==============================================================================
3. The argument list *argument-list* *arglist*

View File

@@ -1,4 +1,4 @@
*eval.txt* For Vim version 9.0. Last change: 2022 Oct 07
*eval.txt* For Vim version 9.0. Last change: 2022 Dec 11
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -163,9 +163,10 @@ Note that " " and "0" are also non-empty strings, thus considered to be TRUE.
A List, Dictionary or Float is not a Number or String, thus evaluate to FALSE.
*E611* *E745* *E728* *E703* *E729* *E730* *E731* *E908* *E910*
*E913* *E974* *E975* *E976*
|List|, |Dictionary|, |Funcref|, |Job|, |Channel| and |Blob| types are not
automatically converted.
*E913* *E974* *E975* *E976* *E1319* *E1320* *E1321* *E1322*
*E1323* *E1324*
|List|, |Dictionary|, |Funcref|, |Job|, |Channel|, |Blob|, |Class| and
|object| types are not automatically converted.
*E805* *E806* *E808*
When mixing Number and Float the Number is converted to Float. Otherwise
@@ -633,6 +634,10 @@ This removes all entries from "dict" with a value not matching 'x'.
This can also be used to remove all entries: >
call filter(dict, 0)
In some situations it is not allowed to remove or add entries to a Dictionary.
Especially when iterating over all the entries. You will get *E1313* or
another error in that case.
Dictionary function ~
*Dictionary-function* *self* *E725* *E862*
@@ -646,7 +651,8 @@ special way with a dictionary. Example: >
This is like a method in object oriented programming. The entry in the
Dictionary is a |Funcref|. The local variable "self" refers to the dictionary
the function was invoked from.
the function was invoked from. When using |Vim9| script you can use classes
and objects, see `:class`.
It is also possible to add a function without the "dict" attribute as a
Funcref to a Dictionary, but the "self" variable is not available then.
@@ -1548,7 +1554,7 @@ to be doubled. These two commands are equivalent: >
if a =~ '\s*'
interpolated-string *$quote* *interp-string*
interpolated-string *$quote* *interpolated-string*
--------------------
$"string" interpolated string constant *expr-$quote*
$'string' interpolated literal string constant *expr-$'*
@@ -1965,7 +1971,7 @@ v:collate The current locale setting for collation order of the runtime
command.
See |multi-lang|.
*v:colornames*
*v:colornames*
v:colornames A dictionary that maps color names to hex color strings. These
color names can be used with the |highlight-guifg|,
|highlight-guibg|, and |highlight-guisp| parameters. Updating
@@ -2859,7 +2865,7 @@ text...
does not need to be doubled.
If "eval" is specified, then any Vim expression in the
form {expr} is evaluated and the result replaces the
expression, like with |interp-string|.
expression, like with |interpolated-string|.
Example where $HOME is expanded: >
let lines =<< trim eval END
some text
@@ -3073,6 +3079,10 @@ text...
Unlock the internal variable {name}. Does the
opposite of |:lockvar|.
If {name} does not exist:
- In |Vim9| script an error is given.
- In legacy script this is silently ignored.
:if {expr1} *:if* *:end* *:endif* *:en* *E171* *E579* *E580*
:en[dif] Execute the commands until the next matching `:else`
or `:endif` if {expr1} evaluates to non-zero.
@@ -3598,7 +3608,7 @@ this pending exception or command is discarded.
For examples see |throw-catch| and |try-finally|.
NESTING OF TRY CONDITIONALS *try-nesting*
NESTING OF TRY CONDITIONALS *try-nesting*
Try conditionals can be nested arbitrarily. That is, a complete try
conditional can be put into the try block, a catch clause, or the finally

View File

@@ -571,7 +571,7 @@ used.
For example, to set the dialect to a default of "fblite" but still allow for
any #lang directive overrides, use the following command: >
let g:freebasic_lang = "fblite"
let g:freebasic_lang = "fblite"
GIT COMMIT *ft-gitcommit-plugin*

View File

@@ -1,4 +1,4 @@
*fold.txt* For Vim version 9.0. Last change: 2022 Oct 01
*fold.txt* For Vim version 9.0. Last change: 2022 Nov 26
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -598,6 +598,11 @@ line is folded, it cannot be displayed there.
Many movement commands handle a sequence of folded lines like an empty line.
For example, the "w" command stops once in the first column.
When starting a search in a closed fold it will not find a match in the
current fold. It's like a forward search always starts from the end of the
closed fold, while a backwards search starts from the start of the closed
fold.
When in Insert mode, the cursor line is never folded. That allows you to see
what you type!

View File

@@ -79,7 +79,7 @@ The last command will create the following syntax files:
- `context-data-context.vim`;
- `context-data-interfaces.vim`;
- `context-data-metafun.vim`;
- `context-data-tex.vim`.
- `context-data-tex.vim`.
The same command can be used to update those syntax files.

View File

@@ -1,70 +1,70 @@
*ft_rust.txt* For Vim version 9.0. Last change: 2017 Nov 02
*ft_rust.txt* For Vim version 9.0. Last change: 2022 Oct 17
This is documentation for the Rust filetype plugin.
==============================================================================
CONTENTS *rust*
CONTENTS *rust*
1. Introduction |rust-intro|
2. Settings |rust-settings|
3. Commands |rust-commands|
4. Mappings |rust-mappings|
1. Introduction |rust-intro|
2. Settings |rust-settings|
3. Commands |rust-commands|
4. Mappings |rust-mappings|
==============================================================================
INTRODUCTION *rust-intro*
INTRODUCTION *rust-intro*
This plugin provides syntax and supporting functionality for the Rust
filetype.
==============================================================================
SETTINGS *rust-settings*
SETTINGS *rust-settings*
This plugin has a few variables you can define in your vimrc that change the
behavior of the plugin.
*g:rustc_path*
*g:rustc_path*
g:rustc_path~
Set this option to the path to rustc for use in the |:RustRun| and
|:RustExpand| commands. If unset, "rustc" will be located in $PATH: >
let g:rustc_path = $HOME .. "/bin/rustc"
<
*g:rustc_makeprg_no_percent*
*g:rustc_makeprg_no_percent*
g:rustc_makeprg_no_percent~
Set this option to 1 to have 'makeprg' default to "rustc" instead of
"rustc %": >
let g:rustc_makeprg_no_percent = 1
<
*g:rust_conceal*
*g:rust_conceal*
g:rust_conceal~
Set this option to turn on the basic |conceal| support: >
let g:rust_conceal = 1
<
*g:rust_conceal_mod_path*
*g:rust_conceal_mod_path*
g:rust_conceal_mod_path~
Set this option to turn on |conceal| for the path connecting token
"::": >
let g:rust_conceal_mod_path = 1
<
*g:rust_conceal_pub*
*g:rust_conceal_pub*
g:rust_conceal_pub~
Set this option to turn on |conceal| for the "pub" token: >
let g:rust_conceal_pub = 1
<
*g:rust_recommended_style*
*g:rust_recommended_style*
g:rust_recommended_style~
Set this option to enable vim indentation and textwidth settings to
conform to style conventions of the rust standard library (i.e. use 4
spaces for indents and sets 'textwidth' to 99). This option is enabled
Set this option to enable vim indentation and textwidth settings to
conform to style conventions of the rust standard library (i.e. use 4
spaces for indents and sets 'textwidth' to 99). This option is enabled
by default. To disable it: >
let g:rust_recommended_style = 0
<
*g:rust_fold*
*g:rust_fold*
g:rust_fold~
Set this option to turn on |folding|: >
let g:rust_fold = 1
@@ -76,39 +76,39 @@ g:rust_fold~
2 Braced blocks are folded. 'foldlevel' is left at the
global value (all folds are closed by default).
*g:rust_bang_comment_leader*
*g:rust_bang_comment_leader*
g:rust_bang_comment_leader~
Set this option to 1 to preserve the leader on multi-line doc comments
using the /*! syntax: >
let g:rust_bang_comment_leader = 1
<
*g:ftplugin_rust_source_path*
*g:ftplugin_rust_source_path*
g:ftplugin_rust_source_path~
Set this option to a path that should be prepended to 'path' for Rust
source files: >
let g:ftplugin_rust_source_path = $HOME .. '/dev/rust'
<
*g:rustfmt_command*
*g:rustfmt_command*
g:rustfmt_command~
Set this option to the name of the 'rustfmt' executable in your $PATH. If
not specified it defaults to 'rustfmt' : >
let g:rustfmt_command = 'rustfmt'
<
*g:rustfmt_autosave*
*g:rustfmt_autosave*
g:rustfmt_autosave~
Set this option to 1 to run |:RustFmt| automatically when saving a
buffer. If not specified it defaults to 0 : >
let g:rustfmt_autosave = 0
<
*g:rustfmt_fail_silently*
*g:rustfmt_fail_silently*
g:rustfmt_fail_silently~
Set this option to 1 to prevent 'rustfmt' from populating the
|location-list| with errors. If not specified it defaults to 0: >
let g:rustfmt_fail_silently = 0
<
*g:rustfmt_options*
*g:rustfmt_options*
g:rustfmt_options~
Set this option to a string of options to pass to 'rustfmt'. The
write-mode is already set to 'overwrite'. If not specified it
@@ -116,13 +116,13 @@ g:rustfmt_options~
let g:rustfmt_options = ''
<
*g:rust_playpen_url*
*g:rust_playpen_url*
g:rust_playpen_url~
Set this option to override the URL for the playpen to use: >
let g:rust_playpen_url = 'https://play.rust-lang.org/'
<
*g:rust_shortener_url*
*g:rust_shortener_url*
g:rust_shortener_url~
Set this option to override the URL for the URL shortener: >
let g:rust_shortener_url = 'https://is.gd/'
@@ -130,9 +130,9 @@ g:rust_shortener_url~
==============================================================================
COMMANDS *rust-commands*
COMMANDS *rust-commands*
:RustRun [args] *:RustRun*
:RustRun [args] *:RustRun*
:RustRun! [rustc-args] [--] [args]
Compiles and runs the current file. If it has unsaved changes,
it will be saved first using |:update|. If the current file is
@@ -150,7 +150,7 @@ COMMANDS *rust-commands*
If |g:rustc_path| is defined, it is used as the path to rustc.
Otherwise it is assumed rustc can be found in $PATH.
:RustExpand [args] *:RustExpand*
:RustExpand [args] *:RustExpand*
:RustExpand! [TYPE] [args]
Expands the current file using --pretty and displays the
results in a new split. If the current file has unsaved
@@ -169,7 +169,7 @@ COMMANDS *rust-commands*
If |g:rustc_path| is defined, it is used as the path to rustc.
Otherwise it is assumed rustc can be found in $PATH.
:RustEmitIr [args] *:RustEmitIr*
:RustEmitIr [args] *:RustEmitIr*
Compiles the current file to LLVM IR and displays the results
in a new split. If the current file has unsaved changes, it
will be saved first using |:update|. If the current file is an
@@ -180,7 +180,7 @@ COMMANDS *rust-commands*
If |g:rustc_path| is defined, it is used as the path to rustc.
Otherwise it is assumed rustc can be found in $PATH.
:RustEmitAsm [args] *:RustEmitAsm*
:RustEmitAsm [args] *:RustEmitAsm*
Compiles the current file to assembly and displays the results
in a new split. If the current file has unsaved changes, it
will be saved first using |:update|. If the current file is an
@@ -191,7 +191,7 @@ COMMANDS *rust-commands*
If |g:rustc_path| is defined, it is used as the path to rustc.
Otherwise it is assumed rustc can be found in $PATH.
:RustPlay *:RustPlay*
:RustPlay *:RustPlay*
This command will only work if you have web-api.vim installed
(available at https://github.com/mattn/webapi-vim). It sends the
current selection, or if nothing is selected, the entirety of the
@@ -204,7 +204,7 @@ COMMANDS *rust-commands*
|g:rust_shortener_url| is the base URL for the shortener, by
default "https://is.gd/"
:RustFmt *:RustFmt*
:RustFmt *:RustFmt*
Runs |g:rustfmt_command| on the current buffer. If
|g:rustfmt_options| is set then those will be passed to the
executable.
@@ -214,12 +214,12 @@ COMMANDS *rust-commands*
|g:rustfmt_command|. If |g:rustfmt_fail_silently| is set to 1
then it will not populate the |location-list|.
:RustFmtRange *:RustFmtRange*
:RustFmtRange *:RustFmtRange*
Runs |g:rustfmt_command| with selected range. See
|:RustFmt| for any other information.
==============================================================================
MAPPINGS *rust-mappings*
MAPPINGS *rust-mappings*
This plugin defines mappings for |[[| and |]]| to support hanging indents.

View File

@@ -1,4 +1,4 @@
*gui.txt* For Vim version 9.0. Last change: 2022 Apr 03
*gui.txt* For Vim version 9.0. Last change: 2022 Nov 17
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -889,6 +889,11 @@ s The menu was defined with "<silent>" to avoid showing what it is
Note that hitting <Tab> while entering a menu name after a menu command may
be used to complete the name of the menu item.
It is not allowed to change menus while listing them. *E1310*
This doesn't normally happen, only when, for example, you would have a timer
callback define a menu and the user lists menus in a way it shows
|more-prompt|.
5.4 Executing Menus *execute-menus*

View File

@@ -1,4 +1,4 @@
*help.txt* For Vim version 9.0. Last change: 2022 May 13
*help.txt* For Vim version 9.0. Last change: 2022 Dec 03
VIM - main help file
k
@@ -153,6 +153,7 @@ Special issues ~
|terminal.txt| Terminal window support
|popup.txt| popup window support
|vim9.txt| using Vim9 script
|vim9class.txt| using Vim9 script classes
Programming language support ~
|indent.txt| automatic indenting for C and other languages
@@ -161,6 +162,8 @@ Programming language support ~
|filetype.txt| settings done specifically for a type of file
|quickfix.txt| commands for a quick edit-compile-fix cycle
|ft_ada.txt| Ada (the programming language) support
|ft_context.txt| Filetype plugin for ConTeXt
|ft_mp.txt| Filetype plugin for METAFONT and MetaPost
|ft_ps1.txt| Filetype plugin for Windows PowerShell
|ft_raku.txt| Filetype plugin for Raku
|ft_rust.txt| Filetype plugin for Rust

View File

@@ -892,7 +892,7 @@ Groß): >
endfor
return res
endfunc
if exists('+thesaurusfunc')
set thesaurusfunc=Thesaur
endif

View File

@@ -1,4 +1,4 @@
*intro.txt* For Vim version 9.0. Last change: 2022 Oct 12
*intro.txt* For Vim version 9.0. Last change: 2022 Nov 20
VIM REFERENCE MANUAL by Bram Moolenaar

View File

@@ -1,4 +1,4 @@
*map.txt* For Vim version 9.0. Last change: 2022 Sep 26
*map.txt* For Vim version 9.0. Last change: 2022 Dec 01
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -10,18 +10,19 @@ This subject is introduced in sections |05.4|, |24.7| and |40.1| of the user
manual.
1. Key mapping |key-mapping|
1.1 MAP COMMANDS |:map-commands|
1.2 Special arguments |:map-arguments|
1.3 Mapping and modes |:map-modes|
1.4 Listing mappings |map-listing|
1.5 Mapping special keys |:map-special-keys|
1.6 Special characters |:map-special-chars|
1.7 What keys to map |map-which-keys|
1.8 Examples |map-examples|
1.9 Using mappings |map-typing|
1.10 Mapping alt-keys |:map-alt-keys|
1.11 Mapping in modifyOtherKeys mode |modifyOtherKeys|
1.12 Mapping an operator |:map-operator|
1.1 MAP COMMANDS |:map-commands|
1.2 Special arguments |:map-arguments|
1.3 Mapping and modes |:map-modes|
1.4 Listing mappings |map-listing|
1.5 Mapping special keys |:map-special-keys|
1.6 Special characters |:map-special-chars|
1.7 What keys to map |map-which-keys|
1.8 Examples |map-examples|
1.9 Using mappings |map-typing|
1.10 Mapping alt-keys |:map-alt-keys|
1.11 Mapping in modifyOtherKeys mode |modifyOtherKeys|
1.12 Mapping with Kitty keyboard protocol |kitty-keyboard-protocol|
1.13 Mapping an operator |:map-operator|
2. Abbreviations |abbreviations|
3. Local mappings and functions |script-local|
4. User-defined commands |user-commands|
@@ -234,6 +235,9 @@ The search string will not be echoed when using this mapping. Messages from
the executed command are still given though. To shut them up too, add a
":silent" in the executed command: >
:map <silent> ,h :exe ":silent normal /Header\r"<CR>
Note that the effect of a command might also be silenced, e.g., when the
mapping selects another entry for command line completion it won't be
displayed.
Prompts will still be given, e.g., for inputdialog().
Using "<silent>" for an abbreviation is possible, but will cause redrawing of
the command line to fail.
@@ -581,6 +585,9 @@ is the start of the last selected Visual area in the current buffer |'<|.
The |:filter| command can be used to select what mappings to list. The
pattern is matched against the {lhs} and {rhs} in the raw form.
While mappings are being listed, it is not possible to add or clear mappings,
e.g. from a timer callback. *E1309*
*:map-verbose*
When 'verbose' is non-zero, listing a key map will also display where it was
last defined. Example: >
@@ -964,13 +971,18 @@ using other applications but not when inside Vim.
Xterm and a few other terminals can be put in a mode where keys with modifiers
are sent with a special escape code. Vim recognizes these codes and can then
make a difference between CTRL-H and Backspace, even when Backspace sends the
character 8. And many more special keys.
character 8. And many more special keys, such as Tab and CTRL-I, which cannot
be mapped separately otherwise.
For xterm modifyOtherKeys is enabled in the builtin termcap entry. If this is
not used you can enable modifyOtherKeys with these lines in your vimrc: >
let &t_TI = "\<Esc>[>4;2m"
let &t_TE = "\<Esc>[>4;m"
This sets modifyOtherKeys to level 2. Note that modifyOtherKeys level 1 does
not work. Some terminals do not support level 2 and then send key codes that
Vim will not be able to correctly recognize.
In case the modifyOtherKeys mode causes problems you can disable it: >
let &t_TI = ""
let &t_TE = ""
@@ -989,21 +1001,61 @@ mapping, see |map-bar|.
WARNING: if you map <C-[> you may very well break any key codes that start
with Esc. Make sure it comes AFTER other mappings.
Vim automatically detects if the modifyOtherKeys mode was enabled when it
spots an escape sequence that must have been created by it. To see if Vim
detected such an escape sequence use `:verbose map`, the first line will then
show "Seen modifyOtherKeys: true" (possibly translated).
Starting with xterm version 377 Vim can detect the modifyOtherKeys state by
requesting it. For this the 't_RK' termcap entry is used. When the response
is found then Vim will know whether modifyOtherKeys level 2 is enabled, and
handle mappings accordingly.
Before version 377 Vim automatically detects if the modifyOtherKeys mode was
enabled when it spots an escape sequence that must have been created by it.
To see if Vim detected such an escape sequence use `:verbose map`, the first
line will then show "Seen modifyOtherKeys: true" (possibly translated).
This automatic detection depends on receiving an escape code starting with
"<1b>[27;". This is the normal way xterm sends these key codes. However, if
the *formatOtherKeys* resource is set another form is used that is not
recognized, therefore you must not set formatOtherKeys.
A known side effect is that in Insert mode the raw escape sequence is inserted
after the CTRL-V key. This can be used to check whether modifyOtherKeys is
enabled: In Insert mode type CTRL-SHIFT-V CTRL-V, if you get one byte then
modifyOtherKeys is off, if you get <1b>27;5;118~ then it is on.
modifyOtherKeys is off, if you get <1b>[27;5;118~ then it is on.
Note that xterm up to version 376 has a bug that makes Shift-Esc send a
regular Esc code, the Shift modifier is dropped.
When the 'esckeys' option is off, then modifyOtherKeys will be disabled in
Insert mode to avoid every key with a modifier causing Insert mode to end.
1.12 MAPPING AN OPERATOR *:map-operator*
1.12 MAPPING WITH KITTY KEYBOARD PROTOCOL *kitty-keyboard-protocol*
If the value of 'term' contains "kitty" then Vim will send out an escape
sequence to enable the Kitty keyboard protocol. This can be changed with the
'keyprotocol' option.
Like modifyOtherKeys, this will make it possible to distinguish between more
keys with modifiers. Also, this protocol sends an escape sequence for the Esc
key, so that Vim does not need to use a timeout to know whether receiving an
Esc character means the Esc key was pressed or it's the start of an escape
sequence.
Vim automatically detects if the Kitty keyboard protocol was enabled when it
spots the response to the status request (this should be part of the |t_TI|
termcap entry). To see if Vim detected such an escape sequence use: >
:verbose map
The first line will then show "Kitty keyboard protocol: {value}" (possibly
translated). The meaning of {value}:
Unknown no status received yet
Off protocol is not used
On protocol is used
Disabled protocol was used but expected to have been disabled
by 't_TE'
Cleared protocol expected to have beeen disabled by 't_TE',
previous state is unknown
1.13 MAPPING AN OPERATOR *:map-operator*
An operator is used before a {motion} command. To define your own operator
you must create a mapping that first sets the 'operatorfunc' option and then
@@ -1473,6 +1525,8 @@ See |:verbose-cmd| for more information.
:delc[ommand] {cmd} *:delc* *:delcommand* *E184*
Delete the user-defined command {cmd}.
This is not allowed while listing commands, e.g. from
a timer. *E1311*
:delc[ommand] -buffer {cmd} *E1237*
Delete the user-defined command {cmd} that was defined
@@ -1483,7 +1537,7 @@ See |:verbose-cmd| for more information.
Command attributes ~
*command-attributes*
*command-attributes*
User-defined commands are treated by Vim just like any other Ex commands. They
can have arguments, or have a range specified. Arguments are subject to
completion as filenames, buffers, etc. Exactly how this works depends upon the
@@ -1641,7 +1695,7 @@ Possible attributes are:
number.
-count=N A count (default N) which is specified either in the line
number position, or as an initial argument (like |:Next|).
-count acts like -count=0
-count Acts like -count=0
Note that -range=N and -count=N are mutually exclusive - only one should be
specified.
@@ -1659,7 +1713,7 @@ Possible values are (second column is the short name used in listing):
-addr=windows win Range for windows
-addr=tabs tab Range for tab pages
-addr=quickfix qf Range for quickfix entries
-addr=other ? other kind of range; can use ".", "$" and "%"
-addr=other ? Other kind of range; can use ".", "$" and "%"
as with "lines" (this is the default for
-count)
@@ -1817,7 +1871,7 @@ When executed as: >
This will invoke: >
:call Myfunc("arg1","arg2")
< *q-args-example*
< *q-args-example*
A more substantial example: >
:function Allargs(command)
: let i = 0

View File

@@ -1,4 +1,4 @@
*message.txt* For Vim version 9.0. Last change: 2022 Jan 26
*message.txt* For Vim version 9.0. Last change: 2022 Oct 18
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -635,6 +635,7 @@ probably means that some other program changed the file. You will have to
find out what happened, and decide which version of the file you want to keep.
Set the 'autoread' option if you want to do this automatically.
This message is not given when 'buftype' is not empty.
Also see the |FileChangedShell| autocommand.
There is one situation where you get this message even though there is nothing
wrong: If you save a file in Windows on the day the daylight saving time

View File

@@ -1,4 +1,4 @@
*options.txt* For Vim version 9.0. Last change: 2022 Oct 15
*options.txt* For Vim version 9.0. Last change: 2022 Dec 09
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -3048,6 +3048,16 @@ A jump table for the options with a short description can be found at |Q_op|.
When 'encoding' is set to a Unicode encoding, and 'fileencodings' was
not set yet, the default for 'fileencodings' is changed.
*'endoffile'* *'eof'* *'noendoffile'* *'noeof'*
'endoffile' 'eof' boolean (default off)
local to buffer
Indicates that a CTRL-Z character was found at the end of the file
when reading it. Normally only happens when 'fileformat' is "dos".
When writing a file and this option is off and the 'binary' option
is on, or 'fixeol' option is off, no CTRL-Z will be written at the
end of the file.
See |eol-and-eof| for example settings.
*'endofline'* *'eol'* *'noendofline'* *'noeol'*
'endofline' 'eol' boolean (default on)
local to buffer
@@ -3062,6 +3072,7 @@ A jump table for the options with a short description can be found at |Q_op|.
to remember the presence of a <EOL> for the last line in the file, so
that when you write the file the situation from the original file can
be kept. But you can change it if you want to.
See |eol-and-eof| for example settings.
*'equalalways'* *'ea'* *'noequalalways'* *'noea'*
'equalalways' 'ea' boolean (default on)
@@ -3452,11 +3463,12 @@ A jump table for the options with a short description can be found at |Q_op|.
'fixendofline' 'fixeol' boolean (default on)
local to buffer
When writing a file and this option is on, <EOL> at the end of file
will be restored if missing. Turn this option off if you want to
will be restored if missing. Turn this option off if you want to
preserve the situation from the original file.
When the 'binary' option is set the value of this option doesn't
matter.
See the 'endofline' option.
See |eol-and-eof| for example settings.
*'fkmap'* *'fk'* *'nofkmap'* *'nofk'*
'fkmap' 'fk' boolean (default off)
@@ -4536,17 +4548,21 @@ A jump table for the options with a short description can be found at |Q_op|.
|+find_in_path| or |+eval| features}
Expression to be used to transform the string found with the 'include'
option to a file name. Mostly useful to change "." to "/" for Java: >
:set includeexpr=substitute(v:fname,'\\.','/','g')
:setlocal includeexpr=substitute(v:fname,'\\.','/','g')
< The "v:fname" variable will be set to the file name that was detected.
Note the double backslash: the `:set` command first halves them, then
one remains it the value, where "\." matches a dot literally. For
simple character replacements `tr()` avoids the need for escaping: >
:setlocal includeexpr=tr(v:fname,'.','/')
<
Also used for the |gf| command if an unmodified file name can't be
found. Allows doing "gf" on the name after an 'include' statement.
Also used for |<cfile>|.
If the expression starts with s: or |<SID>|, then it is replaced with
the script ID (|local-function|). Example: >
set includeexpr=s:MyIncludeExpr()
set includeexpr=<SID>SomeIncludeExpr()
setlocal includeexpr=s:MyIncludeExpr()
setlocal includeexpr=<SID>SomeIncludeExpr()
< Otherwise, the expression is evaluated in the context of the script
where the option was set, thus script-local items are available.
@@ -4876,6 +4892,51 @@ A jump table for the options with a short description can be found at |Q_op|.
<PageUp> and <PageDown>.
The 'keymodel' option is set by the |:behave| command.
*'keyprotocol'* *'kpc'*
'keyprotocol' 'kpc' string (default: see below)
global
Specifies what keyboard protocol to use depending on the value of
'term'. The supported keyboard protocols names are:
none whatever the terminal uses
mok2 modifyOtherKeys level 2, as supported by xterm
kitty Kitty keyboard protocol, as supported by Kitty
The option value is a list of comma separated items. Each item has
a pattern that is matched against the 'term' option, a colon and the
protocol name to be used. To illustrate this, the default value would
be set with: >
set keyprotocol=kitty:kitty,foot:kitty,wezterm:kitty,xterm:mok2
< This means that when 'term' contains "kitty, "foot" or "wezterm"
somewhere then the "kitty" protocol is used. When 'term' contains
"xterm" somewhere, then the "mok2" protocol is used.
The first match is used, thus if you want to have "kitty" use the
kitty protocol, but "badkitty" not, then you should match "badkitty"
first and use the "none" value: >
set keyprotocol=badkitty:none,kitty:kitty
<
The option is used after 'term' has been changed. First the termcap
entries are set, possibly using the builtin list, see |builtin-terms|.
Then this option is inspected and if there is a match and a protocol
is specified the following happens:
none Nothing, the regular t_TE and t_TI values remain
mok2 The t_TE value is changed to:
CSI >4;m disables modifyOtherKeys
The t_TI value is changed to:
CSI >4;2m enables modifyOtherKeys
CSI ?4m request the modifyOtherKeys state
kitty The t_TE value is changed to:
CSI >4;m disables modifyOtherKeys
CSI =0;1u disables the kitty keyboard protocol
The t_TI value is changed to:
CSI =1;1u enables the kitty keyboard protocol
CSI ?u request kitty keyboard protocol state
CSI >c request the termresponse
*'keywordprg'* *'kp'*
'keywordprg' 'kp' string (default "man" or "man -s", DOS: ":help",
VMS: "help")
@@ -7056,45 +7117,49 @@ A jump table for the options with a short description can be found at |Q_op|.
messages, for example with CTRL-G, and to avoid some other messages.
It is a list of flags:
flag meaning when present ~
f use "(3 of 5)" instead of "(file 3 of 5)"
i use "[noeol]" instead of "[Incomplete last line]"
l use "999L, 888B" instead of "999 lines, 888 bytes"
m use "[+]" instead of "[Modified]"
n use "[New]" instead of "[New File]"
r use "[RO]" instead of "[readonly]"
w use "[w]" instead of "written" for file write message
f use "(3 of 5)" instead of "(file 3 of 5)" *shm-f*
i use "[noeol]" instead of "[Incomplete last line]" *shm-i*
l use "999L, 888B" instead of "999 lines, 888 bytes" *shm-l*
m use "[+]" instead of "[Modified]" *shm-m*
n use "[New]" instead of "[New File]" *shm-n*
r use "[RO]" instead of "[readonly]" *shm-r*
w use "[w]" instead of "written" for file write message *shm-w*
and "[a]" instead of "appended" for ':w >> file' command
x use "[dos]" instead of "[dos format]", "[unix]" instead of
"[unix format]" and "[mac]" instead of "[mac format]".
a all of the above abbreviations
x use "[dos]" instead of "[dos format]", "[unix]" *shm-x*
instead of "[unix format]" and "[mac]" instead of "[mac
format]".
a all of the above abbreviations *shm-a*
o overwrite message for writing a file with subsequent message
for reading a file (useful for ":wn" or when 'autowrite' on)
O message for reading a file overwrites any previous message.
Also for quickfix message (e.g., ":cn").
s don't give "search hit BOTTOM, continuing at TOP" or "search
hit TOP, continuing at BOTTOM" messages; when using the search
count do not show "W" after the count message (see S below)
t truncate file message at the start if it is too long to fit
on the command-line, "<" will appear in the left most column.
Ignored in Ex mode.
T truncate other messages in the middle if they are too long to
fit on the command line. "..." will appear in the middle.
Ignored in Ex mode.
W don't give "written" or "[w]" when writing a file
A don't give the "ATTENTION" message when an existing swap file
is found.
I don't give the intro message when starting Vim |:intro|.
c don't give |ins-completion-menu| messages. For example,
"-- XXX completion (YYY)", "match 1 of 2", "The only match",
"Pattern not found", "Back at original", etc.
C don't give messages while scanning for ins-completion items,
for instance "scanning tags"
q use "recording" instead of "recording @a"
F don't give the file info when editing a file, like `:silent`
was used for the command; note that this also affects messages
from autocommands
S do not show search count message when searching, e.g.
o overwrite message for writing a file with subsequent *shm-o*
message for reading a file (useful for ":wn" or when
'autowrite' on)
O message for reading a file overwrites any previous *smh-O*
message. Also for quickfix message (e.g., ":cn").
s don't give "search hit BOTTOM, continuing at TOP" or *shm-s*
"search hit TOP, continuing at BOTTOM" messages; when using
the search count do not show "W" after the count message (see
S below)
t truncate file message at the start if it is too long *shm-t*
to fit on the command-line, "<" will appear in the left most
column. Ignored in Ex mode.
T truncate other messages in the middle if they are too *shm-T*
long to fit on the command line. "..." will appear in the
middle. Ignored in Ex mode.
W don't give "written" or "[w]" when writing a file *shm-W*
A don't give the "ATTENTION" message when an existing *shm-A*
swap file is found.
I don't give the intro message when starting Vim, *shm-I*
see |:intro|.
c don't give |ins-completion-menu| messages. For *shm-c*
example, "-- XXX completion (YYY)", "match 1 of 2", "The only
match", "Pattern not found", "Back at original", etc.
C don't give messages while scanning for ins-completion *shm-C*
items, for instance "scanning tags"
q use "recording" instead of "recording @a" *shm-q*
F don't give the file info when editing a file, like *shm-F*
`:silent` was used for the command; note that this also
affects messages from autocommands
S do not show search count message when searching, e.g. *shm-S*
"[1/5]"
This gives you the opportunity to avoid that a change between buffers
@@ -7155,9 +7220,25 @@ A jump table for the options with a short description can be found at |Q_op|.
- When selecting more than one line, the number of lines.
- When selecting a block, the size in screen characters:
{lines}x{columns}.
This information can be displayed in an alternative location using the
'showcmdloc' option.
NOTE: This option is set to the Vi default value when 'compatible' is
set and to the Vim default value when 'compatible' is reset.
*'showcmdloc'* *'sloc'*
'showcmdloc' 'sloc' string (default "last")
This option can be used to display the (partially) entered command in
another location. Possible values are:
last Last line of the screen (default).
statusline Status line of the current window.
tabline First line of the screen if 'showtabine' is enabled.
Setting this option to "statusline" or "tabline" means that these will
be redrawn whenever the command changes, which can be on every key
pressed.
The %S 'statusline' item can be used in 'statusline' or 'tabline' to
place the text. Without a custom 'statusline' or 'tabline' it will be
displayed in a convenient location.
*'showfulltag'* *'sft'* *'noshowfulltag'* *'nosft'*
'showfulltag' 'sft' boolean (default off)
global
@@ -7655,6 +7736,7 @@ A jump table for the options with a short description can be found at |Q_op|.
P S Percentage through file of displayed window. This is like the
percentage described for 'ruler'. Always 3 in length, unless
translated.
S S 'showcmd' content, see 'showcmdloc'.
a S Argument list status as in default title. ({current} of {max})
Empty if the argument file count is zero or one.
{ NF Evaluate expression between '%{' and '}' and substitute result.
@@ -8509,10 +8591,7 @@ A jump table for the options with a short description can be found at |Q_op|.
xterm entries...).
*'ttyfast'* *'tf'* *'nottyfast'* *'notf'*
'ttyfast' 'tf' boolean (default off, on when 'term' is xterm, hpterm,
sun-cmd, screen, rxvt, dtterm or
iris-ansi; also on when running Vim in
a DOS console)
'ttyfast' 'tf' boolean (default on)
global
Indicates a fast terminal connection. More characters will be sent to
the screen for redrawing, instead of using insert/delete line
@@ -8522,6 +8601,14 @@ A jump table for the options with a short description can be found at |Q_op|.
line for lines that wrap. This helps when using copy/paste with the
mouse in an xterm and other terminals.
The default used to be set only for some terminal names, but these
days nearly all terminals are fast, therefore the default is now "on".
If you have a slow connection you may want to set this option off,
e.g. depending on the host name: >
if hostname() =~ 'faraway'
set nottyfast
endif
<
*'ttymouse'* *'ttym'*
'ttymouse' 'ttym' string (default depends on 'term')
global

View File

@@ -56,7 +56,7 @@ additionally installed over the GUI version. Typical build commands are:
./configure --prefix=`finddir B_SYSTEM_NONPACKAGED_DIRECTORY` \
--datarootdir=`finddir B_SYSTEM_NONPACKAGED_DATA_DIRECTORY` \
--mandir=`finddir B_SYSTEM_NONPACKAGED_DIRECTORY`/documentation/man \
--with-tlib=ncurses \
--with-tlib=ncurses
make clean
make install
@@ -95,7 +95,7 @@ The default value for $VIM is set at compile time and can be determined with:
:version
The normal value is /boot/system/data/vim for Haikuports version,
The normal value is /boot/system/data/vim for Haikuports version,
/boot/system/non-packaged/data/vim for manual builds. If you don't like it
you can set the VIM environment variable to override this, or set 'helpfile'
in your .vimrc: >
@@ -223,11 +223,11 @@ Thank you, all!
14. Bugs & to-do *haiku-bugs*
The port is under development now and far away from the perfect state. For bug
reports, patches and wishes, please use the Vim mailing list or Vim Github
repository.
Mailing list: https://www.vim.org/maillist.php
Vim Github repository: https://github.com/vim/vim

View File

@@ -1,4 +1,4 @@
*os_unix.txt* For Vim version 9.0. Last change: 2005 Mar 29
*os_unix.txt* For Vim version 9.0. Last change: 2022 Nov 25
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -28,10 +28,11 @@ system() is used, which is a bit slower. The output of ":version" includes
can be changed at compile time.
(For forking of the GUI version see |gui-fork|.)
Because terminal updating under Unix is often slow (e.g. serial line
terminal, shell window in suntools), the 'showcmd' and 'ruler' options
are off by default. If you have a fast terminal, try setting them on. You
might also want to set 'ttyfast'.
For historic reasons terminal updating under Unix is expected to be slow (e.g.
serial line terminal, shell window in suntools), the 'showcmd' and 'ruler'
options are off by default. If you have a fast terminal, try setting them
on: >
set showcmd ruler
When using Vim in an xterm the mouse clicks can be used by Vim by setting
'mouse' to "a". If there is access to an X-server gui style copy/paste will

View File

@@ -1,4 +1,4 @@
*os_vms.txt* For Vim version 9.0. Last change: 2022 Sep 30
*os_vms.txt* For Vim version 9.0. Last change: 2022 Nov 25
VIM REFERENCE MANUAL
@@ -458,18 +458,11 @@ Ins, Del buttons etc., except Backspace in GUI mode. To solve it, add to
Vim will also recognize that they are fast terminals.
If you have some annoying line jumping on the screen between windows add to
your .vimrc file: >
set ttyfast " set fast terminal
Note: if you're using Vim on remote host or through a very slow connection, it's
recommended to avoid the fast terminal option with: >
If you're using Vim on remote host or through a very slow connection, you
might want to reset fast terminal option with: >
set nottyfast " set terminal to slow mode
(Zoltan Arpadffy, Vim 5.6)
8.7 Hex-editing and other external tools

View File

@@ -1,4 +1,4 @@
*pi_tar.txt* For Vim version 9.0. Last change: 2020 Jan 07
*pi_tar.txt* For Vim version 9.0. Last change: 2022 Oct 17
+====================+
| Tar File Interface |
@@ -80,25 +80,25 @@ Copyright 2005-2017: *tar-copyright*
These options are variables that one may change, typically in one's
<.vimrc> file.
Default
Variable Value Explanation
*g:tar_browseoptions* "Ptf" used to get a list of contents
*g:tar_readoptions* "OPxf" used to extract a file from a tarball
*g:tar_cmd* "tar" the name of the tar program
*g:tar_nomax* 0 if true, file window will not be maximized
*g:tar_secure* undef if exists:
Default
Variable Value Explanation
*g:tar_browseoptions* "Ptf" used to get a list of contents
*g:tar_readoptions* "OPxf" used to extract a file from a tarball
*g:tar_cmd* "tar" the name of the tar program
*g:tar_nomax* 0 if true, file window will not be maximized
*g:tar_secure* undef if exists:
"--"s will be used to prevent unwanted
option expansion in tar commands.
Please be sure that your tar command
accepts "--"; Posix compliant tar
utilities do accept them.
if not exists:
The tar plugin will reject any tar
The tar plugin will reject any tar
files or member files that begin with
"-"
Not all tar's support the "--" which is why
it isn't default.
*g:tar_writeoptions* "uf" used to update/replace a file
*g:tar_writeoptions* "uf" used to update/replace a file
==============================================================================

View File

@@ -1,4 +1,4 @@
*pi_zip.txt* For Vim version 9.0. Last change: 2021 Nov 08
*pi_zip.txt* For Vim version 9.0. Last change: 2022 Oct 17
+====================+
| Zip File Interface |
@@ -39,7 +39,7 @@ Copyright: Copyright (C) 2005-2015 Charles E Campbell *zip-copyright*
OPTIONS~
*g:zip_nomax*
*g:zip_nomax*
If this variable exists and is true, the file window will not be
automatically maximized when opened.
@@ -54,21 +54,21 @@ Copyright: Copyright (C) 2005-2015 Charles E Campbell *zip-copyright*
under Windows ("). If you'd rather have no quotes, simply set
g:zip_shq to the empty string (let g:zip_shq= "") in your <.vimrc>.
*g:zip_unzipcmd*
*g:zip_unzipcmd*
Use this option to specify the program which does the duty of "unzip".
It's used during browsing. By default: >
let g:zip_unzipcmd= "unzip"
let g:zip_unzipcmd= "unzip"
<
*g:zip_zipcmd*
Use this option to specify the program which does the duty of "zip".
It's used during the writing (updating) of a file already in a zip
file; by default: >
let g:zip_zipcmd= "zip"
let g:zip_zipcmd= "zip"
<
*g:zip_extractcmd*
This option specifies the program (and any options needed) used to
extract a file from a zip archive. By default, >
let g:zip_extractcmd= g:zip_unzipcmd
let g:zip_extractcmd= g:zip_unzipcmd
<
PREVENTING LOADING~
@@ -103,14 +103,14 @@ Copyright: Copyright (C) 2005-2015 Charles E Campbell *zip-copyright*
==============================================================================
4. History *zip-history* {{{1
v32 Oct 22, 2021 * to avoid an issue with a vim 8.2 patch, zipfile: has
been changed to zipfile:// . This often shows up
been changed to zipfile:// . This often shows up
as zipfile:/// with zipped files that are root-based.
v29 Apr 02, 2017 * (Klartext) reported that an encrypted zip file could
opened but the swapfile held unencrypted contents.
opened but the swapfile held unencrypted contents.
The solution is to edit the contents of a zip file
using the |:noswapfile| modifier.
v28 Oct 08, 2014 * changed the sanity checks for executables to reflect
the command actually to be attempted in zip#Read()
the command actually to be attempted in zip#Read()
and zip#Write()
* added the extraction of a file capability
Nov 30, 2015 * added *.epub to the |g:zipPlugin_ext| list

View File

@@ -1273,6 +1273,21 @@ not "b:current_compiler". What the command actually does is the following:
For writing a compiler plugin, see |write-compiler-plugin|.
DOTNET *compiler-dotnet*
The .NET CLI compiler outputs both errors and warnings by default. The output
may be limited to include only errors, by setting the g:dotnet_errors_only
variable to |v:true|.
The associated project name is included in each error and warning. To supress
the project name, set the g:dotnet_show_project_file variable to |v:false|.
Example: limit output to only display errors, and suppress the project name: >
let dotnet_errors_only = v:true
let dotnet_show_project_file = v:false
compiler dotnet
<
GCC *quickfix-gcc* *compiler-gcc*
There's one variable you can set for the GCC compiler:

View File

@@ -1,4 +1,4 @@
*quickref.txt* For Vim version 9.0. Last change: 2022 Oct 15
*quickref.txt* For Vim version 9.0. Last change: 2022 Nov 23
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -689,6 +689,7 @@ Short explanation of each option: *option-list*
'edcompatible' 'ed' toggle flags of ":substitute" command
'emoji' 'emo' emoji characters are considered full width
'encoding' 'enc' encoding used internally
'endoffile' 'eof' write CTRL-Z at end of the file
'endofline' 'eol' write <EOL> for last line in file
'equalalways' 'ea' windows are automatically made the same size
'equalprg' 'ep' external program to use for "=" command
@@ -774,6 +775,7 @@ Short explanation of each option: *option-list*
'key' encryption key
'keymap' 'kmp' name of a keyboard mapping
'keymodel' 'km' enable starting/stopping selection with keys
'keyprotocol' 'kpc' what keyboard protocol to use for what terminal
'keywordprg' 'kp' program to use for the "K" command
'langmap' 'lmap' alphabetic characters for other language mode
'langmenu' 'lm' language to be used for the menus

View File

@@ -1,4 +1,4 @@
*scroll.txt* For Vim version 9.0. Last change: 2022 May 07
*scroll.txt* For Vim version 9.0. Last change: 2022 Oct 17
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -280,6 +280,17 @@ You can also use Alt and Ctrl modifiers.
This only works when Vim gets the scroll wheel events, of course. You can
check if this works with the "xev" program.
*mouse-scrolling-off*
If you do not want the mouse to cause scrolling (e.g. because resting your
palm on the touchpad causes scroll events), you can disable that with: >
:map <ScrollWheelDown> <Nop>
:map! <ScrollWheelDown> <Nop>
:map <ScrollWheelUp> <Nop>
:map! <ScrollWheelUp> <Nop>
:map <ScrollWheelLeft> <Nop>
:map! <ScrollWheelLeft> <Nop>
:map <ScrollWheelRight> <Nop>
:map! <ScrollWheelRight> <Nop>
When using XFree86, the /etc/XF86Config file should have the correct entry for
your mouse. For FreeBSD, this entry works for a Logitech scrollmouse: >

View File

@@ -1008,8 +1008,8 @@ Note: even when using "num" or "long" the number of flags available to
compounding and prefixes is limited to about 250.
AFFIXES
*spell-PFX* *spell-SFX*
AFFIXES *spell-PFX* *spell-SFX*
The usual PFX (prefix) and SFX (suffix) lines are supported (see the Myspell
documentation or the Aspell manual:
http://aspell.net/man-html/Affix-Compression.html).

View File

@@ -1,4 +1,4 @@
*starting.txt* For Vim version 9.0. Last change: 2022 Jun 14
*starting.txt* For Vim version 9.0. Last change: 2022 Nov 30
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -348,7 +348,7 @@ a slash. Thus "-R" means recovery and "-/R" readonly.
Start logging and write entries to {filename}.
This works like calling `ch_logfile({filename}, 'ao')` very
early during startup.
{only available with the |+channel| feature}
{only available with the |+eval| feature}
*-D*
-D Debugging. Go to debugging mode when executing the first

View File

@@ -1,4 +1,4 @@
*syntax.txt* For Vim version 9.0. Last change: 2022 Oct 14
*syntax.txt* For Vim version 9.0. Last change: 2022 Nov 24
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -500,7 +500,7 @@ Force to omit the line numbers: >
Go back to the default to use 'number' by deleting the variable: >
:unlet g:html_number_lines
<
*g:html_line_ids*
*g:html_line_ids*
Default: 1 if |g:html_number_lines| is set, 0 otherwise.
When 1, adds an HTML id attribute to each line number, or to an empty <span>
inserted for that purpose if no line numbers are shown. This ID attribute
@@ -692,6 +692,22 @@ the rendered page generated by 2html.vim.
>
:let g:html_no_pre = 1
<
*g:html_no_doc*
Default: 0.
When 1 it doesn't generate a full HTML document with a DOCTYPE, <head>,
<body>, etc. If |g:html_use_css| is enabled (the default) you'll have to
define the CSS manually. The |g:html_dynamic_folds| and |g:html_line_ids|
settings (off by default) also insert some JavaScript.
*g:html_no_links*
Default: 0.
Don't generate <a> tags for text that looks like an URL.
*g:html_no_modeline*
Default: 0.
Don't generate a modeline disabling folding.
*g:html_expand_tabs*
Default: 0 if 'tabstop' is 8, 'expandtab' is 0, 'vartabstop' is not in use,
and no fold column or line numbers occur in the generated HTML;
@@ -1872,6 +1888,16 @@ following two lines to the syntax coloring file for that language
Now you just need to make sure that you add all regions that contain
the preprocessor language to the cluster htmlPreproc.
*html-folding*
The HTML syntax file provides syntax |folding| (see |:syn-fold|) between start
and end tags. This can be turned on by >
:let g:html_syntax_folding = 1
:set foldmethod=syntax
Note: Syntax folding might slow down syntax highlighting significantly,
especially for large files.
HTML/OS (by Aestiva) *htmlos.vim* *ft-htmlos-syntax*
@@ -2400,7 +2426,7 @@ you set the variable: >
:let papp_include_html=1
in your startup file it will try to syntax-hilight html code inside phtml
in your startup file it will try to syntax-highlight html code inside phtml
sections, but this is relatively slow and much too colourful to be able to
edit sensibly. ;)
@@ -2932,7 +2958,7 @@ Default folding is rather detailed, i.e., small syntax units like "if", "do",
You can set "ruby_foldable_groups" to restrict which groups are foldable: >
:let ruby_foldable_groups = 'if case %'
:let ruby_foldable_groups = 'if case %'
<
The value is a space-separated list of keywords:
@@ -2940,22 +2966,22 @@ The value is a space-separated list of keywords:
-------- ------------------------------------- ~
ALL Most block syntax (default)
NONE Nothing
if "if" or "unless" block
if "if" or "unless" block
def "def" block
class "class" block
module "module" block
do "do" block
do "do" block
begin "begin" block
case "case" block
for "for", "while", "until" loops
{ Curly bracket block or hash literal
[ Array literal
% Literal with "%" notation, e.g.: %w(STRING), %!STRING!
/ Regexp
{ Curly bracket block or hash literal
[ Array literal
% Literal with "%" notation, e.g.: %w(STRING), %!STRING!
/ Regexp
string String and shell command output (surrounded by ', ", `)
: Symbol
# Multiline comment
<< Here documents
: Symbol
# Multiline comment
<< Here documents
__END__ Source code after "__END__" directive
*ruby_no_expensive*
@@ -3595,6 +3621,14 @@ highlighting is to put the following line in your |vimrc|: >
<
WDL *wdl.vim* *wdl-syntax*
The Workflow Description Language is a way to specify data processing workflows
with a human-readable and writeable syntax. This is used a lot in
bioinformatics. More info on the spec can be found here:
https://github.com/openwdl/wdl
XF86CONFIG *xf86conf.vim* *ft-xf86conf-syntax*
The syntax of XF86Config file differs in XFree86 v3.x and v4.x. Both
@@ -3802,7 +3836,7 @@ SYNTAX ISKEYWORD SETTING *:syn-iskeyword*
clear: Syntax specific iskeyword setting is disabled and the
buffer-local 'iskeyword' setting is used.
{option} Set the syntax 'iskeyword' option to a new value.
{option} Set the syntax 'iskeyword' option to a new value.
Example: >
:syntax iskeyword @,48-57,192-255,$,_
@@ -4875,7 +4909,7 @@ is mostly used, because it looks better.
In the next section you can find information about indivisual highlight groups
and how to specify colors for them. Most likely you want to just select a set
of colors by using the `:colorscheme` command, for example: >
colorscheme pablo
<
*:colo* *:colorscheme* *E185*
@@ -4927,7 +4961,7 @@ Change a couple more colors: >
augroup my_colorschemes
au!
au Colorscheme pablo hi Normal ctermbg=NONE
\ | higlight Special ctermfg=63
\ | highlight Special ctermfg=63
\ | highlight Identifier ctermfg=44
augroup END
@@ -5280,7 +5314,7 @@ guisp={color-name} *highlight-guisp*
"gg" is the Green value
"bb" is the Blue value
All values are hexadecimal, range from "00" to "ff". Examples: >
:highlight Comment guifg=#11f0c3 guibg=#ff00ff
:highlight Comment guifg=#11f0c3 guibg=#ff00ff
<
If you are authoring a color scheme and use the same hexadecimal value
repeatedly, you can define a name for it in |v:colornames|. For
@@ -5370,16 +5404,16 @@ LineNrBelow Line number for when the 'relativenumber'
*hl-CursorLineNr*
CursorLineNr Like LineNr when 'cursorline' is set and 'cursorlineopt'
contains "number" or is "both", for the cursor line.
*hl-CursorLineSign*
CursorLineSign Like SignColumn when 'cursorline' is set for the cursor line.
*hl-CursorLineFold*
CursorLineFold Like FoldColumn when 'cursorline' is set for the cursor line.
*hl-CursorLineSign*
CursorLineSign Like SignColumn when 'cursorline' is set for the cursor line.
*hl-MatchParen*
MatchParen Character under the cursor or just before it, if it
is a paired bracket, and its match. |pi_paren.txt|
*hl-MessageWindow*
MessageWindow Messages popup window used when 'cmdheight' is zero. If not
defined |hl-WarningMsg| is used.
MessageWindow Messages popup window used by `:echowindow`. If not defined
|hl-WarningMsg| is used.
*hl-ModeMsg*
ModeMsg 'showmode' message (e.g., "-- INSERT --").
*hl-MoreMsg*

View File

@@ -231,7 +231,9 @@ $quote eval.txt /*$quote*
'emoji' options.txt /*'emoji'*
'enc' options.txt /*'enc'*
'encoding' options.txt /*'encoding'*
'endoffile' options.txt /*'endoffile'*
'endofline' options.txt /*'endofline'*
'eof' options.txt /*'eof'*
'eol' options.txt /*'eol'*
'ep' options.txt /*'ep'*
'equalalways' options.txt /*'equalalways'*
@@ -435,10 +437,12 @@ $quote eval.txt /*$quote*
'key' options.txt /*'key'*
'keymap' options.txt /*'keymap'*
'keymodel' options.txt /*'keymodel'*
'keyprotocol' options.txt /*'keyprotocol'*
'keywordprg' options.txt /*'keywordprg'*
'km' options.txt /*'km'*
'kmp' options.txt /*'kmp'*
'kp' options.txt /*'kp'*
'kpc' options.txt /*'kpc'*
'langmap' options.txt /*'langmap'*
'langmenu' options.txt /*'langmenu'*
'langnoremap' options.txt /*'langnoremap'*
@@ -598,7 +602,9 @@ $quote eval.txt /*$quote*
'noek' options.txt /*'noek'*
'noemo' options.txt /*'noemo'*
'noemoji' options.txt /*'noemoji'*
'noendoffile' options.txt /*'noendoffile'*
'noendofline' options.txt /*'noendofline'*
'noeof' options.txt /*'noeof'*
'noeol' options.txt /*'noeol'*
'noequalalways' options.txt /*'noequalalways'*
'noerrorbells' options.txt /*'noerrorbells'*
@@ -1055,6 +1061,7 @@ $quote eval.txt /*$quote*
't_RC' term.txt /*'t_RC'*
't_RF' term.txt /*'t_RF'*
't_RI' term.txt /*'t_RI'*
't_RK' term.txt /*'t_RK'*
't_RS' term.txt /*'t_RS'*
't_RT' term.txt /*'t_RT'*
't_RV' term.txt /*'t_RV'*
@@ -2158,7 +2165,7 @@ $quote eval.txt /*$quote*
:abclear map.txt /*:abclear*
:abo windows.txt /*:abo*
:aboveleft windows.txt /*:aboveleft*
:abstract vim9.txt /*:abstract*
:abstract vim9class.txt /*:abstract*
:addd quickfix.txt /*:addd*
:al windows.txt /*:al*
:all windows.txt /*:all*
@@ -2318,7 +2325,7 @@ $quote eval.txt /*$quote*
:chistory quickfix.txt /*:chistory*
:cl quickfix.txt /*:cl*
:cla quickfix.txt /*:cla*
:class vim9.txt /*:class*
:class vim9class.txt /*:class*
:clast quickfix.txt /*:clast*
:cle motion.txt /*:cle*
:clearjumps motion.txt /*:clearjumps*
@@ -2495,15 +2502,15 @@ $quote eval.txt /*$quote*
:emenu gui.txt /*:emenu*
:en eval.txt /*:en*
:end eval.txt /*:end*
:endclass vim9.txt /*:endclass*
:endclass vim9class.txt /*:endclass*
:enddef vim9.txt /*:enddef*
:endenum vim9.txt /*:endenum*
:endenum vim9class.txt /*:endenum*
:endf userfunc.txt /*:endf*
:endfo eval.txt /*:endfo*
:endfor eval.txt /*:endfor*
:endfunction userfunc.txt /*:endfunction*
:endif eval.txt /*:endif*
:endinterface vim9.txt /*:endinterface*
:endinterface vim9class.txt /*:endinterface*
:endt eval.txt /*:endt*
:endtry eval.txt /*:endtry*
:endw eval.txt /*:endw*
@@ -2512,7 +2519,7 @@ $quote eval.txt /*$quote*
:ene! editing.txt /*:ene!*
:enew editing.txt /*:enew*
:enew! editing.txt /*:enew!*
:enum vim9.txt /*:enum*
:enum vim9class.txt /*:enum*
:eval eval.txt /*:eval*
:ex editing.txt /*:ex*
:exe eval.txt /*:exe*
@@ -2642,7 +2649,7 @@ $quote eval.txt /*$quote*
:inoreme gui.txt /*:inoreme*
:inoremenu gui.txt /*:inoremenu*
:insert insert.txt /*:insert*
:interface vim9.txt /*:interface*
:interface vim9class.txt /*:interface*
:intro starting.txt /*:intro*
:is tagsrch.txt /*:is*
:isearch tagsrch.txt /*:isearch*
@@ -3038,6 +3045,9 @@ $quote eval.txt /*$quote*
:r! insert.txt /*:r!*
:range cmdline.txt /*:range*
:range! change.txt /*:range!*
:range-closed-fold cmdline.txt /*:range-closed-fold*
:range-offset cmdline.txt /*:range-offset*
:range-pattern cmdline.txt /*:range-pattern*
:re insert.txt /*:re*
:read insert.txt /*:read*
:read! insert.txt /*:read!*
@@ -3276,7 +3286,7 @@ $quote eval.txt /*$quote*
:startgreplace insert.txt /*:startgreplace*
:startinsert insert.txt /*:startinsert*
:startreplace insert.txt /*:startreplace*
:static vim9.txt /*:static*
:static vim9class.txt /*:static*
:stj tagsrch.txt /*:stj*
:stjump tagsrch.txt /*:stjump*
:stop starting.txt /*:stop*
@@ -3454,7 +3464,7 @@ $quote eval.txt /*$quote*
:tunma map.txt /*:tunma*
:tunmap map.txt /*:tunmap*
:tunmenu gui.txt /*:tunmenu*
:type vim9.txt /*:type*
:type vim9class.txt /*:type*
:u undo.txt /*:u*
:un undo.txt /*:un*
:una map.txt /*:una*
@@ -3978,6 +3988,7 @@ CTRL-{char} intro.txt /*CTRL-{char}*
Channel eval.txt /*Channel*
Channels eval.txt /*Channels*
Chinese mbyte.txt /*Chinese*
Class vim9class.txt /*Class*
Cmd-event autocmd.txt /*Cmd-event*
CmdUndefined autocmd.txt /*CmdUndefined*
Cmdline cmdline.txt /*Cmdline*
@@ -4350,8 +4361,28 @@ E1304 vim9.txt /*E1304*
E1305 textprop.txt /*E1305*
E1306 vim9.txt /*E1306*
E1307 vim9.txt /*E1307*
E1308 builtin.txt /*E1308*
E1309 map.txt /*E1309*
E131 userfunc.txt /*E131*
E1310 gui.txt /*E1310*
E1311 map.txt /*E1311*
E1312 windows.txt /*E1312*
E1313 eval.txt /*E1313*
E1314 vim9class.txt /*E1314*
E1315 vim9class.txt /*E1315*
E1316 vim9class.txt /*E1316*
E1317 vim9class.txt /*E1317*
E1318 vim9class.txt /*E1318*
E1319 eval.txt /*E1319*
E132 userfunc.txt /*E132*
E1320 eval.txt /*E1320*
E1321 eval.txt /*E1321*
E1322 eval.txt /*E1322*
E1323 eval.txt /*E1323*
E1324 eval.txt /*E1324*
E1325 vim9class.txt /*E1325*
E1326 vim9class.txt /*E1326*
E1327 vim9class.txt /*E1327*
E133 userfunc.txt /*E133*
E134 change.txt /*E134*
E135 autocmd.txt /*E135*
@@ -5410,6 +5441,7 @@ OS390-bugs os_390.txt /*OS390-bugs*
OS390-has-ebcdic os_390.txt /*OS390-has-ebcdic*
OS390-limitations os_390.txt /*OS390-limitations*
OS390-open-source os_390.txt /*OS390-open-source*
Object vim9class.txt /*Object*
OffTheSpot mbyte.txt /*OffTheSpot*
OnTheSpot mbyte.txt /*OnTheSpot*
Operator-pending intro.txt /*Operator-pending*
@@ -5569,7 +5601,14 @@ VMS os_vms.txt /*VMS*
Vi intro.txt /*Vi*
View starting.txt /*View*
Vim9 vim9.txt /*Vim9*
Vim9-abstract-class vim9class.txt /*Vim9-abstract-class*
Vim9-class vim9class.txt /*Vim9-class*
Vim9-class-overview vim9class.txt /*Vim9-class-overview*
Vim9-enum vim9class.txt /*Vim9-enum*
Vim9-script vim9.txt /*Vim9-script*
Vim9-simple-class vim9class.txt /*Vim9-simple-class*
Vim9-type vim9class.txt /*Vim9-type*
Vim9-using-interface vim9class.txt /*Vim9-using-interface*
VimEnter autocmd.txt /*VimEnter*
VimLeave autocmd.txt /*VimLeave*
VimLeavePre autocmd.txt /*VimLeavePre*
@@ -5603,7 +5642,10 @@ WinClosed autocmd.txt /*WinClosed*
WinEnter autocmd.txt /*WinEnter*
WinLeave autocmd.txt /*WinLeave*
WinNew autocmd.txt /*WinNew*
WinResized autocmd.txt /*WinResized*
WinResized-event windows.txt /*WinResized-event*
WinScrolled autocmd.txt /*WinScrolled*
WinScrolled-event windows.txt /*WinScrolled-event*
X change.txt /*X*
X11 options.txt /*X11*
X11-icon gui_x11.txt /*X11-icon*
@@ -6237,6 +6279,9 @@ cino-w indent.txt /*cino-w*
cino-{ indent.txt /*cino-{*
cino-} indent.txt /*cino-}*
cinoptions-values indent.txt /*cinoptions-values*
class vim9class.txt /*class*
class-member vim9class.txt /*class-member*
class-method vim9class.txt /*class-method*
clear-undo undo.txt /*clear-undo*
clearmatches() builtin.txt /*clearmatches()*
client-server remote.txt /*client-server*
@@ -6293,6 +6338,7 @@ compile-changes-8 version8.txt /*compile-changes-8*
compile-changes-9 version9.txt /*compile-changes-9*
compiler-compaqada ft_ada.txt /*compiler-compaqada*
compiler-decada ft_ada.txt /*compiler-decada*
compiler-dotnet quickfix.txt /*compiler-dotnet*
compiler-gcc quickfix.txt /*compiler-gcc*
compiler-gnat ft_ada.txt /*compiler-gnat*
compiler-hpada ft_ada.txt /*compiler-hpada*
@@ -6651,6 +6697,7 @@ end intro.txt /*end*
end-of-file pattern.txt /*end-of-file*
enlightened-terminal syntax.txt /*enlightened-terminal*
environ() builtin.txt /*environ()*
eol-and-eof editing.txt /*eol-and-eof*
erlang.vim syntax.txt /*erlang.vim*
err_buf channel.txt /*err_buf*
err_cb channel.txt /*err_cb*
@@ -6680,6 +6727,8 @@ escape() builtin.txt /*escape()*
escape-bar version4.txt /*escape-bar*
euphoria3.vim syntax.txt /*euphoria3.vim*
euphoria4.vim syntax.txt /*euphoria4.vim*
euro digraph.txt /*euro*
euro-digraph digraph.txt /*euro-digraph*
eval eval.txt /*eval*
eval() builtin.txt /*eval()*
eval-examples eval.txt /*eval-examples*
@@ -6807,6 +6856,7 @@ expression-syntax eval.txt /*expression-syntax*
exrc starting.txt /*exrc*
extend() builtin.txt /*extend()*
extendnew() builtin.txt /*extendnew()*
extends vim9class.txt /*extends*
extension-removal cmdline.txt /*extension-removal*
extensions-improvements todo.txt /*extensions-improvements*
f motion.txt /*f*
@@ -6948,6 +6998,7 @@ form.vim syntax.txt /*form.vim*
format-bullet-list tips.txt /*format-bullet-list*
format-comments change.txt /*format-comments*
format-formatexpr change.txt /*format-formatexpr*
formatOtherKeys map.txt /*formatOtherKeys*
formatting change.txt /*formatting*
forth.vim syntax.txt /*forth.vim*
fortran.vim syntax.txt /*fortran.vim*
@@ -7250,8 +7301,11 @@ g:html_id_expr syntax.txt /*g:html_id_expr*
g:html_ignore_conceal syntax.txt /*g:html_ignore_conceal*
g:html_ignore_folding syntax.txt /*g:html_ignore_folding*
g:html_line_ids syntax.txt /*g:html_line_ids*
g:html_no_doc syntax.txt /*g:html_no_doc*
g:html_no_foldcolumn syntax.txt /*g:html_no_foldcolumn*
g:html_no_invalid syntax.txt /*g:html_no_invalid*
g:html_no_links syntax.txt /*g:html_no_links*
g:html_no_modeline syntax.txt /*g:html_no_modeline*
g:html_no_pre syntax.txt /*g:html_no_pre*
g:html_no_progress syntax.txt /*g:html_no_progress*
g:html_number_lines syntax.txt /*g:html_number_lines*
@@ -7472,6 +7526,7 @@ get() builtin.txt /*get()*
get-ms-debuggers debug.txt /*get-ms-debuggers*
getbufinfo() builtin.txt /*getbufinfo()*
getbufline() builtin.txt /*getbufline()*
getbufoneline() builtin.txt /*getbufoneline()*
getbufvar() builtin.txt /*getbufvar()*
getchangelist() builtin.txt /*getchangelist()*
getchar() builtin.txt /*getchar()*
@@ -7503,6 +7558,7 @@ getloclist() builtin.txt /*getloclist()*
getmarklist() builtin.txt /*getmarklist()*
getmatches() builtin.txt /*getmatches()*
getmousepos() builtin.txt /*getmousepos()*
getmouseshape() builtin.txt /*getmouseshape()*
getpid() builtin.txt /*getpid()*
getpos() builtin.txt /*getpos()*
getqflist() builtin.txt /*getqflist()*
@@ -7823,6 +7879,7 @@ howto.txt howto.txt /*howto.txt*
hpterm term.txt /*hpterm*
hpterm-color syntax.txt /*hpterm-color*
html-flavor insert.txt /*html-flavor*
html-folding syntax.txt /*html-folding*
html-indent indent.txt /*html-indent*
html-indenting indent.txt /*html-indenting*
html.vim syntax.txt /*html.vim*
@@ -7974,6 +8031,7 @@ if_sniff.txt if_sniff.txt /*if_sniff.txt*
if_tcl.txt if_tcl.txt /*if_tcl.txt*
ignore-errors eval.txt /*ignore-errors*
ignore-timestamp editing.txt /*ignore-timestamp*
implements vim9class.txt /*implements*
import-autoload vim9.txt /*import-autoload*
import-legacy vim9.txt /*import-legacy*
import-map vim9.txt /*import-map*
@@ -8049,7 +8107,7 @@ interfaces-5.2 version5.txt /*interfaces-5.2*
internal-variables eval.txt /*internal-variables*
internal-wordlist spell.txt /*internal-wordlist*
internet intro.txt /*internet*
interp-string eval.txt /*interp-string*
interpolated-string eval.txt /*interpolated-string*
interrupt() builtin.txt /*interrupt()*
intro intro.txt /*intro*
intro.txt intro.txt /*intro.txt*
@@ -8141,6 +8199,7 @@ keypad-plus intro.txt /*keypad-plus*
keypad-point intro.txt /*keypad-point*
keys() builtin.txt /*keys()*
keytrans() builtin.txt /*keytrans()*
kitty-keyboard-protocol map.txt /*kitty-keyboard-protocol*
known-bugs todo.txt /*known-bugs*
l motion.txt /*l*
l: eval.txt /*l:*
@@ -8418,6 +8477,7 @@ motion-count-multiplied motion.txt /*motion-count-multiplied*
motion.txt motion.txt /*motion.txt*
mouse-mode-table term.txt /*mouse-mode-table*
mouse-overview term.txt /*mouse-overview*
mouse-scrolling-off scroll.txt /*mouse-scrolling-off*
mouse-swap-buttons term.txt /*mouse-swap-buttons*
mouse-using term.txt /*mouse-using*
mouse_col-variable eval.txt /*mouse_col-variable*
@@ -8835,6 +8895,14 @@ nr2char() builtin.txt /*nr2char()*
nroff.vim syntax.txt /*nroff.vim*
null vim9.txt /*null*
null-variable eval.txt /*null-variable*
null_blob vim9.txt /*null_blob*
null_channel vim9.txt /*null_channel*
null_dict vim9.txt /*null_dict*
null_function vim9.txt /*null_function*
null_job vim9.txt /*null_job*
null_list vim9.txt /*null_list*
null_partial vim9.txt /*null_partial*
null_string vim9.txt /*null_string*
number_relativenumber options.txt /*number_relativenumber*
numbered-function eval.txt /*numbered-function*
numbermax-variable eval.txt /*numbermax-variable*
@@ -8844,6 +8912,7 @@ o insert.txt /*o*
o_CTRL-V motion.txt /*o_CTRL-V*
o_V motion.txt /*o_V*
o_v motion.txt /*o_v*
object vim9class.txt /*object*
object-motions motion.txt /*object-motions*
object-select motion.txt /*object-select*
objects index.txt /*objects*
@@ -9502,6 +9571,27 @@ shellescape() builtin.txt /*shellescape()*
shift intro.txt /*shift*
shift-left-right change.txt /*shift-left-right*
shiftwidth() builtin.txt /*shiftwidth()*
shm-A options.txt /*shm-A*
shm-C options.txt /*shm-C*
shm-F options.txt /*shm-F*
shm-I options.txt /*shm-I*
shm-S options.txt /*shm-S*
shm-T options.txt /*shm-T*
shm-W options.txt /*shm-W*
shm-a options.txt /*shm-a*
shm-c options.txt /*shm-c*
shm-f options.txt /*shm-f*
shm-i options.txt /*shm-i*
shm-l options.txt /*shm-l*
shm-m options.txt /*shm-m*
shm-n options.txt /*shm-n*
shm-o options.txt /*shm-o*
shm-q options.txt /*shm-q*
shm-r options.txt /*shm-r*
shm-s options.txt /*shm-s*
shm-t options.txt /*shm-t*
shm-w options.txt /*shm-w*
shm-x options.txt /*shm-x*
short-name-changed version4.txt /*short-name-changed*
showing-menus gui.txt /*showing-menus*
sign-column sign.txt /*sign-column*
@@ -9540,6 +9630,7 @@ slice() builtin.txt /*slice()*
slow-fast-terminal term.txt /*slow-fast-terminal*
slow-start starting.txt /*slow-start*
slow-terminal term.txt /*slow-terminal*
smh-O options.txt /*smh-O*
socket-interface channel.txt /*socket-interface*
sort() builtin.txt /*sort()*
sorting change.txt /*sorting*
@@ -9558,6 +9649,7 @@ spec_chglog_format pi_spec.txt /*spec_chglog_format*
spec_chglog_prepend pi_spec.txt /*spec_chglog_prepend*
spec_chglog_release_info pi_spec.txt /*spec_chglog_release_info*
special-buffers windows.txt /*special-buffers*
specifies vim9class.txt /*specifies*
speed-up tips.txt /*speed-up*
spell spell.txt /*spell*
spell-ACCENT spell.txt /*spell-ACCENT*
@@ -9772,6 +9864,7 @@ swap-file recover.txt /*swap-file*
swapchoice-variable eval.txt /*swapchoice-variable*
swapcommand-variable eval.txt /*swapcommand-variable*
swapfile-changed version4.txt /*swapfile-changed*
swapfilelist() builtin.txt /*swapfilelist()*
swapinfo() builtin.txt /*swapinfo()*
swapname() builtin.txt /*swapname()*
swapname-variable eval.txt /*swapname-variable*
@@ -9882,6 +9975,7 @@ t_RB term.txt /*t_RB*
t_RC term.txt /*t_RC*
t_RF term.txt /*t_RF*
t_RI term.txt /*t_RI*
t_RK term.txt /*t_RK*
t_RS term.txt /*t_RS*
t_RT term.txt /*t_RT*
t_RV term.txt /*t_RV*
@@ -10169,6 +10263,7 @@ termdebug_popup terminal.txt /*termdebug_popup*
termdebug_shortcuts terminal.txt /*termdebug_shortcuts*
termdebug_use_prompt terminal.txt /*termdebug_use_prompt*
termdebug_wide terminal.txt /*termdebug_wide*
termdebug_winbar terminal.txt /*termdebug_winbar*
terminal terminal.txt /*terminal*
terminal-api terminal.txt /*terminal-api*
terminal-autoshelldir terminal.txt /*terminal-autoshelldir*
@@ -10745,6 +10840,7 @@ vim9-unpack-ignore vim9.txt /*vim9-unpack-ignore*
vim9-user-command vim9.txt /*vim9-user-command*
vim9-variable-arguments vim9.txt /*vim9-variable-arguments*
vim9.txt vim9.txt /*vim9.txt*
vim9class.txt vim9class.txt /*vim9class.txt*
vim9script vim9.txt /*vim9script*
vim: options.txt /*vim:*
vim_announce intro.txt /*vim_announce*
@@ -10836,11 +10932,14 @@ w:quickfix_title quickfix.txt /*w:quickfix_title*
w:var eval.txt /*w:var*
waittime channel.txt /*waittime*
warningmsg-variable eval.txt /*warningmsg-variable*
wdl-syntax syntax.txt /*wdl-syntax*
wdl.vim syntax.txt /*wdl.vim*
white-space pattern.txt /*white-space*
whitespace pattern.txt /*whitespace*
wildcard editing.txt /*wildcard*
wildcards editing.txt /*wildcards*
wildmenumode() builtin.txt /*wildmenumode()*
win-scrolled-resized windows.txt /*win-scrolled-resized*
win16 os_win32.txt /*win16*
win32 os_win32.txt /*win32*
win32-!start gui_w32.txt /*win32-!start*

View File

@@ -1,4 +1,4 @@
*term.txt* For Vim version 9.0. Last change: 2022 Apr 23
*term.txt* For Vim version 9.0. Last change: 2022 Dec 01
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -90,6 +90,11 @@ Note: When 't_ti' is not empty, Vim assumes that it causes switching to the
alternate screen. This may slightly change what happens when executing a
shell command or exiting Vim. To avoid this use 't_TI' and 't_TE'.
Vim will try to detect what keyboard protocol the terminal is using with the
't_RK' termcap entry. This is sent after 't_TI', but only when there is no
work to do (no typeahead and no pending commands). That is to avoid the
response to end up in a shell command or arrive after Vim exits.
*xterm-bracketed-paste*
When the 't_BE' option is set then 't_BE' will be sent to the
terminal when entering "raw" mode and 't_BD' when leaving "raw" mode. The
@@ -388,6 +393,8 @@ Added by Vim (there are no standard codes for these):
xterm and other terminal emulators) The
response is stored in |v:termresponse| |xterm-8bit|
|'ttymouse'| |xterm-codes|
t_RK request terminal keyboard protocol state; *t_RK* *'t_RK'*
sent after |t_TI|
t_u7 request cursor position (for xterm) *t_u7* *'t_u7'*
see |'ambiwidth'|
The response is stored in |v:termu7resp|
@@ -569,7 +576,7 @@ anymore.
Vim supports using true colors in the terminal (taken from |highlight-guifg|
and |highlight-guibg|), given that the terminal supports this. To make this
work the 'termguicolors' option needs to be set.
See https://gist.github.com/XVilka/8346728 for a list of terminals that
See https://github.com/termstandard/colors for a list of terminals that
support true colors.
Sometimes setting 'termguicolors' is not enough and one has to set the |t_8f|
@@ -768,8 +775,9 @@ See the "Options" chapter |options|.
If your terminal does not support a scrolling region, but it does support
insert/delete line commands, scrolling with multiple windows may make the
lines jump up and down. If you don't want this set the 'ttyfast' option.
This will redraw the window instead of scroll it.
lines jump up and down. This would happen if the 'ttyfast' option has been
reset. Check that with: >
verbose set ttyfast?
If your terminal scrolls very slowly, but redrawing is not slow, set the
'ttyscroll' option to a small number, e.g., 3. This will make Vim redraw the
@@ -1005,6 +1013,8 @@ and then drag) will result in whole words to be selected. This continues
until the button is released, at which point the selection is per character
again.
For scrolling with the mouse see |scroll-mouse-wheel|.
*gpm-mouse*
The GPM mouse is only supported when the |+mouse_gpm| feature was enabled at
compile time. The GPM mouse driver (Linux console) does not support quadruple

View File

@@ -1,4 +1,4 @@
*terminal.txt* For Vim version 9.0. Last change: 2022 Oct 10
*terminal.txt* For Vim version 9.0. Last change: 2022 Nov 10
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -469,7 +469,6 @@ ConPTY problems have been fixed "winpty" will be preferred.
Environment variables are used to pass information to the running job:
VIM_SERVERNAME v:servername
==============================================================================
2. Terminal functions *terminal-function-details*
@@ -1129,7 +1128,6 @@ reference: >
Creating a screen dump ~
*terminal-screendump*
To create the screen dump, run Vim (or any other program) in a terminal and
make it show the desired state. Then use the |term_dumpwrite()| function to
create a screen dump file. For example: >
@@ -1153,7 +1151,6 @@ If there are differences then v:errors will contain the error message.
Comparing screen dumps ~
*terminal-diffscreendump*
|assert_equalfile()| does not make it easy to see what is different.
To spot the problem use |term_dumpdiff()|: >
call term_dumpdiff("mysyntax.dump", "test.dump")
@@ -1350,6 +1347,7 @@ If 'mouse' is set the plugin adds a window toolbar with these entries:
Eval `:Evaluate`
This way you can use the mouse to perform the most common commands. You need
to have the 'mouse' option set to enable mouse clicks.
See |termdebug_winbar| for configuring this toolbar.
*:Winbar*
You can add the window toolbar in other windows you open with: >
:Winbar
@@ -1415,6 +1413,20 @@ TermdebugStopPost After debugging has ended, gdb-related windows
the state before the debugging was restored.
Customizing ~
*termdebug-customizing* *g:termdebug_config*
In the past several global variables were used for configuration. These are
deprecated and using the g:termdebug_config dictionary is preferred. When
g:termdebug_config exists the other global variables will NOT be used.
The recommended way is to start with an empty dictionary: >
let g:termdebug_config = {}
Then you can add entries to the dictionary as mentioned below. The
deprecated global variable names are mentioned for completeness. If you are
switching over to using g:termdebug_config you can find the old variable name
and take over the value, then delete the deprecated variable.
Prompt mode ~
*termdebug-prompt*
When the |+terminal| feature is not supported and on MS-Windows, gdb will run
@@ -1430,13 +1442,13 @@ in a buffer with 'buftype' set to "prompt". This works slightly differently:
*termdebug_use_prompt*
Prompt mode can be used even when the |+terminal| feature is present with: >
let g:termdebug_config['use_prompt'] = 1
Or if there is no g:termdebug_config: >
If there is no g:termdebug_config you can use: >
let g:termdebug_use_prompt = 1
<
*termdebug_map_K*
The K key is normally mapped to :Evaluate. If you do not want this use: >
let g:termdebug_config['map_K'] = 0
Or if there is no g:termdebug_config: >
If there is no g:termdebug_config you can use: >
let g:termdebug_map_K = 0
<
*termdebug_disasm_window*
@@ -1444,7 +1456,7 @@ If you want the Asm window shown by default, set the flag to 1.
the "disasm_window_height" entry can be used to set the window height: >
let g:termdebug_config['disasm_window'] = 1
let g:termdebug_config['disasm_window_height'] = 15
or, if there is no g:termdebug_config: >
If there is no g:termdebug_config you can use: >
let g:termdebug_disasm_window = 15
Any value greater than 1 will set the Asm window height to that value.
@@ -1462,25 +1474,18 @@ interrupt the running program. But after using the MI command
communication channel.
Customizing ~
*termdebug-customizing* *g:termdebug_config*
In the past several global variables were used for configuration. These are
deprecated, using the g:termdebug_config dictionary is preferred. When
g:termdebug_config exists the other global variables will not be used.
GDB command ~
*g:termdebugger*
To change the name of the gdb command, set "debugger" entry in
g:termdebug_config or the "g:termdebugger" variable before invoking
`:Termdebug`: >
let g:termdebug_config['command'] = "mygdb"
Or if there is no g:termdebug_config: >
If there is no g:termdebug_config you can use: >
let g:termdebugger = "mygdb"
If the command needs an argument use a List: >
let g:termdebug_config['command'] = ['rr', 'replay', '--']
Or if there is no g:termdebug_config: >
If there is no g:termdebug_config you can use: >
let g:termdebugger = ['rr', 'replay', '--']
Several arguments will be added to make gdb work well for the debugger.
@@ -1501,7 +1506,7 @@ Then your gdb is too old.
Colors ~
*hl-debugPC* *hl-debugBreakpoint*
*hl-debugPC* *hl-debugBreakpoint*
The color of the signs can be adjusted with these highlight groups:
- debugPC the current position
- debugBreakpoint a breakpoint
@@ -1517,7 +1522,6 @@ When 'background' is "dark":
Shortcuts ~
*termdebug_shortcuts*
You can define your own shortcuts (mappings) to control gdb, that can work in
any window, using the TermDebugSendCommand() function. Example: >
map ,w :call TermDebugSendCommand('where')<CR>
@@ -1526,7 +1530,6 @@ The argument is the gdb command.
Popup menu ~
*termdebug_popup*
By default the Termdebug plugin sets 'mousemodel' to "popup_setpos" and adds
these entries to the popup menu:
Set breakpoint `:Break`
@@ -1534,17 +1537,23 @@ these entries to the popup menu:
Evaluate `:Evaluate`
If you don't want this then disable it with: >
let g:termdebug_config['popup'] = 0
or if there is no g:termdebug_config: >
If there is no g:termdebug_config you can use: >
let g:termdebug_popup = 0
Window toolbar ~
*termdebug_winbar*
By default the Termdebug plugin creates a window toolbar if the mouse is
enabled (see |:Winbar|). If you don't want this then disable it with: >
let g:termdebug_config['winbar'] = 0
Vim window width ~
*termdebug_wide*
To change the width of the Vim window when debugging starts and use a vertical
split: >
let g:termdebug_config['wide'] = 163
Or if there is no g:termdebug_config: >
If there is no g:termdebug_config you can use: >
let g:termdebug_wide = 163
This will set 'columns' to 163 when `:Termdebug` is used. The value is

View File

@@ -1,4 +1,4 @@
*testing.txt* For Vim version 9.0. Last change: 2022 May 16
*testing.txt* For Vim version 9.0. Last change: 2022 Nov 28
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -135,9 +135,9 @@ test_gui_event({event}, {args})
Inject either a mouse button click, or a mouse move, event.
The supported items in {args} are:
button: mouse button. The supported values are:
0 right mouse button
0 left mouse button
1 middle mouse button
2 left mouse button
2 right mouse button
3 mouse button release
4 scroll wheel down
5 scroll wheel up

View File

@@ -1,4 +1,4 @@
*textprop.txt* For Vim version 9.0. Last change: 2022 Oct 13
*textprop.txt* For Vim version 9.0. Last change: 2022 Nov 18
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -147,7 +147,8 @@ prop_add({lnum}, {col}, {props})
above/below the line if {col} is zero; prepend
and/or append spaces for padding with
highlighting; cannot be used with "length",
"end_lnum" and "end_col" |virtual-text|
"end_lnum" and "end_col"
See |virtual-text| for more information.
*E1294*
text_align when "text" is present and {col} is zero;
specifies where to display the text:

View File

@@ -539,7 +539,7 @@ the current window, try this custom `:HelpCurwin` command:
>
command -bar -nargs=? -complete=help HelpCurwin execute s:HelpCurwin(<q-args>)
let s:did_open_help = v:false
function s:HelpCurwin(subject) abort
let mods = 'silent noautocmd keepalt'
if !s:did_open_help

View File

@@ -1,4 +1,4 @@
*todo.txt* For Vim version 9.0. Last change: 2022 Oct 16
*todo.txt* For Vim version 9.0. Last change: 2022 Dec 11
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -38,20 +38,33 @@ browser use: https://github.com/vim/vim/issues/1234
*known-bugs*
-------------------- Known bugs and current work -----------------------
'smoothscroll':
- CTRL-E and gj in long line with 'scrolloff' 5 not working well yet.
- computing 'scrolloff' position row use w_skipcol
Check textprop right/above/below with 'number' set and "n" in 'cpo'.
Don't do anything for ":!". #11372
Upcoming larger works:
- Make spell checking work with recent .dic/.aff files, e.g. French. #4916
Make Vim understand the format somehow? Search for "spell" below.
Make sure suggestions are speedy, also with composed words (German).
- Discuss alternatives for using other grammars (treesitter, TextMate).
- Possibly conversion to Vim syntax rules.
- Other mechanism than group and cluster to nest syntax items, to be used
for grammars.
- Possibly keeping the parsed syntax tree and incremental updates.
- tree-sitter doesn't handle incorrect syntax (while typing) properly.
- Make clear how it relates to LSP.
- example plugin: https://github.com/uga-rosa/dps-vsctm.vim
Further Vim9 improvements, possibly after launch:
- Use Vim9 for more runtime files.
- implement :class and :interface: See |vim9-classes| #11544
make default constructor use "this.member = void"
make public / default read access / private work for members.
string value of class and object in echo_string_core()
object empty(), len() - can class define a method?
tv_equal() should compare values, not identity.
garbage collection: set_ref_in_item(): Mark items in class as used ?
type() should return different type for each class?
how about lock/unlock?
- implement :type
- implement :enum
- implement :class and :interface: See |vim9-classes|
- Use Vim9 for more runtime files.
- Inline call to map() and filter(), better type checking.
- When evaluating constants for script variables, some functions could work:
has(featureName), len(someString)
@@ -164,6 +177,8 @@ Terminal emulator window:
- When 'encoding' is not utf-8, or the job is using another encoding, setup
conversions.
Crash when a variable is removed while listing variables (Issue #11435)
Autoconf: must use autoconf 2.69, later version generates lots of warnings
- try using autoconf 2.71 and fix all "obsolete" warnings #11322
@@ -177,20 +192,66 @@ reduced?
Add BufDeletePost. #11041
Add winid arg to col() and charcol() #11466 (request #11461)
Can we make 'noendofline' and 'endoffile' visible? Should show by default,
since it's an unusual situation.
- Show 'noendofline' when it would be used for writing ('fileformat' "dos")
with an upside down exclamation mark? NonText highlighting.
- Show 'endoffile' when it would be used for writing ('fileformat' "dos") with
"CTRL-Z", NonText highlighting.
- Add 'fillchars' items to change this, default behavior like:
noeol:¡
eof:CTRL-Z
Test property disappears when using CR twice in a row. OK when some text was
entered. (#11151)
Add 'keywordprg' to various ftplugin files:
https://github.com/vim/vim/pull/5566
PR #11579 to add visualtext(), return Visually selected text.
Issue #10512: Dynamic loading broken with Perl 5.36
Damien has a patch (2022 Dec 4)
Add some kind of ":whathappend" command and functions to make visible what the
last few typed keys and executed commands are. To be used when the user
wonders what went wrong.
- typed keys - Normal mode command - like what is recorded in a register and
displayed by 'showcmd'.
- executed command lines
- with more verbosity: what scripts/functions/autocommands were executed
NFA regexp does not handle composing characters well: #10286
[ɔ̃] matches both ɔ and ɔ̃
\(ɔ\|ɔ̃\) matches ɔ and not ɔ̃
Improvement in terminal configuration mess: Request the terminfo entry from
the terminal itself. The $TERM value then is only relevant for whether this
feature is supported or not. Replaces the xterm mechanism to request each
entry separately. #6609
Multiplexers (screen, tmux) can request it to the underlying terminal, and
pass it on with modifications.
How to get all the text quickly (also over ssh)? Can we use a side channel?
Is there a way to make 'autowriteall' make a clean exit when the xterm is
closed? (Dennis Nazic says files are preserved, okt 28). Perhaps handle TERM
like HUP?
Better terminal emulator support:
> Somehow request the terminfo entry from the terminal itself. The $TERM
value then is only relevant for whether this feature is supported or not.
Replaces the xterm mechanism to request each entry separately. #6609
Multiplexers (screen, tmux) can request it to the underlying terminal, and
pass it on with modifications.
How to get all the text quickly (also over ssh)? Can we use a side channel?
> When xterm supports sending an Escape sequence for the Esc key, should
have a way to request this state. That could be an XTGETTCAP entry, e.g.
"k!". Add "esc_sends_sequence" flag.
If we know this state, then do not pretend going out of Insert mode in
vgetorpeek(), where kitty_protocol_state is checked.
> If a response ends up in a shell command, one way to avoid this is by
sending t_RV last and delay starting a shell command until the response
has been seen.
> Can we use the req_more_codes_from_term() mechanism with more terminals?
Should we repeat it after executing a shell command?
Can also add this to the 'keyprotocol' option: "mok2+tcap"
> In the table of terminal names pointing to the list of termcap entries,
add an optional additional one. So that "xterm-kitty" can first load
"xterm" and then add "kitty" entries.
Using "A" and "o" in manually created fold (in empty buffer) does not behave
consistenly (James McCoy, #10698)
@@ -207,7 +268,7 @@ Resetting 't_ut' already causes this?
When scheme can't be found by configure there is no clear "not found" message:
configure:5769: checking MzScheme install prefix
configure:5781: result:
configure:5781: result:
Can "CSI nr X" be used instead of outputting spaces? Is it faster? #8002
@@ -222,6 +283,15 @@ Idea: when typing ":e /some/dir/" and "dir" does not exist, highlight in red.
initialization to figure out the default value from 'shell'. Add a test for
this.
Support translations for plugins: #11637
- Need a tool like xgettext for Vim script, generates a .pot file.
Need the equivalent of _() and N_(), perhaps TR() and TRN().
- Instructions for how to create .po files and translate.
- Script or Makefile to generate .mo files.
- Instructions and perhaps a script to install the .mo files in the right
place.
- Add variant of gettext() that takes a package name.
With concealed text mouse click doesn't put the cursor in the right position.
(Herb Sitz) Fix by Christian Brabandt, 2011 Jun 16. Doesn't work properly,
need to make the change in where RET_WIN_BUF_CHARTABSIZE() is called.
@@ -264,8 +334,8 @@ Also, z= in German on a long word can take a very long time, but CTRL-C to
interrupt does not work. Where to add ui_breakcheck()?
New English spell files also have very slow suggestions.
French spell files don't work correctly. #4916
Make Vim understand the format somehow?
When 'spelloptions' is "camel" then zG doesn't work on some words.
(Gary Johnson, 17 Oct 2022)
Make "g>" and "g<" in Visual mode move the text right or left.
Also for a block selection. #8558
@@ -299,6 +369,9 @@ when redirecting to a local variable (function or script) storing the value
won't work. At least give an error. Is there a way to make it work?
#10616
Completion for ":runtime" should show valid values, not what's in the current
directory. (#11447)
Add an option to start_timer() to return from the input loop with K_IGNORE.
This is useful e.g. when a popup was created that disables mappings, we need
to return from vgetc() to make this happen. #7011
@@ -340,6 +413,7 @@ Is this the right solution? Need to cleanup langmap behavior:
So that replaying the register doesn't use keymap/langmap and still does the
same thing.
Also see #737: langmap not applied to replaying recording.
Perhaps also related: #5147
Matchparen doesn't remove highlight after undo. (#7054)
Is OK when syntax HL is active.
@@ -380,6 +454,8 @@ and/or "sandbox" are set.
Problem with auto-formatting - inserting space and putting cursor before added
character. (#6154)
Auto-formatting comments joins a following non-comment line when the comment
ends in a space. (Adam Levy, 18 Oct 2022)
When 'lazyredraw' is set sometimes the title is not updated.
(Jason Franklin, 2020 Feb 3) Looks like a race condition.
@@ -2585,13 +2661,6 @@ Awaiting updated patches:
- Add possibility to highlight specific columns (for Fortran). Or put a
line in between columns (e.g., for 'textwidth').
Patch to add 'hlcolumn' from Vit Stradal, 2004 May 20.
8 Add functions:
gettext() Translate a message. (Patch from Yasuhiro Matsumoto)
Update 2004 Sep 10
Another patch from Edward L. Fox (2005 Nov 24)
Search in 'runtimepath'?
More docs needed about how to use this.
How to get the messages into the .po files?
confirm() add "flags" argument, with 'v' for vertical
layout and 'c' for console dialog. (Haegg)
Flemming Madsen has a patch for the 'c' flag
@@ -4475,8 +4544,11 @@ Autocommands:
BufChangePre, BufChangePost and RevertBuf. (Shah)
ViewChanged - triggered when the text scrolls and when the window size
changes.
WinResized - After a window has been resized
WinClose - Just before closing a window
QuickfixList - when any entry in the current list changes or another
list is selected
QuickfixPosition - when selecting another entry in the current quickfix
list
- Write the file now and then ('autosave'):
*'autosave'* *'as'* *'noautosave'* *'noas'*
'autosave' 'as' number (default 0)

View File

@@ -1,4 +1,4 @@
*userfunc.txt* For Vim version 9.0. Last change: 2022 Sep 09
*userfunc.txt* For Vim version 9.0. Last change: 2022 Nov 17
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -8,8 +8,8 @@ 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|
1. Defining a function |define-function|
2. Calling a function |:call|
3. Cleaning up in a function |:defer|
4. Automatically loading functions |autoload-functions|
@@ -405,7 +405,7 @@ function to abort. `:defer` can be used to avoid that: >
call Handle('Outfile')
endfunc
Note that deleting "Outfile" is scheduled before calling system(), since it
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

View File

@@ -1,4 +1,4 @@
*usr_03.txt* For Vim version 9.0. Last change: 2020 Sep 03
*usr_03.txt* For Vim version 9.0. Last change: 2022 Oct 30
VIM USER MANUAL - by Bram Moolenaar
@@ -223,7 +223,7 @@ you can see? This figure shows the three commands you can use:
+---------------------------+
Hints: "H" stands for Home, "M" for Middle and "L" for Last. Alternatively,
"H" for high, "M" for Middle and "L" for low.
"H" for High, "M" for Middle and "L" for Low.
==============================================================================
*03.6* Telling where you are

View File

@@ -1,4 +1,4 @@
*usr_12.txt* For Vim version 9.0. Last change: 2021 Apr 19
*usr_12.txt* For Vim version 9.0. Last change: 2022 Nov 19
VIM USER MANUAL - by Bram Moolenaar

View File

@@ -1,4 +1,4 @@
*usr_41.txt* For Vim version 9.0. Last change: 2022 Oct 07
*usr_41.txt* For Vim version 9.0. Last change: 2022 Dec 05
VIM USER MANUAL - by Bram Moolenaar
@@ -139,7 +139,7 @@ FOUR KINDS OF NUMBERS
Numbers can be decimal, hexadecimal, octal and binary.
A hexadecimal number starts with "0x" or "0X". For example "0x1f" is decimal
31 and 0x1234 is decimal 4660.
31 and "0x1234" is decimal 4660.
An octal number starts with "0o", "0O". "0o17" is decimal 15.
@@ -442,7 +442,7 @@ If you don't like the concatenation you can use the $"string" form, which
accepts an expression in curly braces: >
echo $"Name: {name}"
See |interp-string| for more information.
See |interpolated-string| for more information.
Borrowed from the C language is the conditional expression: >
@@ -687,7 +687,7 @@ search() function uses its first argument as a search pattern and the second
one as flags. The "W" flag means the search doesn't wrap around the end of
the file.
Using the `call` command is optional in |Vim9| script. It is required in
Using the `call` command is optional in |Vim9| script. It is required in
legacy script and on the command line: >
call search("Date: ", "W")
@@ -803,7 +803,7 @@ List manipulation: *list-functions*
call() call a function with List as arguments
index() index of a value in a List or Blob
indexof() index in a List or Blob where an expression
evaluates to true
evaluates to true
max() maximum value in a List
min() minimum value in a List
count() count number of times a value appears in a List
@@ -935,6 +935,7 @@ Working with text in the current buffer: *text-functions*
Working with text in another buffer:
getbufline() get a list of lines from the specified buffer
getbufoneline() get a one line from the specified buffer
setbufline() replace a line in the specified buffer
appendbufline() append a list of lines in the specified buffer
deletebufline() delete lines from a specified buffer
@@ -1030,6 +1031,7 @@ Buffers, windows and the argument list:
getwininfo() get a list with window information
getchangelist() get a list of change list entries
getjumplist() get a list of jump list entries
swapfilelist() list of existing swap files in 'directory'
swapinfo() information about a swap file
swapname() get the swap file path of a buffer
@@ -1110,6 +1112,7 @@ Interactive: *interactive-functions*
getcharstr() get a character from the user as a string
getcharmod() get modifiers for the last typed character
getmousepos() get last known mouse position
getmouseshape() get name of the current mouse shape
echoraw() output characters as-is
feedkeys() put characters in the typeahead queue
input() get a line from the user

View File

@@ -1,4 +1,4 @@
*various.txt* For Vim version 9.0. Last change: 2022 Oct 13
*various.txt* For Vim version 9.0. Last change: 2022 Nov 04
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -249,8 +249,7 @@ g8 Print the hex values of the bytes used in the
*:!cmd* *:!*
:!{cmd} Execute {cmd} with the shell. See also the 'shell'
and 'shelltype' option. `:!` without a {cmd} is a no-op,
it does nothing.
and 'shelltype' option.
*E34*
Any '!' in {cmd} is replaced with the previous
external command (see also 'cpoptions'). But not when
@@ -299,7 +298,8 @@ g8 Print the hex values of the bytes used in the
:silent !{cmd}
< The screen is not redrawn then, thus you have to use
CTRL-L or ":redraw!" if the command did display
something.
something. However, this depends on what the |t_ti|
and |t_te| termcap entries are set to.
Also see |shell-window|.
*:!!*

View File

@@ -1,4 +1,4 @@
*version5.txt* For Vim version 9.0. Last change: 2022 Apr 06
*version5.txt* For Vim version 9.0. Last change: 2022 Nov 09
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -118,7 +118,7 @@ Added |added-5.8|
Fixed |fixed-5.8|
==============================================================================
INCOMPATIBLE *incompatible-5*
INCOMPATIBLE *incompatible-5*
Default value for 'compatible' changed *cp-default*
--------------------------------------
@@ -360,7 +360,7 @@ CTRL-_ key for this |i_CTRL-_|. >
:imap <C-B> <C-O>:set revins!<CR>
==============================================================================
NEW FEATURES *new-5*
NEW FEATURES *new-5*
Syntax highlighting *new-highlighting*
-------------------
@@ -635,7 +635,7 @@ Included support for the Farsi language (Shiran). Only when enabled at
compile time. See |farsi|.
==============================================================================
IMPROVEMENTS *improvements-5*
IMPROVEMENTS *improvements-5*
Performance:
- When 'showcmd' was set, mappings would execute much more slowly because the
@@ -929,7 +929,7 @@ Some versions of Motif require "-lXpm". Added check for this in configure.
Don't add "-L/usr/lib" to the link line, causes problems on a few systems.
==============================================================================
COMPILE TIME CHANGES *compile-changes-5*
COMPILE TIME CHANGES *compile-changes-5*
When compiling, allow a choice for minimal, normal or maximal features in an
easy way, by changing a single line in src/feature.h.
@@ -975,7 +975,7 @@ Don't use HPUX digraphs by default, but only when HPUX_DIGRAPHS is defined.
|digraphs-default|
==============================================================================
BUG FIXES *bug-fixes-5*
BUG FIXES *bug-fixes-5*
Note: Some of these fixes may only apply to test versions which were
created after version 4.6, but before 5.0.

View File

@@ -1,4 +1,4 @@
*version9.txt* For Vim version 9.0. Last change: 2022 Jun 28
*version9.txt* For Vim version 9.0. Last change: 2022 Nov 23
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -254,12 +254,12 @@ summary.
Many memory leaks, invalid memory accesses and crashes have been fixed.
See the list of patches below: |bug-fixes-9|.
Support for Vim expression evaluation in a string. |interp-string|
Support for Vim expression evaluation in a string. |interpolated-string|
Support for evaluating Vim expressions in a heredoc. |:let-heredoc|
Support for fuzzy matching:
- a string in a List of strings. |fuzzy-matching|
- completion support for command line completion using 'wildoptions'
- completion support for command line completion using 'wildoptions'.
- for |:vimgrep|.
Added support for the |Haiku| OS.
@@ -398,22 +398,22 @@ Update xdiff to version 2.33. Update libvterm to revision 789.
Support 'trim' for Python/Lua/Perl/Tcl/Ruby/MzScheme interface heredoc.
Add the |t_AU| and |t_8u| termap codes for underline and undercurl. Add the
Add the |t_AU| and |t_8u| termcap codes for underline and undercurl. Add the
t_fd and t_fe termcap codes for detecting focus events.
Support for indenting C pragmas like normal code. (|cino-P|)
Add support for defining the syntax fold level (|:syn-foldlevel|)
Add support for defining the syntax fold level. (|:syn-foldlevel|)
Add support for using \<*xxx> in a string to prepend a modifier to a
character. (|expr-quote|).
character. (|expr-quote|)
Add support trimming characters at the beginning or end of a string using
|trim()|.
Make ":verbose pwd" show the scope of the directory. |:pwd-verbose|
Add the "0o" notation for specifying octal numbers |scriptversion-4|
Add the "0o" notation for specifying octal numbers. |scriptversion-4|
Support for changing to the previous tab-local and window-local directories
using the "tcd -" and "lcd -" commands. (|:tcd-| and |:lcd-|)
@@ -428,7 +428,7 @@ Add support for executing (|:@|) a register containing line continuation.
Lua support:
- Call Vim functions from Lua (vim.call() and vim.fn()).
- Convert a Lua function and a closure to a Vim funcref so that it can be
accessed in a Vimscript (|lua-funcref|).
accessed in a Vim script (|lua-funcref|).
- Not backwards compatible: Make Lua arrays one based.
- Add support for using table.insert() and table.remove() functions with Vim
lists.
@@ -27366,7 +27366,7 @@ Files: src/evalfunc.c, src/testdir/test_vim9_builtin.vim
Patch 8.2.4460
Problem: Vim9: wrong error for defining dict function.
Solution: Explicitly check for trying to define a dict function.
(closes 9827)
(closes #9827)
Files: src/errors.h, src/userfunc.c, src/vim9compile.c,
src/testdir/test_vim9_func.vim
@@ -28478,7 +28478,7 @@ Files: src/change.c, src/drawscreen.c, src/structs.h
Patch 8.2.4645
Problem: 'shortmess' changed when session does not store options.
Solution: Save and restore 'shortmess' if needed. (James Charti,
Solution: Save and restore 'shortmess' if needed. (James Cherti,
closes #10037)
Files: src/session.c, src/testdir/test_mksession.vim

View File

@@ -1,4 +1,4 @@
*vim9.txt* For Vim version 9.0. Last change: 2022 Oct 11
*vim9.txt* For Vim version 9.0. Last change: 2022 Dec 08
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -16,7 +16,7 @@ features in Vim9 script.
3. New style functions |fast-functions|
4. Types |vim9-types|
5. Namespace, Import and Export |vim9script|
6. Future work: classes |vim9-classes|
6. Classes and interfaces |vim9-classes|
9. Rationale |vim9-rationale|
@@ -1023,7 +1023,9 @@ always converted to string: >
Simple types are Number, Float, Special and Bool. For other types |string()|
should be used.
*false* *true* *null* *E1034*
*false* *true* *null* *null_blob* *null_channel*
*null_dict* *null_function* *null_job* *null_list*
*null_partial* *null_string* *E1034*
In Vim9 script one can use the following predefined values: >
true
false
@@ -1039,7 +1041,7 @@ In Vim9 script one can use the following predefined values: >
`true` is the same as `v:true`, `false` the same as `v:false`, `null` the same
as `v:null`.
While `null` has the type "special", the other "null_" types have the type
While `null` has the type "special", the other "null_" values have the type
indicated by their name. Quite often a null value is handled the same as an
empty value, but not always. The values can be useful to clear a script-local
variable, since they cannot be deleted with `:unlet`. E.g.: >
@@ -1940,64 +1942,17 @@ Or: >
==============================================================================
6. Future work: classes *vim9-classes*
6. Classes and interfaces *vim9-classes*
Above "class" was mentioned a few times, but it has not been implemented yet.
Most of Vim9 script can be created without this functionality, and since
implementing classes is going to be a lot of work, it is left for the future.
For now we'll just make sure classes can be added later.
In legacy script a Dictionary could be used as a kind-of object, by adding
members that are functions. However, this is quite inefficient and requires
the writer to do the work of making sure all the objects have the right
members. See |Dictionary-function|.
Thoughts:
- `class` / `endclass`, the whole class must be in one file
- Class names are always CamelCase (to avoid a name clash with builtin types)
- A single constructor called "constructor"
- Single inheritance with `class ThisClass extends BaseClass`
- `abstract class` (class with incomplete implementation)
- `interface` / `endinterface` (abstract class without any implementation)
- `class SomeClass implements SomeInterface`
- Generics for class: `class <Tkey, Tentry>`
- Generics for function: `def <Tkey> GetLast(key: Tkey)`
In |Vim9| script you can have classes, objects and interfaces like in most
popular object-oriented programming languages. Since this is a lot of
functionality it is located in a separate help file: |vim9class.txt|.
Again, much of this is from TypeScript with a slightly different syntax.
Some things that look like good additions:
- Use a class as an interface (like Dart)
- Extend a class with methods, using an import (like Dart)
- Mixins
- For testing: Mock mechanism
An important class that will be provided is "Promise". Since Vim is single
threaded, connecting asynchronous operations is a natural way of allowing
plugins to do their work without blocking the user. It's a uniform way to
invoke callbacks and handle timeouts and errors.
Some commands have already been reserved:
*:class*
*:endclass*
*:abstract*
*:enum*
*:endenum*
*:interface*
*:endinterface*
*:static*
*:type*
Some examples: >
abstract class Person
static const prefix = 'xxx'
var name: string
def constructor(name: string)
this.name = name
enddef
def display(): void
echo name
enddef
abstract def find(string): Person
endclass
==============================================================================
@@ -2284,18 +2239,5 @@ tool need to be supported. Since most languages support classes the lack of
support for classes in Vim is then a problem.
Classes ~
Vim supports a kind-of object oriented programming by adding methods to a
dictionary. With some care this can be made to work, but it does not look
like real classes. On top of that, it's quite slow, because of the use of
dictionaries.
It would be good to support real classes, and this is planned for a later
version. The support is a "minimal common functionality" of class support in
most languages. It will work much like Java, which is the most popular
programming language.
vim:tw=78:ts=8:noet:ft=help:norl:

735
runtime/doc/vim9class.txt Normal file
View File

@@ -0,0 +1,735 @@
*vim9class.txt* For Vim version 9.0. Last change: 2022 Dec 11
VIM REFERENCE MANUAL by Bram Moolenaar
NOTE - This is under development, anything can still change! - NOTE
Vim9 classes, objects, interfaces, types and enums.
1. Overview |Vim9-class-overview|
2. A simple class |Vim9-simple-class|
3. Using an abstract class |Vim9-abstract-class|
4. Using an interface |Vim9-using-interface|
5. More class details |Vim9-class|
6. Type definition |Vim9-type|
7. Enum |Vim9-enum|
9. Rationale
10. To be done later
==============================================================================
1. Overview *Vim9-class-overview*
The fancy term is "object-oriented programming". You can find lots of study
material about this subject. Here we document what |Vim9| script provides,
assuming you know the basics already. Added are helpful hints about how
to use this functionality effectively.
The basic item is an object:
- An object stores state. It contains one or more variables that can each
have a value.
- An object usually provides functions that manipulate its state. These
functions are invoked "on the object", which is what sets it apart from the
traditional separation of data and code that manipulates the data.
- An object has a well defined interface, with typed member variables and
member functions.
- Objects are created by a class and all objects have the same interface.
This never changes, it is not dynamic.
An object can only be created by a class. A class provides:
- A new() method, the constructor, which returns an object for the class.
This method is invoked on the class name: MyClass.new().
- State shared by all objects of the class: class variables and constants.
- A hierarchy of classes, with super-classes and sub-classes, inheritance.
An interface is used to specify properties of an object:
- An object can declare several interfaces that it implements.
- Different objects implementing the same interface can be used the same way.
The class hierarchy allows for single inheritance. Otherwise interfaces are
to be used where needed.
Class modeling ~
You can model classes any way you like. Keep in mind what you are building,
don't try to model the real world. This can be confusing, especially because
teachers use real-world objects to explain class relations and you might think
your model should therefore reflect the real world. It doesn't! The model
should match your purpose.
You will soon find that composition is often better than inheritance. Don't
waste time trying to find the optimal class model. Or waste time discussing
whether a square is a rectangle or that a rectangle is a square. It doesn't
matter.
==============================================================================
2. A simple class *Vim9-simple-class*
Let's start with a simple example: a class that stores a text position: >
class TextPosition
this.lnum: number
this.col: number
def new(lnum: number, col: number)
this.lnum = lnum
this.col = col
enddef
def SetLnum(lnum: number)
this.lnum = lnum
enddef
def SetCol(col: number)
this.col = col
enddef
def SetPosition(lnum: number, col: number)
this.lnum = lnum
this.col = col
enddef
endclass
< *object* *Object*
You can create an object from this class with the new() method: >
var pos = TextPosition.new(1, 1)
The object members "lnum" and "col" can be accessed directly: >
echo $'The text position is ({pos.lnum}, {pos.col})'
< *E1317* *E1327*
If you have been using other object-oriented languages you will notice that
in Vim the object members are consistently referred to with the "this."
prefix. This is different from languages like Java and TypeScript. This
naming convention makes the object members easy to spot. Also, when a
variable does not have the "this." prefix you know it is not an object member.
Member write access ~
Now try to change an object member directly: >
pos.lnum = 9
This will give you an error! That is because by default object members can be
read but not set. That's why the class provides a method for it: >
pos.SetLnum(9)
Allowing to read but not set an object member is the most common and safest
way. Most often there is no problem using a value, while setting a value may
have side effects that need to be taken care of. In this case, the SetLnum()
method could check if the line number is valid and either give an error or use
the closest valid value.
If you don't care about side effects and want to allow the object member to be
changed at any time, you can make it public: >
public this.lnum: number
public this.col number
Now you don't need the SetLnum(), SetCol() and SetPosition() methods, setting
"pos.lnum" directly above will no longer give an error.
Private members ~
On the other hand, if you do not want the object members to be read directly,
you can make them private. This is done by prefixing an underscore to the
name: >
this._lnum: number
this._col number
Now you need to provide methods to get the value of the private members.
These are commonly call getters. We recommend using a name that starts with
"Get": >
def GetLnum(): number
return this._lnum
enddef
def GetCol() number
return this._col
enddef
This example isn't very useful, the members might as well have been public.
It does become useful if you check the value. For example, restrict the line
number to the total number of lines: >
def GetLnum(): number
if this._lnum > this._lineCount
return this._lineCount
endif
return this._lnum
enddef
Simplifying the new() method ~
Many constructors take values for the object members. Thus you very often see
this pattern: >
this.lnum: number
this.col: number
def new(lnum: number, col: number)
this.lnum = lnum
this.col = col
enddef
Not only is this text you need to write, it also has the type of each member
twice. Since this is so common a shorter way to write new() is provided: >
def new(this.lnum, this.col)
enddef
The semantics are easy to understand: Providing the object member name,
including "this.", as the argument to new() means the value provided in the
new() call is assigned to that object member. This mechanism is coming from
the Dart language.
The sequence of constructing a new object is:
1. Memory is allocated and cleared. All values are zero/false/empty.
2. For each declared member that has an initializer, the expression is
evaluated and assigned to the member. This happens in the sequence the
members are declared in the class.
3. Arguments in the new() method in the "this.name" form are assigned.
4. The body of the new() method is executed.
TODO: for a sub-class the constructor of the parent class will be invoked
somewhere.
==============================================================================
3. Using an abstract class *Vim9-abstract-class*
An abstract class forms the base for at least one sub-class. In the class
model one often finds that a few classes have the same properties that can be
shared, but a class with those properties does not have enough state to create
an object from. A sub-class must extend the abstract class and add the
missing state and/or methods before it can be used to create objects for.
An abstract class does not have a new() method.
For example, a Shape class could store a color and thickness. You cannot
create a Shape object, it is missing the information about what kind of shape
it is. The Shape class functions as the base for a Square and a Triangle
class, for which objects can be created. Example: >
abstract class Shape
this.color = Color.Black
this.thickness = 10
endclass
class Square extends Shape
this.size: number
def new(this.size)
enddef
endclass
class Triangle extends Shape
this.base: number
this.height: number
def new(this.base, this.height)
enddef
endclass
<
*class-member* *:static*
Class members are declared with "static". They are used by the name without a
prefix: >
class OtherThing
this.size: number
static totalSize: number
def new(this.size)
totalSize += this.size
enddef
endclass
<
*class-method*
Class methods are also declared with "static". They have no access to object
members, they cannot use the "this" keyword. >
class OtherThing
this.size: number
static totalSize: number
" Clear the total size and return the value it had before.
static def ClearTotalSize(): number
var prev = totalSize
totalSize = 0
return prev
enddef
endclass
==============================================================================
4. Using an interface *Vim9-using-interface*
The example above with Shape, Square and Triangle can be made more useful if
we add a method to compute the surface of the object. For that we create the
interface called HasSurface, which specifies one method Surface() that returns
a number. This example extends the one above: >
abstract class Shape
this.color = Color.Black
this.thickness = 10
endclass
interface HasSurface
def Surface(): number
endinterface
class Square extends Shape implements HasSurface
this.size: number
def new(this.size)
enddef
def Surface(): number
return this.size * this.size
enddef
endclass
class Triangle extends Shape implements HasSurface
this.base: number
this.height: number
def new(this.base, this.height)
enddef
def Surface(): number
return this.base * this.height / 2
enddef
endclass
The interface name can be used as a type: >
var shapes: list<HasSurface> = [
Square.new(12),
Triangle.new(8, 15),
]
for shape in shapes
echo $'the surface is {shape.Surface()}'
endfor
==============================================================================
5. More class details *Vim9-class* *Class* *class*
Defining a class ~
*:class* *:endclass* *:abstract*
A class is defined between `:class` and `:endclass`. The whole class is
defined in one script file. It is not possible to add to a class later.
A class can only be defined in a |Vim9| script file. *E1316*
A class cannot be defined inside a function.
It is possible to define more than one class in a script file. Although it
usually is better to export only one main class. It can be useful to define
types, enums and helper classes though.
The `:abstract` keyword may be prefixed and `:export` may be used. That gives
these variants: >
class ClassName
endclass
export class ClassName
endclass
abstract class ClassName
endclass
export abstract class ClassName
endclass
<
*E1314*
The class name should be CamelCased. It must start with an uppercase letter.
That avoids clashing with builtin types.
*E1315*
After the class name these optional items can be used. Each can appear only
once. They can appear in any order, although this order is recommended: >
extends ClassName
implements InterfaceName, OtherInterface
specifies SomeInterface
< *extends*
A class can extend one other class.
*implements*
A class can implement one or more interfaces.
*specifies*
A class can declare its interface, the object members and methods, with a
named interface. This avoids the need for separately specifying the
interface, which is often done in many languages, especially Java.
Items in a class ~
*E1318* *E1325* *E1326*
Inside a class, in betweeen `:class` and `:endclass`, these items can appear:
- An object member declaration: >
this._memberName: memberType
this.memberName: memberType
public this.memberName: memberType
- A constructor method: >
def new(arguments)
def newName(arguments)
- An object method: >
def SomeMethod(arguments)
Defining an interface ~
*:interface* *:endinterface*
An interface is defined between `:interface` and `:endinterface`. It may be
prefixed with `:export`: >
interface InterfaceName
endinterface
export interface InterfaceName
endinterface
An interface can declare object members, just like in a class but without any
initializer.
An interface can declare methods with `:def`, including the arguments and
return type, but without the body and without `:enddef`. Example: >
interface HasSurface
this.size: number
def Surface(): number
endinterface
The "Has" prefix can be used to make it easier to guess this is an interface
name, with a hint about what it provides.
Default constructor ~
In case you define a class without a new() method, one will be automatically
defined. This default constructor will have arguments for all the object
members, in the order they were specified. Thus if your class looks like: >
class AutoNew
this.name: string
this.age: number
this.gender: Gender
endclass
Then The default constructor will be: >
def new(this.name = v:none, this.age = v:none, this.gender = v:none)
enddef
All object members will be used, also private access ones.
The "= v:none" default values make the arguments optional. Thus you can also
call `new()` without any arguments. No assignment will happen and the default
value for the object members will be used. This is a more useful example,
with default values: >
class TextPosition
this.lnum: number = 1
this.col: number = 1
endclass
If you want the constructor to have mandatory arguments, you need to write it
yourself. For example, if for the AutoNew class above you insist on getting
the name, you can define the constructor like this: >
def new(this.name, this.age = v:none, this.gender = v:none)
enddef
< *E1328*
Note that you cannot use another default value than "v:none" here. If you
want to initialize the object members, do it where they are declared. This
way you only need to look in one place for the default values.
Multiple constructors ~
Normally a class has just one new() constructor. In case you find that the
constructor is often called with the same arguments you may want to simplify
your code by putting those arguments into a second constructor method. For
example, if you tend to use the color black a lot: >
def new(this.garment, this.color, this.size)
enddef
...
var pants = new(Garment.pants, Color.black, "XL")
var shirt = new(Garment.shirt, Color.black, "XL")
var shoes = new(Garment.shoes, Color.black, "45")
Instead of repeating the color every time you can add a constructor that
includes it: >
def newBlack(this.garment, this.size)
this.color = Color.black
enddef
...
var pants = newBlack(Garment.pants, "XL")
var shirt = newBlack(Garment.shirt, "XL")
var shoes = newBlack(Garment.shoes, "9.5")
Note that the method name must start with "new". If there is no method called
"new()" then the default constructor is added, even though there are other
constructor methods.
==============================================================================
6. Type definition *Vim9-type* *:type*
A type definition is giving a name to a type specification. For Example: >
:type ListOfStrings list<string>
TODO: more explanation
==============================================================================
7. Enum *Vim9-enum* *:enum* *:endenum*
An enum is a type that can have one of a list of values. Example: >
:enum Color
White
Red
Green
Blue
Black
:endenum
TODO: more explanation
==============================================================================
9. Rationale
Most of the choices for |Vim9| classes come from popular and recently
developed languages, such as Java, TypeScript and Dart. The syntax has been
made to fit with the way Vim script works, such as using `endclass` instead of
using curly braces around the whole class.
Some common constructs of object-oriented languages were chosen very long ago
when this kind of programming was still new, and later found to be
sub-optimal. By this time those constructs were widely used and changing them
was not an option. In Vim we do have the freedom to make different choices,
since classes are completely new. We can make the syntax simpler and more
consistent than what "old" languages use. Without diverting too much, it
should still mostly look like what you know from existing languages.
Some recently developed languages add all kinds of fancy features that we
don't need for Vim. But some have nice ideas that we do want to use.
Thus we end up with a base of what is common in popular languages, dropping
what looks like a bad idea, and adding some nice features that are easy to
understand.
The main rules we use to make decisions:
- Keep it simple.
- No surprises, mostly do what other languages are doing.
- Avoid mistakes from the past.
- Avoid the need for the script writer to consult the help to understand how
things work, most things should be obvious.
- Keep it consistent.
- Aim at an average size plugin, not at a huge project.
Using new() for the constructor ~
Many languages use the class name for the constructor method. A disadvantage
is that quite often this is a long name. And when changing the class name all
constructor methods need to be renamed. Not a big deal, but still a
disadvantage.
Other languages, such as TypeScript, use a specific name, such as
"constructor()". That seems better. However, using "new" or "new()" to
create a new object has no obvious relation with "constructor()".
For |Vim9| script using the same method name for all constructors seemed like
the right choice, and by calling it new() the relation between the caller and
the method being called is obvious.
No overloading of the constructor ~
In Vim script, both legacy and |Vim9| script, there is no overloading of
functions. That means it is not possible to use the same function name with
different types of arguments. Therefore there also is only one new()
constructor.
With |Vim9| script it would be possible to support overloading, since
arguments are typed. However, this gets complicated very quickly. Looking at
a new() call one has to inspect the types of the arguments to know which of
several new() methods is actually being called. And that can require
inspecting quite a bit of code. For example, if one of the arguments is the
return value of a method, you need to find that method to see what type it is
returning.
Instead, every constructor has to have a different name, starting with "new".
That way multiple constructors with different arguments are possible, while it
is very easy to see which constructor is being used. And the type of
arguments can be properly checked.
No overloading of methods ~
Same reasoning as for the constructor: It is often not obvious what type
arguments have, which would make it difficult to figure out what method is
actually being called. Better just give the methods a different name, then
type checking will make sure it works as you intended. This rules out
polymorphism, which we don't really need anyway.
Using "this.member" everywhere ~
The object members in various programming languages can often be accessed in
different ways, depending on the location. Sometimes "this." has to be
prepended to avoid ambiguity. They are usually declared without "this.".
That is quite inconsistent and sometimes confusing.
A very common issue is that in the constructor the arguments use the same name
as the object member. Then for these members "this." needs to be prefixed in
the body, while for other members this is not needed and often omitted. This
leads to a mix of members with and without "this.", which is inconsistent.
For |Vim9| classes the "this." prefix is always used. Also for declaring the
members. Simple and consistent. When looking at the code inside a class it's
also directly clear which variable references are object members and which
aren't.
Single inheritance and interfaces ~
Some languages support multiple inheritance. Although that can be useful in
some cases, it makes the rules of how a class works quite complicated.
Instead, using interfaces to declare what is supported is much simpler. The
very popular Java language does it this way, and it should be good enough for
Vim. The "keep it simple" rule applies here.
Explicitly declaring that a class supports an interface makes it easy to see
what a class is intended for. It also makes it possible to do proper type
checking. When an interface is changed any class that declares to implement
it will be checked if that change was also changed. The mechanism to assume a
class implements an interface just because the methods happen to match is
brittle and leads to obscure problems, let's not do that.
Using class members ~
Using "static member" to declare a class member is very common, nothing new
here. In |Vim9| script these can be accessed directly by their name. Very
much like how a script-local variable can be used in a function. Since object
members are always accessed with "this." prepended, it's also quickly clear
what kind of member it is.
TypeScript prepends the class name before the class member, also inside the
class. This has two problems: The class name can be rather long, taking up
quite a bit of space, and when the class is renamed all these places need to
be changed too.
Using "ClassName.new()" to construct an object ~
Many languages use the "new" operator to create an object, which is actually
kind of strange, since the constructor is defined as a method with arguments,
not a command. TypeScript also has the "new" keyword, but the method is
called "constructor()", it is hard to see the relation between the two.
In |Vim9| script the constructor method is called new(), and it is invoked as
new(), simple and straightforward. Other languages use "new ClassName()",
while there is no ClassName() method, it's a method by another name in the
class called ClassName. Quite confusing.
Default read access to object members ~
Some users will remark that the access rules for object members are
asymmetric. Well, that is intentional. Changing a value is a very different
action than reading a value. The read operation has no side effects, it can
be done any number of times without affecting the object. Changing the value
can have many side effects, and even have a ripple effect, affecting other
objects.
When adding object members one usually doesn't think much about this, just get
the type right. And normally the values are set in the new() method.
Therefore defaulting to read access only "just works" in most cases. And when
directly writing you get an error, which makes you wonder if you actually want
to allow that. This helps writing code with fewer mistakes.
Making object members private with an underscore ~
When an object member is private, it can only be read and changed inside the
class (and in sub-classes), then it cannot be used outside of the class.
Prepending an underscore is a simple way to make that visible. Various
programming languages have this as a recommendation.
In case you change your mind and want to make the object member accessible
outside of the class, you will have to remove the underscore everywhere.
Since the name only appears in the class (and sub-classes) they will be easy
to find and change.
The other way around is much harder: you can easily prepend an underscore to
the object member inside the class to make it private, but any usage elsewhere
you will have to track down and change. You may have to make it a "set"
method call. This reflects the real world problem that taking away access
requires work to be done for all places where that access exists.
An alternative would have been using the "private" keyword, just like "public"
changes the access in the other direction. Well, that's just to reduce the
number of keywords.
No protected object members ~
Some languages provide several ways to control access to object members. The
most known is "protected", and the meaning varies from language to language.
Others are "shared", "private" and even "friend".
These rules make life more difficult. That can be justified in projects where
many people work on the same, complex code where it is easy to make mistakes.
Especially when refactoring or other changes to the class model.
The Vim scripts are expected to be used in a plugin, with just one person or a
small team working on it. Complex rules then only make it more complicated,
the extra safety provide by the rules isn't really needed. Let's just keep it
simple and not specify access details.
==============================================================================
10. To be done later
Can a newSomething() constructor invoke another constructor? If yes, what are
the restrictions?
Thoughts:
- Generics for a class: `class <Tkey, Tentry>`
- Generics for a function: `def <Tkey> GetLast(key: Tkey)`
- Mixins: not sure if that is useful, leave out for simplicity.
Some things that look like good additions:
- For testing: Mock mechanism
An important class to be provided is "Promise". Since Vim is single
threaded, connecting asynchronous operations is a natural way of allowing
plugins to do their work without blocking the user. It's a uniform way to
invoke callbacks and handle timeouts and errors.
vim:tw=78:ts=8:noet:ft=help:norl:

View File

@@ -1,4 +1,4 @@
*visual.txt* For Vim version 9.0. Last change: 2022 Jun 18
*visual.txt* For Vim version 9.0. Last change: 2022 Dec 04
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -116,7 +116,7 @@ gn Search forward for the last used search pattern, like
E.g., "dgn" deletes the text of the next match.
If Visual mode is active, extends the selection
until the end of the next match.
'wrapscan' applies
'wrapscan' applies.
Note: Unlike `n` the search direction does not depend
on the previous search command.
@@ -152,6 +152,11 @@ gN Like |gn| but searches backward, like with `N`.
environment variable or the -display argument). Only
when 'mouse' option contains 'n' or 'a'.
<LeftMouseNM> Internal mouse code, used for clicking on the status
<LeftReleaseNM> line to focus a window. NM stands for non-mappable.
You cannot use these, but they might show up in some
places.
If Visual mode is not active and the "v", "V" or CTRL-V is preceded with a
count, the size of the previously highlighted area is used for a start. You
can then move the end of the highlighted area and give an operator. The type
@@ -510,11 +515,11 @@ mode Vim automatically switches to Visual mode, so that the same behavior as
in Visual mode is effective. If you don't want this use |:xmap| or |:smap|.
One particular edge case: >
:vnoremap <C-K> <Esc>
:vnoremap <C-K> <Esc>
This ends Visual mode when in Visual mode, but in Select mode it does not
work, because Select mode is restored after executing the mapped keys. You
need to use: >
:snoremap <C-K> <Esc>
:snoremap <C-K> <Esc>
<
Users will expect printable characters to replace the selected area.
Therefore avoid mapping printable characters in Select mode. Or use

View File

@@ -1,4 +1,4 @@
*windows.txt* For Vim version 9.0. Last change: 2022 May 11
*windows.txt* For Vim version 9.0. Last change: 2022 Nov 27
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -561,9 +561,9 @@ CTRL-W = Make all windows (almost) equally high and wide, but use
Windows with 'winfixheight' set keep their height and windows
with 'winfixwidth' set keep their width.
To equalize only vertically (make window equally high) use
`vertical wincmd =`
`vertical wincmd =`.
To equalize only horizontally (make window equally wide) use
`horizontal wincmd =`
`horizontal wincmd =`.
:res[ize] -N *:res* *:resize* *CTRL-W_-*
CTRL-W - Decrease current window height by N (default 1).
@@ -631,6 +631,56 @@ it).
The minimal height and width of a window is set with 'winminheight' and
'winminwidth'. These are hard values, a window will never become smaller.
WinScrolled and WinResized autocommands ~
*win-scrolled-resized*
If you want to get notified of changes in window sizes, the |WinResized|
autocommand event can be used.
If you want to get notified of text in windows scrolling vertically or
horizontally, the |WinScrolled| autocommand event can be used. This will also
trigger in window size changes.
Exception: the events will not be triggered when the text scrolls for
'incsearch'.
*WinResized-event*
The |WinResized| event is triggered after updating the display, several
windows may have changed size then. A list of the IDs of windows that changed
since last time is provided in the v:event.windows variable, for example:
[1003, 1006]
*WinScrolled-event*
The |WinScrolled| event is triggered after |WinResized|, and also if a window
was scrolled. That can be vertically (the text at the top of the window
changed) or horizontally (when 'wrap' is off or when the first displayed part
of the first line changes). Note that |WinScrolled| will trigger many more
times than |WinResized|, it may slow down editing a bit.
The information provided by |WinScrolled| is a dictionary for each window that
has changes, using the window ID as the key, and a total count of the changes
with the key "all". Example value for |v:event| (|Vim9| syntax):
{
all: {width: 0, height: 2, leftcol: 0, skipcol: 0, topline: 1, topfill: 0},
1003: {width: 0, height: -1, leftcol: 0, skipcol: 0, topline: 0, topfill: 0},
1006: {width: 0, height: 1, leftcol: 0, skipcol: 0, topline: 1, topfill: 0},
}
Note that the "all" entry has the absolute values of the individual windows
accumulated.
If you need more information about what changed, or you want to "debounce" the
events (not handle every event to avoid doing too much work), you may want to
use the `winlayout()` and `getwininfo()` functions.
|WinScrolled| and |WinResized| do not trigger when the first autocommand is
added, only after the first scroll or resize. They may trigger when switching
to another tab page.
The commands executed are expected to not cause window size or scroll changes.
If this happens anyway, the event will trigger again very soon. In other
words: Just before triggering the event, the current sizes and scroll
positions are stored and used to decide whether there was a change.
*E1312*
It is not allowed to change the window layout here (split, close or move
windows).
==============================================================================
7. Argument and buffer list commands *buffer-list*

View File

@@ -1,7 +1,7 @@
" Vim support file to detect file types
"
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2022 Oct 12
" Last Change: 2022 Dec 05
" Listen very carefully, I will say this only once
if exists("did_load_filetypes")
@@ -419,6 +419,12 @@ au BufNewFile,BufRead configure.in,configure.ac setf config
" Cooklang
au BufNewFile,BufRead *.cook setf cook
" Clinical Quality Language (CQL)
" .cql is also mentioned as the 'XDCC Catcher queue list' file extension.
" If support for XDCC Catcher is needed in the future, the contents of the file
" needs to be inspected.
au BufNewFile,BufRead *.cql setf cqlang
" CSV Files
au BufNewFile,BufRead *.csv setf csv
@@ -975,6 +981,8 @@ au BufNewFile,BufRead *.jsp setf jsp
" Java Properties resource file (note: doesn't catch font.properties.pl)
au BufNewFile,BufRead *.properties,*.properties_??,*.properties_??_?? setf jproperties
" Eclipse preference files use Java Properties syntax
au BufNewFile,BufRead org.eclipse.*.prefs setf jproperties
" Jess
au BufNewFile,BufRead *.clp setf jess
@@ -1191,6 +1199,9 @@ au BufNewFile,BufRead hg-editor-*.txt setf hgcommit
" Mercurial config (looks like generic config file)
au BufNewFile,BufRead *.hgrc,*hgrc setf cfg
" Mermaid
au BufNewFile,BufRead *.mmd,*.mmdc,*.mermaid setf mermaid
" Meson Build system config
au BufNewFile,BufRead meson.build,meson_options.txt setf meson
au BufNewFile,BufRead *.wrap setf dosini
@@ -1334,6 +1345,9 @@ au BufNewFile,BufRead *.nse setf lua
" NSIS
au BufNewFile,BufRead *.nsi,*.nsh setf nsis
" Oblivion Language and Oblivion Script Extender
au BufNewFile,BufRead *.obl,*.obse,*.oblivion,*.obscript setf obse
" OCaml
au BufNewFile,BufRead *.ml,*.mli,*.mll,*.mly,.ocamlinit,*.mlt,*.mlp,*.mlip,*.mli.cppo,*.ml.cppo setf ocaml
@@ -1372,6 +1386,7 @@ au BufNewFile,BufRead pf.conf setf pf
" ini style config files, using # comments
au BufNewFile,BufRead */etc/pacman.conf,mpv.conf setf confini
au BufNewFile,BufRead */.aws/config,*/.aws/credentials setf confini
" Pacman hooks
au BufNewFile,BufRead *.hook
@@ -1840,8 +1855,9 @@ au BufNewFile,BufRead .tcshrc,*.tcsh,tcsh.tcshrc,tcsh.login call dist#ft#SetFile
" (patterns ending in a start further below)
au BufNewFile,BufRead .login,.cshrc,csh.cshrc,csh.login,csh.logout,*.csh,.alias call dist#ft#CSH()
" Zig
" Zig and Zir (Zig Intermediate Representation)
au BufNewFile,BufRead *.zig setf zig
au BufNewFile,BufRead *.zir setf zir
" Z-Shell script (patterns ending in a star further below)
au BufNewFile,BufRead .zprofile,*/etc/zprofile,.zfbfmarks setf zsh
@@ -2180,6 +2196,11 @@ au BufNewFile,BufRead *.va,*.vams setf verilogams
" SystemVerilog
au BufNewFile,BufRead *.sv,*.svh setf systemverilog
" VHS tape
" .tape is also used by TapeCalc, which we do not support ATM. If TapeCalc
" support is needed the contents of the file needs to be inspected.
au BufNewFile,BufRead *.tape setf vhs
" VHDL
au BufNewFile,BufRead *.hdl,*.vhd,*.vhdl,*.vbe,*.vst,*.vho setf vhdl
@@ -2331,6 +2352,9 @@ au BufNewFile,BufRead fglrxrc setf xml
" Web Services Description Language (WSDL)
au BufNewFile,BufRead *.wsdl setf xml
" Workflow Description Language (WDL)
au BufNewFile,BufRead *.wdl setf wdl
" XLIFF (XML Localisation Interchange File Format) is also XML
au BufNewFile,BufRead *.xlf setf xml
au BufNewFile,BufRead *.xliff setf xml

View File

@@ -0,0 +1,16 @@
" Vim filetype plugin
" Language: apache configuration file
" Maintainer: Per Juchtmans <dubgeiser+vimNOSPAM@gmail.com>
" Last Change: 2022 Oct 22
if exists("b:did_ftplugin")
finish
endif
let b:did_ftplugin = 1
setlocal comments=:#
setlocal commentstring=#\ %s
let b:undo_ftplugin = "setlocal comments< commentstring<"
" vim: nowrap sw=2 sts=2 ts=8 noet:

View File

@@ -2,7 +2,7 @@
" Language: C#
" Maintainer: Nick Jensen <nickspoon@gmail.com>
" Former Maintainer: Johannes Zellner <johannes@zellner.org>
" Last Change: 2021-12-07
" Last Change: 2022-11-16
" License: Vim (see :h license)
" Repository: https://github.com/nickspoons/vim-cs
@@ -25,8 +25,9 @@ let b:undo_ftplugin = 'setl com< fo<'
if exists('loaded_matchit') && !exists('b:match_words')
" #if/#endif support included by default
let b:match_ignorecase = 0
let b:match_words = '\%(^\s*\)\@<=#\s*region\>:\%(^\s*\)\@<=#\s*endregion\>,'
let b:undo_ftplugin .= ' | unlet! b:match_words'
let b:undo_ftplugin .= ' | unlet! b:match_ignorecase b:match_words'
endif
if (has('gui_win32') || has('gui_gtk')) && !exists('b:browsefilter')

View File

@@ -4,7 +4,7 @@
" Previous Maintainer: Max Ischenko <mfi@ukr.net>
" Contributor: Dorai Sitaram <ds26@gte.com>
" C.D. MacEachern <craig.daniel.maceachern@gmail.com>
" Last Change: 2022 Oct 15
" Last Change: 2022 Nov 19
if exists("b:did_ftplugin")
finish
@@ -21,7 +21,7 @@ setlocal formatoptions-=t formatoptions+=croql
let &l:define = '\<function\|\<local\%(\s\+function\)\='
" TODO: handle init.lua
setlocal includeexpr=substitute(v:fname,'\\.','/','g')
setlocal includeexpr=tr(v:fname,'.','/')
setlocal suffixesadd=.lua
let b:undo_ftplugin = "setlocal cms< com< def< fo< inex< sua<"

View File

@@ -0,0 +1,49 @@
" Vim filetype plugin
" Language: Mermaid
" Maintainer: Craig MacEachern <https://github.com/craigmac/vim-mermaid>
" Last Change: 2022 Oct 13
if exists("b:did_ftplugin")
finish
endif
let s:keepcpo= &cpo
set cpo&vim
" Use mermaid live editor's style
setlocal expandtab
setlocal shiftwidth=2
setlocal softtabstop=-1
setlocal tabstop=4
" TODO: comments, formatlist stuff, based on what?
setlocal comments=b:#,fb:-
setlocal commentstring=#\ %s
setlocal formatoptions+=tcqln formatoptions-=r formatoptions-=o
setlocal formatlistpat=^\\s*\\d\\+\\.\\s\\+\\\|^\\s*[-*+]\\s\\+\\\|^\\[^\\ze[^\\]]\\+\\]:\\&^.\\{4\\}
if exists('b:undo_ftplugin')
let b:undo_ftplugin .= "|setl cms< com< fo< flp< et< ts< sts< sw<"
else
let b:undo_ftplugin = "setl cms< com< fo< flp< et< ts< sts< sw<"
endif
if !exists("g:no_plugin_maps") && !exists("g:no_markdown_maps")
nnoremap <silent><buffer> [[ :<C-U>call search('\%(^#\{1,5\}\s\+\S\\|^\S.*\n^[=-]\+$\)', "bsW")<CR>
nnoremap <silent><buffer> ]] :<C-U>call search('\%(^#\{1,5\}\s\+\S\\|^\S.*\n^[=-]\+$\)', "sW")<CR>
xnoremap <silent><buffer> [[ :<C-U>exe "normal! gv"<Bar>call search('\%(^#\{1,5\}\s\+\S\\|^\S.*\n^[=-]\+$\)', "bsW")<CR>
xnoremap <silent><buffer> ]] :<C-U>exe "normal! gv"<Bar>call search('\%(^#\{1,5\}\s\+\S\\|^\S.*\n^[=-]\+$\)', "sW")<CR>
let b:undo_ftplugin .= '|sil! nunmap <buffer> [[|sil! nunmap <buffer> ]]|sil! xunmap <buffer> [[|sil! xunmap <buffer> ]]'
endif
" if has("folding") && get(g:, "markdown_folding", 0)
" setlocal foldexpr=MarkdownFold()
" setlocal foldmethod=expr
" setlocal foldtext=MarkdownFoldText()
" let b:undo_ftplugin .= "|setl foldexpr< foldmethod< foldtext<"
" endif
let &cpo = s:keepcpo
unlet s:keepcpo
" vim:set sw=2:

70
runtime/ftplugin/obse.vim Normal file
View File

@@ -0,0 +1,70 @@
" Vim filetype plugin file
" Language: Oblivion Language (obl)
" Original Creator: Kat <katisntgood@gmail.com>
" Maintainer: Kat <katisntgood@gmail.com>
" Created: August 08, 2021
" Last Change: 13 November 2022
if exists("b:did_ftplugin")
finish
endif
let s:cpo_save = &cpo
set cpo&vim
let b:undo_ftplugin = "setl com< cms<"
noremap <script> <buffer> <silent> [[ <nop>
noremap <script> <buffer> <silent> ]] <nop>
noremap <script> <buffer> <silent> [] <nop>
noremap <script> <buffer> <silent> ][ <nop>
setlocal commentstring=;%s
setlocal comments=:;
function s:NextSection(type, backwards, visual)
if a:visual
normal! gv
endif
if a:type == 1
let pattern = '\v(\n\n^\S|%^)'
let flags = 'e'
elseif a:type == 2
let pattern = '\v^\S.*'
let flags = ''
endif
if a:backwards
let dir = '?'
else
let dir = '/'
endif
execute 'silent normal! ' . dir . pattern . dir . flags . "\r"
endfunction
noremap <script> <buffer> <silent> ]]
\ :call <SID>NextSection(1, 0, 0)<cr>
noremap <script> <buffer> <silent> [[
\ :call <SID>NextSection(1, 1, 0)<cr>
noremap <script> <buffer> <silent> ][
\ :call <SID>NextSection(2, 0, 0)<cr>
noremap <script> <buffer> <silent> []
\ :call <SID>NextSection(2, 1, 0)<cr>
vnoremap <script> <buffer> <silent> ]]
\ :<c-u>call <SID>NextSection(1, 0, 1)<cr>
vnoremap <script> <buffer> <silent> [[
\ :<c-u>call <SID>NextSection(1, 1, 1)<cr>
vnoremap <script> <buffer> <silent> ][
\ :<c-u>call <SID>NextSection(2, 0, 1)<cr>
vnoremap <script> <buffer> <silent> []
\ :<c-u>call <SID>NextSection(2, 1, 1)<cr>
let &cpo = s:cpo_save
unlet s:cpo_save

View File

@@ -0,0 +1,14 @@
" Vim filetype plugin
" Language: OpenVPN
" Maintainer: ObserverOfTime <chronobserver@disroot.org>
" Last Change: 2022 Oct 16
if exists('b:did_ftplugin')
finish
endif
let b:did_ftplugin = 1
setlocal iskeyword+=-,.,/
setlocal comments=:#,:; commentstring=#%s
let b:undo_ftplugin = 'setl isk< com< cms<'

View File

@@ -1,7 +1,8 @@
" Vim filetype plugin file
" Language: readline(3) configuration file
" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
" Latest Revision: 2008-07-09
" Language: readline(3) configuration file
" Maintainer: Doug Kearns <dougkearns@gmail.com>
" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
" Last Change: 2022 Dec 09
if exists("b:did_ftplugin")
finish
@@ -11,9 +12,25 @@ 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 com< cms< fo<"
setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql
if exists("loaded_matchit") && !exists("b:match_words")
let b:match_ignorecase = 0
let b:match_words = '$if:$else:$endif'
let b:undo_ftplugin ..= " | unlet! b:match_ignorecase b:match_words"
endif
if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter")
let b:browsefilter = "Readline Intialization Files (inputrc .inputrc)\tinputrc;*.inputrc\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,7 +1,7 @@
" Vim filetype plugin
" Language: Vim
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2022 Sep 20
" Last Change: 2022 Nov 27
" Only do this when not done yet for this buffer
if exists("b:did_ftplugin")
@@ -99,7 +99,7 @@ if exists("loaded_matchit")
" func name
" require a parenthesis following, then there can be an "endfunc".
let b:match_words =
\ '\<\%(fu\%[nction]\|def\)!\=\s\+\S\+(:\%(\%(^\||\)\s*\)\@<=\<retu\%[rn]\>:\%(\%(^\||\)\s*\)\@<=\<\%(endf\%[unction]\|enddef\)\>,' .
\ '\<\%(fu\%[nction]\|def\)!\=\s\+\S\+\s*(:\%(\%(^\||\)\s*\)\@<=\<retu\%[rn]\>:\%(\%(^\||\)\s*\)\@<=\<\%(endf\%[unction]\|enddef\)\>,' .
\ '\<\(wh\%[ile]\|for\)\>:\%(\%(^\||\)\s*\)\@<=\<brea\%[k]\>:\%(\%(^\||\)\s*\)\@<=\<con\%[tinue]\>:\%(\%(^\||\)\s*\)\@<=\<end\(w\%[hile]\|fo\%[r]\)\>,' .
\ '\<if\>:\%(\%(^\||\)\s*\)\@<=\<el\%[seif]\>:\%(\%(^\||\)\s*\)\@<=\<en\%[dif]\>,' .
\ '{:},' .

66
runtime/ftplugin/zig.vim Normal file
View File

@@ -0,0 +1,66 @@
" Vim filetype plugin file
" Language: Zig
" Upstream: https://github.com/ziglang/zig.vim
" Only do this when not done yet for this buffer
if exists("b:did_ftplugin")
finish
endif
let b:did_ftplugin = 1
let s:cpo_orig = &cpo
set cpo&vim
compiler zig_build
" Match Zig builtin fns
setlocal iskeyword+=@-@
" Recomended code style, no tabs and 4-space indentation
setlocal expandtab
setlocal tabstop=8
setlocal softtabstop=4
setlocal shiftwidth=4
setlocal formatoptions-=t formatoptions+=croql
setlocal suffixesadd=.zig,.zir
if has('comments')
setlocal comments=:///,://!,://,:\\\\
setlocal commentstring=//\ %s
endif
if has('find_in_path')
let &l:includeexpr='substitute(v:fname, "^([^.])$", "\1.zig", "")'
let &l:include='\v(\@import>|\@cInclude>|^\s*\#\s*include)'
endif
let &l:define='\v(<fn>|<const>|<var>|^\s*\#\s*define)'
if !exists('g:zig_std_dir') && exists('*json_decode') && executable('zig')
silent let s:env = system('zig env')
if v:shell_error == 0
let g:zig_std_dir = json_decode(s:env)['std_dir']
endif
unlet! s:env
endif
if exists('g:zig_std_dir')
let &l:path = &l:path . ',' . g:zig_std_dir
endif
let b:undo_ftplugin =
\ 'setl isk< et< ts< sts< sw< fo< sua< mp< com< cms< inex< inc< pa<'
augroup vim-zig
autocmd! * <buffer>
autocmd BufWritePre <buffer> if get(g:, 'zig_fmt_autosave', 1) | call zig#fmt#Format() | endif
augroup END
let b:undo_ftplugin .= '|au! vim-zig * <buffer>'
let &cpo = s:cpo_orig
unlet s:cpo_orig
" vim: tabstop=8 shiftwidth=4 softtabstop=4 expandtab

55
runtime/indent/obse.vim Normal file
View File

@@ -0,0 +1,55 @@
" Vim indent file
" Language: Oblivion Language (obl)
" Original Creator: Kat <katisntgood@gmail.com>
" Maintainer: Kat <katisntgood@gmail.com>
" Created: 01 November 2021
" Last Change: 13 November 2022
if exists("b:did_indent")
finish
endif
let b:did_indent = 1
let b:undo_indent = 'setlocal indentkeys< indentexpr<'
setlocal indentexpr=GetOblIndent()
setlocal indentkeys+==~endif,=~else,=~loop,=~end
if exists("*GetOblIndent")
finish
endif
let s:keepcpo = &cpo
set cpo&vim
let s:SKIP_LINES = '^\s*\(;.*\)'
function! GetOblIndent()
let lnum = prevnonblank(v:lnum - 1)
let cur_text = getline(v:lnum)
if lnum == 0
return 0
endif
let prev_text = getline(lnum)
let found_cont = 0
let ind = indent(lnum)
" indent next line on start terms
let i = match(prev_text, '\c^\s*\(\s\+\)\?\(\(if\|while\|foreach\|begin\|else\%[if]\)\>\)')
if i >= 0
let ind += shiftwidth()
if strpart(prev_text, i, 1) == '|' && has('syntax_items')
\ && synIDattr(synID(lnum, i, 1), "name") =~ '\(Comment\|String\)$'
let ind -= shiftwidth()
endif
endif
" indent current line on end/else terms
if cur_text =~ '\c^\s*\(\s\+\)\?\(\(loop\|endif\|else\%[if]\)\>\)'
let ind = ind - shiftwidth()
" if we are at a begin block just go to column 0
elseif cur_text =~ '\c^\s*\(\s\+\)\?\(\(begin\|end\)\>\)'
let ind = 0
endif
return ind
endfunction
let &cpo = s:keepcpo
unlet s:keepcpo

80
runtime/indent/zig.vim Normal file
View File

@@ -0,0 +1,80 @@
" Vim filetype indent file
" Language: Zig
" Upstream: https://github.com/ziglang/zig.vim
" Only load this indent file when no other was loaded.
if exists("b:did_indent")
finish
endif
let b:did_indent = 1
if (!has("cindent") || !has("eval"))
finish
endif
setlocal cindent
" L0 -> 0 indent for jump labels (i.e. case statement in c).
" j1 -> indenting for "javascript object declarations"
" J1 -> see j1
" w1 -> starting a new line with `(` at the same indent as `(`
" m1 -> if `)` starts a line, match its indent with the first char of its
" matching `(` line
" (s -> use one indent, when starting a new line after a trailing `(`
setlocal cinoptions=L0,m1,(s,j1,J1,l1
" cinkeys: controls what keys trigger indent formatting
" 0{ -> {
" 0} -> }
" 0) -> )
" 0] -> ]
" !^F -> make CTRL-F (^F) reindent the current line when typed
" o -> when <CR> or `o` is used
" O -> when the `O` command is used
setlocal cinkeys=0{,0},0),0],!^F,o,O
setlocal indentexpr=GetZigIndent(v:lnum)
let b:undo_indent = "setlocal cindent< cinkeys< cinoptions< indentexpr<"
function! GetZigIndent(lnum)
let curretLineNum = a:lnum
let currentLine = getline(a:lnum)
" cindent doesn't handle multi-line strings properly, so force no indent
if currentLine =~ '^\s*\\\\.*'
return -1
endif
let prevLineNum = prevnonblank(a:lnum-1)
let prevLine = getline(prevLineNum)
" for lines that look like
" },
" };
" try treating them the same as a }
if prevLine =~ '\v^\s*},$'
if currentLine =~ '\v^\s*};$' || currentLine =~ '\v^\s*}$'
return indent(prevLineNum) - 4
endif
return indent(prevLineNum-1) - 4
endif
if currentLine =~ '\v^\s*},$'
return indent(prevLineNum) - 4
endif
if currentLine =~ '\v^\s*};$'
return indent(prevLineNum) - 4
endif
" cindent doesn't handle this case correctly:
" switch (1): {
" 1 => true,
" ~
" ^---- indents to here
if prevLine =~ '.*=>.*,$' && currentLine !~ '.*}$'
return indent(prevLineNum)
endif
return cindent(a:lnum)
endfunction

View File

@@ -1,6 +1,6 @@
" Menu Translations: Danish
" Maintainer: scootergrisen
" Last Change: 2020 Apr 23
" Last Change: 2022 Nov 17
" Original translations
" Quit when menu translations have already been done.
@@ -44,7 +44,7 @@ menut &Save<Tab>:w Gem<Tab>:w
menut Save\ &As\.\.\.<Tab>:sav Gem\ som\.\.\.<Tab>:sav
" -SEP2-
menut Split\ &Diff\ with\.\.\. Opdel\ diff\ med\.\.\.
menut Split\ Patched\ &By\.\.\. Opdel\ patchet\ af\.\.\.
menut Split\ Patched\ &By\.\.\. Opdel\ patched\ af\.\.\.
" -SEP3-
menut &Print Udskriv
" -SEP4-

View File

@@ -2,7 +2,7 @@
" You can also use this as a start for your own set of menus.
"
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2022 Mar 02
" Last Change: 2022 Nov 27
" Note that ":an" (short for ":anoremenu") is often used to make a menu work
" in all modes and avoid side effects from mappings defined by the user.
@@ -341,7 +341,7 @@ def s:TextWidth()
# Remove leading zeros to avoid it being used as an octal number.
# But keep a zero by itself.
var tw = substitute(n, "^0*", "", "")
&tw = tw == '' ? 0 : tw
&tw = tw == '' ? 0 : str2nr(tw)
endif
enddef
@@ -474,7 +474,7 @@ if has("spell")
an <silent> 40.335.270 &Tools.&Spelling.&Find\ More\ Languages :call <SID>SpellLang()<CR>
let s:undo_spelllang = ['aun &Tools.&Spelling.&Find\ More\ Languages']
def s:SpellLang()
def s:SpellLang(encChanged = false)
for cmd in s:undo_spelllang
exe "silent! " .. cmd
endfor
@@ -482,7 +482,8 @@ if has("spell")
var enc = &enc == "iso-8859-15" ? "latin1" : &enc
if !exists("g:menutrans_set_lang_to")
# Reset g:menutrans_set_lang_to when called for the EncodingChanged event.
if !exists("g:menutrans_set_lang_to") || encChanged
g:menutrans_set_lang_to = 'Set Language to'
endif
@@ -510,12 +511,12 @@ if has("spell")
else
echomsg "Found " .. found .. " more spell files"
endif
# Need to redo this when 'encoding' is changed.
augroup spellmenu
au! EncodingChanged * call <SID>SpellLang()
au! EncodingChanged * call SpellLang(true)
augroup END
enddef
endif
" Tools.Fold Menu

View File

@@ -1,7 +1,7 @@
" These commands create the option window.
"
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2022 Oct 15
" Last Change: 2022 Nov 23
" If there already is an option window, jump to that one.
let buf = bufnr('option-window')
@@ -583,6 +583,8 @@ call <SID>BinOptionG("xtermcodes", &xtermcodes)
call <SID>AddOption("weirdinvert", gettext("terminal that requires extra redrawing"))
call <SID>BinOptionG("wiv", &wiv)
call <SID>AddOption("keyprotocol", gettext("what keyboard protocol to use for which terminal"))
call <SID>OptionG("kpc", &kpc)
call <SID>AddOption("esckeys", gettext("recognize keys that start with <Esc> in Insert mode"))
call <SID>BinOptionG("ek", &ek)
call <SID>AddOption("scrolljump", gettext("minimal number of lines to scroll at a time"))
@@ -1047,6 +1049,9 @@ call <SID>BinOptionL("bin")
call <SID>AddOption("endofline", gettext("last line in the file has an end-of-line"))
call append("$", "\t" .. s:local_to_buffer)
call <SID>BinOptionL("eol")
call <SID>AddOption("endoffile", gettext("last line in the file followed by CTRL-Z"))
call append("$", "\t" .. s:local_to_buffer)
call <SID>BinOptionL("eof")
call <SID>AddOption("fixendofline", gettext("fixes missing end-of-line at end of text file"))
call append("$", "\t" .. s:local_to_buffer)
call <SID>BinOptionL("fixeol")

View File

@@ -2,7 +2,7 @@
"
" Author: Bram Moolenaar
" Copyright: Vim license applies, see ":help license"
" Last Change: 2022 Jun 24
" Last Change: 2022 Nov 10
"
" WORK IN PROGRESS - The basics works stable, more to come
" Note: In general you need at least GDB 7.12 because this provides the
@@ -891,7 +891,14 @@ func s:InstallCommands()
endif
if has('menu') && &mouse != ''
call s:InstallWinbar()
" install the window toolbar by default, can be disabled in the config
let winbar = 1
if exists('g:termdebug_config')
let winbar = get(g:termdebug_config, 'winbar', 1)
endif
if winbar
call s:InstallWinbar()
endif
let popup = 1
if exists('g:termdebug_config')

View File

@@ -1,6 +1,11 @@
" Vim plugin for using Vim as manpager.
" Maintainer: Enno Nagel <ennonagel+vim@gmail.com>
" Last Change: 2022 Sep 30
" Last Change: 2022 Oct 17
if exists('g:loaded_manpager_plugin')
finish
endif
let g:loaded_manpager_plugin = 1
" Set up the current buffer (likely read from stdin) as a manpage
command MANPAGER call s:ManPager()

View File

@@ -1,6 +1,6 @@
" Vim plugin for showing matching parens
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2021 Apr 08
" Last Change: 2022 Dec 01
" Exit quickly when:
" - this plugin was already loaded (or disabled)
@@ -19,8 +19,8 @@ endif
augroup matchparen
" Replace all matchparen autocommands
autocmd! CursorMoved,CursorMovedI,WinEnter,WinScrolled * call s:Highlight_Matching_Pair()
autocmd! WinLeave * call s:Remove_Matches()
autocmd! CursorMoved,CursorMovedI,WinEnter,BufWinEnter,WinScrolled * call s:Highlight_Matching_Pair()
autocmd! WinLeave,BufLeave * call s:Remove_Matches()
if exists('##TextChanged')
autocmd! TextChanged,TextChangedI * call s:Highlight_Matching_Pair()
endif

View File

@@ -815,202 +815,204 @@ endif
" HTML header, with the title and generator ;-). Left free space for the CSS,
" to be filled at the end.
call extend(s:lines, [
\ "<html>",
\ "<head>"])
" include encoding as close to the top as possible, but only if not already
" contained in XML information (to avoid haggling over content type)
if s:settings.encoding != "" && !s:settings.use_xhtml
if s:html5
call add(s:lines, '<meta charset="' . s:settings.encoding . '"' . s:tag_close)
else
call add(s:lines, "<meta http-equiv=\"content-type\" content=\"text/html; charset=" . s:settings.encoding . '"' . s:tag_close)
endif
endif
call extend(s:lines, [
\ ("<title>".expand("%:p:~")."</title>"),
\ ("<meta name=\"Generator\" content=\"Vim/".v:version/100.".".v:version%100.'"'.s:tag_close),
\ ("<meta name=\"plugin-version\" content=\"".s:pluginversion.'"'.s:tag_close)
\ ])
call add(s:lines, '<meta name="syntax" content="'.s:current_syntax.'"'.s:tag_close)
call add(s:lines, '<meta name="settings" content="'.
\ join(filter(keys(s:settings),'s:settings[v:val]'),',').
\ ',prevent_copy='.s:settings.prevent_copy.
\ ',use_input_for_pc='.s:settings.use_input_for_pc.
\ '"'.s:tag_close)
call add(s:lines, '<meta name="colorscheme" content="'.
\ (exists('g:colors_name')
\ ? g:colors_name
\ : 'none'). '"'.s:tag_close)
if s:settings.use_css
if !s:settings.no_doc
call extend(s:lines, [
\ "<style" . (s:html5 ? "" : " type=\"text/css\"") . ">",
\ s:settings.use_xhtml ? "" : "<!--"])
let s:ieonly = []
if s:settings.dynamic_folds
if s:settings.hover_unfold
" if we are doing hover_unfold, use css 2 with css 1 fallback for IE6
call extend(s:lines, [
\ ".FoldColumn { text-decoration: none; white-space: pre; }",
\ "",
\ "body * { margin: 0; padding: 0; }", "",
\ ".open-fold > span.Folded { display: none; }",
\ ".open-fold > .fulltext { display: inline; }",
\ ".closed-fold > .fulltext { display: none; }",
\ ".closed-fold > span.Folded { display: inline; }",
\ "",
\ ".open-fold > .toggle-open { display: none; }",
\ ".open-fold > .toggle-closed { display: inline; }",
\ ".closed-fold > .toggle-open { display: inline; }",
\ ".closed-fold > .toggle-closed { display: none; }",
\ "", "",
\ '/* opening a fold while hovering won''t be supported by IE6 and other',
\ "similar browsers, but it should fail gracefully. */",
\ ".closed-fold:hover > .fulltext { display: inline; }",
\ ".closed-fold:hover > .toggle-filler { display: none; }",
\ ".closed-fold:hover > .Folded { display: none; }"])
" TODO: IE6 is REALLY old and I can't even test it anymore. Maybe we
" should remove this? Leave it in for now, it was working at one point,
" and doesn't affect any modern browsers. Even newer IE versions should
" support the above code and ignore the following.
let s:ieonly = [
\ "<!--[if lt IE 7]><style type=\"text/css\">",
\ ".open-fold .fulltext { display: inline; }",
\ ".open-fold span.Folded { display: none; }",
\ ".open-fold .toggle-open { display: none; }",
\ ".open-fold .toggle-closed { display: inline; }",
\ "",
\ ".closed-fold .fulltext { display: none; }",
\ ".closed-fold span.Folded { display: inline; }",
\ ".closed-fold .toggle-open { display: inline; }",
\ ".closed-fold .toggle-closed { display: none; }",
\ "</style>",
\ "<![endif]-->",
\]
\ "<html>",
\ "<head>"])
" include encoding as close to the top as possible, but only if not already
" contained in XML information (to avoid haggling over content type)
if s:settings.encoding != "" && !s:settings.use_xhtml
if s:html5
call add(s:lines, '<meta charset="' . s:settings.encoding . '"' . s:tag_close)
else
" if we aren't doing hover_unfold, use CSS 1 only
call extend(s:lines, [
\ ".FoldColumn { text-decoration: none; white-space: pre; }",
\ ".open-fold .fulltext { display: inline; }",
\ ".open-fold span.Folded { display: none; }",
\ ".open-fold .toggle-open { display: none; }",
\ ".open-fold .toggle-closed { display: inline; }",
\ "",
\ ".closed-fold .fulltext { display: none; }",
\ ".closed-fold span.Folded { display: inline; }",
\ ".closed-fold .toggle-open { display: inline; }",
\ ".closed-fold .toggle-closed { display: none; }",
\])
call add(s:lines, "<meta http-equiv=\"content-type\" content=\"text/html; charset=" . s:settings.encoding . '"' . s:tag_close)
endif
endif
" else we aren't doing any dynamic folding, no need for any special rules
call extend(s:lines, [
\ s:settings.use_xhtml ? "" : '-->',
\ "</style>",
\])
call extend(s:lines, s:ieonly)
unlet s:ieonly
endif
let s:uses_script = s:settings.dynamic_folds || s:settings.line_ids
" insert script tag if needed
if s:uses_script
call extend(s:lines, [
\ "",
\ "<script" . (s:html5 ? "" : " type='text/javascript'") . ">",
\ s:settings.use_xhtml ? '//<![CDATA[' : "<!--"])
endif
" insert javascript to toggle folds open and closed
if s:settings.dynamic_folds
call extend(s:lines, [
\ "",
\ "function toggleFold(objID)",
\ "{",
\ " var fold;",
\ " fold = document.getElementById(objID);",
\ " if (fold.className == 'closed-fold')",
\ " {",
\ " fold.className = 'open-fold';",
\ " }",
\ " else if (fold.className == 'open-fold')",
\ " {",
\ " fold.className = 'closed-fold';",
\ " }",
\ "}"
\ ("<title>".expand("%:p:~")."</title>"),
\ ("<meta name=\"Generator\" content=\"Vim/".v:version/100.".".v:version%100.'"'.s:tag_close),
\ ("<meta name=\"plugin-version\" content=\"".s:pluginversion.'"'.s:tag_close)
\ ])
endif
call add(s:lines, '<meta name="syntax" content="'.s:current_syntax.'"'.s:tag_close)
call add(s:lines, '<meta name="settings" content="'.
\ join(filter(keys(s:settings),'s:settings[v:val]'),',').
\ ',prevent_copy='.s:settings.prevent_copy.
\ ',use_input_for_pc='.s:settings.use_input_for_pc.
\ '"'.s:tag_close)
call add(s:lines, '<meta name="colorscheme" content="'.
\ (exists('g:colors_name')
\ ? g:colors_name
\ : 'none'). '"'.s:tag_close)
if s:settings.line_ids
" insert javascript to get IDs from line numbers, and to open a fold before
" jumping to any lines contained therein
call extend(s:lines, [
\ "",
\ "/* function to open any folds containing a jumped-to line before jumping to it */",
\ "function JumpToLine()",
\ "{",
\ " var lineNum;",
\ " lineNum = window.location.hash;",
\ " lineNum = lineNum.substr(1); /* strip off '#' */",
\ "",
\ " if (lineNum.indexOf('L') == -1) {",
\ " lineNum = 'L'+lineNum;",
\ " }",
\ " var lineElem = document.getElementById(lineNum);"
\ ])
if s:settings.use_css
call extend(s:lines, [
\ "<style" . (s:html5 ? "" : " type=\"text/css\"") . ">",
\ s:settings.use_xhtml ? "" : "<!--"])
let s:ieonly = []
if s:settings.dynamic_folds
if s:settings.hover_unfold
" if we are doing hover_unfold, use css 2 with css 1 fallback for IE6
call extend(s:lines, [
\ ".FoldColumn { text-decoration: none; white-space: pre; }",
\ "",
\ "body * { margin: 0; padding: 0; }", "",
\ ".open-fold > span.Folded { display: none; }",
\ ".open-fold > .fulltext { display: inline; }",
\ ".closed-fold > .fulltext { display: none; }",
\ ".closed-fold > span.Folded { display: inline; }",
\ "",
\ ".open-fold > .toggle-open { display: none; }",
\ ".open-fold > .toggle-closed { display: inline; }",
\ ".closed-fold > .toggle-open { display: inline; }",
\ ".closed-fold > .toggle-closed { display: none; }",
\ "", "",
\ '/* opening a fold while hovering won''t be supported by IE6 and other',
\ "similar browsers, but it should fail gracefully. */",
\ ".closed-fold:hover > .fulltext { display: inline; }",
\ ".closed-fold:hover > .toggle-filler { display: none; }",
\ ".closed-fold:hover > .Folded { display: none; }"])
" TODO: IE6 is REALLY old and I can't even test it anymore. Maybe we
" should remove this? Leave it in for now, it was working at one point,
" and doesn't affect any modern browsers. Even newer IE versions should
" support the above code and ignore the following.
let s:ieonly = [
\ "<!--[if lt IE 7]><style type=\"text/css\">",
\ ".open-fold .fulltext { display: inline; }",
\ ".open-fold span.Folded { display: none; }",
\ ".open-fold .toggle-open { display: none; }",
\ ".open-fold .toggle-closed { display: inline; }",
\ "",
\ ".closed-fold .fulltext { display: none; }",
\ ".closed-fold span.Folded { display: inline; }",
\ ".closed-fold .toggle-open { display: inline; }",
\ ".closed-fold .toggle-closed { display: none; }",
\ "</style>",
\ "<![endif]-->",
\]
else
" if we aren't doing hover_unfold, use CSS 1 only
call extend(s:lines, [
\ ".FoldColumn { text-decoration: none; white-space: pre; }",
\ ".open-fold .fulltext { display: inline; }",
\ ".open-fold span.Folded { display: none; }",
\ ".open-fold .toggle-open { display: none; }",
\ ".open-fold .toggle-closed { display: inline; }",
\ "",
\ ".closed-fold .fulltext { display: none; }",
\ ".closed-fold span.Folded { display: inline; }",
\ ".closed-fold .toggle-open { display: inline; }",
\ ".closed-fold .toggle-closed { display: none; }",
\])
endif
endif
" else we aren't doing any dynamic folding, no need for any special rules
call extend(s:lines, [
\ s:settings.use_xhtml ? "" : '-->',
\ "</style>",
\])
call extend(s:lines, s:ieonly)
unlet s:ieonly
endif
let s:uses_script = s:settings.dynamic_folds || s:settings.line_ids
" insert script tag if needed
if s:uses_script
call extend(s:lines, [
\ "",
\ "<script" . (s:html5 ? "" : " type='text/javascript'") . ">",
\ s:settings.use_xhtml ? '//<![CDATA[' : "<!--"])
endif
" insert javascript to toggle folds open and closed
if s:settings.dynamic_folds
call extend(s:lines, [
\ "",
\ " /* navigate upwards in the DOM tree to open all folds containing the line */",
\ " var node = lineElem;",
\ " while (node && node.id != 'vimCodeElement".s:settings.id_suffix."')",
\ "function toggleFold(objID)",
\ "{",
\ " var fold;",
\ " fold = document.getElementById(objID);",
\ " if (fold.className == 'closed-fold')",
\ " {",
\ " if (node.className == 'closed-fold')",
\ " {",
\ " node.className = 'open-fold';",
\ " }",
\ " node = node.parentNode;",
\ " fold.className = 'open-fold';",
\ " }",
\ " else if (fold.className == 'open-fold')",
\ " {",
\ " fold.className = 'closed-fold';",
\ " }",
\ "}"
\ ])
endif
call extend(s:lines, [
\ " /* Always jump to new location even if the line was hidden inside a fold, or",
\ " * we corrected the raw number to a line ID.",
\ " */",
\ " if (lineElem) {",
\ " lineElem.scrollIntoView(true);",
\ " }",
\ " return true;",
\ "}",
\ "if ('onhashchange' in window) {",
\ " window.onhashchange = JumpToLine;",
\ "}"
\ ])
endif
" insert script closing tag if needed
if s:uses_script
call extend(s:lines, [
\ '',
\ s:settings.use_xhtml ? '//]]>' : '-->',
\ "</script>"
\ ])
endif
if s:settings.line_ids
" insert javascript to get IDs from line numbers, and to open a fold before
" jumping to any lines contained therein
call extend(s:lines, [
\ "",
\ "/* function to open any folds containing a jumped-to line before jumping to it */",
\ "function JumpToLine()",
\ "{",
\ " var lineNum;",
\ " lineNum = window.location.hash;",
\ " lineNum = lineNum.substr(1); /* strip off '#' */",
\ "",
\ " if (lineNum.indexOf('L') == -1) {",
\ " lineNum = 'L'+lineNum;",
\ " }",
\ " var lineElem = document.getElementById(lineNum);"
\ ])
call extend(s:lines, ["</head>",
\ "<body".(s:settings.line_ids ? " onload='JumpToLine();'" : "").">"])
if s:settings.dynamic_folds
call extend(s:lines, [
\ "",
\ " /* navigate upwards in the DOM tree to open all folds containing the line */",
\ " var node = lineElem;",
\ " while (node && node.id != 'vimCodeElement".s:settings.id_suffix."')",
\ " {",
\ " if (node.className == 'closed-fold')",
\ " {",
\ " node.className = 'open-fold';",
\ " }",
\ " node = node.parentNode;",
\ " }",
\ ])
endif
call extend(s:lines, [
\ " /* Always jump to new location even if the line was hidden inside a fold, or",
\ " * we corrected the raw number to a line ID.",
\ " */",
\ " if (lineElem) {",
\ " lineElem.scrollIntoView(true);",
\ " }",
\ " return true;",
\ "}",
\ "if ('onhashchange' in window) {",
\ " window.onhashchange = JumpToLine;",
\ "}"
\ ])
endif
" insert script closing tag if needed
if s:uses_script
call extend(s:lines, [
\ '',
\ s:settings.use_xhtml ? '//]]>' : '-->',
\ "</script>"
\ ])
endif
call extend(s:lines, ["</head>",
\ "<body".(s:settings.line_ids ? " onload='JumpToLine();'" : "").">"])
endif
if s:settings.no_pre
" if we're not using CSS we use a font tag which can't have a div inside
if s:settings.use_css
call extend(s:lines, ["<div id='vimCodeElement".s:settings.id_suffix."'>"])
call extend(s:lines, ["<div id='vimCodeElement" .. s:settings.id_suffix .. "'>"])
endif
else
call extend(s:lines, ["<pre id='vimCodeElement".s:settings.id_suffix."'>"])
call extend(s:lines, ["<pre id='vimCodeElement" .. s:settings.id_suffix .. "'>"])
endif
exe s:orgwin . "wincmd w"
@@ -1721,12 +1723,15 @@ endif
if s:settings.no_pre
if !s:settings.use_css
" Close off the font tag that encapsulates the whole <body>
call extend(s:lines, ["</font>", "</body>", "</html>"])
call extend(s:lines, ["</font>"])
else
call extend(s:lines, ["</div>", "</body>", "</html>"])
call extend(s:lines, ["</div>"])
endif
else
call extend(s:lines, ["</pre>", "</body>", "</html>"])
call extend(s:lines, ["</pre>"])
endif
if !s:settings.no_doc
call extend(s:lines, ["</body>", "</html>"])
endif
exe s:newwin . "wincmd w"
@@ -1742,15 +1747,15 @@ unlet s:lines
" The generated HTML is admittedly ugly and takes a LONG time to fold.
" Make sure the user doesn't do syntax folding when loading a generated file,
" using a modeline.
call append(line('$'), "<!-- vim: set foldmethod=manual : -->")
" Now, when we finally know which, we define the colors and styles
if s:settings.use_css
1;/<style\>/+1
if !s:settings.no_modeline
call append(line('$'), "<!-- vim: set foldmethod=manual : -->")
endif
" Normal/global attributes
if s:settings.use_css
" Now, when we finally know which, we define the colors and styles
if s:settings.use_css && !s:settings.no_doc
1;/<style\>/+1
" Normal/global attributes
if s:settings.no_pre
call append('.', "body { color: " . s:fgc . "; background-color: " . s:bgc . "; font-family: ". s:htmlfont ."; }")
+
@@ -1874,7 +1879,9 @@ if s:settings.use_css
endif
endif
endif
else
endif
if !s:settings.use_css && !s:settings_no_doc
" For Netscape 4, set <body> attributes too, though, strictly speaking, it's
" incorrect.
execute '%s:<body\([^>]*\):<body bgcolor="' . s:bgc . '" text="' . s:fgc . '"\1>\r<font face="'. s:htmlfont .'"'
@@ -1882,7 +1889,7 @@ endif
" Gather attributes for all other classes. Do diff first so that normal
" highlight groups are inserted before it.
if s:settings.use_css
if s:settings.use_css && !s:settings.no_doc
if s:diff_mode
call append('.', filter(map(keys(s:diffstylelist), "s:diffstylelist[v:val]"), 'v:val != ""'))
endif
@@ -1892,20 +1899,22 @@ if s:settings.use_css
endif
" Add hyperlinks
" TODO: add option to not do this? Maybe just make the color the same as the
" text highlight group normally is?
%s+\(https\=://\S\{-}\)\(\([.,;:}]\=\(\s\|$\)\)\|[\\"'<>]\|&gt;\|&lt;\|&quot;\)+<a href="\1">\1</a>\2+ge
" The DTD
if s:settings.use_xhtml
exe "normal! gg$a\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">"
elseif s:html5
exe "normal! gg0i<!DOCTYPE html>\n"
else
exe "normal! gg0i<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n"
if !s:settings.no_links
%s+\(https\=://\S\{-}\)\(\([.,;:}]\=\(\s\|$\)\)\|[\\"'<>]\|&gt;\|&lt;\|&quot;\)+<a href="\1">\1</a>\2+ge
endif
if s:settings.use_xhtml
" The DTD
if !s:settings.no_doc
if s:settings.use_xhtml
exe "normal! gg$a\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">"
elseif s:html5
exe "normal! gg0i<!DOCTYPE html>\n"
else
exe "normal! gg0i<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n"
endif
endif
if s:settings.use_xhtml && !s:settings.no_doc
exe "normal! gg/<html/e\na xmlns=\"http://www.w3.org/1999/xhtml\"\e"
endif

View File

@@ -4,7 +4,9 @@
" Maintainer: Marcin Szamotulski <profunctor@pm.me>
" Previous Maintainer: Vincent Berthoux <twinside@gmail.com>
" File Types: .cabal
" Last Change: 21 Nov 2020
" Last Change: 22 Oct 2022
" v1.6: Added support for foreign-libraries
" Added highlighting for various fields
" v1.5: Incorporated changes from
" https://github.com/sdiehl/haskell-vim-proto/blob/master/vim/syntax/cabal.vim
" Use `syn keyword` instead of `syn match`.
@@ -61,13 +63,14 @@ syn keyword cabalCategory contained
\ test-suite
\ source-repository
\ flag
\ foreign-library
\ custom-setup
\ common
syn match cabalCategoryTitle contained /[^{]*\ze{\?/
syn match cabalCategoryRegion
\ contains=cabalCategory,cabalCategoryTitle
\ nextgroup=cabalCategory skipwhite
\ /^\c\s*\(contained\|executable\|library\|benchmark\|test-suite\|source-repository\|flag\|custom-setup\|common\)\+\s*\%(.*$\|$\)/
\ /^\c\s*\(contained\|executable\|library\|benchmark\|test-suite\|source-repository\|flag\|foreign-library\|custom-setup\|common\)\+\s*\%(.*$\|$\)/
syn keyword cabalTruth true false
" cabalStatementRegion which limits the scope of cabalStatement keywords, this
@@ -77,6 +80,7 @@ syn keyword cabalStatement contained containedin=cabalStatementRegion
\ default-language
\ default-extensions
\ author
\ autogen-includes
\ autogen-modules
\ asm-sources
\ asm-options
@@ -84,7 +88,7 @@ syn keyword cabalStatement contained containedin=cabalStatementRegion
\ bug-reports
\ build-depends
\ build-tools
\ build-tools-depends
\ build-tool-depends
\ build-type
\ buildable
\ c-sources
@@ -95,6 +99,7 @@ syn keyword cabalStatement contained containedin=cabalStatementRegion
\ cmm-sources
\ cmm-options
\ cpp-options
\ cxx-options
\ cxx-sources
\ data-dir
\ data-files
@@ -111,7 +116,9 @@ syn keyword cabalStatement contained containedin=cabalStatementRegion
\ extra-framework-dirs
\ extra-ghci-libraries
\ extra-lib-dirs
\ extra-lib-dirs-static
\ extra-libraries
\ extra-libraries-static
\ extra-library-flavours
\ extra-source-files
\ extra-tmp-files
@@ -133,6 +140,8 @@ syn keyword cabalStatement contained containedin=cabalStatementRegion
\ install-includes
\ js-sources
\ ld-options
\ lib-version-info
\ lib-version-linux
\ license
\ license-file
\ location
@@ -141,20 +150,26 @@ syn keyword cabalStatement contained containedin=cabalStatementRegion
\ manual
\ mixins
\ module
\ mod-def-file
\ name
\ nhc98-options
\ options
\ other-extensions
\ other-language
\ other-languages
\ other-modules
\ package-url
\ pkgconfig-depends
\ scope
\ setup-depends
\ signatures
\ stability
\ subdir
\ synopsis
\ reexported-modules
\ tag
\ tested-with
\ test-module
\ type
\ version
\ virtual-modules

View File

@@ -3,7 +3,7 @@
" Maintainer: Nick Jensen <nickspoon@gmail.com>
" Former Maintainers: Anduin Withers <awithers@anduin.com>
" Johannes Zellner <johannes@zellner.org>
" Last Change: 2022-03-01
" Last Change: 2022-11-16
" Filenames: *.cs
" License: Vim (see :h license)
" Repository: https://github.com/nickspoons/vim-cs
@@ -25,6 +25,9 @@ syn keyword csType bool byte char decimal double float int long object sbyte sho
syn keyword csType nint nuint " contextual
syn keyword csStorage enum interface namespace struct
syn match csStorage "\<record\ze\_s\+@\=\h\w*\_s*[<(:{;]"
syn match csStorage "\%(\<\%(partial\|new\|public\|protected\|internal\|private\|abstract\|sealed\|static\|unsafe\|readonly\)\)\@9<=\_s\+record\>"
syn match csStorage "\<record\ze\_s\+\%(class\|struct\)"
syn match csStorage "\<delegate\>"
syn keyword csRepeat break continue do for foreach goto return while
syn keyword csConditional else if switch
@@ -44,6 +47,9 @@ syn keyword csManagedModifier managed unmanaged contained
" Modifiers
syn match csUsingModifier "\<global\ze\_s\+using\>"
syn keyword csAccessModifier internal private protected public
syn keyword csModifier operator nextgroup=csCheckedModifier skipwhite skipempty
syn keyword csCheckedModifier checked contained
" TODO: in new out
syn keyword csModifier abstract const event override readonly sealed static virtual volatile
syn match csModifier "\<\%(extern\|fixed\|unsafe\)\>"
@@ -76,7 +82,7 @@ syn match csAccess "\<this\>"
" Extension method parameter modifier
syn match csModifier "\<this\ze\_s\+@\=\h"
syn keyword csUnspecifiedStatement as in is nameof operator out params ref sizeof stackalloc using
syn keyword csUnspecifiedStatement as in is nameof out params ref sizeof stackalloc using
syn keyword csUnsupportedStatement value
syn keyword csUnspecifiedKeyword explicit implicit
@@ -183,7 +189,7 @@ syn match csUnicodeNumber +\\u\x\{4}+ contained contains=csUnicodeSpecifier disp
syn match csUnicodeNumber +\\U00\x\{6}+ contained contains=csUnicodeSpecifier display
syn match csUnicodeSpecifier +\\[uUx]+ contained display
syn region csString matchgroup=csQuote start=+"+ end=+"+ end=+$+ extend contains=csSpecialChar,csSpecialError,csUnicodeNumber,@Spell
syn region csString matchgroup=csQuote start=+"+ end=+"\%(u8\)\=+ end=+$+ extend contains=csSpecialChar,csSpecialError,csUnicodeNumber,@Spell
syn match csCharacter "'[^']*'" contains=csSpecialChar,csSpecialCharError,csUnicodeNumber display
syn match csCharacter "'\\''" contains=csSpecialChar display
syn match csCharacter "'[^\\]'" display
@@ -200,7 +206,7 @@ syn match csReal "\<\d\+\%(_\+\d\+\)*[fdm]\>" display
syn case match
syn cluster csNumber contains=csInteger,csReal
syn region csInterpolatedString matchgroup=csQuote start=+\$"+ end=+"+ extend contains=csInterpolation,csEscapedInterpolation,csSpecialChar,csSpecialError,csUnicodeNumber,@Spell
syn region csInterpolatedString matchgroup=csQuote start=+\$"+ end=+"\%(u8\)\=+ extend contains=csInterpolation,csEscapedInterpolation,csSpecialChar,csSpecialError,csUnicodeNumber,@Spell
syn region csInterpolation matchgroup=csInterpolationDelimiter start=+{+ end=+}+ keepend contained contains=@csAll,csBraced,csBracketed,csInterpolationAlign,csInterpolationFormat
syn match csEscapedInterpolation "{{" transparent contains=NONE display
@@ -210,10 +216,10 @@ syn match csInterpolationFormat +:[^}]\+}+ contained contains=csInterpolationFor
syn match csInterpolationAlignDel +,+ contained display
syn match csInterpolationFormatDel +:+ contained display
syn region csVerbatimString matchgroup=csQuote start=+@"+ end=+"+ skip=+""+ extend contains=csVerbatimQuote,@Spell
syn region csVerbatimString matchgroup=csQuote start=+@"+ end=+"\%(u8\)\=+ skip=+""+ extend contains=csVerbatimQuote,@Spell
syn match csVerbatimQuote +""+ contained
syn region csInterVerbString matchgroup=csQuote start=+$@"+ start=+@$"+ end=+"+ skip=+""+ extend contains=csInterpolation,csEscapedInterpolation,csSpecialChar,csSpecialError,csUnicodeNumber,csVerbatimQuote,@Spell
syn region csInterVerbString matchgroup=csQuote start=+$@"+ start=+@$"+ end=+"\%(u8\)\=+ skip=+""+ extend contains=csInterpolation,csEscapedInterpolation,csSpecialChar,csSpecialError,csUnicodeNumber,csVerbatimQuote,@Spell
syn cluster csString contains=csString,csInterpolatedString,csVerbatimString,csInterVerbString
@@ -256,6 +262,7 @@ hi def link csException Exception
hi def link csModifier StorageClass
hi def link csAccessModifier csModifier
hi def link csAsyncModifier csModifier
hi def link csCheckedModifier csModifier
hi def link csManagedModifier csModifier
hi def link csUsingModifier csModifier

View File

@@ -3,7 +3,7 @@
" Maintainer: Debian Vim Maintainers
" Former Maintainers: Gerfried Fuchs <alfie@ist.org>
" Wichert Akkerman <wakkerma@debian.org>
" Last Change: 2022 Jul 25
" Last Change: 2022 Oct 29
" URL: https://salsa.debian.org/vim-team/vim-debian/blob/master/syntax/debchangelog.vim
" Standard syntax initialization
@@ -21,9 +21,9 @@ let s:cpo = &cpo
set cpo-=C
let s:supported = [
\ 'oldstable', 'stable', 'testing', 'unstable', 'experimental', 'sid', 'rc-buggy',
\ 'buster', 'bullseye', 'bookworm', 'trixie',
\ 'buster', 'bullseye', 'bookworm', 'trixie', 'forky',
\
\ 'trusty', 'xenial', 'bionic', 'focal', 'jammy', 'kinetic',
\ 'trusty', 'xenial', 'bionic', 'focal', 'jammy', 'kinetic', 'lunar',
\ 'devel'
\ ]
let s:unsupported = [

View File

@@ -2,7 +2,7 @@
" Language: Debian sources.list
" Maintainer: Debian Vim Maintainers
" Former Maintainer: Matthijs Mohlmann <matthijs@cacholong.nl>
" Last Change: 2022 Jul 25
" Last Change: 2022 Oct 29
" URL: https://salsa.debian.org/vim-team/vim-debian/blob/master/syntax/debsources.vim
" Standard syntax initialization
@@ -23,9 +23,9 @@ let s:cpo = &cpo
set cpo-=C
let s:supported = [
\ 'oldstable', 'stable', 'testing', 'unstable', 'experimental', 'sid', 'rc-buggy',
\ 'buster', 'bullseye', 'bookworm', 'trixie',
\ 'buster', 'bullseye', 'bookworm', 'trixie', 'forky',
\
\ 'trusty', 'xenial', 'bionic', 'focal', 'jammy', 'kinetic',
\ 'trusty', 'xenial', 'bionic', 'focal', 'jammy', 'kinetic', 'lunar',
\ 'devel'
\ ]
let s:unsupported = [

View File

@@ -2,8 +2,8 @@
" Language: fstab file
" Maintainer: Radu Dineiu <radu.dineiu@gmail.com>
" URL: https://raw.github.com/rid9/vim-fstab/master/syntax/fstab.vim
" Last Change: 2020 Dec 30
" Version: 1.4
" Last Change: 2022 Dec 10
" Version: 1.5
"
" Credits:
" David Necas (Yeti) <yeti@physics.muni.cz>
@@ -56,71 +56,120 @@ syn keyword fsMountPointKeyword contained none swap
" Type
syn cluster fsTypeCluster contains=fsTypeKeyword,fsTypeUnknown
syn match fsTypeUnknown /\s\+\zs\w\+/ contained
syn keyword fsTypeKeyword contained adfs ados affs anon_inodefs atfs audiofs auto autofs bdev befs bfs btrfs binfmt_misc cd9660 cfs cgroup cifs coda configfs cpuset cramfs devfs devpts devtmpfs e2compr efs ext2 ext2fs ext3 ext4 fdesc ffs filecore fuse fuseblk fusectl hfs hpfs hugetlbfs iso9660 jffs jffs2 jfs kernfs lfs linprocfs mfs minix mqueue msdos ncpfs nfs nfsd nilfs2 none ntfs null nwfs overlay ovlfs pipefs portal proc procfs pstore ptyfs qnx4 reiserfs ramfs romfs securityfs shm smbfs squashfs sockfs sshfs std subfs swap sysfs sysv tcfs tmpfs udf ufs umap umsdos union usbfs userfs vfat vs3fs vxfs wrapfs wvfs xenfs xfs zisofs
syn keyword fsTypeKeyword contained adfs ados affs anon_inodefs atfs audiofs auto autofs bdev befs bfs btrfs binfmt_misc cd9660 ceph cfs cgroup cifs coda coherent configfs cpuset cramfs debugfs devfs devpts devtmpfs dlmfs e2compr ecryptfs efivarfs efs erofs exfat ext2 ext2fs ext3 ext4 f2fs fdesc ffs filecore fuse fuseblk fusectl gfs2 hfs hfsplus hpfs hugetlbfs iso9660 jffs jffs2 jfs kernfs lfs linprocfs mfs minix mqueue msdos ncpfs nfs nfs4 nfsd nilfs2 none ntfs ntfs3 null nwfs ocfs2 omfs overlay ovlfs pipefs portal proc procfs pstore ptyfs pvfs2 qnx4 qnx6 reiserfs ramfs romfs securityfs shm smbfs spufs squashfs sockfs sshfs std subfs swap sysfs sysv tcfs tmpfs ubifs udf ufs umap umsdos union usbfs userfs v9fs vfat virtiofs vs3fs vxfs wrapfs wvfs xenfs xenix xfs zisofs zonefs
" Options
" -------
" Options: General
syn cluster fsOptionsCluster contains=fsOperator,fsOptionsGeneral,fsOptionsKeywords,fsTypeUnknown
syn match fsOptionsNumber /\d\+/
syn match fsOptionsNumberSigned /[-+]\?\d\+/
syn match fsOptionsNumberOctal /[0-8]\+/
syn match fsOptionsString /[a-zA-Z0-9_-]\+/
syn keyword fsOptionsTrueFalse true false
syn keyword fsOptionsYesNo yes no
syn keyword fsOptionsYN y n
syn keyword fsOptions01 0 1
syn cluster fsOptionsCheckCluster contains=fsOptionsExt2Check,fsOptionsFatCheck
syn keyword fsOptionsSize 512 1024 2048
syn keyword fsOptionsGeneral async atime auto bind current defaults dev devgid devmode devmtime devuid dirsync exec force fstab kudzu loop mand move noatime noauto noclusterr noclusterw nodev nodevmtime nodiratime noexec nomand norelatime nosuid nosymfollow nouser owner rbind rdonly relatime remount ro rq rw suid suiddir supermount sw sync union update user users wxallowed xx nofail failok
syn match fsOptionsGeneral /_netdev/
syn match fsOptionsKeywords contained /\<cache=/ nextgroup=fsOptionsCache
syn keyword fsOptionsCache yes no none strict loose fscache mmap
syn match fsOptionsKeywords contained /\<dax=/ nextgroup=fsOptionsDax
syn keyword fsOptionsDax inode never always
syn match fsOptionsKeywords contained /\<errors=/ nextgroup=fsOptionsErrors
syn keyword fsOptionsErrors contained continue panic withdraw remount-ro recover zone-ro zone-offline repair
syn match fsOptionsKeywords contained /\<\%(sec\)=/ nextgroup=fsOptionsSecurityMode
syn keyword fsOptionsSecurityMode contained none krb5 krb5i ntlm ntlmi ntlmv2 ntlmv2i ntlmssp ntlmsspi sys lkey lkeyi lkeyp spkm spkmi spkmp
" Options: adfs
syn match fsOptionsKeywords contained /\<\%([ug]id\|o\%(wn\|th\)mask\)=/ nextgroup=fsOptionsNumber
syn match fsOptionsKeywords contained /\<ftsuffix=/ nextgroup=fsOptions01
" Options: affs
syn match fsOptionsKeywords contained /\<\%(set[ug]id\|mode\|reserved\)=/ nextgroup=fsOptionsNumber
syn match fsOptionsKeywords contained /\<mode=/ nextgroup=fsOptionsString
syn match fsOptionsKeywords contained /\<\%(set[ug]id\|reserved\)=/ nextgroup=fsOptionsNumber
syn match fsOptionsKeywords contained /\<\%(prefix\|volume\|root\)=/ nextgroup=fsOptionsString
syn match fsOptionsKeywords contained /\<bs=/ nextgroup=fsOptionsSize
syn keyword fsOptionsKeywords contained protect usemp verbose
syn keyword fsOptionsKeywords contained protect usemp verbose nofilenametruncate mufs
" Options: btrfs
syn match fsOptionsKeywords contained /\<\%(subvol\|subvolid\|subvolrootid\|device\|compress\|compress-force\|fatal_errors\)=/ nextgroup=fsOptionsString
syn match fsOptionsKeywords contained /\<\%(subvol\|subvolid\|subvolrootid\|device\|compress\|compress-force\|check_int_print_mask\|space_cache\)=/ nextgroup=fsOptionsString
syn match fsOptionsKeywords contained /\<\%(max_inline\|alloc_start\|thread_pool\|metadata_ratio\|check_int_print_mask\)=/ nextgroup=fsOptionsNumber
syn keyword fsOptionsKeywords contained degraded nodatasum nodatacow nobarrier ssd ssd_spread noacl notreelog flushoncommit space_cache nospace_cache clear_cache user_subvol_rm_allowed autodefrag inode_cache enospc_debug recovery check_int check_int_data skip_balance discard
syn match fsOptionsKeywords contained /\<discard=/ nextgroup=fsOptionsBtrfsDiscard
syn keyword fsOptionsBtrfsDiscard sync async
syn match fsOptionsKeywords contained /\<fatal_errors=/ nextgroup=fsOptionsBtrfsFatalErrors
syn keyword fsOptionsBtrfsFatalErrors bug panic
syn match fsOptionsKeywords contained /\<fragment=/ nextgroup=fsOptionsBtrfsFragment
syn keyword fsOptionsBtrfsFragment data metadata all
syn keyword fsOptionsKeywords contained degraded datasum nodatasum datacow nodatacow barrier nobarrier ssd ssd_spread nossd nossd_spread noacl treelog notreelog flushoncommit noflushoncommit space_cache nospace_cache clear_cache user_subvol_rm_allowed autodefrag noautodefrag inode_cache noinode_cache enospc_debug noenospc_debug recovery check_int check_int_data skip_balance discard nodiscard compress compress-force nologreplay rescan_uuid_tree rescue usebackuproot
" Options: cd9660
syn keyword fsOptionsKeywords contained extatt gens norrip nostrictjoilet
" Options: ceph
syn match fsOptionsKeywords contained /\<\%(mon_addr\|fsid\|rasize\|mount_timeout\|caps_max\)=/ nextgroup=fsOptionsString
syn keyword fsOptionsKeywords contained rbytes norbytes nocrc dcache nodcache noasyncreaddir noquotadf nocopyfrom
syn match fsOptionsKeywords contained /\<recover_session=/ nextgroup=fsOptionsCephRecoverSession
syn keyword fsOptionsCephRecoverSession contained no clean
" Options: cifs
syn match fsOptionsKeywords contained /\<\%(user\|password\|credentials\|servernetbiosname\|servern\|netbiosname\|file_mode\|dir_mode\|ip\|domain\|prefixpath\)=/ nextgroup=fsOptionsString
syn match fsOptionsKeywords contained /\<\%(cruid\|backupuid\|backupgid\)=/ nextgroup=fsOptionsNumber
syn keyword fsOptionsKeywords contained forceuid forcegid guest setuids nosetuids perm noperm dynperm strictcache rwpidforward mapchars nomapchars cifsacl nocase ignorecase nobrl sfu serverino noserverino nounix fsc multiuser posixpaths noposixpaths
" Options: devpts
" -- everything already defined
" Options: ecryptfs
syn match fsOptionsKeywords contained /\<\%(ecryptfs_\%(sig\|fnek_sig\|cipher\|key_bytes\)\|key\)=/ nextgroup=fsOptionsString
syn keyword fsOptionsKeywords contained ecryptfs_passthrough no_sig_cache ecryptfs_encrypted_view ecryptfs_xattr
syn match fsOptionsKeywords contained /\<ecryptfs_enable_filename_crypto=/ nextgroup=fsOptionsYN
syn match fsOptionsKeywords contained /\<verbosity=/ nextgroup=fsOptions01
" Options: erofs
syn match fsOptionsKeywords contained /\<cache_strategy=/ nextgroup=fsOptionsEroCacheStrategy
syn keyword fsOptionsEroCacheStrategy contained disabled readahead readaround
" Options: ext2
syn match fsOptionsKeywords contained /\<check=*/ nextgroup=@fsOptionsCheckCluster
syn match fsOptionsKeywords contained /\<errors=/ nextgroup=fsOptionsExt2Errors
syn match fsOptionsKeywords contained /\<\%(res[gu]id\|sb\)=/ nextgroup=fsOptionsNumber
syn keyword fsOptionsExt2Check contained none normal strict
syn keyword fsOptionsExt2Errors contained continue panic
syn match fsOptionsExt2Errors contained /\<remount-ro\>/
syn match fsOptionsErrors contained /\<remount-ro\>/
syn keyword fsOptionsKeywords contained acl bsddf minixdf debug grpid bsdgroups minixdf nocheck nogrpid oldalloc orlov sysvgroups nouid32 nobh user_xattr nouser_xattr
" Options: ext3
syn match fsOptionsKeywords contained /\<journal=/ nextgroup=fsOptionsExt3Journal
syn match fsOptionsKeywords contained /\<data=/ nextgroup=fsOptionsExt3Data
syn match fsOptionsKeywords contained /\<data_err=/ nextgroup=fsOptionsExt3DataErr
syn match fsOptionsKeywords contained /\<commit=/ nextgroup=fsOptionsNumber
syn match fsOptionsKeywords contained /\<jqfmt=/ nextgroup=fsOptionsExt3Jqfmt
syn match fsOptionsKeywords contained /\<\%(usrjquota\|grpjquota\)=/ nextgroup=fsOptionsString
syn keyword fsOptionsExt3Journal contained update inum
syn keyword fsOptionsExt3Data contained journal ordered writeback
syn keyword fsOptionsExt3DataErr contained ignore abort
syn keyword fsOptionsExt3Jqfmt contained vfsold vfsv0 vfsv1
syn keyword fsOptionsKeywords contained noload user_xattr nouser_xattr acl
" Options: ext4
syn match fsOptionsKeywords contained /\<journal=/ nextgroup=fsOptionsExt4Journal
syn match fsOptionsKeywords contained /\<data=/ nextgroup=fsOptionsExt4Data
syn match fsOptionsKeywords contained /\<barrier=/ nextgroup=fsOptionsExt4Barrier
syn match fsOptionsKeywords contained /\<barrier=/ nextgroup=fsOptions01
syn match fsOptionsKeywords contained /\<journal_dev=/ nextgroup=fsOptionsNumber
syn match fsOptionsKeywords contained /\<resuid=/ nextgroup=fsOptionsNumber
syn match fsOptionsKeywords contained /\<resgid=/ nextgroup=fsOptionsNumber
syn match fsOptionsKeywords contained /\<sb=/ nextgroup=fsOptionsNumber
syn match fsOptionsKeywords contained /\<commit=/ nextgroup=fsOptionsNumber
syn match fsOptionsKeywords contained /\<\%(commit\|inode_readahead_blks\|stripe\|max_batch_time\|min_batch_time\|init_itable\|max_dir_size_kb\)=/ nextgroup=fsOptionsNumber
syn match fsOptionsKeywords contained /\<journal_ioprio=/ nextgroup=fsOptionsExt4JournalIoprio
syn keyword fsOptionsExt4Journal contained update inum
syn keyword fsOptionsExt4Data contained journal ordered writeback
syn match fsOptionsExt4Barrier /[0-1]/
syn keyword fsOptionsKeywords contained noload extents orlov oldalloc user_xattr nouser_xattr acl noacl reservation noreservation bsddf minixdf check=none nocheck debug grpid nogroupid sysvgroups bsdgroups quota noquota grpquota usrquota bh nobh
syn keyword fsOptionsExt4JournalIoprio contained 0 1 2 3 4 5 6 7
syn keyword fsOptionsKeywords contained noload extents orlov oldalloc user_xattr nouser_xattr acl noacl reservation noreservation bsddf minixdf check=none nocheck debug grpid nogroupid sysvgroups bsdgroups quota noquota grpquota usrquota bh nobh journal_checksum nojournal_checksum journal_async_commit delalloc nodelalloc auto_da_alloc noauto_da_alloc noinit_itable block_validity noblock_validity dioread_lock dioread_nolock i_version nombcache prjquota
" Options: fat
syn match fsOptionsKeywords contained /\<blocksize=/ nextgroup=fsOptionsSize
@@ -135,39 +184,124 @@ syn keyword fsOptionsConv contained b t a binary text auto
syn keyword fsOptionsFatType contained 12 16 32
syn keyword fsOptionsKeywords contained quiet sys_immutable showexec dots nodots
" Options: fuse
syn match fsOptionsKeywords contained /\<\%(fd\|user_id\|group_id\|blksize\)=/ nextgroup=fsOptionsNumber
syn match fsOptionsKeywords contained /\<\%(rootmode\)=/ nextgroup=fsOptionsString
" Options: hfs
syn match fsOptionsKeywords contained /\<\%(creator|type\)=/ nextgroup=fsOptionsString
syn match fsOptionsKeywords contained /\<\%(creator\|type\)=/ nextgroup=fsOptionsString
syn match fsOptionsKeywords contained /\<\%(dir\|file\|\)_umask=/ nextgroup=fsOptionsNumberOctal
syn match fsOptionsKeywords contained /\<\%(session\|part\)=/ nextgroup=fsOptionsNumber
" Options: hfsplus
syn match fsOptionsKeywords contained /\<nls=/ nextgroup=fsOptionsString
syn keyword fsOptionsKeywords contained decompose nodecompose
" Options: f2fs
syn match fsOptionsKeywords contained /\<background_gc=/ nextgroup=fsOptionsF2fsBackgroundGc
syn keyword fsOptionsF2fsBackgroundGc contained on off sync
syn match fsOptionsKeywords contained /\<active_logs=/ nextgroup=fsOptionsF2fsActiveLogs
syn keyword fsOptionsF2fsActiveLogs contained 2 4 6
syn match fsOptionsKeywords contained /\<alloc_mode=/ nextgroup=fsOptionsF2fsAllocMode
syn keyword fsOptionsF2fsAllocMode contained reuse default
syn match fsOptionsKeywords contained /\<fsync_mode=/ nextgroup=fsOptionsF2fsFsyncMode
syn keyword fsOptionsF2fsFsyncMode contained posix strict nobarrier
syn match fsOptionsKeywords contained /\<compress_mode=/ nextgroup=fsOptionsF2fsCompressMode
syn keyword fsOptionsF2fsCompressMode contained fs user
syn match fsOptionsKeywords contained /\<discard_unit=/ nextgroup=fsOptionsF2fsDiscardUnit
syn keyword fsOptionsF2fsDiscardUnit contained block segment section
syn match fsOptionsKeywords contained /\<memory=/ nextgroup=fsOptionsF2fsMemory
syn keyword fsOptionsF2fsMemory contained normal low
syn match fsOptionsKeywords contained /\<\%(inline_xattr_size\|reserve_root\|fault_injection\|fault_type\|io_bits\|compress_log_size\)=/ nextgroup=fsOptionsNumber
syn match fsOptionsKeywords contained /\<\%(prjjquota\|test_dummy_encryption\|checkpoint\|compress_algorithm\|compress_extension\|nocompress_extension\)=/ nextgroup=fsOptionsString
syn keyword fsOptionsKeyWords contained gc_merge nogc_merge disable_roll_forward no_heap disable_ext_identify inline_xattr noinline_xattr inline_data noinline_data inline_dentry noinline_dentry flush_merge fastboot extent_cache noextent_cache data_flush offusrjquota offgrpjquota offprjjquota test_dummy_encryption checkpoint_merge nocheckpoint_merge compress_chksum compress_cache inlinecrypt atgc
" Options: ffs
syn keyword fsOptionsKeyWords contained noperm softdep
" Options: gfs2
syn match fsOptionsKeywords contained /\<\%(lockproto\|locktable\)=/ nextgroup=fsOptionsString
syn match fsOptionsKeywords contained /\<\%(quota_quantum\|statfs_quantum\|statfs_percent\)=/ nextgroup=fsOptionsNumber
syn match fsOptionsKeywords contained /\<quota=/ nextgroup=fsOptionsGfs2Quota
syn keyword fsOptionsGfs2Quota contained off account on
syn keyword fsOptionsKeywords contained localcaching localflocks ignore_local_fs upgrade spectator meta
" Options: hpfs
syn match fsOptionsKeywords contained /\<case=/ nextgroup=fsOptionsHpfsCase
syn keyword fsOptionsHpfsCase contained lower asis
syn match fsOptionsKeywords contained /\<chkdsk=/ nextgroup=fsOptionsHpfsChkdsk
syn keyword fsOptionsHpfsChkdsk contained no errors always
syn match fsOptionsKeywords contained /\<eas=/ nextgroup=fsOptionsHpfsEas
syn keyword fsOptionsHpfsEas contained no ro rw
syn match fsOptionsKeywords contained /\<timeshift=/ nextgroup=fsOptionsNumberSigned
" Options: iso9660
syn match fsOptionsKeywords contained /\<map=/ nextgroup=fsOptionsIsoMap
syn match fsOptionsKeywords contained /\<block=/ nextgroup=fsOptionsSize
syn match fsOptionsKeywords contained /\<\%(session\|sbsector\)=/ nextgroup=fsOptionsNumber
syn match fsOptionsKeywords contained /\<\%(session\|sbsector\|dmode\)=/ nextgroup=fsOptionsNumber
syn keyword fsOptionsIsoMap contained n o a normal off acorn
syn keyword fsOptionsKeywords contained norock nojoilet unhide cruft
syn keyword fsOptionsKeywords contained norock nojoliet hide unhide cruft overriderockperm showassoc
syn keyword fsOptionsConv contained m mtext
" Options: jfs
syn keyword fsOptionsKeywords nointegrity integrity
" Options: nfs
syn match fsOptionsKeywords contained /\<\%(rsize\|wsize\|timeo\|retrans\|acregmin\|acregmax\|acdirmin\|acdirmax\|actimeo\|retry\|port\|mountport\|mounthost\|mountprog\|mountvers\|nfsprog\|nfsvers\|namelen\)=/ nextgroup=fsOptionsString
syn keyword fsOptionsKeywords contained bg fg soft hard intr cto ac tcp udp lock nobg nofg nosoft nohard nointr noposix nocto noac notcp noudp nolock
syn match fsOptionsKeywords contained /\<lookupcache=/ nextgroup=fsOptionsNfsLookupCache
syn keyword fsOptionsNfsLookupCache contained all none pos positive
syn match fsOptionsKeywords contained /\<local_lock=/ nextgroup=fsOptionsNfsLocalLock
syn keyword fsOptionsNfsLocalLock contained all flock posix none
syn match fsOptionsKeywords contained /\<\%(mounthost\|mountprog\|nfsprog\|namelen\|proto\|mountproto\|clientaddr\)=/ nextgroup=fsOptionsString
syn match fsOptionsKeywords contained /\<\%(timeo\|retrans\|[rw]size\|acregmin\|acregmax\|acdirmin\|acdirmax\|actimeo\|retry\|port\|mountport\|mountvers\|namlen\|nfsvers\|vers\|minorversion\)=/ nextgroup=fsOptionsNumber
syn keyword fsOptionsKeywords contained bg fg soft hard intr cto ac tcp udp lock nobg nofg nosoft nohard nointr noposix nocto noac notcp noudp nolock sharecache nosharecache resvport noresvport rdirplus nordirplus
" Options: nilfs2
syn match fsOptionsKeywords contained /\<order=/ nextgroup=fsOptionsNilfs2Order
syn keyword fsOptionsNilfs2Order contained relaxed strict
syn match fsOptionsKeywords contained /\<\%([cp]p\)=/ nextgroup=fsOptionsNumber
syn keyword fsOptionsKeywords contained nogc
" Options: ntfs
syn match fsOptionsKeywords contained /\<mft_zone_multiplier=/ nextgroup=fsOptionsNtfsMftZoneMultiplier
syn keyword fsOptionsNtfsMftZoneMultiplier contained 1 2 3 4
syn match fsOptionsKeywords contained /\<\%(posix=*\|uni_xlate=\)/ nextgroup=fsOptionsNumber
syn match fsOptionsKeywords contained /\<\%(sloppy\|show_sys_files\|case_sensitive\|disable_sparse\)=/ nextgroup=fsOptionsTrueFalse
syn keyword fsOptionsKeywords contained utf8
" Options: ntfs3
syn keyword fsOptionsKeywords contained noacsrules nohidden sparse showmeta prealloc
" Options: ntfs-3g
syn match fsOptionsKeywords contained /\<\%(usermapping\|locale\|streams_interface\)=/ nextgroup=fsOptionsString
syn keyword fsOptionsKeywords contained permissions inherit recover norecover ignore_case remove_hiberfile hide_hid_files hide_dot_files windows_names silent no_def_opts efs_raw compression nocompression no_detach
" Options: ocfs2
syn match fsOptionsKeywords contained /\<\%(resv_level\|dir_resv_level\)=/ nextgroup=fsOptionsOcfs2ResvLevel
syn keyword fsOptionsOcfs2ResvLevel contained 0 1 2 3 4 5 6 7 8
syn match fsOptionsKeywords contained /\<coherency=/ nextgroup=fsOptionsOcfs2Coherency
syn keyword fsOptionsOcfs2Coherency contained full buffered
syn match fsOptionsKeywords contained /\<\%(atime_quantum\|preferred_slot\|localalloc\)=/ nextgroup=fsOptionsNumber
syn keyword fsOptionsKeywords contained strictatime inode64
" Options: overlay
syn match fsOptionsKeywords contained /\<redirect_dir=/ nextgroup=fsOptionsOverlayRedirectDir
syn keyword fsOptionsOverlayRedirectDir contained on follow off nofollow
" Options: proc
" -- everything already defined
syn match fsOptionsKeywords contained /\<\%(hidepid\|subset\)=/ nextgroup=fsOptionsString
" Options: qnx4
syn match fsOptionsKeywords contained /\<bitmap=/ nextgroup=fsOptionsQnx4Bitmap
syn keyword fsOptionsQnx4Bitmap contained always lazy nonrmv
syn keyword fsOptionsKeywords contained grown noembed overalloc unbusy
" Options: qnx6
syn match fsOptionsKeywords contained /\<hold=/ nextgroup=fsOptionsQnx6Hold
syn keyword fsOptionsQnx6Hold contained allow root deny
syn match fsOptionsKeywords contained /\<sync=/ nextgroup=fsOptionsQnx6Sync
syn keyword fsOptionsQnx6Sync contained mandatory optional none
syn match fsOptionsKeywords contained /\<snapshot=/ nextgroup=fsOptionsNumber
syn keyword fsOptionsKeywords contained alignio
" Options: reiserfs
syn match fsOptionsKeywords contained /\<hash=/ nextgroup=fsOptionsReiserHash
@@ -176,7 +310,7 @@ syn keyword fsOptionsReiserHash contained rupasov tea r5 detect
syn keyword fsOptionsKeywords contained hashed_relocation noborder nolog notail no_unhashed_relocation replayonly
" Options: sshfs
syn match fsOptionsKeywords contained /\<\%(BatchMode\|ChallengeResponseAuthentication\|CheckHostIP\|ClearAllForwardings\|Compression\|EnableSSHKeysign\|ForwardAgent\|ForwardX11\|ForwardX11Trusted\|GatewayPorts\|GSSAPIAuthentication\|GSSAPIDelegateCredentials\|HashKnownHosts\|HostbasedAuthentication\|IdentitiesOnly\|NoHostAuthenticationForLocalhost\|PasswordAuthentication\|PubkeyAuthentication\|RhostsRSAAuthentication\|RSAAuthentication\|TCPKeepAlive\|UsePrivilegedPort\|cache\)=/ nextgroup=fsOptionsYesNo
syn match fsOptionsKeywords contained /\<\%(BatchMode\|ChallengeResponseAuthentication\|CheckHostIP\|ClearAllForwardings\|Compression\|EnableSSHKeysign\|ForwardAgent\|ForwardX11\|ForwardX11Trusted\|GatewayPorts\|GSSAPIAuthentication\|GSSAPIDelegateCredentials\|HashKnownHosts\|HostbasedAuthentication\|IdentitiesOnly\|NoHostAuthenticationForLocalhost\|PasswordAuthentication\|PubkeyAuthentication\|RhostsRSAAuthentication\|RSAAuthentication\|TCPKeepAlive\|UsePrivilegedPort\)=/ nextgroup=fsOptionsYesNo
syn match fsOptionsKeywords contained /\<\%(ControlMaster\|StrictHostKeyChecking\|VerifyHostKeyDNS\)=/ nextgroup=fsOptionsSshYesNoAsk
syn match fsOptionsKeywords contained /\<\%(AddressFamily\|BindAddress\|Cipher\|Ciphers\|ControlPath\|DynamicForward\|EscapeChar\|GlobalKnownHostsFile\|HostKeyAlgorithms\|HostKeyAlias\|HostName\|IdentityFile\|KbdInteractiveDevices\|LocalForward\|LogLevel\|MACs\|PreferredAuthentications\|Protocol\|ProxyCommand\|RemoteForward\|RhostsAuthentication\|SendEnv\|SmartcardDevice\|User\|UserKnownHostsFile\|XAuthLocation\|comment\|workaround\|idmap\|ssh_command\|sftp_server\|fsname\)=/ nextgroup=fsOptionsString
syn match fsOptionsKeywords contained /\<\%(CompressionLevel\|ConnectionAttempts\|ConnectTimeout\|NumberOfPasswordPrompts\|Port\|ServerAliveCountMax\|ServerAliveInterval\|cache_timeout\|cache_X_timeout\|ssh_protocol\|directport\|max_read\|umask\|uid\|gid\|entry_timeout\|negative_timeout\|attr_timeout\)=/ nextgroup=fsOptionsNumber
@@ -190,12 +324,19 @@ syn keyword fsOptionsKeywords contained procuid
" Options: swap
syn match fsOptionsKeywords contained /\<pri=/ nextgroup=fsOptionsNumber
" Options: ubifs
syn match fsOptionsKeywords contained /\<\%(compr\|auth_key\|auth_hash_name\)=/ nextgroup=fsOptionsString
syn keyword fsOptionsKeywords contained bulk_read no_bulk_read chk_data_crc no_chk_data_crc
" Options: tmpfs
syn match fsOptionsKeywords contained /\<huge=/ nextgroup=fsOptionsTmpfsHuge
syn keyword fsOptionsTmpfsHuge contained never always within_size advise deny force
syn match fsOptionsKeywords contained /\<\%(size\|mpol\)=/ nextgroup=fsOptionsString
syn match fsOptionsKeywords contained /\<nr_\%(blocks\|inodes\)=/ nextgroup=fsOptionsNumber
" Options: udf
syn match fsOptionsKeywords contained /\<\%(anchor\|partition\|lastblock\|fileset\|rootdir\)=/ nextgroup=fsOptionsString
syn keyword fsOptionsKeywords contained unhide undelete strict novrs
syn keyword fsOptionsKeywords contained unhide undelete strict nostrict novrs adinicb noadinicb shortad longad
" Options: ufs
syn match fsOptionsKeywords contained /\<ufstype=/ nextgroup=fsOptionsUfsType
@@ -208,14 +349,32 @@ syn keyword fsOptionsUfsError contained panic lock umount repair
syn match fsOptionsKeywords contained /\<\%(dev\|bus\|list\)\%(id\|gid\)=/ nextgroup=fsOptionsNumber
syn match fsOptionsKeywords contained /\<\%(dev\|bus\|list\)mode=/ nextgroup=fsOptionsNumberOctal
" Options: v9fs
syn match fsOptionsKeywords contained /\<\%(trans\)=/ nextgroup=fsOptionsV9Trans
syn keyword fsOptionsV9Trans unix tcp fd virtio rdma
syn match fsOptionsKeywords contained /\<debug=/ nextgroup=fsOptionsV9Debug
syn keyword fsOptionsV9Debug 0x01 0x02 0x04 0x08 0x10 0x20 0x40 0x80 0x100 0x200 0x400 0x800
syn match fsOptionsKeywords contained /\<version=/ nextgroup=fsOptionsV9Version
syn keyword fsOptionsV9Version 9p2000 9p2000.u 9p2000.L
syn match fsOptionsKeywords contained /\<\%([ua]name\|[rw]fdno\|access\)=/ nextgroup=fsOptionsString
syn match fsOptionsKeywords contained /\<msize=/ nextgroup=fsOptionsNumber
syn keyword fsOptionsKeywords contained noextend dfltuid dfltgid afid nodevmap cachetag
" Options: vfat
syn keyword fsOptionsKeywords contained nonumtail posix utf8
syn match fsOptionsKeywords contained /shortname=/ nextgroup=fsOptionsVfatShortname
syn match fsOptionsKeywords contained /\<shortname=/ nextgroup=fsOptionsVfatShortname
syn keyword fsOptionsVfatShortname contained lower win95 winnt mixed
syn match fsOptionsKeywords contained /\<nfs=/ nextgroup=fsOptionsVfatNfs
syn keyword fsOptionsVfatNfs contained stale_rw nostale_ro
syn match fsOptionsKeywords contained /\<\%(tz\|dos1xfloppy\)=/ nextgroup=fsOptionsString
syn match fsOptionsKeywords contained /\<\%(allow_utime\|codepage\)=/ nextgroup=fsOptionsNumber
syn match fsOptionsKeywords contained /\<time_offset=/ nextgroup=fsOptionsNumberSigned
syn keyword fsOptionsKeywords contained nonumtail posix utf8 usefree flush rodir
" Options: xfs
syn match fsOptionsKeywords contained /\%(biosize\|logbufs\|logbsize\|logdev\|rtdev\|sunit\|swidth\)=/ nextgroup=fsOptionsString
syn keyword fsOptionsKeywords contained dmapi xdsm noalign noatime noquota norecovery osyncisdsync quota usrquota uqnoenforce grpquota gqnoenforce
syn match fsOptionsKeywords contained /\<logbufs=/ nextgroup=fsOptionsXfsLogBufs
syn keyword fsOptionsXfsLogBufs contained 2 3 4 5 6 7 8
syn match fsOptionsKeywords contained /\%(allocsize\|biosize\|logbsize\|logdev\|rtdev\|sunit\|swidth\)=/ nextgroup=fsOptionsString
syn keyword fsOptionsKeywords contained dmapi xdsm noalign noatime noquota norecovery osyncisdsync quota usrquota uqnoenforce grpquota gqnoenforce attr2 noattr2 filestreams ikeep noikeep inode32 inode64 largeio nolargeio nouuid uquota qnoenforce gquota pquota pqnoenforce swalloc wsync
" Frequency / Pass No.
syn cluster fsFreqPassCluster contains=fsFreqPassNumber,fsFreqPassError
@@ -257,31 +416,71 @@ hi def link fsMountPointError Error
hi def link fsMountPointKeyword Keyword
hi def link fsFreqPassError Error
hi def link fsOptionsBtrfsDiscard String
hi def link fsOptionsBtrfsFatalErrors String
hi def link fsOptionsBtrfsFragment String
hi def link fsOptionsCache String
hi def link fsOptionsCephRecoverSession String
hi def link fsOptionsConv String
hi def link fsOptionsDax String
hi def link fsOptionsEroCacheStrategy String
hi def link fsOptionsErrors String
hi def link fsOptionsExt2Check String
hi def link fsOptionsExt3Data String
hi def link fsOptionsExt3DataErr String
hi def link fsOptionsExt3Journal String
hi def link fsOptionsExt3Jqfmt String
hi def link fsOptionsExt4Data String
hi def link fsOptionsExt4Journal String
hi def link fsOptionsExt4JournalIoprio Number
hi def link fsOptionsF2fsActiveLogs Number
hi def link fsOptionsF2fsAllocMode String
hi def link fsOptionsF2fsBackgroundGc String
hi def link fsOptionsF2fsCompressMode String
hi def link fsOptionsF2fsDiscardUnit String
hi def link fsOptionsF2fsFsyncMode String
hi def link fsOptionsF2fsMemory String
hi def link fsOptionsFatCheck String
hi def link fsOptionsFatType Number
hi def link fsOptionsGeneral Type
hi def link fsOptionsGfs2Quota String
hi def link fsOptionsHpfsCase String
hi def link fsOptionsHpfsChkdsk String
hi def link fsOptionsHpfsEas String
hi def link fsOptionsIsoMap String
hi def link fsOptionsKeywords Keyword
hi def link fsOptionsNfsLocalLock String
hi def link fsOptionsNfsLookupCache String
hi def link fsOptionsNilfs2Order String
hi def link fsOptionsNtfsMftZoneMultiplier Number
hi def link fsOptionsNumber Number
hi def link fsOptionsNumberOctal Number
hi def link fsOptionsString String
hi def link fsOptionsSize Number
hi def link fsOptionsExt2Check String
hi def link fsOptionsExt2Errors String
hi def link fsOptionsExt3Journal String
hi def link fsOptionsExt3Data String
hi def link fsOptionsExt4Journal String
hi def link fsOptionsExt4Data String
hi def link fsOptionsExt4Barrier Number
hi def link fsOptionsFatCheck String
hi def link fsOptionsConv String
hi def link fsOptionsFatType Number
hi def link fsOptionsYesNo String
hi def link fsOptionsHpfsCase String
hi def link fsOptionsIsoMap String
hi def link fsOptionsNumberSigned Number
hi def link fsOptionsOcfs2Coherency String
hi def link fsOptionsOcfs2ResvLevel Number
hi def link fsOptionsOverlayRedirectDir String
hi def link fsOptionsQnx4Bitmap String
hi def link fsOptionsQnx6Hold String
hi def link fsOptionsQnx6Sync String
hi def link fsOptionsReiserHash String
hi def link fsOptionsSecurityMode String
hi def link fsOptionsSize Number
hi def link fsOptionsSshYesNoAsk String
hi def link fsOptionsUfsType String
hi def link fsOptionsString String
hi def link fsOptionsTmpfsHuge String
hi def link fsOptionsUfsError String
hi def link fsOptionsUfsType String
hi def link fsOptionsV9Debug String
hi def link fsOptionsV9Trans String
hi def link fsOptionsV9Version String
hi def link fsOptionsVfatNfs String
hi def link fsOptionsVfatShortname String
hi def link fsOptionsXfsLogBufs Number
hi def link fsOptionsTrueFalse Boolean
hi def link fsOptionsYesNo String
hi def link fsOptionsYN String
hi def link fsOptions01 Number
let b:current_syntax = "fstab"

View File

@@ -5,7 +5,7 @@
" go.vim: Vim syntax file for Go.
" Language: Go
" Maintainer: Billie Cleek <bhcleek@gmail.com>
" Latest Revision: 2021-09-18
" Latest Revision: 2022-11-17
" License: BSD-style. See LICENSE file in source repository.
" Repository: https://github.com/fatih/vim-go
@@ -117,7 +117,7 @@ hi def link goLabel Label
hi def link goRepeat Repeat
" Predefined types
syn keyword goType chan map bool string error
syn keyword goType chan map bool string error any comparable
syn keyword goSignedInts int int8 int16 int32 int64 rune
syn keyword goUnsignedInts byte uint uint8 uint16 uint32 uint64 uintptr
syn keyword goFloats float32 float64
@@ -187,6 +187,8 @@ else
syn region goRawString start=+`+ end=+`+
endif
syn match goImportString /^\%(\s\+\|import \)\(\h\w* \)\?\zs"[^"]\+"$/ contained containedin=goImport
if s:HighlightFormatStrings()
" [n] notation is valid for specifying explicit argument indexes
" 1. Match a literal % not preceded by a %.
@@ -204,6 +206,7 @@ if s:HighlightFormatStrings()
hi def link goFormatSpecifier goSpecialString
endif
hi def link goImportString String
hi def link goString String
hi def link goRawString String
@@ -223,9 +226,9 @@ endif
" import
if s:FoldEnable('import')
syn region goImport start='import (' end=')' transparent fold contains=goImport,goString,goComment
syn region goImport start='import (' end=')' transparent fold contains=goImport,goImportString,goComment
else
syn region goImport start='import (' end=')' transparent contains=goImport,goString,goComment
syn region goImport start='import (' end=')' transparent contains=goImport,goImportString,goComment
endif
" var, const
@@ -245,14 +248,10 @@ endif
syn match goSingleDecl /\%(import\|var\|const\) [^(]\@=/ contains=goImport,goVar,goConst
" Integers
syn match goDecimalInt "\<-\=\(0\|[1-9]_\?\(\d\|\d\+_\?\d\+\)*\)\%([Ee][-+]\=\d\+\)\=\>"
syn match goDecimalError "\<-\=\(_\(\d\+_*\)\+\|\([1-9]\d*_*\)\+__\(\d\+_*\)\+\|\([1-9]\d*_*\)\+_\+\)\%([Ee][-+]\=\d\+\)\=\>"
syn match goHexadecimalInt "\<-\=0[xX]_\?\(\x\+_\?\)\+\>"
syn match goHexadecimalError "\<-\=0[xX]_\?\(\x\+_\?\)*\(\([^ \t0-9A-Fa-f_)]\|__\)\S*\|_\)\>"
syn match goOctalInt "\<-\=0[oO]\?_\?\(\o\+_\?\)\+\>"
syn match goOctalError "\<-\=0[0-7oO_]*\(\([^ \t0-7oOxX_/)\]\}\:;]\|[oO]\{2,\}\|__\)\S*\|_\|[oOxX]\)\>"
syn match goBinaryInt "\<-\=0[bB]_\?\([01]\+_\?\)\+\>"
syn match goBinaryError "\<-\=0[bB]_\?[01_]*\([^ \t01_)]\S*\|__\S*\|_\)\>"
syn match goDecimalInt "\<-\=\%(0\|\%(\d\|\d_\d\)\+\)\>"
syn match goHexadecimalInt "\<-\=0[xX]_\?\%(\x\|\x_\x\)\+\>"
syn match goOctalInt "\<-\=0[oO]\?_\?\%(\o\|\o_\o\)\+\>"
syn match goBinaryInt "\<-\=0[bB]_\?\%([01]\|[01]_[01]\)\+\>"
hi def link goDecimalInt Integer
hi def link goDecimalError Error
@@ -265,19 +264,55 @@ hi def link goBinaryError Error
hi def link Integer Number
" Floating point
syn match goFloat "\<-\=\d\+\.\d*\%([Ee][-+]\=\d\+\)\=\>"
syn match goFloat "\<-\=\.\d\+\%([Ee][-+]\=\d\+\)\=\>"
"float_lit = decimal_float_lit | hex_float_lit .
"
"decimal_float_lit = decimal_digits "." [ decimal_digits ] [ decimal_exponent ] |
" decimal_digits decimal_exponent |
" "." decimal_digits [ decimal_exponent ] .
"decimal_exponent = ( "e" | "E" ) [ "+" | "-" ] decimal_digits .
"
"hex_float_lit = "0" ( "x" | "X" ) hex_mantissa hex_exponent .
"hex_mantissa = [ "_" ] hex_digits "." [ hex_digits ] |
" [ "_" ] hex_digits |
" "." hex_digits .
"hex_exponent = ( "p" | "P" ) [ "+" | "-" ] decimal_digits .
" decimal floats with a decimal point
syn match goFloat "\<-\=\%(0\|\%(\d\|\d_\d\)\+\)\.\%(\%(\%(\d\|\d_\d\)\+\)\=\%([Ee][-+]\=\%(\d\|\d_\d\)\+\)\=\>\)\="
syn match goFloat "\s\zs-\=\.\%(\d\|\d_\d\)\+\%(\%([Ee][-+]\=\%(\d\|\d_\d\)\+\)\>\)\="
" decimal floats without a decimal point
syn match goFloat "\<-\=\%(0\|\%(\d\|\d_\d\)\+\)[Ee][-+]\=\%(\d\|\d_\d\)\+\>"
" hexadecimal floats with a decimal point
syn match goHexadecimalFloat "\<-\=0[xX]\%(_\x\|\x\)\+\.\%(\%(\x\|\x_\x\)\+\)\=\%([Pp][-+]\=\%(\d\|\d_\d\)\+\)\=\>"
syn match goHexadecimalFloat "\<-\=0[xX]\.\%(\x\|\x_\x\)\+\%([Pp][-+]\=\%(\d\|\d_\d\)\+\)\=\>"
" hexadecimal floats without a decimal point
syn match goHexadecimalFloat "\<-\=0[xX]\%(_\x\|\x\)\+[Pp][-+]\=\%(\d\|\d_\d\)\+\>"
hi def link goFloat Float
hi def link goHexadecimalFloat Float
" Imaginary literals
syn match goImaginary "\<-\=\d\+i\>"
syn match goImaginary "\<-\=\d\+[Ee][-+]\=\d\+i\>"
syn match goImaginaryFloat "\<-\=\d\+\.\d*\%([Ee][-+]\=\d\+\)\=i\>"
syn match goImaginaryFloat "\<-\=\.\d\+\%([Ee][-+]\=\d\+\)\=i\>"
syn match goImaginaryDecimal "\<-\=\%(0\|\%(\d\|\d_\d\)\+\)i\>"
syn match goImaginaryHexadecimal "\<-\=0[xX]_\?\%(\x\|\x_\x\)\+i\>"
syn match goImaginaryOctal "\<-\=0[oO]\?_\?\%(\o\|\o_\o\)\+i\>"
syn match goImaginaryBinary "\<-\=0[bB]_\?\%([01]\|[01]_[01]\)\+i\>"
hi def link goImaginary Number
hi def link goImaginaryFloat Float
" imaginary decimal floats with a decimal point
syn match goImaginaryFloat "\<-\=\%(0\|\%(\d\|\d_\d\)\+\)\.\%(\%(\%(\d\|\d_\d\)\+\)\=\%([Ee][-+]\=\%(\d\|\d_\d\)\+\)\=\)\=i\>"
syn match goImaginaryFloat "\s\zs-\=\.\%(\d\|\d_\d\)\+\%([Ee][-+]\=\%(\d\|\d_\d\)\+\)\=i\>"
" imaginary decimal floats without a decimal point
syn match goImaginaryFloat "\<-\=\%(0\|\%(\d\|\d_\d\)\+\)[Ee][-+]\=\%(\d\|\d_\d\)\+i\>"
" imaginary hexadecimal floats with a decimal point
syn match goImaginaryHexadecimalFloat "\<-\=0[xX]\%(_\x\|\x\)\+\.\%(\%(\x\|\x_\x\)\+\)\=\%([Pp][-+]\=\%(\d\|\d_\d\)\+\)\=i\>"
syn match goImaginaryHexadecimalFloat "\<-\=0[xX]\.\%(\x\|\x_\x\)\+\%([Pp][-+]\=\%(\d\|\d_\d\)\+\)\=i\>"
" imaginary hexadecimal floats without a decimal point
syn match goImaginaryHexadecimalFloat "\<-\=0[xX]\%(_\x\|\x\)\+[Pp][-+]\=\%(\d\|\d_\d\)\+i\>"
hi def link goImaginaryDecimal Number
hi def link goImaginaryHexadecimal Number
hi def link goImaginaryOctal Number
hi def link goImaginaryBinary Number
hi def link goImaginaryFloat Float
hi def link goImaginaryHexadecimalFloat Float
" Spaces after "[]"
if s:HighlightArrayWhitespaceError()
@@ -346,6 +381,8 @@ if s:HighlightOperators()
syn match goOperator /\%(<<\|>>\|&^\)=\?/
" match remaining two-char operators: := && || <- ++ --
syn match goOperator /:=\|||\|<-\|++\|--/
" match ~
syn match goOperator /\~/
" match ...
hi def link goPointerOperator goOperator
@@ -353,13 +390,37 @@ if s:HighlightOperators()
endif
hi def link goOperator Operator
" -> type constraint opening bracket
" |-> start non-counting group
" || -> any word character
" || | -> at least one, as many as possible
" || | | -> start non-counting group
" || | | | -> match ~
" || | | | | -> at most once
" || | | | | | -> allow a slice type
" || | | | | | | -> any word character
" || | | | | | | | -> start a non-counting group
" || | | | | | | | | -> that matches word characters and |
" || | | | | | | | | | -> close the non-counting group
" || | | | | | | | | | | -> close the non-counting group
" || | | | | | | | | | | |-> any number of matches
" || | | | | | | | | | | || -> start a non-counting group
" || | | | | | | | | | | || | -> a comma and whitespace
" || | | | | | | | | | | || | | -> at most once
" || | | | | | | | | | | || | | | -> close the non-counting group
" || | | | | | | | | | | || | | | | -> at least one of those non-counting groups, as many as possible
" || | | | | | -------- | | | | || | | | | | -> type constraint closing bracket
" || | | | | || | | | | | || | | | | | |
syn match goTypeParams /\[\%(\w\+\s\+\%(\~\?\%(\[]\)\?\w\%(\w\||\)\)*\%(,\s*\)\?\)\+\]/ nextgroup=goSimpleParams,goDeclType contained
" Functions;
if s:HighlightFunctions() || s:HighlightFunctionParameters()
syn match goDeclaration /\<func\>/ nextgroup=goReceiver,goFunction,goSimpleParams skipwhite skipnl
syn match goReceiverDecl /(\s*\zs\%(\%(\w\+\s\+\)\?\*\?\w\+\%(\[\%(\%(\[\]\)\?\w\+\%(,\s*\)\?\)\+\]\)\?\)\ze\s*)/ contained contains=goReceiverVar,goReceiverType,goPointerOperator
syn match goReceiverVar /\w\+\ze\s\+\%(\w\|\*\)/ nextgroup=goPointerOperator,goReceiverType skipwhite skipnl contained
syn match goPointerOperator /\*/ nextgroup=goReceiverType contained skipwhite skipnl
syn match goFunction /\w\+/ nextgroup=goSimpleParams contained skipwhite skipnl
syn match goReceiverType /\w\+/ contained
syn match goFunction /\w\+/ nextgroup=goSimpleParams,goTypeParams contained skipwhite skipnl
syn match goReceiverType /\w\+\%(\[\%(\%(\[\]\)\?\w\+\%(,\s*\)\?\)\+\]\)\?\ze\s*)/ contained
if s:HighlightFunctionParameters()
syn match goSimpleParams /(\%(\w\|\_s\|[*\.\[\],\{\}<>-]\)*)/ contained contains=goParamName,goType nextgroup=goFunctionReturn skipwhite skipnl
syn match goFunctionReturn /(\%(\w\|\_s\|[*\.\[\],\{\}<>-]\)*)/ contained contains=goParamName,goType skipwhite skipnl
@@ -369,7 +430,7 @@ if s:HighlightFunctions() || s:HighlightFunctionParameters()
hi def link goReceiverVar goParamName
hi def link goParamName Identifier
endif
syn match goReceiver /(\s*\w\+\%(\s\+\*\?\s*\w\+\)\?\s*)\ze\s*\w/ contained nextgroup=goFunction contains=goReceiverVar skipwhite skipnl
syn match goReceiver /(\s*\%(\w\+\s\+\)\?\*\?\s*\w\+\%(\[\%(\%(\[\]\)\?\w\+\%(,\s*\)\?\)\+\]\)\?\s*)\ze\s*\w/ contained nextgroup=goFunction contains=goReceiverDecl skipwhite skipnl
else
syn keyword goDeclaration func
endif
@@ -377,7 +438,7 @@ hi def link goFunction Function
" Function calls;
if s:HighlightFunctionCalls()
syn match goFunctionCall /\w\+\ze(/ contains=goBuiltins,goDeclaration
syn match goFunctionCall /\w\+\ze\%(\[\%(\%(\[]\)\?\w\+\(,\s*\)\?\)\+\]\)\?(/ contains=goBuiltins,goDeclaration
endif
hi def link goFunctionCall Type
@@ -404,7 +465,7 @@ hi def link goField Identifier
if s:HighlightTypes()
syn match goTypeConstructor /\<\w\+{\@=/
syn match goTypeDecl /\<type\>/ nextgroup=goTypeName skipwhite skipnl
syn match goTypeName /\w\+/ contained nextgroup=goDeclType skipwhite skipnl
syn match goTypeName /\w\+/ contained nextgroup=goDeclType,goTypeParams skipwhite skipnl
syn match goDeclType /\<\%(interface\|struct\)\>/ skipwhite skipnl
hi def link goReceiverType Type
else
@@ -444,7 +505,7 @@ if s:HighlightBuildConstraints()
" The rs=s+2 option lets the \s*+build portion be part of the inner region
" instead of the matchgroup so it will be highlighted as a goBuildKeyword.
syn region goBuildComment matchgroup=goBuildCommentStart
\ start="//\s*+build\s"rs=s+2 end="$"
\ start="//\(\s*+build\s\|go:build\)"rs=s+2 end="$"
\ contains=goBuildKeyword,goBuildDirectives
hi def link goBuildCommentStart Comment
hi def link goBuildDirectives Type

View File

@@ -1,7 +1,7 @@
" Vim syntax file
" Language: Vim help file
" Maintainer: Bram Moolenaar (Bram@vim.org)
" Last Change: 2022 Sep 26
" Last Change: 2022 Nov 13
" Quit when a (custom) syntax file was already loaded
if exists("b:current_syntax")
@@ -11,7 +11,7 @@ endif
let s:cpo_save = &cpo
set cpo&vim
syn match helpHeadline "^[-A-Z .][-A-Z0-9 .()_]*\ze\(\s\+\*\|$\)"
syn match helpHeadline "^[A-Z.][-A-Z0-9 .,()_']*?\=\ze\(\s\+\*\|$\)"
syn match helpSectionDelim "^===.*===$"
syn match helpSectionDelim "^---.*--$"
if has("conceal")

File diff suppressed because one or more lines are too long

View File

@@ -3,7 +3,7 @@
" Maintainer: Doug Kearns <dougkearns@gmail.com>
" Previous Maintainers: Jorge Maldonado Ventura <jorgesumle@freakspot.net>
" Claudio Fleiner <claudio@fleiner.com>
" Last Change: 2022 Jul 20
" Last Change: 2022 Nov 18
" Please check :help html.vim for some comments and a description of the options
@@ -272,6 +272,16 @@ if main_syntax == "html"
syn sync minlines=10
endif
" Folding
" Originally by Ingo Karkat and Marcus Zanona
if get(g:, "html_syntax_folding", 0)
syn region htmlFold start="<\z(\<\%(area\|base\|br\|col\|command\|embed\|hr\|img\|input\|keygen\|link\|meta\|param\|source\|track\|wbr\>\)\@![a-z-]\+\>\)\%(\_s*\_[^/]\?>\|\_s\_[^>]*\_[^>/]>\)" end="</\z1\_s*>" fold transparent keepend extend containedin=htmlHead,htmlH\d
" fold comments (the real ones and the old Netscape ones)
if exists("html_wrong_comments")
syn region htmlComment start=+<!--+ end=+--\s*>\%(\n\s*<!--\)\@!+ contains=@Spell fold
endif
endif
" The default highlighting.
hi def link htmlTag Function
hi def link htmlEndTag Identifier

View File

@@ -3,7 +3,7 @@
" Maintainer: Roland Hieber <rohieb+vim-iR0jGdkV@rohieb.name>, <https://github.com/rohieb>
" Previous Maintainer: Claudio Fleiner <claudio@fleiner.com>
" URL: https://github.com/vim/vim/blob/master/runtime/syntax/make.vim
" Last Change: 2020 Oct 16
" Last Change: 2022 Nov 06
" quit when a syntax file was already loaded
if exists("b:current_syntax")
@@ -45,11 +45,11 @@ syn match makeImplicit "^\.[A-Za-z0-9_./\t -]\+\s*:$"me=e-1
syn match makeImplicit "^\.[A-Za-z0-9_./\t -]\+\s*:[^=]"me=e-2
syn region makeTarget transparent matchgroup=makeTarget
\ start="^[~A-Za-z0-9_./$()%-][A-Za-z0-9_./\t $()%-]*&\?:\?:\{1,2}[^:=]"rs=e-1
\ start="^[~A-Za-z0-9_./$(){}%-][A-Za-z0-9_./\t ${}()%-]*&\?:\?:\{1,2}[^:=]"rs=e-1
\ end="[^\\]$"
\ keepend contains=makeIdent,makeSpecTarget,makeNextLine,makeComment,makeDString
\ skipnl nextGroup=makeCommands
syn match makeTarget "^[~A-Za-z0-9_./$()%*@-][A-Za-z0-9_./\t $()%*@-]*&\?::\=\s*$"
syn match makeTarget "^[~A-Za-z0-9_./$(){}%*@-][A-Za-z0-9_./\t $(){}%*@-]*&\?::\=\s*$"
\ contains=makeIdent,makeSpecTarget,makeComment
\ skipnl nextgroup=makeCommands,makeCommandError

155
runtime/syntax/mermaid.vim Normal file
View File

@@ -0,0 +1,155 @@
" Vim syntax file
" Language: Mermaid
" Maintainer: Craig MacEahern <https://github.com/craigmac/vim-mermaid>
" Filenames: *.mmd
" Last Change: 2022 Nov 22
if exists("b:current_syntax")
finish
endif
let s:cpo_save = &cpo
set cpo&vim
syntax iskeyword @,48-57,192-255,$,_,-,:
syntax keyword mermaidKeyword
\ _blank
\ _self
\ _parent
\ _top
\ ::icon
\ accDescr
\ accTitle
\ actor
\ activate
\ alt
\ and
\ as
\ autonumber
\ branch
\ break
\ callback
\ checkout
\ class
\ classDef
\ classDiagram
\ click
\ commit
\ commitgitGraph
\ critical
\ dataFormat
\ dateFormat
\ deactivate
\ direction
\ element
\ else
\ end
\ erDiagram
\ flowchart
\ gantt
\ gitGraph
\ graph
\ journey
\ link
\ LR
\ TD
\ TB
\ RL
\ loop
\ merge
\ mindmap root
\ Note
\ Note right of
\ Note left of
\ Note over
\ note
\ note right of
\ note left of
\ note over
\ opt
\ option
\ par
\ participant
\ pie
\ rect
\ requirement
\ rgb
\ section
\ sequenceDiagram
\ state
\ stateDiagram
\ stateDiagram-v2
\ style
\ subgraph
\ title
highlight link mermaidKeyword Keyword
syntax match mermaidStatement "|"
syntax match mermaidStatement "--\?[>x)]>\?+\?-\?"
syntax match mermaidStatement "\~\~\~"
syntax match mermaidStatement "--"
syntax match mermaidStatement "---"
syntax match mermaidStatement "-->"
syntax match mermaidStatement "-\."
syntax match mermaidStatement "\.->"
syntax match mermaidStatement "-\.-"
syntax match mermaidStatement "-\.\.-"
syntax match mermaidStatement "-\.\.\.-"
syntax match mermaidStatement "=="
syntax match mermaidStatement "==>"
syntax match mermaidStatement "===>"
syntax match mermaidStatement "====>"
syntax match mermaidStatement "&"
syntax match mermaidStatement "--o"
syntax match mermaidStatement "--x"
syntax match mermaidStatement "x--x"
syntax match mermaidStatement "-----"
syntax match mermaidStatement "---->"
syntax match mermaidStatement "==="
syntax match mermaidStatement "===="
syntax match mermaidStatement "====="
syntax match mermaidStatement ":::"
syntax match mermaidStatement "<|--"
syntax match mermaidStatement "\*--"
syntax match mermaidStatement "o--"
syntax match mermaidStatement "o--o"
syntax match mermaidStatement "<--"
syntax match mermaidStatement "<-->"
syntax match mermaidStatement "\.\."
syntax match mermaidStatement "<\.\."
syntax match mermaidStatement "<|\.\."
syntax match mermaidStatement "--|>"
syntax match mermaidStatement "--\*"
syntax match mermaidStatement "--o"
syntax match mermaidStatement "\.\.>"
syntax match mermaidStatement "\.\.|>"
syntax match mermaidStatement "<|--|>"
syntax match mermaidStatement "||--o{"
highlight link mermaidStatement Statement
syntax match mermaidIdentifier "[\+-]\?\w\+(.*)[\$\*]\?"
highlight link mermaidIdentifier Identifier
syntax match mermaidType "[\+-\#\~]\?\cint\>"
syntax match mermaidType "[\+-\#\~]\?\cString\>"
syntax match mermaidType "[\+-\#\~]\?\cbool\>"
syntax match mermaidType "[\+-\#\~]\?\cBigDecimal\>"
syntax match mermaidType "[\+-\#\~]\?\cList\~.\+\~"
syntax match mermaidType "<<\w\+>>"
highlight link mermaidType Type
syntax match mermaidComment "%%.*$"
highlight link mermaidComment Comment
syntax region mermaidDirective start="%%{" end="\}%%"
highlight link mermaidDirective PreProc
syntax region mermaidString start=/"/ skip=/\\"/ end=/"/
highlight link mermaidString String
let b:current_syntax = "mermaid"
let &cpo = s:cpo_save
unlet s:cpo_save
" vim:set sw=2:

View File

@@ -2,18 +2,29 @@
" Language: Modula-3
" Maintainer: Doug Kearns <dougkearns@gmail.com>
" Previous Maintainer: Timo Pedersen <dat97tpe@ludat.lth.se>
" Last Change: 2021 Apr 08
" Last Change: 2022 Oct 31
if exists("b:current_syntax")
finish
endif
" Modula-3 keywords
syn keyword modula3Keyword ANY ARRAY AS BITS BRANDED BY CASE CONST DEFINITION
syn keyword modula3Keyword EVAL EXIT EXCEPT EXCEPTION EXIT EXPORTS FINALLY
syn keyword modula3Keyword FROM GENERIC IMPORT LOCK METHOD OF RAISE RAISES
syn keyword modula3Keyword READONLY RECORD REF RETURN SET TRY TYPE TYPECASE
syn keyword modula3Keyword UNSAFE VALUE VAR WITH
" Whitespace errors {{{1
if exists("modula3_space_errors")
if !exists("modula3_no_trail_space_error")
syn match modula3SpaceError display excludenl "\s\+$"
endif
if !exists("modula3_no_tab_space_error")
syn match modula3SpaceError display " \+\t"me=e-1
endif
endif
" Keywords {{{1
syn keyword modula3Keyword ANY ARRAY AS BITS BRANDED BY CASE CONST
syn keyword modula3Keyword DEFINITION EVAL EXIT EXCEPT EXCEPTION EXIT
syn keyword modula3Keyword EXPORTS FINALLY FROM GENERIC IMPORT LOCK METHOD
syn keyword modula3Keyword OF RAISE RAISES READONLY RECORD REF
syn keyword modula3Keyword RETURN SET TRY TYPE TYPECASE UNSAFE
syn keyword modula3Keyword VALUE VAR WITH
syn match modula3keyword "\<UNTRACED\>"
@@ -22,44 +33,71 @@ syn keyword modula3Block PROCEDURE FUNCTION MODULE INTERFACE REPEAT THEN
syn keyword modula3Block BEGIN END OBJECT METHODS OVERRIDES RECORD REVEAL
syn keyword modula3Block WHILE UNTIL DO TO IF FOR ELSIF ELSE LOOP
" Reserved identifiers
" Reserved identifiers {{{1
syn keyword modula3Identifier ABS ADR ADRSIZE BITSIZE BYTESIZE CEILING DEC
syn keyword modula3Identifier DISPOSE FIRST FLOAT FLOOR INC ISTYPE LAST
syn keyword modula3Identifier LOOPHOLE MAX MIN NARROW NEW NUMBER ORD ROUND
syn keyword modula3Identifier SUBARRAY TRUNC TYPECODE VAL
" Predefined types
" Predefined types {{{1
syn keyword modula3Type ADDRESS BOOLEAN CARDINAL CHAR EXTENDED INTEGER
syn keyword modula3Type LONGCARD LONGINT LONGREAL MUTEX NULL REAL REFANY TEXT
syn keyword modula3Type WIDECHAR
syn match modula3Type "\<\%(UNTRACED\s\+\)\=ROOT\>"
" Operators
syn keyword modulaOperator DIV MOD IN AND OR NOT
" Operators {{{1
syn keyword modula3Operator DIV MOD
syn keyword modula3Operator IN
syn keyword modula3Operator NOT AND OR
" TODO: exclude = from declarations
if exists("modula3_operators")
syn match modula3Operator "\^"
syn match modula3Operator "+\|-\|\*\|/\|&"
" TODO: need to exclude = in procedure definitions
syn match modula3Operator "<=\|<\|>=\|>\|:\@<!=\|#"
syn match modula3Operator "[-+/*]"
syn match modula3Operator "&"
syn match modula3Operator "<=\|<:\@!\|>=\|>"
syn match modula3Operator ":\@<!=\|#"
endif
" Literals {{{1
" Booleans
syn keyword modula3Boolean TRUE FALSE
" Nil
syn keyword modula3Nil NIL
" Integers
syn match modula3Integer "\<\d\+L\=\>"
syn match modula3Integer "\<\d\d\=_\x\+L\=\>"
" Numbers {{{2
" Reals
syn match modula3Real "\c\<\d\+\.\d\+\%([EDX][+-]\=\d\+\)\=\>"
" NOTE: Negated numbers are constant expressions not literals
syn case ignore
" Integers
syn match modula3Integer "\<\d\+L\=\>"
if exists("modula3_number_errors")
syn match modula3IntegerError "\<\d\d\=_\x\+L\=\>"
endif
let s:digits = "0123456789ABCDEF"
for s:radix in range(2, 16)
exe $'syn match modula3Integer "\<{s:radix}_[{s:digits[:s:radix - 1]}]\+L\=\>"'
endfor
unlet s:digits s:radix
" Reals
syn match modula3Real "\<\d\+\.\d\+\%([EDX][+-]\=\d\+\)\=\>"
syn case match
" Strings and characters {{{2
" String escape sequences
syn match modula3Escape "\\['"ntrf]" contained display
" TODO: limit to <= 377 (255)
syn match modula3Escape "\\\o\{3}" contained display
syn match modula3Escape "\\\\" contained display
@@ -69,13 +107,23 @@ syn match modula3Character "'\%([^']\|\\.\|\\\o\{3}\)'" contains=modula3Escape
" Strings
syn region modula3String start=+"+ end=+"+ contains=modula3Escape
" Pragmas
" Pragmas {{{1
" EXTERNAL INLINE ASSERT TRACE FATAL UNUSED OBSOLETE CALLBACK EXPORTED PRAGMA NOWARN LINE LL LL.sup SPEC
" Documented: INLINE ASSERT TRACE FATAL UNUSED OBSOLETE NOWARN
syn region modula3Pragma start="<\*" end="\*>"
" Comments
syn region modula3Comment start="(\*" end="\*)" contains=modula3Comment,@Spell
" Comments {{{1
if !exists("modula3_no_comment_fold")
syn region modula3Comment start="(\*" end="\*)" contains=modula3Comment,@Spell fold
syn region modula3LineCommentBlock start="^\s*(\*.*\*)\s*\n\%(^\s*(\*.*\*)\s*$\)\@=" end="^\s*(\*.*\*)\s*\n\%(^\s*(\*.*\*)\s*$\)\@!" contains=modula3Comment transparent fold keepend
else
syn region modula3Comment start="(\*" end="\*)" contains=modula3Comment,@Spell
endif
" Default highlighting
" Syncing "{{{1
syn sync minlines=100
" Default highlighting {{{1
hi def link modula3Block Statement
hi def link modula3Boolean Boolean
hi def link modula3Character Character
@@ -85,12 +133,13 @@ hi def link modula3Identifier Keyword
hi def link modula3Integer Number
hi def link modula3Keyword Statement
hi def link modula3Nil Constant
hi def link modula3IntegerError Error
hi def link modula3Operator Operator
hi def link modula3Pragma PreProc
hi def link modula3Real Float
hi def link modula3String String
hi def link modula3Type Type
hi def link modula3Type Type "}}}
let b:current_syntax = "modula3"
" vim: nowrap sw=2 sts=2 ts=8 noet:
" vim: nowrap sw=2 sts=2 ts=8 noet fdm=marker:

210
runtime/syntax/nix.vim Normal file
View File

@@ -0,0 +1,210 @@
" Vim syntax file
" Language: Nix
" Maintainer: James Fleming <james@electronic-quill.net>
" Original Author: Daiderd Jordan <daiderd@gmail.com>
" Acknowledgement: Based on vim-nix maintained by Daiderd Jordan <daiderd@gmail.com>
" https://github.com/LnL7/vim-nix
" License: MIT
" Last Change: 2022 Dec 06
if exists("b:current_syntax")
finish
endif
let s:cpo_save = &cpo
set cpo&vim
syn keyword nixBoolean true false
syn keyword nixNull null
syn keyword nixRecKeyword rec
syn keyword nixOperator or
syn match nixOperator '!=\|!'
syn match nixOperator '<=\?'
syn match nixOperator '>=\?'
syn match nixOperator '&&'
syn match nixOperator '//\='
syn match nixOperator '=='
syn match nixOperator '?'
syn match nixOperator '||'
syn match nixOperator '++\='
syn match nixOperator '-'
syn match nixOperator '\*'
syn match nixOperator '->'
syn match nixParen '[()]'
syn match nixInteger '\d\+'
syn keyword nixTodo FIXME NOTE TODO OPTIMIZE XXX HACK contained
syn match nixComment '#.*' contains=nixTodo,@Spell
syn region nixComment start=+/\*+ end=+\*/+ contains=nixTodo,@Spell
syn region nixInterpolation matchgroup=nixInterpolationDelimiter start="\${" end="}" contained contains=@nixExpr,nixInterpolationParam
syn match nixSimpleStringSpecial /\\\%([nrt"\\$]\|$\)/ contained
syn match nixStringSpecial /''['$]/ contained
syn match nixStringSpecial /\$\$/ contained
syn match nixStringSpecial /''\\[nrt]/ contained
syn match nixSimpleStringSpecial /\$\$/ contained
syn match nixInvalidSimpleStringEscape /\\[^nrt"\\$]/ contained
syn match nixInvalidStringEscape /''\\[^nrt]/ contained
syn region nixSimpleString matchgroup=nixStringDelimiter start=+"+ skip=+\\"+ end=+"+ contains=nixInterpolation,nixSimpleStringSpecial,nixInvalidSimpleStringEscape
syn region nixString matchgroup=nixStringDelimiter start=+''+ skip=+''['$\\]+ end=+''+ contains=nixInterpolation,nixStringSpecial,nixInvalidStringEscape
syn match nixFunctionCall "[a-zA-Z_][a-zA-Z0-9_'-]*"
syn match nixPath "[a-zA-Z0-9._+-]*\%(/[a-zA-Z0-9._+-]\+\)\+"
syn match nixHomePath "\~\%(/[a-zA-Z0-9._+-]\+\)\+"
syn match nixSearchPath "[a-zA-Z0-9._+-]\+\%(\/[a-zA-Z0-9._+-]\+\)*" contained
syn match nixPathDelimiter "[<>]" contained
syn match nixSearchPathRef "<[a-zA-Z0-9._+-]\+\%(\/[a-zA-Z0-9._+-]\+\)*>" contains=nixSearchPath,nixPathDelimiter
syn match nixURI "[a-zA-Z][a-zA-Z0-9.+-]*:[a-zA-Z0-9%/?:@&=$,_.!~*'+-]\+"
syn match nixAttributeDot "\." contained
syn match nixAttribute "[a-zA-Z_][a-zA-Z0-9_'-]*\ze\%([^a-zA-Z0-9_'.-]\|$\)" contained
syn region nixAttributeAssignment start="=" end="\ze;" contained contains=@nixExpr
syn region nixAttributeDefinition start=/\ze[a-zA-Z_"$]/ end=";" contained contains=nixComment,nixAttribute,nixInterpolation,nixSimpleString,nixAttributeDot,nixAttributeAssignment
syn region nixInheritAttributeScope start="(" end="\ze)" contained contains=@nixExpr
syn region nixAttributeDefinition matchgroup=nixInherit start="\<inherit\>" end=";" contained contains=nixComment,nixInheritAttributeScope,nixAttribute
syn region nixAttributeSet start="{" end="}" contains=nixComment,nixAttributeDefinition
" vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
syn region nixArgumentDefinitionWithDefault matchgroup=nixArgumentDefinition start="[a-zA-Z_][a-zA-Z0-9_'-]*\ze\%(\s\|#.\{-\}\n\|\n\|/\*\_.\{-\}\*/\)*?\@=" matchgroup=NONE end="[,}]\@=" transparent contained contains=@nixExpr
" vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
syn match nixArgumentDefinition "[a-zA-Z_][a-zA-Z0-9_'-]*\ze\%(\s\|#.\{-\}\n\|\n\|/\*\_.\{-\}\*/\)*[,}]\@=" contained
syn match nixArgumentEllipsis "\.\.\." contained
syn match nixArgumentSeparator "," contained
" vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
syn match nixArgOperator '@\%(\s\|#.\{-\}\n\|\n\|/\*\_.\{-\}\*/\)*[a-zA-Z_][a-zA-Z0-9_'-]*\%(\s\|#.\{-\}\n\|\n\|/\*\_.\{-\}\*/\)*:'he=s+1 contained contains=nixAttribute
" vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
syn match nixArgOperator '[a-zA-Z_][a-zA-Z0-9_'-]*\%(\s\|#.\{-\}\n\|\n\|/\*\_.\{-\}\*/\)*@'hs=e-1 contains=nixAttribute nextgroup=nixFunctionArgument
" This is a bit more complicated, because function arguments can be passed in a
" very similar form on how attribute sets are defined and two regions with the
" same start patterns will shadow each other. Instead of a region we could use a
" match on {\_.\{-\}}, which unfortunately doesn't take nesting into account.
"
" So what we do instead is that we look forward until we are sure that it's a
" function argument. Unfortunately, we need to catch comments and both vertical
" and horizontal white space, which the following regex should hopefully do:
"
" "\%(\s\|#.\{-\}\n\|\n\|/\*\_.\{-\}\*/\)*"
"
" It is also used throught the whole file and is marked with 'v's as well.
"
" Fortunately the matching rules for function arguments are much simpler than
" for real attribute sets, because we can stop when we hit the first ellipsis or
" default value operator, but we also need to paste the "whitespace & comments
" eating" regex all over the place (marked with 'v's):
"
" Region match 1: { foo ? ... } or { foo, ... } or { ... } (ellipsis)
" vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv {----- identifier -----}vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
syn region nixFunctionArgument start="{\ze\%(\s\|#.\{-\}\n\|\n\|/\*\_.\{-\}\*/\)*\%([a-zA-Z_][a-zA-Z0-9_'-]*\%(\s\|#.\{-\}\n\|\n\|/\*\_.\{-\}\*/\)*[,?}]\|\.\.\.\)" end="}" contains=nixComment,nixArgumentDefinitionWithDefault,nixArgumentDefinition,nixArgumentEllipsis,nixArgumentSeparator nextgroup=nixArgOperator
" Now it gets more tricky, because we need to look forward for the colon, but
" there could be something like "{}@foo:", even though it's highly unlikely.
"
" Region match 2: {}
" vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv@vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv{----- identifier -----} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
syn region nixFunctionArgument start="{\ze\%(\s\|#.\{-\}\n\|\n\|/\*\_.\{-\}\*/\)*}\%(\%(\s\|#.\{-\}\n\|\n\|/\*\_.\{-\}\*/\)*@\%(\s\|#.\{-\}\n\|\n\|/\*\_.\{-\}\*/\)*[a-zA-Z_][a-zA-Z0-9_'-]*\)\%(\s\|#.\{-\}\n\|\n\|/\*\_.\{-\}\*/\)*:" end="}" contains=nixComment nextgroup=nixArgOperator
" vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
syn match nixSimpleFunctionArgument "[a-zA-Z_][a-zA-Z0-9_'-]*\ze\%(\s\|#.\{-\}\n\|\n\|/\*\_.\{-\}\*/\)*:\([\n ]\)\@="
syn region nixList matchgroup=nixListBracket start="\[" end="\]" contains=@nixExpr
syn region nixLetExpr matchgroup=nixLetExprKeyword start="\<let\>" end="\<in\>" contains=nixComment,nixAttributeDefinition
syn keyword nixIfExprKeyword then contained
syn region nixIfExpr matchgroup=nixIfExprKeyword start="\<if\>" end="\<else\>" contains=@nixExpr,nixIfExprKeyword
syn region nixWithExpr matchgroup=nixWithExprKeyword start="\<with\>" matchgroup=NONE end=";" contains=@nixExpr
syn region nixAssertExpr matchgroup=nixAssertKeyword start="\<assert\>" matchgroup=NONE end=";" contains=@nixExpr
syn cluster nixExpr contains=nixBoolean,nixNull,nixOperator,nixParen,nixInteger,nixRecKeyword,nixConditional,nixBuiltin,nixSimpleBuiltin,nixComment,nixFunctionCall,nixFunctionArgument,nixArgOperator,nixSimpleFunctionArgument,nixPath,nixHomePath,nixSearchPathRef,nixURI,nixAttributeSet,nixList,nixSimpleString,nixString,nixLetExpr,nixIfExpr,nixWithExpr,nixAssertExpr,nixInterpolation
" These definitions override @nixExpr and have to come afterwards:
syn match nixInterpolationParam "[a-zA-Z_][a-zA-Z0-9_'-]*\%(\.[a-zA-Z_][a-zA-Z0-9_'-]*\)*" contained
" Non-namespaced Nix builtins as of version 2.0:
syn keyword nixSimpleBuiltin
\ abort baseNameOf derivation derivationStrict dirOf fetchGit
\ fetchMercurial fetchTarball import isNull map mapAttrs placeholder removeAttrs
\ scopedImport throw toString
" Namespaced and non-namespaced Nix builtins as of version 2.0:
syn keyword nixNamespacedBuiltin contained
\ abort add addErrorContext all any attrNames attrValues baseNameOf
\ catAttrs compareVersions concatLists concatStringsSep currentSystem
\ currentTime deepSeq derivation derivationStrict dirOf div elem elemAt
\ fetchGit fetchMercurial fetchTarball fetchurl filter \ filterSource
\ findFile foldl' fromJSON functionArgs genList \ genericClosure getAttr
\ getEnv hasAttr hasContext hashString head import intersectAttrs isAttrs
\ isBool isFloat isFunction isInt isList isNull isString langVersion
\ length lessThan listToAttrs map mapAttrs match mul nixPath nixVersion
\ parseDrvName partition path pathExists placeholder readDir readFile
\ removeAttrs replaceStrings scopedImport seq sort split splitVersion
\ storeDir storePath stringLength sub substring tail throw toFile toJSON
\ toPath toString toXML trace tryEval typeOf unsafeDiscardOutputDependency
\ unsafeDiscardStringContext unsafeGetAttrPos valueSize fromTOML bitAnd
\ bitOr bitXor floor ceil
syn match nixBuiltin "builtins\.[a-zA-Z']\+"he=s+9 contains=nixComment,nixNamespacedBuiltin
hi def link nixArgOperator Operator
hi def link nixArgumentDefinition Identifier
hi def link nixArgumentEllipsis Operator
hi def link nixAssertKeyword Keyword
hi def link nixAttribute Identifier
hi def link nixAttributeDot Operator
hi def link nixBoolean Boolean
hi def link nixBuiltin Special
hi def link nixComment Comment
hi def link nixConditional Conditional
hi def link nixHomePath Include
hi def link nixIfExprKeyword Keyword
hi def link nixInherit Keyword
hi def link nixInteger Integer
hi def link nixInterpolation Macro
hi def link nixInterpolationDelimiter Delimiter
hi def link nixInterpolationParam Macro
hi def link nixInvalidSimpleStringEscape Error
hi def link nixInvalidStringEscape Error
hi def link nixLetExprKeyword Keyword
hi def link nixNamespacedBuiltin Special
hi def link nixNull Constant
hi def link nixOperator Operator
hi def link nixPath Include
hi def link nixPathDelimiter Delimiter
hi def link nixRecKeyword Keyword
hi def link nixSearchPath Include
hi def link nixSimpleBuiltin Keyword
hi def link nixSimpleFunctionArgument Identifier
hi def link nixSimpleString String
hi def link nixSimpleStringSpecial SpecialChar
hi def link nixString String
hi def link nixStringDelimiter Delimiter
hi def link nixStringSpecial Special
hi def link nixTodo Todo
hi def link nixURI Include
hi def link nixWithExprKeyword Keyword
" This could lead up to slow syntax highlighting for large files, but usually
" large files such as all-packages.nix are one large attribute set, so if we'd
" use sync patterns we'd have to go back to the start of the file anyway
syn sync fromstart
let b:current_syntax = "nix"
let &cpo = s:cpo_save
unlet s:cpo_save

View File

@@ -3,7 +3,7 @@
" Maintainer: Ken Takata
" URL: https://github.com/k-takata/vim-nsis
" Previous Maintainer: Alex Jakushev <Alex.Jakushev@kemek.lt>
" Last Change: 2020-10-18
" Last Change: 2022-11-05
" quit when a syntax file was already loaded
if exists("b:current_syntax")
@@ -394,9 +394,13 @@ syn keyword nsisInstruction contained CreateShortcut nextgroup=nsisCreateShortcu
syn region nsisCreateShortcutOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisCreateShortcutKwd
syn match nsisCreateShortcutKwd contained "/NoWorkingDir\>"
syn keyword nsisInstruction contained GetWinVer nextgroup=nsisGetWinVerOpt skipwhite
syn region nsisGetWinVerOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisGetWinVerKwd
syn keyword nsisGetWinVerKwd contained Major Minor Build ServicePack
syn keyword nsisInstruction contained GetDLLVersion GetDLLVersionLocal nextgroup=nsisGetDLLVersionOpt skipwhite
syn region nsisGetDLLVersionOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisGetDLLVersionKwd
syn match nsisGetDLLVersionKwd contained "/ProductVersion\>"
syn region nsisGetDLLVersionOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisGetDLLVersionKwd
syn match nsisGetDLLVersionKwd contained "/ProductVersion\>"
syn keyword nsisInstruction contained GetFullPathName nextgroup=nsisGetFullPathNameOpt skipwhite
syn region nsisGetFullPathNameOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisGetFullPathNameKwd
@@ -562,10 +566,19 @@ syn match nsisSystem contained "!execute\>"
syn match nsisSystem contained "!makensis\>"
syn match nsisSystem contained "!packhdr\>"
syn match nsisSystem contained "!finalize\>"
syn match nsisSystem contained "!uninstfinalize\>"
syn match nsisSystem contained "!system\>"
syn match nsisSystem contained "!tempfile\>"
syn match nsisSystem contained "!getdllversion\>"
syn match nsisSystem contained "!gettlbversion\>"
" Add 'P' to avoid conflicts with nsisGetDLLVersionOpt. ('P' for preprocessor.)
syn match nsisSystem contained "!getdllversion\>" nextgroup=nsisPGetdllversionOpt skipwhite
syn region nsisPGetdllversionOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisPGetdllversionKwd
syn match nsisPGetdllversionKwd contained "/\%(noerrors\|packed\|productversion\)\>"
syn match nsisSystem contained "!gettlbversion\>" nextgroup=nsisPGettlbversionOpt skipwhite
syn region nsisPGettlbversionOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisPGettlbversionKwd
syn match nsisPGettlbversionKwd contained "/\%(noerrors\|packed\)\>"
syn match nsisSystem contained "!warning\>"
syn match nsisSystem contained "!pragma\>" nextgroup=nsisPragmaOpt skipwhite
@@ -581,7 +594,10 @@ syn match nsisDefine contained "!define\>" nextgroup=nsisDefineOpt skipwhite
syn region nsisDefineOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisDefineKwd
syn match nsisDefineKwd contained "/\%(ifndef\|redef\|date\|utcdate\|file\|intfmt\|math\)\>"
syn match nsisDefine contained "!undef\>"
syn match nsisDefine contained "!undef\>" nextgroup=nsisUndefineOpt skipwhite
syn region nsisUndefineOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisUndefineKwd
syn match nsisUndefineKwd contained "/noerrors\>"
syn match nsisPreCondit contained "!ifdef\>"
syn match nsisPreCondit contained "!ifndef\>"
@@ -659,6 +675,7 @@ hi def link nsisWriteRegMultiStrKwd Constant
hi def link nsisSetRegViewKwd Constant
hi def link nsisCopyFilesKwd Constant
hi def link nsisCreateShortcutKwd Constant
hi def link nsisGetWinVerKwd Constant
hi def link nsisGetDLLVersionKwd Constant
hi def link nsisGetFullPathNameKwd Constant
hi def link nsisFileAttrib Constant
@@ -696,9 +713,12 @@ hi def link nsisIncludeKwd Constant
hi def link nsisAddplugindirKwd Constant
hi def link nsisAppendfileKwd Constant
hi def link nsisDelfileKwd Constant
hi def link nsisPGetdllversionKwd Constant
hi def link nsisPGettlbversionKwd Constant
hi def link nsisPragmaKwd Constant
hi def link nsisVerboseKwd Constant
hi def link nsisDefineKwd Constant
hi def link nsisUndefineKwd Constant
hi def link nsisIfKwd Constant
hi def link nsisSearchparseKwd Constant
hi def link nsisSearchreplaceKwd Constant

3360
runtime/syntax/obse.vim Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,72 @@
" Vim syntax file
" Language: OpenVPN
" Maintainer: ObserverOfTime <chronobserver@disroot.org>
" Filenames: *.ovpn
" Last Change: 2022 Oct 16
if exists('b:current_syntax')
finish
endif
let s:cpo_save = &cpoptions
set cpoptions&vim
" Options
syntax match openvpnOption /^[a-z-]\+/
\ skipwhite nextgroup=openvpnArgList
syntax match openvpnArgList /.*$/ transparent contained
\ contains=openvpnArgument,openvpnNumber,
\ openvpnIPv4Address,openvpnIPv6Address,
\ openvpnSignal,openvpnComment
" Arguments
syntax match openvpnArgument /[^\\"' \t]\+/
\ contained contains=openvpnEscape
syntax region openvpnArgument matchgroup=openvpnQuote
\ start=/"/ skip=/\\"/ end=/"/
\ oneline contained contains=openvpnEscape
syntax region openvpnArgument matchgroup=openvpnQuote
\ start=/'/ skip=/\\'/ end=/'/
\ oneline contained
syntax match openvpnEscape /\\[\\" \t]/ contained
" Numbers
syntax match openvpnNumber /\<[1-9][0-9]*\(\.[0-9]\+\)\?\>/ contained
" Signals
syntax match openvpnSignal /SIG\(HUP\|INT\|TERM\|USER[12]\)/ contained
" IP addresses
syntax match openvpnIPv4Address /\(\d\{1,3}\.\)\{3}\d\{1,3}/
\ contained nextgroup=openvpnSlash
syntax match openvpnIPv6Address /\([A-F0-9]\{1,4}:\)\{7}\[A-F0-9]\{1,4}/
\ contained nextgroup=openvpnSlash
syntax match openvpnSlash "/" contained
\ nextgroup=openvpnIPv4Address,openvpnIPv6Address,openvpnNumber
" Inline files
syntax region openvpnInline matchgroup=openvpnTag
\ start=+^<\z([a-z-]\+\)>+ end=+^</\z1>+
" Comments
syntax keyword openvpnTodo contained TODO FIXME NOTE XXX
syntax match openvpnComment /^[;#].*$/ contains=openvpnTodo
syntax match openvpnComment /\s\+\zs[;#].*$/ contains=openvpnTodo
hi def link openvpnArgument String
hi def link openvpnComment Comment
hi def link openvpnEscape SpecialChar
hi def link openvpnIPv4Address Constant
hi def link openvpnIPv6Address Constant
hi def link openvpnNumber Number
hi def link openvpnOption Keyword
hi def link openvpnQuote Quote
hi def link openvpnSignal Special
hi def link openvpnSlash Delimiter
hi def link openvpnTag Tag
hi def link openvpnTodo Todo
let b:current_syntax = 'openvpn'
let &cpoptions = s:cpo_save
unlet s:cpo_save

View File

@@ -53,7 +53,7 @@ syn match ptcapNumberError "#0x\x*[^[:xdigit:]:\\]"lc=1 contained
" The `=' operator assigns a string to the preceding flag
syn match ptcapOperator "[@#=]" contained
" Some terminal capabilites have special names like `#5' and `@1', and we
" Some terminal capabilities have special names like `#5' and `@1', and we
" need special rules to match these properly
syn match ptcapSpecialCap "\W[#@]\d" contains=ptcapDelimiter contained

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