mirror of
https://github.com/macvim-dev/macvim.git
synced 2026-06-11 15:37:29 +02:00
Merge remote-tracking branch 'vim/master'
This commit is contained in:
+6
-3
@@ -128,9 +128,12 @@ runtime:
|
||||
- all:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- 'runtime/ftplugin'
|
||||
- 'runtime/syntax'
|
||||
- 'runtime/indent'
|
||||
- 'runtime/autoload/**/*.vim'
|
||||
- 'runtime/colors/**/*.vim'
|
||||
- 'runtime/compiler/**/*.vim'
|
||||
- 'runtime/ftplugin/**/*.vim'
|
||||
- 'runtime/indent/**/*.vim'
|
||||
- 'runtime/syntax/**/*.vim'
|
||||
- 'runtime/pack/dist/opt/termdebug/plugin/termdebug.vim'
|
||||
|
||||
termdebug:
|
||||
|
||||
@@ -44,7 +44,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout repository from github
|
||||
uses: actions/checkout@v5
|
||||
uses: actions/checkout@v6
|
||||
|
||||
# Initializes the CodeQL tools for scanning.
|
||||
- name: Initialize CodeQL
|
||||
|
||||
@@ -19,7 +19,7 @@ jobs:
|
||||
steps:
|
||||
- name: Checkout repository from github
|
||||
if: env.TOKEN
|
||||
uses: actions/checkout@v5
|
||||
uses: actions/checkout@v6
|
||||
|
||||
- name: Download Coverity
|
||||
if: env.TOKEN
|
||||
|
||||
@@ -8,7 +8,7 @@ jobs:
|
||||
lychee:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v5
|
||||
- uses: actions/checkout@v6
|
||||
- name: Run Lychee
|
||||
uses: lycheeverse/lychee-action@v2
|
||||
with:
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*intro.txt* For Vim version 9.1. Last change: 2025 Nov 09
|
||||
*intro.txt* For Vim version 9.1. Last change: 2025 Nov 27
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -450,6 +450,8 @@ notation meaning equivalent decimal value(s) ~
|
||||
<Del> delete 127
|
||||
<CSI> command sequence intro ALT-Esc 155 *<CSI>*
|
||||
<xCSI> CSI when typed in the GUI *<xCSI>*
|
||||
<OSC> operating system command 157 *<OSC>*
|
||||
<xOSC> received OSC response *<xOSC>*
|
||||
|
||||
<EOL> end-of-line (can be <CR>, <NL> or <CR><NL>,
|
||||
depends on system and 'fileformat') *<EOL>*
|
||||
|
||||
+28
-26
@@ -1,4 +1,4 @@
|
||||
*options.txt* For Vim version 9.1. Last change: 2025 Nov 09
|
||||
*options.txt* For Vim version 9.1. Last change: 2025 Nov 27
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -1675,7 +1675,8 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
a modified version of the following command in your vimrc file to
|
||||
override it: >
|
||||
:let &cdpath = ',' .. substitute(substitute($CDPATH, '[, ]', '\\\0', 'g'), ':', ',', 'g')
|
||||
< This option cannot be set from a |modeline| or in the |sandbox|, for
|
||||
< Environment variables are expanded |:set_env|.
|
||||
This option cannot be set from a |modeline| or in the |sandbox|, for
|
||||
security reasons.
|
||||
(parts of 'cdpath' can be passed to the shell to expand file names).
|
||||
|
||||
@@ -1847,9 +1848,9 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
option, yank operations (but not delete, change or
|
||||
put) will additionally copy the text into register
|
||||
'*'. If Wayland is being used and the compositor does
|
||||
not support the primary-selection-unstable-v1
|
||||
protocol, then the regular selection is used in its
|
||||
place. Only available with the |+X11| or
|
||||
not support the primary selection then the regular
|
||||
selection is used in its place. Only available with
|
||||
the |+X11| or
|
||||
|+wayland_clipboard| feature. Availability can be
|
||||
checked with: >
|
||||
if has('unnamedplus')
|
||||
@@ -2006,8 +2007,6 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
*'commentstring'* *'cms'* *E537*
|
||||
'commentstring' 'cms' string (default "/* %s */")
|
||||
local to buffer
|
||||
{not available when compiled without the |+folding|
|
||||
feature}
|
||||
A template for a comment. The "%s" in the value is replaced with the
|
||||
comment text, and should be padded with a space when possible.
|
||||
Currently used to add markers for folding, see |fold-marker|. Also
|
||||
@@ -2227,11 +2226,13 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
*'completefuzzycollect'* *'cfc'*
|
||||
'completefuzzycollect' 'cfc' string (default: empty)
|
||||
global
|
||||
A comma-separated list of strings to enable fuzzy collection for
|
||||
specific |ins-completion| modes, affecting how matches are gathered
|
||||
during completion. For specified modes, fuzzy matching is used to
|
||||
find completion candidates instead of the standard prefix-based
|
||||
matching. This option can contain the following values:
|
||||
DEPRECATED: This option is no longer used; changing it has no effect.
|
||||
When 'completeopt' contains "fuzzy", Vim will internally use the
|
||||
equivalent of:
|
||||
"keyword,files,whole_line"
|
||||
|
||||
The values below are kept for compatibility and for scripts that
|
||||
may read this option:
|
||||
|
||||
keyword keywords in the current file |i_CTRL-X_CTRL-N|
|
||||
keywords with flags ".", "w", |i_CTRL-N| |i_CTRL-P|
|
||||
@@ -2242,10 +2243,6 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
|
||||
whole_line whole lines |i_CTRL-X_CTRL-L|
|
||||
|
||||
When using the 'completeopt' "longest" option value, fuzzy collection
|
||||
can identify the longest common string among the best fuzzy matches
|
||||
and insert it automatically.
|
||||
|
||||
*'completeitemalign'* *'cia'*
|
||||
'completeitemalign' 'cia' string (default: "abbr,kind,menu")
|
||||
global
|
||||
@@ -2265,12 +2262,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
fuzzy Enable |fuzzy-matching| for completion candidates. This
|
||||
allows for more flexible and intuitive matching, where
|
||||
characters can be skipped and matches can be found even
|
||||
if the exact sequence is not typed. Note: This option
|
||||
does not affect the collection of candidate list, it only
|
||||
controls how completion candidates are reduced from the
|
||||
list of alternatives. If you want to use |fuzzy-matching|
|
||||
to gather more alternatives for your candidate list,
|
||||
see 'completefuzzycollect'.
|
||||
if the exact sequence is not typed.
|
||||
|
||||
longest
|
||||
When 'autocomplete' is not active, only the longest common
|
||||
@@ -3081,6 +3073,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
To include a comma in a file name precede it with a backslash. Spaces
|
||||
after a comma are ignored, otherwise spaces are included in the file
|
||||
name. See |option-backslash| about using backslashes.
|
||||
Environment variables are expanded |:set_env|.
|
||||
This has nothing to do with the |Dictionary| variable type.
|
||||
Where to find a list of words?
|
||||
- On FreeBSD, there is the file "/usr/share/dict/words".
|
||||
@@ -6254,7 +6247,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
:set mkspellmem=900000,3000,800
|
||||
< If you have less than 512 Mbyte |:mkspell| may fail for some
|
||||
languages, no matter what you set 'mkspellmem' to.
|
||||
|
||||
Environment variables are expanded |:set_env|.
|
||||
This option cannot be set from a |modeline| or in the |sandbox|, for
|
||||
security reasons.
|
||||
|
||||
@@ -6677,6 +6670,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
*'packpath'* *'pp'*
|
||||
'packpath' 'pp' string (default: see 'runtimepath')
|
||||
Directories used to find packages. See |packages|.
|
||||
Environment variables are expanded |:set_env|.
|
||||
This option cannot be set from a |modeline| or in the |sandbox|, for
|
||||
security reasons.
|
||||
|
||||
@@ -7501,6 +7495,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
runtime files.
|
||||
When Vim is started with |--clean| the home directory entries are not
|
||||
included.
|
||||
Environment variables are expanded |:set_env|.
|
||||
This option cannot be set from a |modeline| or in the |sandbox|, for
|
||||
security reasons.
|
||||
|
||||
@@ -8333,6 +8328,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
name if you want to. However, it will then only be used when
|
||||
'spellfile' is set to it, for entries in 'spelllang' only files
|
||||
without region name will be found.
|
||||
Environment variables are expanded |:set_env|.
|
||||
This option cannot be set from a |modeline| or in the |sandbox|, for
|
||||
security reasons.
|
||||
|
||||
@@ -8460,7 +8456,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
Only one of "best", "double" or "fast" may be used. The others may
|
||||
appear several times in any order. Example: >
|
||||
:set sps=file:~/.vim/sugg,best,expr:MySuggest()
|
||||
<
|
||||
< Environment variables are expanded |:set_env|.
|
||||
This option cannot be set from a |modeline| or in the |sandbox|, for
|
||||
security reasons.
|
||||
|
||||
@@ -9298,8 +9294,9 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
name. See |option-backslash| about using backslashes. The use of
|
||||
|:set+=| and |:set-=| is preferred when adding or removing directories
|
||||
from the list. This avoids problems when a future version uses
|
||||
another default. Backticks cannot be used in this option for security
|
||||
reasons.
|
||||
another default.
|
||||
Environment variables are expanded |:set_env|.
|
||||
Backticks cannot be used in this option for security reasons.
|
||||
|
||||
*'thesaurusfunc'* *'tsrfu'*
|
||||
'thesaurusfunc' 'tsrfu' string (default: empty)
|
||||
@@ -9639,6 +9636,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
'ttytype' 'tty' string (default from $TERM)
|
||||
global
|
||||
Alias for 'term', see above.
|
||||
Environment variables are expanded |:set_env|.
|
||||
|
||||
*'undodir'* *'udir'*
|
||||
'undodir' 'udir' string (default ".")
|
||||
@@ -9656,6 +9654,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
undo file that exists is used. When it cannot be read an error is
|
||||
given, no further entry is used.
|
||||
See |undo-persistence|.
|
||||
Environment variables are expanded |:set_env|.
|
||||
This option cannot be set from a |modeline| or in the |sandbox|, for
|
||||
security reasons.
|
||||
|
||||
@@ -9807,6 +9806,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
Setting 'verbosefile' to a new value is like making it empty first.
|
||||
The difference with |:redir| is that verbose messages are not
|
||||
displayed when 'verbosefile' is set.
|
||||
Environment variables are expanded |:set_env|.
|
||||
This option cannot be set from a |modeline| or in the |sandbox|, for
|
||||
security reasons.
|
||||
|
||||
@@ -9821,6 +9821,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
feature}
|
||||
Name of the directory where to store files for |:mkview|.
|
||||
For $XDG_CONFIG_HOME see |xdg-base-dir|.
|
||||
Environment variables are expanded |:set_env|.
|
||||
This option cannot be set from a |modeline| or in the |sandbox|, for
|
||||
security reasons.
|
||||
|
||||
@@ -9976,6 +9977,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
When equal to "NONE" no viminfo file will be read or written.
|
||||
This option can be set with the |-i| command line flag. The |--clean|
|
||||
command line flag sets it to "NONE".
|
||||
Environment variables are expanded |:set_env|.
|
||||
This option cannot be set from a |modeline| or in the |sandbox|, for
|
||||
security reasons.
|
||||
|
||||
|
||||
@@ -3879,6 +3879,7 @@ $quote eval.txt /*$quote*
|
||||
<NL> motion.txt /*<NL>*
|
||||
<Nop> map.txt /*<Nop>*
|
||||
<Nul> intro.txt /*<Nul>*
|
||||
<OSC> intro.txt /*<OSC>*
|
||||
<PageDown> scroll.txt /*<PageDown>*
|
||||
<PageUp> scroll.txt /*<PageUp>*
|
||||
<Plug> map.txt /*<Plug>*
|
||||
@@ -4003,6 +4004,7 @@ $quote eval.txt /*$quote*
|
||||
<xHome> term.txt /*<xHome>*
|
||||
<xHome>-xterm term.txt /*<xHome>-xterm*
|
||||
<xLeft> term.txt /*<xLeft>*
|
||||
<xOSC> intro.txt /*<xOSC>*
|
||||
<xRight> term.txt /*<xRight>*
|
||||
<xUp> term.txt /*<xUp>*
|
||||
= change.txt /*=*
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*usr_08.txt* For Vim version 9.1. Last change: 2025 Nov 09
|
||||
*usr_08.txt* For Vim version 9.1. Last change: 2025 Nov 26
|
||||
|
||||
|
||||
VIM USER MANUAL by Bram Moolenaar
|
||||
@@ -444,7 +444,8 @@ To go the other way use: >
|
||||
|
||||
[c
|
||||
|
||||
Prepended a count to jump further away.
|
||||
Prepend a count to jump further away. Thus "4]c" jumps to the fourth next
|
||||
change, and "3[c" jumps to the third previous change.
|
||||
|
||||
|
||||
REMOVING CHANGES
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*version9.txt* For Vim version 9.1. Last change: 2025 Nov 09
|
||||
*version9.txt* For Vim version 9.1. Last change: 2025 Nov 26
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -41692,6 +41692,8 @@ Completion: ~
|
||||
- 'smartcase' applies to completion filtering
|
||||
|
||||
Options: ~
|
||||
- 'commentstring' is now available in all builds and no longer requires the
|
||||
|+folding| feature
|
||||
- the default for 'commentstring' contains whitespace padding to have
|
||||
automatic comments look nicer |comment-install|
|
||||
- 'completeopt' is now a |global-local| option.
|
||||
@@ -41876,8 +41878,6 @@ Options: ~
|
||||
'autocompletetimeout' initial decay timeout for autocompletion algorithm
|
||||
'chistory' Size of the quickfix stack |quickfix-stack|
|
||||
'clipmethod' How to access the clipboard
|
||||
'completefuzzycollect' Enable fuzzy collection of candidates for (some)
|
||||
|ins-completion| modes
|
||||
'completeitemalign' Order of |complete-items| in Insert mode completion
|
||||
popup
|
||||
'completetimeout' initial decay timeout for CTRL-N and CTRL-P
|
||||
|
||||
+12
-4
@@ -1,4 +1,4 @@
|
||||
*wayland.txt* For Vim version 9.1. Last change: 2025 Nov 09
|
||||
*wayland.txt* For Vim version 9.1. Last change: 2025 Nov 25
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -16,7 +16,8 @@ Wayland Protocol Support *wayland*
|
||||
Functionality such as the clipboard for Wayland requires a seat to use. A
|
||||
Wayland seat can consist of a keyboard, pointer, and touch device(s). The
|
||||
seat to use can be set with the 'wlseat' option. Only useful if you use
|
||||
multiple Wayland seats in the same Wayland session.
|
||||
multiple Wayland seats in the same Wayland session. If you don't know what
|
||||
this is means, then it likely does not matter for you.
|
||||
|
||||
*wayland-gui*
|
||||
See |gui-wayland|. Please note that when using the GUI, Vim uses the toolkit
|
||||
@@ -63,11 +64,18 @@ should be bundled with libwayland on your system: >
|
||||
If you don't get any match, then please see |wayland-focus-steal| for more
|
||||
information.
|
||||
|
||||
Some compositors that are known to support either or both protocols:
|
||||
1. KWin (KDE)
|
||||
2. wlroots based (Sway, Labwc)
|
||||
3. Niri
|
||||
4. Hyprland
|
||||
5. Wayfire
|
||||
|
||||
If you come from X11, then the regular Wayland selection is equivalent to the
|
||||
CLIPBOARD selection in X11, and the primary Wayland selection equates to the
|
||||
X11 primary selection. Accessing these selections is the same as X11 in Vim,
|
||||
X11 PRIMARY selection. Accessing these selections is the same as X11 in Vim,
|
||||
in which the + register is the regular selection, and the * register is the
|
||||
primary selection, note that your compositor may not support primary
|
||||
primary selection. Note that your compositor may not support primary
|
||||
selections, see |wayland-primary-selection| for more details.
|
||||
|
||||
*wayland-persist*
|
||||
|
||||
+3
-5
@@ -1,7 +1,7 @@
|
||||
" These commands create the option window.
|
||||
"
|
||||
" Maintainer: The Vim Project <https://github.com/vim/vim>
|
||||
" Last Change: 2025 Oct 07
|
||||
" Last Change: 2025 Nov 26
|
||||
" Former Maintainer: Bram Moolenaar <Bram@vim.org>
|
||||
|
||||
" If there already is an option window, jump to that one.
|
||||
@@ -879,6 +879,8 @@ call append("$", " \tset bs=" . &bs)
|
||||
call <SID>AddOption("comments", gettext("definition of what comment lines look like"))
|
||||
call append("$", "\t" .. s:local_to_buffer)
|
||||
call <SID>OptionL("com")
|
||||
call <SID>AddOption("commentstring", gettext("template for comments; used to put the marker in"))
|
||||
call <SID>OptionL("cms")
|
||||
call <SID>AddOption("formatoptions", gettext("list of flags that tell how automatic formatting works"))
|
||||
call append("$", "\t" .. s:local_to_buffer)
|
||||
call <SID>OptionL("fo")
|
||||
@@ -907,8 +909,6 @@ if has("insert_expand")
|
||||
call <SID>OptionL("cot")
|
||||
call <SID>AddOption("completeitemalign", gettext(" \npopup menu item align order"))
|
||||
call <SID>OptionG("cia", &cia)
|
||||
call <SID>AddOption("completefuzzycollect", gettext(" \nuse fuzzy collection for specific completion modes"))
|
||||
call <SID>OptionL("cfc")
|
||||
if exists("+completepopup")
|
||||
call <SID>AddOption("completepopup", gettext("options for the Insert mode completion info popup"))
|
||||
call <SID>OptionG("cpp", &cpp)
|
||||
@@ -1058,8 +1058,6 @@ if has("folding")
|
||||
call <SID>AddOption("foldminlines", gettext("minimum number of screen lines for a fold to be closed"))
|
||||
call append("$", "\t" .. s:local_to_window)
|
||||
call <SID>OptionL("fml")
|
||||
call <SID>AddOption("commentstring", gettext("template for comments; used to put the marker in"))
|
||||
call <SID>OptionL("cms")
|
||||
call <SID>AddOption("foldmethod", gettext("folding type: \"manual\", \"indent\", \"expr\", \"marker\",\n\"syntax\" or \"diff\""))
|
||||
call append("$", "\t" .. s:local_to_window)
|
||||
call <SID>OptionL("fdm")
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
" Vim syntax file generator
|
||||
" Language: Vim script
|
||||
" Maintainer: Hirohito Higashi (h_east)
|
||||
" Last Change: 2025 Nov 17
|
||||
" Last Change: 2025 Nov 26
|
||||
|
||||
let s:keepcpo= &cpo
|
||||
set cpo&vim
|
||||
@@ -31,6 +31,9 @@ function s:parse_vim_option(opt, missing_opt, term_out_code)
|
||||
|
||||
for line in getline(1, line('$'))
|
||||
let list = matchlist(line, '^\s*{\s*"\(\w\+\)"\s*,\s*\%("\(\w\+\)"\|NULL\)\s*,\s*\%([^,]*\(P_BOOL\)[^,]*\|[^,]*\)\s*,\s*\([^,]*NULL\)\?.*')
|
||||
if list[1] == 'completefuzzycollect'
|
||||
continue
|
||||
endif
|
||||
let item.name = list[1]
|
||||
let item.short_name = list[2]
|
||||
let item.is_bool = empty(list[3]) ? 0 : 1
|
||||
@@ -360,6 +363,7 @@ function s:get_vim_command_type(cmd_name)
|
||||
grepadd
|
||||
helpgrep
|
||||
highlight
|
||||
history
|
||||
if
|
||||
import
|
||||
interface
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
" Language: Vim script
|
||||
" Maintainer: Hirohito Higashi <h.east.727 ATMARK gmail.com>
|
||||
" Doug Kearns <dougkearns@gmail.com>
|
||||
" Last Change: 2025 Nov 17
|
||||
" Last Change: 2025 Nov 21
|
||||
" Former Maintainer: Charles E. Campbell
|
||||
|
||||
" DO NOT CHANGE DIRECTLY.
|
||||
@@ -246,7 +246,7 @@ syn match vimNumber '\<0z\%(\x\x\)\+\%(\.\%(\x\x\)\+\)*' skipwhite nextgroup=@vi
|
||||
syn case match
|
||||
|
||||
" All vimCommands are contained by vimIsCommand. {{{2
|
||||
syn cluster vimCmdList contains=vimAbb,vimAddress,vimAt,vimAutocmd,vimAugroup,vimBehave,vimBreakadd,vimBreakdel,vimBreaklist,vimCall,vimCatch,vimCd,vimCommandModifier,vimConst,vimDoautocmd,vimDebug,vimDebuggreedy,vimDef,vimDefFold,vimDefer,vimDelcommand,vimDelFunction,vimDoCommand,@vimEcho,vimElse,vimEnddef,vimEndfunction,vimEndif,vimEval,vimExecute,vimIsCommand,vimExtCmd,vimExFilter,vimExMark,vimFiletype,vimFor,vimFunction,vimFunctionFold,vimGrep,vimGrepAdd,vimGlobal,vimHelpgrep,vimHighlight,vimImport,vimLet,vimLoadkeymap,vimLockvar,vimMake,vimMap,vimMark,vimMatch,vimNotFunc,vimNormal,vimProfdel,vimProfile,vimPrompt,vimRedir,vimSet,vimSleep,vimSort,vimSyntax,vimSyntime,vimSynColor,vimSynLink,vimTerminal,vimThrow,vimUniq,vimUnlet,vimUnlockvar,vimUnmap,vimUserCmd,vimVimgrep,vimVimgrepadd,vimWincmd,vimMenu,vimMenutranslate,@vim9CmdList,@vimExUserCmdList,vimLua,vimMzScheme,vimPerl,vimPython,vimPython3,vimPythonX,vimRuby,vimTcl
|
||||
syn cluster vimCmdList contains=vimAbb,vimAddress,vimAt,vimAutocmd,vimAugroup,vimBehave,vimBreakadd,vimBreakdel,vimBreaklist,vimCall,vimCatch,vimCd,vimCommandModifier,vimConst,vimDoautocmd,vimDebug,vimDebuggreedy,vimDef,vimDefFold,vimDefer,vimDelcommand,vimDelFunction,vimDoCommand,@vimEcho,vimElse,vimEnddef,vimEndfunction,vimEndif,vimEval,vimExecute,vimIsCommand,vimExtCmd,vimExFilter,vimExMark,vimFiletype,vimFor,vimFunction,vimFunctionFold,vimGrep,vimGrepAdd,vimGlobal,vimHelpgrep,vimHighlight,vimHistory,vimImport,vimLet,vimLoadkeymap,vimLockvar,vimMake,vimMap,vimMark,vimMatch,vimNotFunc,vimNormal,vimProfdel,vimProfile,vimPrompt,vimRedir,vimSet,vimSleep,vimSort,vimSyntax,vimSyntime,vimSynColor,vimSynLink,vimTerminal,vimThrow,vimUniq,vimUnlet,vimUnlockvar,vimUnmap,vimUserCmd,vimVimgrep,vimVimgrepadd,vimWincmd,vimMenu,vimMenutranslate,@vim9CmdList,@vimExUserCmdList,vimLua,vimMzScheme,vimPerl,vimPython,vimPython3,vimPythonX,vimRuby,vimTcl
|
||||
syn cluster vim9CmdList contains=vim9Abstract,vim9Class,vim9Const,vim9Enum,vim9Export,vim9Final,vim9For,vim9Interface,vim9Type,vim9Var
|
||||
syn match vimCmdSep "\\\@1<!|" skipwhite nextgroup=@vimCmdList,vimSubst1,@vimFunc
|
||||
syn match vimCmdSep ":\+" skipwhite nextgroup=@vimCmdList,vimSubst1
|
||||
@@ -389,6 +389,16 @@ endif
|
||||
syn keyword vimFTCmd contained filet[ype]
|
||||
syn keyword vimFTOption contained detect indent off on plugin
|
||||
|
||||
" History {{{2
|
||||
" =======
|
||||
" TODO: handle Vim9 "history" variable assignment (like :wincmd, but a common variable name)
|
||||
syn keyword vimHistory his[tory] skipwhite nextgroup=vimHistoryName,vimHistoryRange,vimCmdSep,vimComment,vim9Comment
|
||||
syn keyword vimHistoryName contained c[md] s[earch] e[xpr] i[nput] d[ebug] a[ll] skipwhite nextgroup=vimHistoryRange,vimCmdSep,vimComment,vim9Comment
|
||||
syn match vimHistoryName contained "[:/?=@>]" skipwhite nextgroup=vimHistoryRange,vimCmdSep,vimComment,vim9Comment
|
||||
syn match vimHistoryRange contained "-\=\<\d\+\>\%(\s*,\)\=" skipwhite nextgroup=vimCmdSep,vimComment,vim9Comment
|
||||
syn match vimHistoryRange contained ",\s*-\=\d\+\>" skipwhite nextgroup=vimCmdSep,vimComment,vim9Comment
|
||||
syn match vimHistoryRange contained "-\=\<\d\+\s*,\s*-\=\d\+\>" skipwhite nextgroup=vimCmdSep,vimComment,vim9Comment
|
||||
|
||||
" Import {{{2
|
||||
" ======
|
||||
syn keyword vimImportAutoload contained autoload skipwhite nextgroup=vimImportFilename
|
||||
@@ -2513,6 +2523,8 @@ if !exists("skip_vim_syntax_inits")
|
||||
hi def link vimHiStartStop vimHiTerm
|
||||
hi def link vimHiTerm Type
|
||||
hi def link vimHLGroup vimGroup
|
||||
hi def link vimHistory vimCommand
|
||||
hi def link vimHistoryName Special
|
||||
hi def link vimImport vimCommand
|
||||
hi def link vimImportAutoload Special
|
||||
hi def link vimImportAs vimImport
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
" Vim syntax file
|
||||
" Language: i3 config file
|
||||
" Original Author: Josef Litos (JosefLitos/i3config.vim)
|
||||
" Original Author: Josef Litos (litoj/i3config.vim)
|
||||
" Maintainer: Quentin Hibon (github user hiqua)
|
||||
" Version: 1.2.4
|
||||
" Last Change: 2024-05-24
|
||||
" Version: 1.2.5
|
||||
" Last Change: 2025-11-24
|
||||
|
||||
" References:
|
||||
" http://i3wm.org/docs/userguide.html#configuring
|
||||
@@ -151,7 +151,9 @@ syn keyword i3ConfigKeyword mouse_warping contained skipwhite nextgroup=i3Config
|
||||
|
||||
" 4.26 Popups while fullscreen
|
||||
syn keyword i3ConfigPopupFullscreenOpts smart ignore leave_fullscreen contained
|
||||
syn keyword i3ConfigKeyword popup_during_fullscreen contained skipwhite nextgroup=i3ConfigPopupFullscreenOpts
|
||||
syn keyword i3ConfigPopupFullscreenOptsExtra all contained
|
||||
syn cluster i3ConfigPopupFullscreenOpts contains=i3ConfigPopupFullscreenOpts,i3ConfigPopupFullscreenOptsExtra
|
||||
syn keyword i3ConfigKeyword popup_during_fullscreen contained skipwhite nextgroup=@i3ConfigPopupFullscreenOpts
|
||||
|
||||
" 4.27 Focus wrapping
|
||||
syn keyword i3ConfigFocusWrappingOpts force workspace contained
|
||||
@@ -311,6 +313,7 @@ hi def link i3ConfigClientOpts i3ConfigOption
|
||||
hi def link i3ConfigFocusFollowsMouseOpts i3ConfigOption
|
||||
hi def link i3ConfigMouseWarpingOpts i3ConfigOption
|
||||
hi def link i3ConfigPopupFullscreenOpts i3ConfigOption
|
||||
hi def link i3ConfigPopupFullscreenOptsExtra i3ConfigPopupFullscreenOpts
|
||||
hi def link i3ConfigFocusWrappingOpts i3ConfigOption
|
||||
hi def link i3ConfigTimeUnit i3ConfigNumber
|
||||
hi def link i3ConfigFocusOnActivationOpts i3ConfigOption
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
" Vim syntax file
|
||||
" Language: sway config file
|
||||
" Original Author: Josef Litos (JosefLitos/i3config.vim)
|
||||
" Original Author: Josef Litos (litoj/i3config.vim)
|
||||
" Maintainer: James Eapen <james.eapen@vai.org>
|
||||
" Version: 1.2.4
|
||||
" Last Change: 2024 Oct 17
|
||||
" Version: 1.2.6
|
||||
" Last Change: 2025 Nov 24
|
||||
" 2025 Sep 23 by Vim Project update swayconfig syntax #18293
|
||||
|
||||
" References:
|
||||
@@ -22,6 +22,9 @@ syn cluster i3ConfigCommand contains=i3ConfigCommand,i3ConfigAction,i3ConfigActi
|
||||
|
||||
runtime! syntax/i3config.vim
|
||||
|
||||
" In sway, popup_during_fullscreen does not have options like all option.
|
||||
syn cluster i3ConfigPopupFullscreenOpts remove=i3ConfigPopupFullscreenOptsExtra
|
||||
|
||||
" Sway extensions to i3
|
||||
syn keyword i3ConfigActionKeyword opacity urgent shortcuts_inhibitor splitv splith splitt contained contained skipwhite nextgroup=i3ConfigOption
|
||||
syn keyword i3ConfigOption set plus minus allow deny csd v h t contained contained skipwhite nextgroup=i3ConfigOption,@i3ConfigValue
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
>-+0#0000e05#ffffff0@1| |I|s@1|u|e| |#|1|8|7@1|6| |(|a|l@1|o|w| |s|p|a|c|e|s| |i|n| |b|a|c|k|t|i|c|k|e|d| |o|p|e|r|a|t|o|r|s|)| +0#0000000&@20
|
||||
@75
|
||||
|m|a|i|n| |=+0#af5f00255&| +0#0000000&|p|r|i|n|t| |(|9+0#e000002&| +0#0000000&|`+0#af5f00255&| |d|i|v| |`| +0#0000000&|4+0#e000002&|)+0#0000000&| @48
|
||||
@75
|
||||
|~+0#4040ff13&| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
| +0#0000000&@56|1|,|1| @10|A|l@1|
|
||||
@@ -0,0 +1,20 @@
|
||||
>"+0#0000e05#ffffff0| |V|i|m| |:|h|i|s|t|o|r|y| |c|o|m@1|a|n|d| +0#0000000&@52
|
||||
|"+0#0000e05&| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |h|i| |l|i|n|k| |v|i|m|H|i|s|t|o|r|y|R|a|n|g|e| |T|o|d|o| +0#0000000&@29
|
||||
@75
|
||||
|h+0#af5f00255&|i|s|t|o|r|y| +0#0000000&@8|1+0#0000001#ffff4012|,|9| +0#0000000#ffffff0@55
|
||||
|h+0#af5f00255&|i|s|t|o|r|y| +0#0000000&|c+0#e000e06&|m|d| +0#0000000&@4|1+0#0000001#ffff4012|,|9| +0#0000000#ffffff0@55
|
||||
|h+0#af5f00255&|i|s|t|o|r|y| +0#0000000&|:+0#e000e06&| +0#0000000&@6|1+0#0000001#ffff4012|,|9| +0#0000000#ffffff0@55
|
||||
|h+0#af5f00255&|i|s|t|o|r|y| +0#0000000&|s+0#e000e06&|e|a|r|c|h| +0#0000000&@1|1+0#0000001#ffff4012|,|9| +0#0000000#ffffff0@55
|
||||
|h+0#af5f00255&|i|s|t|o|r|y| +0#0000000&|/+0#e000e06&| +0#0000000&@6|1+0#0000001#ffff4012|,|9| +0#0000000#ffffff0@55
|
||||
|h+0#af5f00255&|i|s|t|o|r|y| +0#0000000&|?+0#e000e06&| +0#0000000&@6|1+0#0000001#ffff4012|,|9| +0#0000000#ffffff0@55
|
||||
|h+0#af5f00255&|i|s|t|o|r|y| +0#0000000&|e+0#e000e06&|x|p|r| +0#0000000&@3|1+0#0000001#ffff4012|,|9| +0#0000000#ffffff0@55
|
||||
|h+0#af5f00255&|i|s|t|o|r|y| +0#0000000&|=+0#e000e06&| +0#0000000&@6|1+0#0000001#ffff4012|,|9| +0#0000000#ffffff0@55
|
||||
|h+0#af5f00255&|i|s|t|o|r|y| +0#0000000&|i+0#e000e06&|n|p|u|t| +0#0000000&@2|1+0#0000001#ffff4012|,|9| +0#0000000#ffffff0@55
|
||||
|h+0#af5f00255&|i|s|t|o|r|y| +0#0000000&|@+0#e000e06&| +0#0000000&@6|1+0#0000001#ffff4012|,|9| +0#0000000#ffffff0@55
|
||||
|h+0#af5f00255&|i|s|t|o|r|y| +0#0000000&|d+0#e000e06&|e|b|u|g| +0#0000000&@2|1+0#0000001#ffff4012|,|9| +0#0000000#ffffff0@55
|
||||
|h+0#af5f00255&|i|s|t|o|r|y| +0#0000000&|>+0#e000e06&| +0#0000000&@6|1+0#0000001#ffff4012|,|9| +0#0000000#ffffff0@55
|
||||
|h+0#af5f00255&|i|s|t|o|r|y| +0#0000000&|a+0#e000e06&|l@1| +0#0000000&@4|1+0#0000001#ffff4012|,|9| +0#0000000#ffffff0@55
|
||||
@75
|
||||
|h+0#af5f00255&|i|s|t|o|r|y| +0#0000000&@1|1+0#0000001#ffff4012| +0#0000000#ffffff0@64
|
||||
|h+0#af5f00255&|i|s|t|o|r|y| +0#0000000&|-+0#0000001#ffff4012|1| +0#0000000#ffffff0@64
|
||||
@57|1|,|1| @10|T|o|p|
|
||||
@@ -0,0 +1,20 @@
|
||||
|h+0#af5f00255#ffffff0|i|s|t|o|r|y| +0#0000000&|d+0#e000e06&|e|b|u|g| +0#0000000&@2|1+0#0000001#ffff4012|,|9| +0#0000000#ffffff0@55
|
||||
|h+0#af5f00255&|i|s|t|o|r|y| +0#0000000&|>+0#e000e06&| +0#0000000&@6|1+0#0000001#ffff4012|,|9| +0#0000000#ffffff0@55
|
||||
|h+0#af5f00255&|i|s|t|o|r|y| +0#0000000&|a+0#e000e06&|l@1| +0#0000000&@4|1+0#0000001#ffff4012|,|9| +0#0000000#ffffff0@55
|
||||
@75
|
||||
|h+0#af5f00255&|i|s|t|o|r|y| +0#0000000&@1|1+0#0000001#ffff4012| +0#0000000#ffffff0@64
|
||||
>h+0#af5f00255&|i|s|t|o|r|y| +0#0000000&|-+0#0000001#ffff4012|1| +0#0000000#ffffff0@64
|
||||
|h+0#af5f00255&|i|s|t|o|r|y| +0#0000000&@1|1+0#0000001#ffff4012|,| +0#0000000#ffffff0@63
|
||||
|h+0#af5f00255&|i|s|t|o|r|y| +0#0000000&|-+0#0000001#ffff4012|1|,| +0#0000000#ffffff0@63
|
||||
|h+0#af5f00255&|i|s|t|o|r|y| +0#0000000&@2|,+0#0000001#ffff4012| |1| +0#0000000#ffffff0@61
|
||||
|h+0#af5f00255&|i|s|t|o|r|y| +0#0000000&@2|,+0#0000001#ffff4012|-|1| +0#0000000#ffffff0@61
|
||||
|h+0#af5f00255&|i|s|t|o|r|y| +0#0000000&@1|1+0#0000001#ffff4012|,| |1| +0#0000000#ffffff0@61
|
||||
|h+0#af5f00255&|i|s|t|o|r|y| +0#0000000&@1|1+0#0000001#ffff4012|,|-|1| +0#0000000#ffffff0@61
|
||||
|h+0#af5f00255&|i|s|t|o|r|y| +0#0000000&|-+0#0000001#ffff4012|1|,| |1| +0#0000000#ffffff0@61
|
||||
|h+0#af5f00255&|i|s|t|o|r|y| +0#0000000&|-+0#0000001#ffff4012|1|,|-|1| +0#0000000#ffffff0@61
|
||||
@75
|
||||
|h+0#af5f00255&|i|s|t|o|r|y| +0#0000000&|1+0#0000001#ffff4012|,| |1| +0#0000000#ffffff0@62
|
||||
|h+0#af5f00255&|i|s|t|o|r|y| +0#0000000&|1+0#0000001#ffff4012| |,|1| +0#0000000#ffffff0@62
|
||||
|h+0#af5f00255&|i|s|t|o|r|y| +0#0000000&|1+0#0000001#ffff4012| |,| |1| +0#0000000#ffffff0@61
|
||||
@75
|
||||
@57|1|9|,|1| @9|1|8|%|
|
||||
@@ -0,0 +1,20 @@
|
||||
| +0&#ffffff0@74
|
||||
@75
|
||||
|"+0#0000e05&| |t|a|i|l| |c|o|m@1|e|n|t|s| |a|n|d| |t|r|a|i|l|i|n|g| |b|a|r| +0#0000000&@42
|
||||
@75
|
||||
|h+0#af5f00255&|i|s|t|o|r|y| +0#0000000&@8||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|.@2|"| +0#0000000&@46
|
||||
>h+0#af5f00255&|i|s|t|o|r|y| +0#0000000&@8|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@49
|
||||
|h+0#af5f00255&|i|s|t|o|r|y| +0#0000000&|a+0#e000e06&|l@1| +0#0000000&@4||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|.@2|"| +0#0000000&@46
|
||||
|h+0#af5f00255&|i|s|t|o|r|y| +0#0000000&|a+0#e000e06&|l@1| +0#0000000&@4|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@49
|
||||
|h+0#af5f00255&|i|s|t|o|r|y| +0#0000000&|1+0#0000001#ffff4012|,|9| +0#0000000#ffffff0@4||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|.@2|"| +0#0000000&@46
|
||||
|h+0#af5f00255&|i|s|t|o|r|y| +0#0000000&|1+0#0000001#ffff4012|,|9| +0#0000000#ffffff0@4|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@49
|
||||
|h+0#af5f00255&|i|s|t|o|r|y| +0#0000000&|a+0#e000e06&|l@1| +0#0000000&|1+0#0000001#ffff4012|,|9| +0#0000000#ffffff0||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|.@2|"| +0#0000000&@46
|
||||
|h+0#af5f00255&|i|s|t|o|r|y| +0#0000000&|a+0#e000e06&|l@1| +0#0000000&|1+0#0000001#ffff4012|,|9| +0#0000000#ffffff0|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@49
|
||||
@75
|
||||
@75
|
||||
|d+0#af5f00255&|e|f| +0#0000000&|V|i|m|9|C|o|n|t|e|x|t|(+0#e000e06&|)| +0#0000000&@57
|
||||
@2|h+0#af5f00255&|i|s|t|o|r|y| +0#0000000&@14|1+0#0000001#ffff4012|,|9| +0#0000000#ffffff0@47
|
||||
@2|h+0#af5f00255&|i|s|t|o|r|y| +0#0000000&|c+0#e000e06&|m|d| +0#0000000&@10|1+0#0000001#ffff4012|,|9| +0#0000000#ffffff0@47
|
||||
@2|h+0#af5f00255&|i|s|t|o|r|y| +0#0000000&|:+0#e000e06&| +0#0000000&@12|1+0#0000001#ffff4012|,|9| +0#0000000#ffffff0@47
|
||||
@2|h+0#af5f00255&|i|s|t|o|r|y| +0#0000000&|s+0#e000e06&|e|a|r|c|h| +0#0000000&@7|1+0#0000001#ffff4012|,|9| +0#0000000#ffffff0@47
|
||||
@57|3|7|,|1| @9|4@1|%|
|
||||
@@ -0,0 +1,20 @@
|
||||
| +0&#ffffff0@1|h+0#af5f00255&|i|s|t|o|r|y| +0#0000000&|s+0#e000e06&|e|a|r|c|h| +0#0000000&@7|1+0#0000001#ffff4012|,|9| +0#0000000#ffffff0@47
|
||||
@2|h+0#af5f00255&|i|s|t|o|r|y| +0#0000000&|/+0#e000e06&| +0#0000000&@12|1+0#0000001#ffff4012|,|9| +0#0000000#ffffff0@47
|
||||
@2|h+0#af5f00255&|i|s|t|o|r|y| +0#0000000&|?+0#e000e06&| +0#0000000&@12|1+0#0000001#ffff4012|,|9| +0#0000000#ffffff0@47
|
||||
@2|h+0#af5f00255&|i|s|t|o|r|y| +0#0000000&|e+0#e000e06&|x|p|r| +0#0000000&@9|1+0#0000001#ffff4012|,|9| +0#0000000#ffffff0@47
|
||||
@2|#+0#0000e05&| |F+0#0000001#ffff4012|I|X|M|E| +0#0000000#ffffff0@65
|
||||
@2>#+0#0000e05&| |h|i|s|t|o|r|y| |=| @10|1|,|9| +0#0000000&@47
|
||||
@2|h+0#af5f00255&|i|s|t|o|r|y| +0#0000000&|i+0#e000e06&|n|p|u|t| +0#0000000&@8|1+0#0000001#ffff4012|,|9| +0#0000000#ffffff0@47
|
||||
@2|h+0#af5f00255&|i|s|t|o|r|y| +0#0000000&|@+0#e000e06&| +0#0000000&@12|1+0#0000001#ffff4012|,|9| +0#0000000#ffffff0@47
|
||||
@2|h+0#af5f00255&|i|s|t|o|r|y| +0#0000000&|d+0#e000e06&|e|b|u|g| +0#0000000&@8|1+0#0000001#ffff4012|,|9| +0#0000000#ffffff0@47
|
||||
@2|h+0#af5f00255&|i|s|t|o|r|y| +0#0000000&|>+0#e000e06&| +0#0000000&@12|1+0#0000001#ffff4012|,|9| +0#0000000#ffffff0@47
|
||||
@2|h+0#af5f00255&|i|s|t|o|r|y| +0#0000000&|a+0#e000e06&|l@1| +0#0000000&@10|1+0#0000001#ffff4012|,|9| +0#0000000#ffffff0@47
|
||||
@75
|
||||
@2|h+0#af5f00255&|i|s|t|o|r|y| +0#0000000&@1|1+0#0000001#ffff4012| +0#0000000#ffffff0@62
|
||||
@2|h+0#af5f00255&|i|s|t|o|r|y| +0#0000000&|-+0#0000001#ffff4012|1| +0#0000000#ffffff0@62
|
||||
@2|h+0#af5f00255&|i|s|t|o|r|y| +0#0000000&@1|1+0#0000001#ffff4012|,| +0#0000000#ffffff0@61
|
||||
@2|h+0#af5f00255&|i|s|t|o|r|y| +0#0000000&|-+0#0000001#ffff4012|1|,| +0#0000000#ffffff0@61
|
||||
@2|h+0#af5f00255&|i|s|t|o|r|y| +0#0000000&@2|,+0#0000001#ffff4012| |1| +0#0000000#ffffff0@59
|
||||
@2|h+0#af5f00255&|i|s|t|o|r|y| +0#0000000&@2|,+0#0000001#ffff4012|-|1| +0#0000000#ffffff0@59
|
||||
@2|h+0#af5f00255&|i|s|t|o|r|y| +0#0000000&@1|1+0#0000001#ffff4012|,| |1| +0#0000000#ffffff0@59
|
||||
@57|5@1|,|3| @9|7|0|%|
|
||||
@@ -0,0 +1,20 @@
|
||||
| +0&#ffffff0@1|h+0#af5f00255&|i|s|t|o|r|y| +0#0000000&@1|1+0#0000001#ffff4012|,| |1| +0#0000000#ffffff0@59
|
||||
@2|h+0#af5f00255&|i|s|t|o|r|y| +0#0000000&@1|1+0#0000001#ffff4012|,|-|1| +0#0000000#ffffff0@59
|
||||
@2|h+0#af5f00255&|i|s|t|o|r|y| +0#0000000&|-+0#0000001#ffff4012|1|,| |1| +0#0000000#ffffff0@59
|
||||
@2|h+0#af5f00255&|i|s|t|o|r|y| +0#0000000&|-+0#0000001#ffff4012|1|,|-|1| +0#0000000#ffffff0@59
|
||||
@75
|
||||
@2>h+0#af5f00255&|i|s|t|o|r|y| +0#0000000&|1+0#0000001#ffff4012|,| |1| +0#0000000#ffffff0@60
|
||||
@2|h+0#af5f00255&|i|s|t|o|r|y| +0#0000000&|1+0#0000001#ffff4012| |,|1| +0#0000000#ffffff0@60
|
||||
@2|h+0#af5f00255&|i|s|t|o|r|y| +0#0000000&|1+0#0000001#ffff4012| |,| |1| +0#0000000#ffffff0@59
|
||||
@75
|
||||
@75
|
||||
@2|#+0#0000e05&| |t|a|i|l| |c|o|m@1|e|n|t|s| |a|n|d| |t|r|a|i|l|i|n|g| |b|a|r| +0#0000000&@40
|
||||
@75
|
||||
@2|h+0#af5f00255&|i|s|t|o|r|y| +0#0000000&@8||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|.@2|"| +0#0000000&@44
|
||||
@2|h+0#af5f00255&|i|s|t|o|r|y| +0#0000000&@8|#+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@47
|
||||
@2|h+0#af5f00255&|i|s|t|o|r|y| +0#0000000&|a+0#e000e06&|l@1| +0#0000000&@4||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|.@2|"| +0#0000000&@44
|
||||
@2|h+0#af5f00255&|i|s|t|o|r|y| +0#0000000&|a+0#e000e06&|l@1| +0#0000000&@4|#+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@47
|
||||
@2|h+0#af5f00255&|i|s|t|o|r|y| +0#0000000&|1+0#0000001#ffff4012|,|9| +0#0000000#ffffff0@4||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|.@2|"| +0#0000000&@44
|
||||
@2|h+0#af5f00255&|i|s|t|o|r|y| +0#0000000&|1+0#0000001#ffff4012|,|9| +0#0000000#ffffff0@4|#+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@47
|
||||
@2|h+0#af5f00255&|i|s|t|o|r|y| +0#0000000&|a+0#e000e06&|l@1| +0#0000000&|1+0#0000001#ffff4012|,|9| +0#0000000#ffffff0||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|.@2|"| +0#0000000&@44
|
||||
@57|7|3|,|3| @9|9|5|%|
|
||||
@@ -0,0 +1,20 @@
|
||||
| +0&#ffffff0@1|h+0#af5f00255&|i|s|t|o|r|y| +0#0000000&|a+0#e000e06&|l@1| +0#0000000&|1+0#0000001#ffff4012|,|9| +0#0000000#ffffff0||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|.@2|"| +0#0000000&@44
|
||||
@2|h+0#af5f00255&|i|s|t|o|r|y| +0#0000000&|a+0#e000e06&|l@1| +0#0000000&|1+0#0000001#ffff4012|,|9| +0#0000000#ffffff0|#+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@47
|
||||
|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@68
|
||||
> @74
|
||||
|~+0#4040ff13&| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
| +0#0000000&@56|8|9|,|0|-|1| @7|B|o|t|
|
||||
@@ -0,0 +1,4 @@
|
||||
-- Issue #18776 (allow spaces in backticked operators)
|
||||
|
||||
main = print (9 ` div ` 4)
|
||||
|
||||
@@ -0,0 +1,89 @@
|
||||
" Vim :history command
|
||||
" VIM_TEST_SETUP hi link vimHistoryRange Todo
|
||||
|
||||
history 1,9
|
||||
history cmd 1,9
|
||||
history : 1,9
|
||||
history search 1,9
|
||||
history / 1,9
|
||||
history ? 1,9
|
||||
history expr 1,9
|
||||
history = 1,9
|
||||
history input 1,9
|
||||
history @ 1,9
|
||||
history debug 1,9
|
||||
history > 1,9
|
||||
history all 1,9
|
||||
|
||||
history 1
|
||||
history -1
|
||||
history 1,
|
||||
history -1,
|
||||
history , 1
|
||||
history ,-1
|
||||
history 1, 1
|
||||
history 1,-1
|
||||
history -1, 1
|
||||
history -1,-1
|
||||
|
||||
history 1, 1
|
||||
history 1 ,1
|
||||
history 1 , 1
|
||||
|
||||
|
||||
" tail comments and trailing bar
|
||||
|
||||
history | echo "..."
|
||||
history " comment
|
||||
history all | echo "..."
|
||||
history all " comment
|
||||
history 1,9 | echo "..."
|
||||
history 1,9 " comment
|
||||
history all 1,9 | echo "..."
|
||||
history all 1,9 " comment
|
||||
|
||||
|
||||
def Vim9Context()
|
||||
history 1,9
|
||||
history cmd 1,9
|
||||
history : 1,9
|
||||
history search 1,9
|
||||
history / 1,9
|
||||
history ? 1,9
|
||||
history expr 1,9
|
||||
# FIXME
|
||||
# history = 1,9
|
||||
history input 1,9
|
||||
history @ 1,9
|
||||
history debug 1,9
|
||||
history > 1,9
|
||||
history all 1,9
|
||||
|
||||
history 1
|
||||
history -1
|
||||
history 1,
|
||||
history -1,
|
||||
history , 1
|
||||
history ,-1
|
||||
history 1, 1
|
||||
history 1,-1
|
||||
history -1, 1
|
||||
history -1,-1
|
||||
|
||||
history 1, 1
|
||||
history 1 ,1
|
||||
history 1 , 1
|
||||
|
||||
|
||||
# tail comments and trailing bar
|
||||
|
||||
history | echo "..."
|
||||
history # comment
|
||||
history all | echo "..."
|
||||
history all # comment
|
||||
history 1,9 | echo "..."
|
||||
history 1,9 # comment
|
||||
history all 1,9 | echo "..."
|
||||
history all 1,9 # comment
|
||||
enddef
|
||||
|
||||
+32
-20
@@ -2,7 +2,7 @@
|
||||
" Language: Vim script
|
||||
" Maintainer: Hirohito Higashi <h.east.727 ATMARK gmail.com>
|
||||
" Doug Kearns <dougkearns@gmail.com>
|
||||
" Last Change: 2025 Nov 17
|
||||
" Last Change: 2025 Nov 26
|
||||
" Former Maintainer: Charles E. Campbell
|
||||
|
||||
" DO NOT CHANGE DIRECTLY.
|
||||
@@ -35,10 +35,10 @@ syn cluster vimCommentGroup contains=vimTodo,@Spell
|
||||
" regular vim commands {{{2
|
||||
" GEN_SYN_VIM: vimCommand normal, START_STR='syn keyword vimCommand contained', END_STR='nextgroup=vimBang'
|
||||
syn keyword vimCommand contained al[l] ar[gs] arga[dd] argd[elete] argded[upe] arge[dit] argg[lobal] argl[ocal] argu[ment] as[cii] b[uffer] bN[ext] ba[ll] bad[d] balt bd[elete] bf[irst] bl[ast] bm[odified] bn[ext] bp[revious] br[ewind] brea[k] buffers bun[load] bw[ipeout] cN[ext] cNf[ile] cabo[ve] cad[dbuffer] cadde[xpr] caddf[ile] caf[ter] cb[uffer] cbe[fore] cbel[ow] cbo[ttom] cc ccl[ose] ce[nter] cex[pr] cf[ile] cfir[st] cg[etfile] cgetb[uffer] cgete[xpr] changes che[ckpath] checkt[ime] chi[story] cl[ist] clip[reset] cla[st] clo[se] cle[arjumps] cn[ext] cnew[er] cnf[ile] col[der] colo[rscheme] comc[lear] comp[iler] con[tinue] cope[n] cp[revious] cpf[ile] cq[uit] cr[ewind] cs[cope] cst[ag] cw[indow] delm[arks] defc[ompile] di[splay] dif[fupdate] diffg[et] diffo[ff] nextgroup=vimBang
|
||||
syn keyword vimCommand contained diffp[atch] diffpu[t] diffs[plit] difft[his] dig[raphs] disa[ssemble] dj[ump] dli[st] dr[op] ds[earch] dsp[lit] e[dit] ea[rlier] em[enu] endfo[r] endt[ry] endw[hile] ene[w] ex exi[t] exu[sage] f[ile] files fin[d] fina[lly] fini[sh] fir[st] fix[del] fo[ld] foldc[lose] foldo[pen] g[lobal] go[to] gu[i] gv[im] h[elp] helpc[lose] helpf[ind] helpt[ags] ha[rdcopy] his[tory] ij[ump] il[ist] int[ro] ip[ut] is[earch] isp[lit] ju[mps] l[ist] lN[ext] lNf[ile] la[st] lab[ove] lan[guage] lad[dexpr] laddb[uffer] laddf[ile] laf[ter] lat[er] lb[uffer] lbe[fore] lbel[ow] lbo[ttom] lcl[ose] lcs[cope] le[ft] lex[pr] lf[ile] lfir[st] lg[etfile] lgetb[uffer] lgete[xpr] lhi[story] ll lla[st] lli[st] lmak[e] lne[xt] lnew[er] lnf[ile] lo[adview] lockv[ar] nextgroup=vimBang
|
||||
syn keyword vimCommand contained lol[der] lop[en] lp[revious] lpf[ile] lr[ewind] lt[ag] lw[indow] ls m[ove] marks mes[sages] mk[exrc] mks[ession] mksp[ell] mkv[imrc] mkvie[w] mod[e] n[ext] nb[key] nbc[lose] nbs[tart] noh[lsearch] nu[mber] o[pen] ol[dfiles] on[ly] opt[ions] ow[nsyntax] p[rint] pa[ckadd] packl[oadall] pb[uffer] pc[lose] ped[it] po[p] pp[op] pre[serve] prev[ious] ps[earch] pt[ag] ptN[ext] ptf[irst] ptj[ump] ptl[ast] ptn[ext] ptp[revious] ptr[ewind] pts[elect] pu[t] pw[d] q[uit] quita[ll] qa[ll] r[ead] rec[over] red[o] redr[aw] redraws[tatus] redrawt[abline] redrawtabp[anel] reg[isters] res[ize] ret[ab] rew[ind] ri[ght] ru[ntime] rund[o] rv[iminfo] sN[ext] sa[rgument] sal[l] sav[eas] sb[uffer] sbN[ext] sba[ll] sbf[irst] sbl[ast] sbm[odified] sbn[ext] nextgroup=vimBang
|
||||
syn keyword vimCommand contained sbp[revious] sbr[ewind] scr[iptnames] scripte[ncoding] scriptv[ersion] scs[cope] setf[iletype] sf[ind] sfir[st] sh[ell] sim[alt] sig[n] sla[st] sn[ext] so[urce] spe[llgood] spelld[ump] spelli[nfo] spellr[epall] spellra[re] spellu[ndo] spellw[rong] spr[evious] sre[wind] st[op] sta[g] star[tinsert] startg[replace] startr[eplace] stopi[nsert] stj[ump] sts[elect] sun[hide] sus[pend] sv[iew] sync[bind] smi[le] t tN[ext] ta[g] tags tabc[lose] tabe[dit] tabf[ind] tabfir[st] tabm[ove] tabl[ast] tabn[ext] tabnew tabo[nly] tabp[revious] tabN[ext] tabr[ewind] tabs te[aroff] tf[irst] tj[ump] tl[ast] tn[ext] tp[revious] tr[ewind] try ts[elect] u[ndo] undoj[oin] undol[ist] unh[ide] up[date] v[global] ve[rsion] vi[sual] vie[w] viu[sage] vne[w] nextgroup=vimBang
|
||||
syn keyword vimCommand contained vs[plit] w[rite] wN[ext] wa[ll] wi[nsize] winp[os] wl[restore] wn[ext] wp[revious] wq wqa[ll] wu[ndo] wv[iminfo] x[it] xa[ll] xr[estore] y[ank] z dl dell delel deletl deletel dp dep delp delep deletp deletep a i nextgroup=vimBang
|
||||
syn keyword vimCommand contained diffp[atch] diffpu[t] diffs[plit] difft[his] dig[raphs] disa[ssemble] dj[ump] dli[st] dr[op] ds[earch] dsp[lit] e[dit] ea[rlier] em[enu] endfo[r] endt[ry] endw[hile] ene[w] ex exi[t] exu[sage] f[ile] files fin[d] fina[lly] fini[sh] fir[st] fix[del] fo[ld] foldc[lose] foldo[pen] g[lobal] go[to] gu[i] gv[im] h[elp] helpc[lose] helpf[ind] helpt[ags] ha[rdcopy] ij[ump] il[ist] int[ro] ip[ut] is[earch] isp[lit] ju[mps] l[ist] lN[ext] lNf[ile] la[st] lab[ove] lan[guage] lad[dexpr] laddb[uffer] laddf[ile] laf[ter] lat[er] lb[uffer] lbe[fore] lbel[ow] lbo[ttom] lcl[ose] lcs[cope] le[ft] lex[pr] lf[ile] lfir[st] lg[etfile] lgetb[uffer] lgete[xpr] lhi[story] ll lla[st] lli[st] lmak[e] lne[xt] lnew[er] lnf[ile] lo[adview] lockv[ar] lol[der] nextgroup=vimBang
|
||||
syn keyword vimCommand contained lop[en] lp[revious] lpf[ile] lr[ewind] lt[ag] lw[indow] ls m[ove] marks mes[sages] mk[exrc] mks[ession] mksp[ell] mkv[imrc] mkvie[w] mod[e] n[ext] nb[key] nbc[lose] nbs[tart] noh[lsearch] nu[mber] o[pen] ol[dfiles] on[ly] opt[ions] ow[nsyntax] p[rint] pa[ckadd] packl[oadall] pb[uffer] pc[lose] ped[it] po[p] pp[op] pre[serve] prev[ious] ps[earch] pt[ag] ptN[ext] ptf[irst] ptj[ump] ptl[ast] ptn[ext] ptp[revious] ptr[ewind] pts[elect] pu[t] pw[d] q[uit] quita[ll] qa[ll] r[ead] rec[over] red[o] redr[aw] redraws[tatus] redrawt[abline] redrawtabp[anel] reg[isters] res[ize] ret[ab] rew[ind] ri[ght] ru[ntime] rund[o] rv[iminfo] sN[ext] sa[rgument] sal[l] sav[eas] sb[uffer] sbN[ext] sba[ll] sbf[irst] sbl[ast] sbm[odified] sbn[ext] sbp[revious] nextgroup=vimBang
|
||||
syn keyword vimCommand contained sbr[ewind] scr[iptnames] scripte[ncoding] scriptv[ersion] scs[cope] setf[iletype] sf[ind] sfir[st] sh[ell] sim[alt] sig[n] sla[st] sn[ext] so[urce] spe[llgood] spelld[ump] spelli[nfo] spellr[epall] spellra[re] spellu[ndo] spellw[rong] spr[evious] sre[wind] st[op] sta[g] star[tinsert] startg[replace] startr[eplace] stopi[nsert] stj[ump] sts[elect] sun[hide] sus[pend] sv[iew] sync[bind] smi[le] t tN[ext] ta[g] tags tabc[lose] tabe[dit] tabf[ind] tabfir[st] tabm[ove] tabl[ast] tabn[ext] tabnew tabo[nly] tabp[revious] tabN[ext] tabr[ewind] tabs te[aroff] tf[irst] tj[ump] tl[ast] tn[ext] tp[revious] tr[ewind] try ts[elect] u[ndo] undoj[oin] undol[ist] unh[ide] up[date] v[global] ve[rsion] vi[sual] vie[w] viu[sage] vne[w] vs[plit] w[rite] nextgroup=vimBang
|
||||
syn keyword vimCommand contained wN[ext] wa[ll] wi[nsize] winp[os] wl[restore] wn[ext] wp[revious] wq wqa[ll] wu[ndo] wv[iminfo] x[it] xa[ll] xr[estore] y[ank] z dl dell delel deletl deletel dp dep delp delep deletp deletep a i nextgroup=vimBang
|
||||
|
||||
" Lower priority :syn-match to allow for :command/function() distinction
|
||||
" :chdir is handled specially elsewhere
|
||||
@@ -65,12 +65,12 @@ syn keyword vimStdPlugin contained Arguments Asm Break Cfilter Clear Continue Di
|
||||
" vimOptions are caught only when contained in a vimSet {{{2
|
||||
" GEN_SYN_VIM: vimOption normal, START_STR='syn keyword vimOption contained', END_STR='skipwhite nextgroup=vimSetEqual,vimSetMod'
|
||||
syn keyword vimOption contained al aleph ari allowrevins ambw ambiwidth arab arabic arshape arabicshape acd autochdir ac autocomplete acl autocompletedelay act autocompletetimeout ai autoindent ar autoread asd autoshelldir aw autowrite awa autowriteall bg background bs backspace bk backup bkc backupcopy bdir backupdir bex backupext bsk backupskip bdlay balloondelay beval ballooneval bevalterm balloonevalterm bexpr balloonexpr bo belloff bin binary bomb brk breakat bri breakindent briopt breakindentopt bsdir browsedir bh bufhidden bl buflisted bt buftype cmp casemap cdh cdhome cd cdpath cedit ccv charconvert chi chistory cin cindent cink cinkeys cino cinoptions cinsd cinscopedecls cinw cinwords cb clipboard cpm clipmethod ch cmdheight cwh cmdwinheight cc colorcolumn skipwhite nextgroup=vimSetEqual,vimSetMod
|
||||
syn keyword vimOption contained co columns com comments cms commentstring cp compatible cpt complete cfu completefunc cfc completefuzzycollect cia completeitemalign cot completeopt cpp completepopup csl completeslash cto completetimeout cocu concealcursor cole conceallevel cf confirm ci copyindent cpo cpoptions cm cryptmethod cspc cscopepathcomp csprg cscopeprg csqf cscopequickfix csre cscoperelative cst cscopetag csto cscopetagorder csverb cscopeverbose crb cursorbind cuc cursorcolumn cul cursorline culopt cursorlineopt debug def define deco delcombine dict dictionary diff dia diffanchors dex diffexpr dip diffopt dg digraph dir directory dy display ead eadirection ed edcompatible emo emoji enc encoding eof endoffile eol endofline ea equalalways ep equalprg eb errorbells skipwhite nextgroup=vimSetEqual,vimSetMod
|
||||
syn keyword vimOption contained ef errorfile efm errorformat ek esckeys ei eventignore eiw eventignorewin et expandtab ex exrc fenc fileencoding fencs fileencodings ff fileformat ffs fileformats fic fileignorecase ft filetype fcs fillchars ffu findfunc fixeol fixendofline fcl foldclose fdc foldcolumn fen foldenable fde foldexpr fdi foldignore fdl foldlevel fdls foldlevelstart fmr foldmarker fdm foldmethod fml foldminlines fdn foldnestmax fdo foldopen fdt foldtext fex formatexpr flp formatlistpat fo formatoptions fp formatprg fs fsync gd gdefault gfm grepformat gp grepprg gcr guicursor gfn guifont gfs guifontset gfw guifontwide ghr guiheadroom gli guiligatures go guioptions guipty gtl guitablabel gtt guitabtooltip hf helpfile hh helpheight hlg helplang hid hidden skipwhite nextgroup=vimSetEqual,vimSetMod
|
||||
syn keyword vimOption contained hl highlight hi history hk hkmap hkp hkmapp hls hlsearch icon iconstring ic ignorecase imaf imactivatefunc imak imactivatekey imc imcmdline imd imdisable imi iminsert ims imsearch imsf imstatusfunc imst imstyle inc include inex includeexpr is incsearch inde indentexpr indk indentkeys inf infercase im insertmode ise isexpand isf isfname isi isident isk iskeyword isp isprint js joinspaces jop jumpoptions key kmp keymap km keymodel kpc keyprotocol kp keywordprg lmap langmap lm langmenu lnr langnoremap lrm langremap ls laststatus lz lazyredraw lhi lhistory lbr linebreak lines lsp linespace lisp lop lispoptions lw lispwords list lcs listchars lpl loadplugins luadll magic mef makeef menc makeencoding mp makeprg mps matchpairs mat matchtime skipwhite nextgroup=vimSetEqual,vimSetMod
|
||||
syn keyword vimOption contained mco maxcombine mfd maxfuncdepth mmd maxmapdepth mm maxmem mmp maxmempattern mmt maxmemtot msc maxsearchcount mis menuitems mopt messagesopt msm mkspellmem ml modeline mle modelineexpr mls modelines ma modifiable mod modified more mouse mousef mousefocus mh mousehide mousem mousemodel mousemev mousemoveevent mouses mouseshape mouset mousetime mzq mzquantum mzschemedll mzschemegcdll nf nrformats nu number nuw numberwidth ofu omnifunc odev opendevice opfunc operatorfunc ost osctimeoutlen pp packpath para paragraphs paste pt pastetoggle pex patchexpr pm patchmode pa path perldll pi preserveindent pvh previewheight pvp previewpopup pvw previewwindow pdev printdevice penc printencoding pexpr printexpr pfn printfont pheader printheader skipwhite nextgroup=vimSetEqual,vimSetMod
|
||||
syn keyword vimOption contained pmbcs printmbcharset pmbfn printmbfont popt printoptions prompt pb pumborder ph pumheight pmw pummaxwidth pw pumwidth pythondll pythonhome pythonthreedll pythonthreehome pyx pyxversion qftf quickfixtextfunc qe quoteescape ro readonly rdt redrawtime re regexpengine rnu relativenumber remap rop renderoptions report rs restorescreen ri revins rl rightleft rlc rightleftcmd rubydll ru ruler ruf rulerformat rtp runtimepath scr scroll scb scrollbind scf scrollfocus sj scrolljump so scrolloff sbo scrollopt sect sections secure sel selection slm selectmode ssop sessionoptions sh shell shcf shellcmdflag sp shellpipe shq shellquote srr shellredir ssl shellslash stmp shelltemp st shelltype sxe shellxescape sxq shellxquote sr shiftround sw shiftwidth skipwhite nextgroup=vimSetEqual,vimSetMod
|
||||
syn keyword vimOption contained shm shortmess sn shortname sbr showbreak sc showcmd sloc showcmdloc sft showfulltag sm showmatch smd showmode stal showtabline stpl showtabpanel ss sidescroll siso sidescrolloff scl signcolumn scs smartcase si smartindent sta smarttab sms smoothscroll sts softtabstop spell spc spellcapcheck spf spellfile spl spelllang spo spelloptions sps spellsuggest sb splitbelow spk splitkeep spr splitright sol startofline stl statusline su suffixes sua suffixesadd swf swapfile sws swapsync swb switchbuf smc synmaxcol syn syntax tcl tabclose tal tabline tpm tabpagemax tpl tabpanel tplo tabpanelopt ts tabstop tbs tagbsearch tc tagcase tfu tagfunc tl taglength tr tagrelative tag tags tgst tagstack tcldll term tbidi termbidi tenc termencoding tgc termguicolors skipwhite nextgroup=vimSetEqual,vimSetMod
|
||||
syn keyword vimOption contained co columns com comments cms commentstring cp compatible cpt complete cfu completefunc cia completeitemalign cot completeopt cpp completepopup csl completeslash cto completetimeout cocu concealcursor cole conceallevel cf confirm ci copyindent cpo cpoptions cm cryptmethod cspc cscopepathcomp csprg cscopeprg csqf cscopequickfix csre cscoperelative cst cscopetag csto cscopetagorder csverb cscopeverbose crb cursorbind cuc cursorcolumn cul cursorline culopt cursorlineopt debug def define deco delcombine dict dictionary diff dia diffanchors dex diffexpr dip diffopt dg digraph dir directory dy display ead eadirection ed edcompatible emo emoji enc encoding eof endoffile eol endofline ea equalalways ep equalprg eb errorbells ef errorfile skipwhite nextgroup=vimSetEqual,vimSetMod
|
||||
syn keyword vimOption contained efm errorformat ek esckeys ei eventignore eiw eventignorewin et expandtab ex exrc fenc fileencoding fencs fileencodings ff fileformat ffs fileformats fic fileignorecase ft filetype fcs fillchars ffu findfunc fixeol fixendofline fcl foldclose fdc foldcolumn fen foldenable fde foldexpr fdi foldignore fdl foldlevel fdls foldlevelstart fmr foldmarker fdm foldmethod fml foldminlines fdn foldnestmax fdo foldopen fdt foldtext fex formatexpr flp formatlistpat fo formatoptions fp formatprg fs fsync gd gdefault gfm grepformat gp grepprg gcr guicursor gfn guifont gfs guifontset gfw guifontwide ghr guiheadroom gli guiligatures go guioptions guipty gtl guitablabel gtt guitabtooltip hf helpfile hh helpheight hlg helplang hid hidden hl highlight skipwhite nextgroup=vimSetEqual,vimSetMod
|
||||
syn keyword vimOption contained hi history hk hkmap hkp hkmapp hls hlsearch icon iconstring ic ignorecase imaf imactivatefunc imak imactivatekey imc imcmdline imd imdisable imi iminsert ims imsearch imsf imstatusfunc imst imstyle inc include inex includeexpr is incsearch inde indentexpr indk indentkeys inf infercase im insertmode ise isexpand isf isfname isi isident isk iskeyword isp isprint js joinspaces jop jumpoptions key kmp keymap km keymodel kpc keyprotocol kp keywordprg lmap langmap lm langmenu lnr langnoremap lrm langremap ls laststatus lz lazyredraw lhi lhistory lbr linebreak lines lsp linespace lisp lop lispoptions lw lispwords list lcs listchars lpl loadplugins luadll magic mef makeef menc makeencoding mp makeprg mps matchpairs mat matchtime mco maxcombine skipwhite nextgroup=vimSetEqual,vimSetMod
|
||||
syn keyword vimOption contained mfd maxfuncdepth mmd maxmapdepth mm maxmem mmp maxmempattern mmt maxmemtot msc maxsearchcount mis menuitems mopt messagesopt msm mkspellmem ml modeline mle modelineexpr mls modelines ma modifiable mod modified more mouse mousef mousefocus mh mousehide mousem mousemodel mousemev mousemoveevent mouses mouseshape mouset mousetime mzq mzquantum mzschemedll mzschemegcdll nf nrformats nu number nuw numberwidth ofu omnifunc odev opendevice opfunc operatorfunc ost osctimeoutlen pp packpath para paragraphs paste pt pastetoggle pex patchexpr pm patchmode pa path perldll pi preserveindent pvh previewheight pvp previewpopup pvw previewwindow pdev printdevice penc printencoding pexpr printexpr pfn printfont pheader printheader pmbcs printmbcharset skipwhite nextgroup=vimSetEqual,vimSetMod
|
||||
syn keyword vimOption contained pmbfn printmbfont popt printoptions prompt pb pumborder ph pumheight pmw pummaxwidth pw pumwidth pythondll pythonhome pythonthreedll pythonthreehome pyx pyxversion qftf quickfixtextfunc qe quoteescape ro readonly rdt redrawtime re regexpengine rnu relativenumber remap rop renderoptions report rs restorescreen ri revins rl rightleft rlc rightleftcmd rubydll ru ruler ruf rulerformat rtp runtimepath scr scroll scb scrollbind scf scrollfocus sj scrolljump so scrolloff sbo scrollopt sect sections secure sel selection slm selectmode ssop sessionoptions sh shell shcf shellcmdflag sp shellpipe shq shellquote srr shellredir ssl shellslash stmp shelltemp st shelltype sxe shellxescape sxq shellxquote sr shiftround sw shiftwidth shm shortmess skipwhite nextgroup=vimSetEqual,vimSetMod
|
||||
syn keyword vimOption contained sn shortname sbr showbreak sc showcmd sloc showcmdloc sft showfulltag sm showmatch smd showmode stal showtabline stpl showtabpanel ss sidescroll siso sidescrolloff scl signcolumn scs smartcase si smartindent sta smarttab sms smoothscroll sts softtabstop spell spc spellcapcheck spf spellfile spl spelllang spo spelloptions sps spellsuggest sb splitbelow spk splitkeep spr splitright sol startofline stl statusline su suffixes sua suffixesadd swf swapfile sws swapsync swb switchbuf smc synmaxcol syn syntax tcl tabclose tal tabline tpm tabpagemax tpl tabpanel tplo tabpanelopt ts tabstop tbs tagbsearch tc tagcase tfu tagfunc tl taglength tr tagrelative tag tags tgst tagstack tcldll term tbidi termbidi tenc termencoding tgc termguicolors skipwhite nextgroup=vimSetEqual,vimSetMod
|
||||
syn keyword vimOption contained twk termwinkey twsl termwinscroll tws termwinsize twt termwintype terse ta textauto tx textmode tw textwidth tsr thesaurus tsrfu thesaurusfunc top tildeop to timeout tm timeoutlen title titlelen titleold titlestring tb toolbar tbis toolbariconsize ttimeout ttm ttimeoutlen tbi ttybuiltin tf ttyfast ttym ttymouse tsl ttyscroll tty ttytype udir undodir udf undofile ul undolevels ur undoreload uc updatecount ut updatetime vsts varsofttabstop vts vartabstop vbs verbose vfile verbosefile vdir viewdir vop viewoptions vi viminfo vif viminfofile ve virtualedit vb visualbell warn wiv weirdinvert ww whichwrap wc wildchar wcm wildcharm wig wildignore wic wildignorecase wmnu wildmenu wim wildmode wop wildoptions wak winaltkeys wcr wincolor wi window skipwhite nextgroup=vimSetEqual,vimSetMod
|
||||
syn keyword vimOption contained wfb winfixbuf wfh winfixheight wfw winfixwidth wh winheight wmh winminheight wmw winminwidth winptydll wiw winwidth wse wlseat wst wlsteal wtm wltimeoutlen wrap wm wrapmargin ws wrapscan write wa writeany wb writebackup wd writedelay xtermcodes skipwhite nextgroup=vimSetEqual,vimSetMod
|
||||
|
||||
@@ -104,14 +104,14 @@ syn match vimOption contained "t_k;"
|
||||
" vimOptions: These are the variable names {{{2
|
||||
" GEN_SYN_VIM: vimOption normal variable, START_STR='syn keyword vimOptionVarName contained', END_STR=''
|
||||
syn keyword vimOptionVarName contained al aleph ari allowrevins ambw ambiwidth arab arabic arshape arabicshape acd autochdir ac autocomplete acl autocompletedelay act autocompletetimeout ai autoindent ar autoread asd autoshelldir aw autowrite awa autowriteall bg background bs backspace bk backup bkc backupcopy bdir backupdir bex backupext bsk backupskip bdlay balloondelay beval ballooneval bevalterm balloonevalterm bexpr balloonexpr bo belloff bin binary bomb brk breakat bri breakindent briopt breakindentopt bsdir browsedir bh bufhidden bl buflisted bt buftype cmp casemap cdh cdhome cd cdpath cedit ccv charconvert chi chistory cin cindent cink cinkeys cino cinoptions cinsd cinscopedecls cinw cinwords cb clipboard cpm clipmethod ch cmdheight cwh cmdwinheight cc colorcolumn
|
||||
syn keyword vimOptionVarName contained co columns com comments cms commentstring cp compatible cpt complete cfu completefunc cfc completefuzzycollect cia completeitemalign cot completeopt cpp completepopup csl completeslash cto completetimeout cocu concealcursor cole conceallevel cf confirm ci copyindent cpo cpoptions cm cryptmethod cspc cscopepathcomp csprg cscopeprg csqf cscopequickfix csre cscoperelative cst cscopetag csto cscopetagorder csverb cscopeverbose crb cursorbind cuc cursorcolumn cul cursorline culopt cursorlineopt debug def define deco delcombine dict dictionary diff dia diffanchors dex diffexpr dip diffopt dg digraph dir directory dy display ead eadirection ed edcompatible emo emoji enc encoding eof endoffile eol endofline ea equalalways ep equalprg
|
||||
syn keyword vimOptionVarName contained eb errorbells ef errorfile efm errorformat ek esckeys ei eventignore eiw eventignorewin et expandtab ex exrc fenc fileencoding fencs fileencodings ff fileformat ffs fileformats fic fileignorecase ft filetype fcs fillchars ffu findfunc fixeol fixendofline fcl foldclose fdc foldcolumn fen foldenable fde foldexpr fdi foldignore fdl foldlevel fdls foldlevelstart fmr foldmarker fdm foldmethod fml foldminlines fdn foldnestmax fdo foldopen fdt foldtext fex formatexpr flp formatlistpat fo formatoptions fp formatprg fs fsync gd gdefault gfm grepformat gp grepprg gcr guicursor gfn guifont gfs guifontset gfw guifontwide ghr guiheadroom gli guiligatures go guioptions guipty gtl guitablabel gtt guitabtooltip hf helpfile hh helpheight
|
||||
syn keyword vimOptionVarName contained hlg helplang hid hidden hl highlight hi history hk hkmap hkp hkmapp hls hlsearch icon iconstring ic ignorecase imaf imactivatefunc imak imactivatekey imc imcmdline imd imdisable imi iminsert ims imsearch imsf imstatusfunc imst imstyle inc include inex includeexpr is incsearch inde indentexpr indk indentkeys inf infercase im insertmode ise isexpand isf isfname isi isident isk iskeyword isp isprint js joinspaces jop jumpoptions key kmp keymap km keymodel kpc keyprotocol kp keywordprg lmap langmap lm langmenu lnr langnoremap lrm langremap ls laststatus lz lazyredraw lhi lhistory lbr linebreak lines lsp linespace lisp lop lispoptions lw lispwords list lcs listchars lpl loadplugins luadll magic mef makeef menc makeencoding mp makeprg
|
||||
syn keyword vimOptionVarName contained mps matchpairs mat matchtime mco maxcombine mfd maxfuncdepth mmd maxmapdepth mm maxmem mmp maxmempattern mmt maxmemtot msc maxsearchcount mis menuitems mopt messagesopt msm mkspellmem ml modeline mle modelineexpr mls modelines ma modifiable mod modified more mouse mousef mousefocus mh mousehide mousem mousemodel mousemev mousemoveevent mouses mouseshape mouset mousetime mzq mzquantum mzschemedll mzschemegcdll nf nrformats nu number nuw numberwidth ofu omnifunc odev opendevice opfunc operatorfunc ost osctimeoutlen pp packpath para paragraphs paste pt pastetoggle pex patchexpr pm patchmode pa path perldll pi preserveindent pvh previewheight pvp previewpopup pvw previewwindow pdev printdevice penc printencoding pexpr printexpr
|
||||
syn keyword vimOptionVarName contained pfn printfont pheader printheader pmbcs printmbcharset pmbfn printmbfont popt printoptions prompt pb pumborder ph pumheight pmw pummaxwidth pw pumwidth pythondll pythonhome pythonthreedll pythonthreehome pyx pyxversion qftf quickfixtextfunc qe quoteescape ro readonly rdt redrawtime re regexpengine rnu relativenumber remap rop renderoptions report rs restorescreen ri revins rl rightleft rlc rightleftcmd rubydll ru ruler ruf rulerformat rtp runtimepath scr scroll scb scrollbind scf scrollfocus sj scrolljump so scrolloff sbo scrollopt sect sections secure sel selection slm selectmode ssop sessionoptions sh shell shcf shellcmdflag sp shellpipe shq shellquote srr shellredir ssl shellslash stmp shelltemp st shelltype sxe shellxescape
|
||||
syn keyword vimOptionVarName contained sxq shellxquote sr shiftround sw shiftwidth shm shortmess sn shortname sbr showbreak sc showcmd sloc showcmdloc sft showfulltag sm showmatch smd showmode stal showtabline stpl showtabpanel ss sidescroll siso sidescrolloff scl signcolumn scs smartcase si smartindent sta smarttab sms smoothscroll sts softtabstop spell spc spellcapcheck spf spellfile spl spelllang spo spelloptions sps spellsuggest sb splitbelow spk splitkeep spr splitright sol startofline stl statusline su suffixes sua suffixesadd swf swapfile sws swapsync swb switchbuf smc synmaxcol syn syntax tcl tabclose tal tabline tpm tabpagemax tpl tabpanel tplo tabpanelopt ts tabstop tbs tagbsearch tc tagcase tfu tagfunc tl taglength tr tagrelative tag tags tgst tagstack
|
||||
syn keyword vimOptionVarName contained tcldll term tbidi termbidi tenc termencoding tgc termguicolors twk termwinkey twsl termwinscroll tws termwinsize twt termwintype terse ta textauto tx textmode tw textwidth tsr thesaurus tsrfu thesaurusfunc top tildeop to timeout tm timeoutlen title titlelen titleold titlestring tb toolbar tbis toolbariconsize ttimeout ttm ttimeoutlen tbi ttybuiltin tf ttyfast ttym ttymouse tsl ttyscroll tty ttytype udir undodir udf undofile ul undolevels ur undoreload uc updatecount ut updatetime vsts varsofttabstop vts vartabstop vbs verbose vfile verbosefile vdir viewdir vop viewoptions vi viminfo vif viminfofile ve virtualedit vb visualbell warn wiv weirdinvert ww whichwrap wc wildchar wcm wildcharm wig wildignore wic wildignorecase wmnu wildmenu
|
||||
syn keyword vimOptionVarName contained wim wildmode wop wildoptions wak winaltkeys wcr wincolor wi window wfb winfixbuf wfh winfixheight wfw winfixwidth wh winheight wmh winminheight wmw winminwidth winptydll wiw winwidth wse wlseat wst wlsteal wtm wltimeoutlen wrap wm wrapmargin ws wrapscan write wa writeany wb writebackup wd writedelay xtermcodes
|
||||
syn keyword vimOptionVarName contained co columns com comments cms commentstring cp compatible cpt complete cfu completefunc cia completeitemalign cot completeopt cpp completepopup csl completeslash cto completetimeout cocu concealcursor cole conceallevel cf confirm ci copyindent cpo cpoptions cm cryptmethod cspc cscopepathcomp csprg cscopeprg csqf cscopequickfix csre cscoperelative cst cscopetag csto cscopetagorder csverb cscopeverbose crb cursorbind cuc cursorcolumn cul cursorline culopt cursorlineopt debug def define deco delcombine dict dictionary diff dia diffanchors dex diffexpr dip diffopt dg digraph dir directory dy display ead eadirection ed edcompatible emo emoji enc encoding eof endoffile eol endofline ea equalalways ep equalprg eb errorbells ef errorfile
|
||||
syn keyword vimOptionVarName contained efm errorformat ek esckeys ei eventignore eiw eventignorewin et expandtab ex exrc fenc fileencoding fencs fileencodings ff fileformat ffs fileformats fic fileignorecase ft filetype fcs fillchars ffu findfunc fixeol fixendofline fcl foldclose fdc foldcolumn fen foldenable fde foldexpr fdi foldignore fdl foldlevel fdls foldlevelstart fmr foldmarker fdm foldmethod fml foldminlines fdn foldnestmax fdo foldopen fdt foldtext fex formatexpr flp formatlistpat fo formatoptions fp formatprg fs fsync gd gdefault gfm grepformat gp grepprg gcr guicursor gfn guifont gfs guifontset gfw guifontwide ghr guiheadroom gli guiligatures go guioptions guipty gtl guitablabel gtt guitabtooltip hf helpfile hh helpheight hlg helplang hid hidden hl highlight
|
||||
syn keyword vimOptionVarName contained hi history hk hkmap hkp hkmapp hls hlsearch icon iconstring ic ignorecase imaf imactivatefunc imak imactivatekey imc imcmdline imd imdisable imi iminsert ims imsearch imsf imstatusfunc imst imstyle inc include inex includeexpr is incsearch inde indentexpr indk indentkeys inf infercase im insertmode ise isexpand isf isfname isi isident isk iskeyword isp isprint js joinspaces jop jumpoptions key kmp keymap km keymodel kpc keyprotocol kp keywordprg lmap langmap lm langmenu lnr langnoremap lrm langremap ls laststatus lz lazyredraw lhi lhistory lbr linebreak lines lsp linespace lisp lop lispoptions lw lispwords list lcs listchars lpl loadplugins luadll magic mef makeef menc makeencoding mp makeprg mps matchpairs mat matchtime
|
||||
syn keyword vimOptionVarName contained mco maxcombine mfd maxfuncdepth mmd maxmapdepth mm maxmem mmp maxmempattern mmt maxmemtot msc maxsearchcount mis menuitems mopt messagesopt msm mkspellmem ml modeline mle modelineexpr mls modelines ma modifiable mod modified more mouse mousef mousefocus mh mousehide mousem mousemodel mousemev mousemoveevent mouses mouseshape mouset mousetime mzq mzquantum mzschemedll mzschemegcdll nf nrformats nu number nuw numberwidth ofu omnifunc odev opendevice opfunc operatorfunc ost osctimeoutlen pp packpath para paragraphs paste pt pastetoggle pex patchexpr pm patchmode pa path perldll pi preserveindent pvh previewheight pvp previewpopup pvw previewwindow pdev printdevice penc printencoding pexpr printexpr pfn printfont pheader printheader
|
||||
syn keyword vimOptionVarName contained pmbcs printmbcharset pmbfn printmbfont popt printoptions prompt pb pumborder ph pumheight pmw pummaxwidth pw pumwidth pythondll pythonhome pythonthreedll pythonthreehome pyx pyxversion qftf quickfixtextfunc qe quoteescape ro readonly rdt redrawtime re regexpengine rnu relativenumber remap rop renderoptions report rs restorescreen ri revins rl rightleft rlc rightleftcmd rubydll ru ruler ruf rulerformat rtp runtimepath scr scroll scb scrollbind scf scrollfocus sj scrolljump so scrolloff sbo scrollopt sect sections secure sel selection slm selectmode ssop sessionoptions sh shell shcf shellcmdflag sp shellpipe shq shellquote srr shellredir ssl shellslash stmp shelltemp st shelltype sxe shellxescape sxq shellxquote sr shiftround
|
||||
syn keyword vimOptionVarName contained sw shiftwidth shm shortmess sn shortname sbr showbreak sc showcmd sloc showcmdloc sft showfulltag sm showmatch smd showmode stal showtabline stpl showtabpanel ss sidescroll siso sidescrolloff scl signcolumn scs smartcase si smartindent sta smarttab sms smoothscroll sts softtabstop spell spc spellcapcheck spf spellfile spl spelllang spo spelloptions sps spellsuggest sb splitbelow spk splitkeep spr splitright sol startofline stl statusline su suffixes sua suffixesadd swf swapfile sws swapsync swb switchbuf smc synmaxcol syn syntax tcl tabclose tal tabline tpm tabpagemax tpl tabpanel tplo tabpanelopt ts tabstop tbs tagbsearch tc tagcase tfu tagfunc tl taglength tr tagrelative tag tags tgst tagstack tcldll term tbidi termbidi
|
||||
syn keyword vimOptionVarName contained tenc termencoding tgc termguicolors twk termwinkey twsl termwinscroll tws termwinsize twt termwintype terse ta textauto tx textmode tw textwidth tsr thesaurus tsrfu thesaurusfunc top tildeop to timeout tm timeoutlen title titlelen titleold titlestring tb toolbar tbis toolbariconsize ttimeout ttm ttimeoutlen tbi ttybuiltin tf ttyfast ttym ttymouse tsl ttyscroll tty ttytype udir undodir udf undofile ul undolevels ur undoreload uc updatecount ut updatetime vsts varsofttabstop vts vartabstop vbs verbose vfile verbosefile vdir viewdir vop viewoptions vi viminfo vif viminfofile ve virtualedit vb visualbell warn wiv weirdinvert ww whichwrap wc wildchar wcm wildcharm wig wildignore wic wildignorecase wmnu wildmenu wim wildmode wop wildoptions
|
||||
syn keyword vimOptionVarName contained wak winaltkeys wcr wincolor wi window wfb winfixbuf wfh winfixheight wfw winfixwidth wh winheight wmh winminheight wmw winminwidth winptydll wiw winwidth wse wlseat wst wlsteal wtm wltimeoutlen wrap wm wrapmargin ws wrapscan write wa writeany wb writebackup wd writedelay xtermcodes
|
||||
" GEN_SYN_VIM: vimOption term output code variable, START_STR='syn keyword vimOptionVarName contained', END_STR=''
|
||||
syn keyword vimOptionVarName contained t_AB t_AF t_AU t_AL t_al t_bc t_BE t_BD t_cd t_ce t_Ce t_CF t_cl t_cm t_Co t_CS t_Cs t_cs t_CV t_da t_db t_DL t_dl t_ds t_Ds t_EC t_EI t_fs t_fd t_fe t_GP t_IE t_IS t_ke t_ks t_le t_mb t_md t_me t_mr t_ms t_nd t_op t_RF t_RB t_RC t_RI t_Ri t_RK t_RS t_RT t_RV t_Sb t_SC t_se t_Sf t_SH t_SI t_Si t_so t_SR t_sr t_ST t_Te t_te t_TE t_ti t_TI t_Ts t_ts t_u7 t_ue t_us t_Us t_ut t_vb t_ve t_vi t_VS t_vs t_WP t_WS t_XM t_xn t_xs t_ZH t_ZR t_8f t_8b t_8u t_xo
|
||||
syn keyword vimOptionVarName contained t_F1 t_F2 t_F3 t_F4 t_F5 t_F6 t_F7 t_F8 t_F9 t_k1 t_K1 t_k2 t_k3 t_K3 t_k4 t_K4 t_k5 t_K5 t_k6 t_K6 t_k7 t_K7 t_k8 t_K8 t_k9 t_K9 t_KA t_kb t_kB t_KB t_KC t_kd t_kD t_KD t_KE t_KF t_KG t_kh t_KH t_kI t_KI t_KJ t_KK t_kl t_KL t_kN t_kP t_kr t_ku
|
||||
@@ -302,7 +302,7 @@ syn match vimNumber '\<0z\%(\x\x\)\+\%(\.\%(\x\x\)\+\)*' skipwhite nextgroup=@vi
|
||||
syn case match
|
||||
|
||||
" All vimCommands are contained by vimIsCommand. {{{2
|
||||
syn cluster vimCmdList contains=vimAbb,vimAddress,vimAt,vimAutocmd,vimAugroup,vimBehave,vimBreakadd,vimBreakdel,vimBreaklist,vimCall,vimCatch,vimCd,vimCommandModifier,vimConst,vimDoautocmd,vimDebug,vimDebuggreedy,vimDef,vimDefFold,vimDefer,vimDelcommand,vimDelFunction,vimDoCommand,@vimEcho,vimElse,vimEnddef,vimEndfunction,vimEndif,vimEval,vimExecute,vimIsCommand,vimExtCmd,vimExFilter,vimExMark,vimFiletype,vimFor,vimFunction,vimFunctionFold,vimGrep,vimGrepAdd,vimGlobal,vimHelpgrep,vimHighlight,vimImport,vimLet,vimLoadkeymap,vimLockvar,vimMake,vimMap,vimMark,vimMatch,vimNotFunc,vimNormal,vimProfdel,vimProfile,vimPrompt,vimRedir,vimSet,vimSleep,vimSort,vimSyntax,vimSyntime,vimSynColor,vimSynLink,vimTerminal,vimThrow,vimUniq,vimUnlet,vimUnlockvar,vimUnmap,vimUserCmd,vimVimgrep,vimVimgrepadd,vimWincmd,vimMenu,vimMenutranslate,@vim9CmdList,@vimExUserCmdList,vimLua,vimMzScheme,vimPerl,vimPython,vimPython3,vimPythonX,vimRuby,vimTcl
|
||||
syn cluster vimCmdList contains=vimAbb,vimAddress,vimAt,vimAutocmd,vimAugroup,vimBehave,vimBreakadd,vimBreakdel,vimBreaklist,vimCall,vimCatch,vimCd,vimCommandModifier,vimConst,vimDoautocmd,vimDebug,vimDebuggreedy,vimDef,vimDefFold,vimDefer,vimDelcommand,vimDelFunction,vimDoCommand,@vimEcho,vimElse,vimEnddef,vimEndfunction,vimEndif,vimEval,vimExecute,vimIsCommand,vimExtCmd,vimExFilter,vimExMark,vimFiletype,vimFor,vimFunction,vimFunctionFold,vimGrep,vimGrepAdd,vimGlobal,vimHelpgrep,vimHighlight,vimHistory,vimImport,vimLet,vimLoadkeymap,vimLockvar,vimMake,vimMap,vimMark,vimMatch,vimNotFunc,vimNormal,vimProfdel,vimProfile,vimPrompt,vimRedir,vimSet,vimSleep,vimSort,vimSyntax,vimSyntime,vimSynColor,vimSynLink,vimTerminal,vimThrow,vimUniq,vimUnlet,vimUnlockvar,vimUnmap,vimUserCmd,vimVimgrep,vimVimgrepadd,vimWincmd,vimMenu,vimMenutranslate,@vim9CmdList,@vimExUserCmdList,vimLua,vimMzScheme,vimPerl,vimPython,vimPython3,vimPythonX,vimRuby,vimTcl
|
||||
syn cluster vim9CmdList contains=vim9Abstract,vim9Class,vim9Const,vim9Enum,vim9Export,vim9Final,vim9For,vim9Interface,vim9Type,vim9Var
|
||||
syn match vimCmdSep "\\\@1<!|" skipwhite nextgroup=@vimCmdList,vimSubst1,@vimFunc
|
||||
syn match vimCmdSep ":\+" skipwhite nextgroup=@vimCmdList,vimSubst1
|
||||
@@ -446,6 +446,16 @@ endif
|
||||
syn keyword vimFTCmd contained filet[ype]
|
||||
syn keyword vimFTOption contained detect indent off on plugin
|
||||
|
||||
" History {{{2
|
||||
" =======
|
||||
" TODO: handle Vim9 "history" variable assignment (like :wincmd, but a common variable name)
|
||||
syn keyword vimHistory his[tory] skipwhite nextgroup=vimHistoryName,vimHistoryRange,vimCmdSep,vimComment,vim9Comment
|
||||
syn keyword vimHistoryName contained c[md] s[earch] e[xpr] i[nput] d[ebug] a[ll] skipwhite nextgroup=vimHistoryRange,vimCmdSep,vimComment,vim9Comment
|
||||
syn match vimHistoryName contained "[:/?=@>]" skipwhite nextgroup=vimHistoryRange,vimCmdSep,vimComment,vim9Comment
|
||||
syn match vimHistoryRange contained "-\=\<\d\+\>\%(\s*,\)\=" skipwhite nextgroup=vimCmdSep,vimComment,vim9Comment
|
||||
syn match vimHistoryRange contained ",\s*-\=\d\+\>" skipwhite nextgroup=vimCmdSep,vimComment,vim9Comment
|
||||
syn match vimHistoryRange contained "-\=\<\d\+\s*,\s*-\=\d\+\>" skipwhite nextgroup=vimCmdSep,vimComment,vim9Comment
|
||||
|
||||
" Import {{{2
|
||||
" ======
|
||||
syn keyword vimImportAutoload contained autoload skipwhite nextgroup=vimImportFilename
|
||||
@@ -2578,6 +2588,8 @@ if !exists("skip_vim_syntax_inits")
|
||||
hi def link vimHiStartStop vimHiTerm
|
||||
hi def link vimHiTerm Type
|
||||
hi def link vimHLGroup vimGroup
|
||||
hi def link vimHistory vimCommand
|
||||
hi def link vimHistoryName Special
|
||||
hi def link vimImport vimCommand
|
||||
hi def link vimImportAutoload Special
|
||||
hi def link vimImportAs vimImport
|
||||
|
||||
@@ -111,12 +111,12 @@ REFERENCE: [Expression Register](quote=)
|
||||
|
||||
1. Move the cursor to the line below marked ✓
|
||||
|
||||
2. yank the zeroth line, then inspect registers with `:reg`{vim} `<ENTER>`{normal}
|
||||
2. Yank the line starting with "0.", then inspect registers with `:reg`{vim} `<ENTER>`{normal}
|
||||
|
||||
3. delete line 0. with `"cdd`{normal}, then inspect registers
|
||||
3. Delete line 0 with `"cdd`{normal}, then inspect registers
|
||||
(Where do you expect line 0 to be?)
|
||||
|
||||
4. continue deleting each successive line, inspecting `:reg`{vim} as you go
|
||||
4. Continue deleting each successive line, inspecting `:reg`{vim} as you go
|
||||
|
||||
NOTE: You should notice that old full-line deletions move down the list
|
||||
as new full-line deletions are added
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
===============================================================================
|
||||
= B i e n v e n i d o a l t u t o r d e V I M - Versión 1.7 =
|
||||
===============================================================================
|
||||
= CAPÍTULO UNO =
|
||||
===============================================================================
|
||||
|
||||
Vim es un editor muy potente que dispone de muchos comandos, demasiados
|
||||
@@ -994,10 +996,15 @@ NOTA: El completado funciona con muchos comandos. Solo pulse CTRL-D o
|
||||
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Aquí concluye el tutor de Vim. Está pensado para dar una visión breve del
|
||||
Aquí concluye el tutor de Vim. Considera continuar con Capítulo 2, que trata
|
||||
sobre registros, marcas y el uso de objetos de texto.
|
||||
|
||||
Está pensado para dar una visión breve del
|
||||
editor Vim, lo suficiente para permitirle usar el editor de forma bastante
|
||||
sencilla. Está muy lejos de estar completo pues Vim tiene muchísimos más
|
||||
comandos. Lea el siguiente manual de usuario: ":help user-manual".
|
||||
comandos.
|
||||
|
||||
Lee el siguiente manual de usuario: ":help user-manual".
|
||||
|
||||
Para lecturas y estudios posteriores se recomienda el libro:
|
||||
Vim - Vi Improved - de Steve Oualline
|
||||
|
||||
@@ -115,12 +115,12 @@ REFERENCE: Expression Register :h quote=
|
||||
|
||||
1. Move the cursor to the line below marked --->
|
||||
|
||||
2. yank the zeroth line, then inspect registers with :reg<ENTER>
|
||||
2. Yank the zeroth line, then inspect registers with :reg<ENTER>
|
||||
|
||||
3. delete line 0. with "cdd, then inspect registers
|
||||
3. Delete line 0. with "cdd, then inspect registers
|
||||
(Where do you expect line 0 to be?)
|
||||
|
||||
4. continue deleting each successive line, inspecting :reg as you go
|
||||
4. Continue deleting each successive line, inspecting :reg as you go
|
||||
|
||||
NOTE: You should notice that old full-line deletions move down the list
|
||||
as new full-line deletions are added
|
||||
|
||||
@@ -0,0 +1,322 @@
|
||||
===============================================================================
|
||||
= B i e n v e n i d o a l t u t o r d e V I M - Versión 1.7 =
|
||||
===============================================================================
|
||||
= CAPÍTULO DOS =
|
||||
===============================================================================
|
||||
|
||||
Hic Sunt Dracones: si esta es tu primera vez usando vim y tienes la
|
||||
intención de aprovechar el capítulo de introducción, simplemente escribe
|
||||
:q!<ENTER> y ejecuta vimtutor para empezar por el Capítulo 1.
|
||||
|
||||
El tiempo aproxiomado para completar este capítulo es de 8-10 minutos,
|
||||
dependiendo de cuanto tiempo dediques a experimentar.
|
||||
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Lección 2.1.1: DOMINAR LOS OBJETOS DE TEXTO
|
||||
|
||||
** Operar en bloques de texto lógicos con precisión usando objetos de texto. **
|
||||
|
||||
1. Practica las operaciones con palabras:
|
||||
- Situa el cursor en cualquier palabra de la línea inferior
|
||||
- Escribe diw para eliminar la palabra DENTRO donde está el cursor
|
||||
(la palabra sin el espacio circundante)
|
||||
- Escribe daw para eliminar UNA PALABRA
|
||||
(incluyendo espacios en blanco al final)
|
||||
- Prueba con otras operaciones: ciw (cambiar), yiw (copiar),
|
||||
gqiw (formato)
|
||||
|
||||
---> Practica aquí: "Vim's", (text_object), y aquí palabras 'poderosas'.
|
||||
|
||||
2. Trabaja con contenido entre paréntesis, corchetes o llaves:
|
||||
- Situa el cursor dentro de cualquier par de los símbolos () {} [] <>
|
||||
- Escribe di( o dib (eliminar dentro de los símbolos)
|
||||
- Escribe da( o dab (eliminar alrededor de los símbolos)
|
||||
- Prueba lo mismo con i"/a" para las comillas
|
||||
- Prueba con it/at para etiquetas HTML/XML
|
||||
|
||||
---> Ejemplos de prueba: con {llaves}, [corchetes], <ángulos> y "comillas".
|
||||
|
||||
3. Manipulación de párrafos y frases:
|
||||
- Utiliza dip para eliminar el párrafo donde se encuentra el cursor
|
||||
- Utiliza vap para seleccionar visualmente el párrafo entero
|
||||
- Prueba das para eliminar una frase
|
||||
(funciona entre símbolos de puntuación .!?)
|
||||
|
||||
4. Combinaciones avanzadas:
|
||||
- ciwnuevo<ESC> - Cambiar la palabra actual por "nuevo"
|
||||
- yss"<ESC> - Encerrar la línea completa entre comillas
|
||||
(similar al comlemento vim-surround)
|
||||
- gUit - Convertir a mayúsculas el contenido de la
|
||||
etiqueta HTML donde esté el cursor
|
||||
- va"p - Seleccionar el texto entre comillas y pegarlo sobre él
|
||||
|
||||
---> Ejercicio final: (Modificar "el" texto) al [aplicar {varias} operaciones]<
|
||||
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Lección 2.1.2: LOS REGISTROS NOMINALES
|
||||
|
||||
|
||||
** Almacenar dos palabras copiadas de manera consecutiva y después pegarlas **
|
||||
|
||||
1. Mueve el cursor a la línea inferior marcada con --->
|
||||
|
||||
2. Situa el cursor en cualquier parte de la palabra 'Edward' y escribe "ayiw
|
||||
|
||||
REGLA NEMOTÉCNICA: dentro del registo (") llamado (a) (y)copia
|
||||
(i)entera la (w)palabra
|
||||
|
||||
3. Mueve el cursor a la palabra 'galletas' (ft o 2fg o $1b o /lle<ENTER>)
|
||||
y escribe "byiw
|
||||
|
||||
4. Situa el cursos en cualquier parte de la palabra 'Vince'
|
||||
y escribe ciw<CTRL-R>a<ESC>
|
||||
|
||||
REGLA NEMOTÉCNICA: (c)ambia el (i)interior de la (w)palabra
|
||||
por el <contenido del (r)egistro> llamado (a)
|
||||
|
||||
5. Navega hasta cualquier punto de la palabra 'tarta'
|
||||
y escribe ciw<CTRL-R>b<ESC>
|
||||
|
||||
---> a) Edward se encargará de las raciones de galletas
|
||||
b) En esta función, Vince solo tentrá poderes sobre la tarta
|
||||
|
||||
NOTA: Eliminar también funciona dentro de los registros, por ejemplo:
|
||||
"sdiw eliminará la palabra bajo el cursor en el registro s.
|
||||
|
||||
REFERENCIAS: Registros :h registers
|
||||
Registros nominales :h quotea
|
||||
Movimiento :h motion.txt<ENTER> /inner<ENTER>
|
||||
CTRL-R :h insert<ENTER> /CTRL-R<ENTER>
|
||||
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Lección 2.1.3: EL REGISTRO DE EXPRESIÓN
|
||||
|
||||
|
||||
** Insertar los resultados de los cálculos sobre la marcha **
|
||||
|
||||
1. Situa el cursor sobre la línea inferior marcada con --->
|
||||
|
||||
2. Navega hasta cualquier parte del número que se muestra
|
||||
|
||||
3. Escribe ciw<CTRL-R> seguido por =60*60*24<ENTER>
|
||||
|
||||
4. En la línea siguiente, entra en modo insertar y añade la fecha actual con
|
||||
<CTRL-R> seguido por =system('date')<ENTER>
|
||||
|
||||
NOTA: Todas las llamadas al sistema dependen del sistema operativo utilizado.
|
||||
Por ejemplo en Windows hay que usar system('date /t') o :r!date /t
|
||||
|
||||
---> He olvidado el número exacto de segundos en un días ¿son 84600?
|
||||
La fecha actual es:
|
||||
|
||||
NOTA: se puede obtener el mismo resultado con :pu=system('date')
|
||||
o, usando menos pulsaciones de teclas :r!date
|
||||
|
||||
REFERENCIA: Registro de expresión :h quote=
|
||||
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Lección 2.1.4: LOS REGISTROS NUMERADOS
|
||||
|
||||
|
||||
** Pulsa yy y dd para ser testigo de sus efectos en los registros **
|
||||
|
||||
1. Situa el cursor sobre la línea inferior marcada con --->
|
||||
|
||||
2. Copia la línea marcada con 0,
|
||||
después revisa los registros mediante :reg<ENTER>
|
||||
|
||||
3. Elimina la línea 0 mediante "cdd, después revisa los registros
|
||||
(¿Dónde esperas que esté la línea 0?)
|
||||
|
||||
4. Continúa eliminado cada línea sucesivamente,
|
||||
inspencciona :reg mientras lo haces
|
||||
|
||||
NOTA: Deberías comprobar cómo las líneas completas eliminadas
|
||||
van bajando en la lista, cada vez que nuevas líneas eliminadas se añaden
|
||||
|
||||
5. Ahora (p)ega los siguiente registros en orden; 0, 7, 4, 2, 8. Así: "7p
|
||||
|
||||
---> 0. Este
|
||||
9. tambaleante
|
||||
8. secreto
|
||||
7. es
|
||||
6. en
|
||||
5. eje
|
||||
4. un
|
||||
3. guerra
|
||||
2. mensaje
|
||||
1. tributo
|
||||
|
||||
NOTA: La eliminación completa de líneas (dd) persisten más en los registros
|
||||
numerados que las copias completas de lína o las eliminaciones que
|
||||
implican pequeños movimientos
|
||||
|
||||
REFERENCIA: Registros numerados :h quote0
|
||||
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Lección 2.1.5: REGISTROS ESPECIALES
|
||||
|
||||
** Utilizar el portapappeles del sistema y los registros de agujero negro **
|
||||
** para una edición avanzada **
|
||||
|
||||
Nota: El uso del portapapeles del sistema requiere de bibliotecas X11/Wayland
|
||||
en sistemas Linux Y una compilación de Vim con la opción "+clipboard"
|
||||
(normalmente una compilación enorme). Se puede comprobar mediante
|
||||
":version" o ":echo has('clipboard_working')"
|
||||
|
||||
1. Registros del portapapeles + and * :
|
||||
- "+y - Copiar al portapapeles del sistema
|
||||
(Por ejemplo: "+yy para copiar en el portapapeles la línea actual)
|
||||
- "+p - Pegar del portapapeles del sistema
|
||||
- "* es la selección principal de X11 (el botón central),
|
||||
"+ es el portapapeles
|
||||
|
||||
---> Prueba: "+yy después pega la línea en otra aplicación
|
||||
mediante Ctrl-V o Cmd+V
|
||||
|
||||
2. El registro de agujero negro _ para texto descartado:
|
||||
- "_daw - Elimina una palabra sin guardarla en ningún registro
|
||||
- Útil cuando no quieres sobreescribir el registro predeterminado "
|
||||
- Ten en cuenta que utiliza el objeto de texto "una Palabra" visto
|
||||
en la lección anterior
|
||||
lession
|
||||
- "_dd - Elimina una línea sin guardarla
|
||||
- "_dap - Elimina un párrafo sin almacenarlo
|
||||
- Combinado con un conteo: 3"_dw
|
||||
|
||||
---> Practica: Utiliza "_diw en cualquier palabra para eliminarla sin afectar
|
||||
al historial de copiado
|
||||
|
||||
3. Combinado con unas selecciones visuales:
|
||||
- Selecciona un texto con V y después pulsa "+y
|
||||
- Para pegarlo desde el portapapeles en el modo insertar pulsa: <CTRL-R>+
|
||||
- Intenta abrir otra aplicación y péga el texto desde el portapapeles
|
||||
|
||||
4. Recuerda:
|
||||
- Los registros del portapapeles funcionan a través de diferentes
|
||||
instancias de Vim
|
||||
- El registro del portapapelesno siempre está funcional
|
||||
- El agujero negro previene el sobreescribir accidentalmente un registro
|
||||
- El registro predeterminado " todavía está disponible para una acción
|
||||
normal de copado/pegado
|
||||
- Los registros nominales (a-z) permanecen privados para cada sesión de Vim
|
||||
|
||||
5. Problemas con el portapapeles:
|
||||
- Comprueba que tu Vim lo admite mediante :echo has('clipboard_working')
|
||||
- Si el comando anterior devuelve un 1 significa que está disponible,
|
||||
Si devuelve un 0, significa que esa compilación de Vim no lo admite.
|
||||
- En Linux, se puede necesitar el paquete vim-gtk o vim-x11 package
|
||||
(comprueba :version output)
|
||||
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Lección 2.1.6: LA BELLEZA DE LAS MARCAS
|
||||
|
||||
** El programador que rehuye de la aritmética **
|
||||
|
||||
NOTA: Un dilema común cuando se está creando código es mover grandes porciones
|
||||
de código.
|
||||
La siguiente técnica ayuda a evitar los cálculos asociados a los números
|
||||
de línea con operaciones como "a147d o :945,1091d a o o incluso peor
|
||||
i<CTRL-R> seguido por =1091-945<ENTER>
|
||||
|
||||
1. Mueve el cursor hasta la línea inferior marcada con --->
|
||||
|
||||
2. Ve a la primera línea de la función marcada con ma
|
||||
|
||||
NOTA: ¡La posición exacta dentro de la línea NO es importante!
|
||||
|
||||
3. Navega hasta el final de la línea y después hasta el final del
|
||||
bloque del código mediante $%
|
||||
|
||||
4. Elimina el bloque y guárdalo dentro del registro a mediante "ad'a
|
||||
|
||||
REGLA NEMOTÉCNICA: dentro del registro(") llamado (a) coloca lo que he
|
||||
(d)eliminado desde el cursor hasta la LÍNEA que
|
||||
contiene la marca(') (a)
|
||||
|
||||
5. Pega el contenido del bloque entre BBB y CCC mediante "ap
|
||||
|
||||
NOTA: practica esta operación varias veces hasta que tengas soltura ma$%"ad'a
|
||||
|
||||
---> AAA
|
||||
function itGotRealBigRealFast() {
|
||||
if ( somethingIsTrue ) {
|
||||
doIt()
|
||||
}
|
||||
// La taxonomía de nuestra función ha cambiado y
|
||||
// Ya no tiene sentido alfabético en su posición actual
|
||||
|
||||
// imagina que aquí hay cientos de líneas de código
|
||||
|
||||
// de manera ingenua podrías navegar hasta el comienzo y hasta el final y
|
||||
// apuntar o recordar cada número de la línea
|
||||
}
|
||||
BBB
|
||||
CCC
|
||||
|
||||
NOTA: Las marcas y los registros no comparten sus nombres. Así pues el
|
||||
registro a es completamente independiente de la marca a.
|
||||
Esto no se cumple con los registros y las macros.
|
||||
|
||||
REFERENCIA: Marcas :h marks
|
||||
Movimientos con las marcas :h mark-motions
|
||||
(diferencia entre ' y `)
|
||||
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Lección 2.1 RESUMEN
|
||||
|
||||
1. Los objetos de texto ofrecen precisión a la hora de editar:
|
||||
- iw/aw - dentro/alrededor de una palabra
|
||||
- i[/a[ - dentro/alrededor de un paréntesis, corchete, etc
|
||||
- i"/a" - dentro/alrededor de unas comillas quotes
|
||||
- it/at - dentro/alrededor de una etiqueta
|
||||
- ip/ap - dentro/alrededor de un párrafo
|
||||
- is/as - dentro/alrededor de una frase
|
||||
|
||||
2. Para almacenar (copiar o eliminar) un texto dentro y volverlo a utilizar
|
||||
(pegarlo), existen un total de 26 registros nominales (a-z)
|
||||
3. Copiar una palabra complete con el cursor situado en cualquierparte
|
||||
dentro de esa palabra mediante: yiw
|
||||
4. Cambiar una palabra completa con el cursor en cualquier parte de esa
|
||||
palabra mediante: ciw
|
||||
5. Insertar texto directamente desde los registros en el modo insertar
|
||||
mediante el comando: <CTRL-R>a
|
||||
|
||||
6. Insertar los resultado de una simple operación aritmética
|
||||
en el modo insertar mediante: <CTRL-R> seguido por =60*60<ENTER>
|
||||
7. Insertar los resultado de una llamada del sistema en el modo insertar
|
||||
mediante: <CTRL-R> seguido por =system('ls -1')<ENTER>
|
||||
|
||||
8. Inspeccionar el contenido de los registros con :reg
|
||||
9. Aprender el destino final al que va a parar la eliminación de
|
||||
una línea complete: dd en los registros numerados.
|
||||
Por ejemplo: descendiendo desde el registro 1 al 9. i.e. descending from register 1 - 9.
|
||||
Ten en cuenta cómo las eliminaciones completas de las líneas son preservadas en
|
||||
los registros numerado y permanecen más que cualquier otra operación realizada
|
||||
10. Aprender cual es el destino final de todos los objetos que copiamos
|
||||
en los registros numerados y cómo son de efímeros
|
||||
|
||||
11. Ubicar marcas desde el modo de comandos m[a-zA-Z0-9]
|
||||
12. Mover de manera inteligente una línea a una marca con '
|
||||
|
||||
13. Registros especiales:
|
||||
- "+/"* - Portapapeles del sistema (depende el sistema operativo utilizado)
|
||||
- "_ - El agujero negro (descarta texto eliminado/copiado)
|
||||
- "= - Registro de expresión
|
||||
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Con esto concluye el capítulo dos del Tutor de Vim.
|
||||
Este es un trabajo en progreso.
|
||||
|
||||
Este capítulo fue traducido por Paul D. Parker y Christian Brabandt.
|
||||
Traducido por Victorhck.
|
||||
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
@@ -2480,9 +2480,7 @@ free_buf_options(
|
||||
ga_clear(&buf->b_kmap_ga);
|
||||
#endif
|
||||
clear_string_option(&buf->b_p_com);
|
||||
#ifdef FEAT_FOLDING
|
||||
clear_string_option(&buf->b_p_cms);
|
||||
#endif
|
||||
clear_string_option(&buf->b_p_nf);
|
||||
#ifdef FEAT_SYN_HL
|
||||
clear_string_option(&buf->b_p_syn);
|
||||
|
||||
+16
-38
@@ -100,10 +100,6 @@ typedef struct {
|
||||
|
||||
clip_wl_selection_T regular;
|
||||
clip_wl_selection_T primary;
|
||||
|
||||
// Array of file descriptors of clients we are sending data to. These should
|
||||
// be polled for POLLOUT and have the respective callback called for each.
|
||||
garray_T write_fds;
|
||||
} clip_wl_T;
|
||||
|
||||
// Mime types we support sending and receiving
|
||||
@@ -172,22 +168,6 @@ skip:
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
clip_init_single(Clipboard_T *cb, int can_use)
|
||||
{
|
||||
// No need to init again if cbd is already available
|
||||
if (can_use && cb->available)
|
||||
return;
|
||||
|
||||
cb->available = can_use;
|
||||
cb->owned = FALSE;
|
||||
cb->start.lnum = 0;
|
||||
cb->start.col = 0;
|
||||
cb->end.lnum = 0;
|
||||
cb->end.col = 0;
|
||||
cb->state = SELECT_CLEARED;
|
||||
}
|
||||
|
||||
/*
|
||||
* Check whether the VIsual area has changed, and if so try to become the owner
|
||||
* of the selection, and free any old converted selection we may still have
|
||||
@@ -2432,7 +2412,7 @@ adjust_clip_reg(int *rp)
|
||||
if ((!clip_star.available && *rp == '*') ||
|
||||
(!clip_plus.available && *rp == '+'))
|
||||
{
|
||||
msg_warn_missing_clipboard(!clip_plus.available, !clip_star.available);
|
||||
msg_warn_missing_clipboard();
|
||||
*rp = 0;
|
||||
}
|
||||
}
|
||||
@@ -2878,6 +2858,8 @@ clip_init_wayland(void)
|
||||
if (wayland_ct == NULL)
|
||||
return FAIL;
|
||||
|
||||
memset(&clip_wl, 0, sizeof(clip_wl));
|
||||
|
||||
clip_wl.seat = vwl_connection_get_seat(wayland_ct, (char *)p_wse);
|
||||
|
||||
if (clip_wl.seat == NULL)
|
||||
@@ -2895,12 +2877,14 @@ clip_init_wayland(void)
|
||||
clip_wl.regular.available = true;
|
||||
else
|
||||
{
|
||||
// Shouldn't happen
|
||||
vwl_data_device_manager_discard(clip_wl.regular.manager);
|
||||
clip_wl.regular.manager = NULL;
|
||||
return FAIL;
|
||||
}
|
||||
}
|
||||
|
||||
// If we still don't support the primary selection, find one for it
|
||||
// If we still don't support the primary selection, try finding one for it
|
||||
// specifically.
|
||||
if (!(supported & WAYLAND_SELECTION_PRIMARY))
|
||||
{
|
||||
@@ -2921,10 +2905,12 @@ clip_init_wayland(void)
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (clip_wl.regular.available)
|
||||
|
||||
if (clip_wl.regular.available && !clip_wl.primary.available)
|
||||
{
|
||||
// The protocol supports both regular and primary selections, just use
|
||||
// one data device manager and one data device.
|
||||
// one data device manager and one data device. Or the primary selection
|
||||
// is not supported, make it point to the regular selection instead.
|
||||
clip_wl.primary.available = true;
|
||||
clip_wl.primary.manager = clip_wl.regular.manager;
|
||||
clip_wl.primary.device = clip_wl.regular.device;
|
||||
@@ -3439,7 +3425,7 @@ clip_wl_owner_exists(Clipboard_T *cbd)
|
||||
* depending on the order of values in str.
|
||||
*/
|
||||
static clipmethod_T
|
||||
get_clipmethod(char_u *str, bool *plus UNUSED, bool *star UNUSED)
|
||||
get_clipmethod(char_u *str)
|
||||
{
|
||||
int len = (int)STRLEN(str) + 1;
|
||||
char_u *buf = alloc(len);
|
||||
@@ -3464,11 +3450,7 @@ get_clipmethod(char_u *str, bool *plus UNUSED, bool *star UNUSED)
|
||||
{
|
||||
#ifdef FEAT_WAYLAND_CLIPBOARD
|
||||
if (clip_wl.regular.available || clip_wl.primary.available)
|
||||
{
|
||||
method = CLIPMETHOD_WAYLAND;
|
||||
*plus = clip_wl.regular.available;
|
||||
*star = clip_wl.primary.available;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
@@ -3489,7 +3471,6 @@ get_clipmethod(char_u *str, bool *plus UNUSED, bool *star UNUSED)
|
||||
// xterm_dpy will be set to NULL.
|
||||
xterm_update();
|
||||
method = CLIPMETHOD_X11;
|
||||
*plus = *star = TRUE;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
@@ -3538,8 +3519,7 @@ clipmethod_to_str(clipmethod_T method)
|
||||
char *
|
||||
choose_clipmethod(void)
|
||||
{
|
||||
bool regular = false, primary = false;
|
||||
clipmethod_T method = get_clipmethod(p_cpm, ®ular, &primary);
|
||||
clipmethod_T method = get_clipmethod(p_cpm);
|
||||
|
||||
if (method == CLIPMETHOD_FAIL)
|
||||
return e_invalid_argument;
|
||||
@@ -3573,10 +3553,8 @@ choose_clipmethod(void)
|
||||
// If we have a clipmethod that works now, then initialize clipboard
|
||||
else if (clipmethod == CLIPMETHOD_NONE && method != CLIPMETHOD_NONE)
|
||||
{
|
||||
clip_init_single(&clip_plus, regular);
|
||||
clip_init_single(&clip_star, primary);
|
||||
clip_plus.did_warn = false;
|
||||
clip_star.did_warn = false;
|
||||
clip_init(TRUE);
|
||||
did_warn_clipboard = false;
|
||||
}
|
||||
// Disown clipboard if we are switching to a new method
|
||||
else if (clipmethod != CLIPMETHOD_NONE && method != clipmethod)
|
||||
@@ -3594,8 +3572,8 @@ lose_sel_exit:
|
||||
if (!gui.in_use)
|
||||
#endif
|
||||
{
|
||||
clip_init_single(&clip_plus, regular);
|
||||
clip_init_single(&clip_star, primary);
|
||||
clip_init(TRUE);
|
||||
did_warn_clipboard = false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -1365,9 +1365,9 @@ EXTERN char e_illegal_character_after_chr[]
|
||||
#ifdef FEAT_FOLDING
|
||||
EXTERN char e_comma_required[]
|
||||
INIT(= N_("E536: Comma required"));
|
||||
#endif
|
||||
EXTERN char e_commentstring_must_be_empty_or_contain_str[]
|
||||
INIT(= N_("E537: 'commentstring' must be empty or contain %s"));
|
||||
#endif
|
||||
EXTERN char e_pattern_found_in_every_line_str[]
|
||||
INIT(= N_("E538: Pattern found in every line: %s"));
|
||||
EXTERN char e_illegal_character_str[]
|
||||
|
||||
@@ -5151,7 +5151,9 @@ f_feedkeys(typval_T *argvars, typval_T *rettv UNUSED)
|
||||
++ex_normal_busy;
|
||||
++in_feedkeys;
|
||||
}
|
||||
++allow_osc_key;
|
||||
exec_normal(TRUE, lowlevel, TRUE);
|
||||
--allow_osc_key;
|
||||
if (!dangerous)
|
||||
{
|
||||
--ex_normal_busy;
|
||||
|
||||
@@ -1977,6 +1977,9 @@ vgetc(void)
|
||||
}
|
||||
c = TO_SPECIAL(c2, c);
|
||||
|
||||
if (allow_osc_key == 0 && c == K_OSC)
|
||||
continue;
|
||||
|
||||
// K_ESC is used to avoid ambiguity with the single Esc
|
||||
// character that might be the start of an escape sequence.
|
||||
// Convert it back to a single Esc here.
|
||||
@@ -2452,6 +2455,7 @@ getchar_common(typval_T *argvars, typval_T *rettv, int allow_number)
|
||||
|
||||
++no_mapping;
|
||||
++allow_keys;
|
||||
++allow_osc_key;
|
||||
if (!simplify)
|
||||
++no_reduce_keys;
|
||||
for (;;)
|
||||
@@ -2479,6 +2483,7 @@ getchar_common(typval_T *argvars, typval_T *rettv, int allow_number)
|
||||
}
|
||||
--no_mapping;
|
||||
--allow_keys;
|
||||
--allow_osc_key;
|
||||
if (!simplify)
|
||||
--no_reduce_keys;
|
||||
|
||||
|
||||
@@ -2071,6 +2071,9 @@ EXTERN char_u showcmd_buf[SHOWCMD_BUFLEN];
|
||||
EXTERN int p_tgc_set INIT(= FALSE);
|
||||
#endif
|
||||
|
||||
// If we've already warned about missing/unavailable clipboard
|
||||
EXTERN bool did_warn_clipboard INIT(= FALSE);
|
||||
|
||||
#ifdef FEAT_CLIPBOARD
|
||||
EXTERN clipmethod_T clipmethod INIT(= CLIPMETHOD_NONE);
|
||||
#endif
|
||||
@@ -2083,6 +2086,9 @@ EXTERN char *wayland_display_name INIT(= NULL);
|
||||
// Special mime type used to identify selection events that came from us setting
|
||||
// the selection. Is in format of "application/x-vim-instance-<pid>" where <pid>
|
||||
// is the PID of the Vim process. Set in main.c
|
||||
//
|
||||
// This is more reliable than just checking if our data source is non-NULL, as
|
||||
// that may be subject to data races in the Wayland protocol.
|
||||
EXTERN char wayland_vim_special_mime[
|
||||
sizeof("application/x-vim-instance-") + NUMBUFLEN - 1]; // Includes NUL
|
||||
|
||||
@@ -2122,3 +2128,6 @@ INIT(= CLIENTSERVER_METHOD_NONE);
|
||||
// Path to socket of last client that communicated with us
|
||||
EXTERN char_u *client_socket INIT(= NULL);
|
||||
#endif
|
||||
|
||||
// If the <xOSC> key should be propogated from vgetc()
|
||||
EXTERN int allow_osc_key INIT(= 0);
|
||||
|
||||
+60
-78
@@ -137,11 +137,8 @@ static compl_T *compl_shown_match = NULL;
|
||||
static compl_T *compl_old_match = NULL;
|
||||
|
||||
// list used to store the compl_T which have the max score
|
||||
// used for completefuzzycollect
|
||||
static compl_T **compl_best_matches = NULL;
|
||||
static int compl_num_bests = 0;
|
||||
// inserted a longest when completefuzzycollect enabled
|
||||
static int compl_cfc_longest_ins = FALSE;
|
||||
|
||||
// After using a cursor key <Enter> selects a match in the popup menu,
|
||||
// otherwise it inserts a line break.
|
||||
@@ -827,19 +824,12 @@ ins_compl_add_infercase(
|
||||
}
|
||||
|
||||
/*
|
||||
* Check if ctrl_x_mode has been configured in 'completefuzzycollect'
|
||||
* Check if fuzzy matching is enabled
|
||||
*/
|
||||
static int
|
||||
cfc_has_mode(void)
|
||||
cot_fuzzy(void)
|
||||
{
|
||||
if (ctrl_x_mode_normal() || ctrl_x_mode_dictionary())
|
||||
return (cfc_flags & CFC_KEYWORD) != 0;
|
||||
else if (ctrl_x_mode_files())
|
||||
return (cfc_flags & CFC_FILES) != 0;
|
||||
else if (ctrl_x_mode_whole_line())
|
||||
return (cfc_flags & CFC_WHOLELINE) != 0;
|
||||
else
|
||||
return FALSE;
|
||||
return (get_cot_flags() & COT_FUZZY) != 0;
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -848,9 +838,8 @@ cfc_has_mode(void)
|
||||
static int
|
||||
is_nearest_active(void)
|
||||
{
|
||||
int flags = get_cot_flags();
|
||||
return (compl_autocomplete || (flags & COT_NEAREST))
|
||||
&& !(flags & COT_FUZZY);
|
||||
return (compl_autocomplete || (get_cot_flags() & COT_NEAREST))
|
||||
&& !cot_fuzzy();
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -996,14 +985,13 @@ ins_compl_add(
|
||||
// current match in the list of matches .
|
||||
if (compl_first_match == NULL)
|
||||
match->cp_next = match->cp_prev = NULL;
|
||||
else if (cfc_has_mode() && score != FUZZY_SCORE_NONE && compl_get_longest)
|
||||
else if (cot_fuzzy() && score != FUZZY_SCORE_NONE && compl_get_longest)
|
||||
{
|
||||
current = compl_first_match->cp_next;
|
||||
prev = compl_first_match;
|
||||
inserted = FALSE;
|
||||
// The direction is ignored when using longest and
|
||||
// completefuzzycollect, because matches are inserted
|
||||
// and sorted by score.
|
||||
// The direction is ignored when using longest and fuzzy match, because
|
||||
// matches are inserted and sorted by score.
|
||||
while (current != NULL && current != compl_first_match)
|
||||
{
|
||||
if (current->cp_score < score)
|
||||
@@ -1046,7 +1034,7 @@ ins_compl_add(
|
||||
compl_curr_match = match;
|
||||
|
||||
// Find the longest common string if still doing that.
|
||||
if (compl_get_longest && (flags & CP_ORIGINAL_TEXT) == 0 && !cfc_has_mode()
|
||||
if (compl_get_longest && (flags & CP_ORIGINAL_TEXT) == 0 && !cot_fuzzy()
|
||||
&& !ins_compl_preinsert_longest())
|
||||
ins_compl_longest_match(match);
|
||||
|
||||
@@ -1110,7 +1098,7 @@ ins_compl_col_range_attr(linenr_T lnum, int col)
|
||||
|| ins_compl_preinsert_longest();
|
||||
int attr;
|
||||
|
||||
if ((get_cot_flags() & COT_FUZZY)
|
||||
if (cot_fuzzy()
|
||||
|| (!compl_hi_on_autocompl_longest && ins_compl_preinsert_longest())
|
||||
|| (attr = syn_name2attr(has_preinsert
|
||||
? (char_u *)"PreInsert" : (char_u *)"ComplMatchIns")) == 0)
|
||||
@@ -1647,10 +1635,8 @@ ins_compl_build_pum(void)
|
||||
int shown_match_ok = FALSE;
|
||||
int i = 0;
|
||||
int cur = -1;
|
||||
unsigned int cur_cot_flags = get_cot_flags();
|
||||
int compl_no_select = (cur_cot_flags & COT_NOSELECT) != 0
|
||||
int compl_no_select = (get_cot_flags() & COT_NOSELECT) != 0
|
||||
|| (compl_autocomplete && !ins_compl_has_preinsert());
|
||||
int fuzzy_filter = (cur_cot_flags & COT_FUZZY) != 0;
|
||||
compl_T *match_head = NULL;
|
||||
compl_T *match_tail = NULL;
|
||||
compl_T *match_next = NULL;
|
||||
@@ -1691,14 +1677,14 @@ ins_compl_build_pum(void)
|
||||
|
||||
// Apply 'smartcase' behavior during normal mode
|
||||
if (ctrl_x_mode_normal() && !p_inf && leader->string
|
||||
&& !ignorecase(leader->string) && !fuzzy_filter)
|
||||
&& !ignorecase(leader->string) && !cot_fuzzy())
|
||||
compl->cp_flags &= ~CP_ICASE;
|
||||
|
||||
if (!match_at_original_text(compl)
|
||||
&& (leader->string == NULL
|
||||
|| ins_compl_equal(compl, leader->string,
|
||||
(int)leader->length)
|
||||
|| (fuzzy_filter && compl->cp_score != FUZZY_SCORE_NONE)))
|
||||
|| (cot_fuzzy() && compl->cp_score != FUZZY_SCORE_NONE)))
|
||||
{
|
||||
// Limit number of items from each source if max_items is set.
|
||||
int match_limit_exceeded = FALSE;
|
||||
@@ -1721,7 +1707,7 @@ ins_compl_build_pum(void)
|
||||
match_tail->cp_match_next = compl;
|
||||
match_tail = compl;
|
||||
|
||||
if (!shown_match_ok && !fuzzy_filter)
|
||||
if (!shown_match_ok && !cot_fuzzy())
|
||||
{
|
||||
if (compl == compl_shown_match || did_find_shown_match)
|
||||
{
|
||||
@@ -1737,7 +1723,7 @@ ins_compl_build_pum(void)
|
||||
shown_compl = compl;
|
||||
cur = i;
|
||||
}
|
||||
else if (fuzzy_filter)
|
||||
else if (cot_fuzzy())
|
||||
{
|
||||
if (i == 0)
|
||||
shown_compl = compl;
|
||||
@@ -1752,7 +1738,7 @@ ins_compl_build_pum(void)
|
||||
}
|
||||
}
|
||||
|
||||
if (compl == compl_shown_match && !fuzzy_filter)
|
||||
if (compl == compl_shown_match && !cot_fuzzy())
|
||||
{
|
||||
did_find_shown_match = TRUE;
|
||||
|
||||
@@ -1777,7 +1763,7 @@ ins_compl_build_pum(void)
|
||||
if (compl_match_arraysize == 0)
|
||||
return -1;
|
||||
|
||||
if (fuzzy_filter && !compl_no_select && !shown_match_ok)
|
||||
if (cot_fuzzy() && !compl_no_select && !shown_match_ok)
|
||||
{
|
||||
compl_shown_match = shown_compl;
|
||||
shown_match_ok = TRUE;
|
||||
@@ -1993,8 +1979,8 @@ ins_compl_dictionaries(
|
||||
# endif
|
||||
if (count > 0) // avoid warning for using "files" uninit
|
||||
{
|
||||
ins_compl_files(count, files, thesaurus, flags,
|
||||
(cfc_has_mode() ? NULL : ®match), buf, &dir);
|
||||
ins_compl_files(count, files, thesaurus, flags, ®match, buf,
|
||||
&dir);
|
||||
if (flags != DICT_EXACT)
|
||||
FreeWild(count, files);
|
||||
}
|
||||
@@ -2084,12 +2070,11 @@ ins_compl_files(
|
||||
int add_r;
|
||||
char_u *leader = NULL;
|
||||
int leader_len = 0;
|
||||
int in_fuzzy_collect = cfc_has_mode();
|
||||
int score = 0;
|
||||
int len = 0;
|
||||
char_u *line_end = NULL;
|
||||
|
||||
if (in_fuzzy_collect)
|
||||
if (cot_fuzzy())
|
||||
{
|
||||
leader = ins_compl_leader();
|
||||
leader_len = (int)ins_compl_leader_len();
|
||||
@@ -2116,7 +2101,28 @@ ins_compl_files(
|
||||
&& !vim_fgets(buf, LSIZE, fp))
|
||||
{
|
||||
ptr = buf;
|
||||
if (regmatch != NULL)
|
||||
if (cot_fuzzy() && leader_len > 0)
|
||||
{
|
||||
line_end = find_line_end(ptr);
|
||||
while (ptr < line_end)
|
||||
{
|
||||
if (fuzzy_match_str_in_line(&ptr, leader, &len, NULL, &score))
|
||||
{
|
||||
char_u *end_ptr = ctrl_x_mode_line_or_eval()
|
||||
? find_line_end(ptr) : find_word_end(ptr);
|
||||
add_r = ins_compl_add_infercase(ptr, (int)(end_ptr - ptr),
|
||||
p_ic, files[i], *dir, FALSE, score);
|
||||
if (add_r == FAIL)
|
||||
break;
|
||||
ptr = end_ptr; // start from next word
|
||||
if (compl_get_longest && ctrl_x_mode_normal()
|
||||
&& compl_first_match->cp_next
|
||||
&& score == compl_first_match->cp_next->cp_score)
|
||||
compl_num_bests++;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (regmatch != NULL)
|
||||
{
|
||||
while (vim_regexec(regmatch, buf, (colnr_T)(ptr - buf)))
|
||||
{
|
||||
@@ -2144,27 +2150,6 @@ ins_compl_files(
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if (in_fuzzy_collect && leader_len > 0)
|
||||
{
|
||||
line_end = find_line_end(ptr);
|
||||
while (ptr < line_end)
|
||||
{
|
||||
if (fuzzy_match_str_in_line(&ptr, leader, &len, NULL, &score))
|
||||
{
|
||||
char_u *end_ptr = ctrl_x_mode_line_or_eval()
|
||||
? find_line_end(ptr) : find_word_end(ptr);
|
||||
add_r = ins_compl_add_infercase(ptr, (int)(end_ptr - ptr),
|
||||
p_ic, files[i], *dir, FALSE, score);
|
||||
if (add_r == FAIL)
|
||||
break;
|
||||
ptr = end_ptr; // start from next word
|
||||
if (compl_get_longest && ctrl_x_mode_normal()
|
||||
&& compl_first_match->cp_next
|
||||
&& score == compl_first_match->cp_next->cp_score)
|
||||
compl_num_bests++;
|
||||
}
|
||||
}
|
||||
}
|
||||
line_breakcheck();
|
||||
ins_compl_check_keys(50, FALSE);
|
||||
}
|
||||
@@ -2284,7 +2269,6 @@ ins_compl_clear(void)
|
||||
{
|
||||
compl_cont_status = 0;
|
||||
compl_started = FALSE;
|
||||
compl_cfc_longest_ins = FALSE;
|
||||
compl_matches = 0;
|
||||
compl_selected_item = -1;
|
||||
compl_ins_end_col = 0;
|
||||
@@ -2496,18 +2480,20 @@ ins_compl_fuzzy_sort(void)
|
||||
{
|
||||
int cur_cot_flags = get_cot_flags();
|
||||
|
||||
// set the fuzzy score in cp_score
|
||||
// Set the fuzzy score in cp_score and sort
|
||||
set_fuzzy_score();
|
||||
// Sort the matches linked list based on fuzzy score
|
||||
if (!(cur_cot_flags & COT_NOSORT))
|
||||
{
|
||||
sort_compl_match_list(cp_compare_fuzzy);
|
||||
if ((cur_cot_flags & (COT_NOINSERT | COT_NOSELECT)) == COT_NOINSERT
|
||||
&& compl_first_match)
|
||||
// Reset the shown item since sorting reorders items
|
||||
if ((cur_cot_flags & (COT_NOINSERT | COT_NOSELECT)) == COT_NOINSERT)
|
||||
{
|
||||
compl_shown_match = compl_first_match;
|
||||
if (compl_shows_dir_forward() && !compl_autocomplete)
|
||||
compl_shown_match = compl_first_match->cp_next;
|
||||
int none_selected = compl_shown_match == (compl_shows_dir_forward()
|
||||
? compl_first_match : compl_first_match->cp_prev);
|
||||
if (!none_selected)
|
||||
compl_shown_match
|
||||
= (!compl_autocomplete && compl_shows_dir_forward())
|
||||
? compl_first_match->cp_next : compl_first_match;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2539,7 +2525,7 @@ ins_compl_new_leader(void)
|
||||
ins_compl_set_original_text(compl_leader.string, compl_leader.length);
|
||||
if (is_cpt_func_refresh_always())
|
||||
cpt_compl_refresh();
|
||||
if (get_cot_flags() & COT_FUZZY)
|
||||
if (cot_fuzzy())
|
||||
ins_compl_fuzzy_sort();
|
||||
}
|
||||
else
|
||||
@@ -4727,7 +4713,6 @@ fuzzy_longest_match(void)
|
||||
if (prefix != NULL)
|
||||
{
|
||||
ins_compl_longest_insert(prefix);
|
||||
compl_cfc_longest_ins = TRUE;
|
||||
vim_free(prefix);
|
||||
}
|
||||
|
||||
@@ -4751,7 +4736,7 @@ get_next_filename_completion(void)
|
||||
int score;
|
||||
char_u *leader = ins_compl_leader();
|
||||
size_t leader_len = ins_compl_leader_len();;
|
||||
int in_fuzzy_collect = (cfc_has_mode() && leader_len > 0);
|
||||
int in_fuzzy_collect = (cot_fuzzy() && leader_len > 0);
|
||||
int *fuzzy_indices_data;
|
||||
char_u *last_sep = NULL;
|
||||
int need_collect_bests = in_fuzzy_collect && compl_get_longest;
|
||||
@@ -5063,8 +5048,7 @@ get_next_default_completion(ins_compl_next_state_T *st, pos_T *start_pos)
|
||||
char_u *ptr = NULL;
|
||||
int len = 0;
|
||||
int in_fuzzy_collect = !compl_status_adding()
|
||||
&& ((cfc_has_mode() && compl_length > 0)
|
||||
|| ((get_cot_flags() & COT_FUZZY) && compl_autocomplete));
|
||||
&& cot_fuzzy() && compl_length > 0;
|
||||
char_u *leader = ins_compl_leader();
|
||||
int score = FUZZY_SCORE_NONE;
|
||||
int in_curbuf = st->ins_buf == curbuf;
|
||||
@@ -5605,7 +5589,7 @@ ins_compl_get_exp(pos_T *ini)
|
||||
&& (!compl_started || st.found_all))
|
||||
{
|
||||
int status = process_next_cpt_value(&st, &type, &start_pos,
|
||||
cfc_has_mode(), &may_advance_cpt_idx);
|
||||
cot_fuzzy(), &may_advance_cpt_idx);
|
||||
|
||||
if (status == INS_COMPL_CPT_END)
|
||||
break;
|
||||
@@ -5699,7 +5683,7 @@ ins_compl_get_exp(pos_T *ini)
|
||||
&& !ctrl_x_mode_line_or_eval()))
|
||||
match_count = ins_compl_make_cyclic();
|
||||
|
||||
if (cfc_has_mode() && compl_get_longest && compl_num_bests > 0)
|
||||
if (cot_fuzzy() && compl_get_longest && compl_num_bests > 0)
|
||||
fuzzy_longest_match();
|
||||
|
||||
if (compl_old_match != NULL)
|
||||
@@ -5714,12 +5698,12 @@ ins_compl_get_exp(pos_T *ini)
|
||||
}
|
||||
may_trigger_modechanged();
|
||||
|
||||
if (match_count > 0)
|
||||
if (match_count > 0 && !ctrl_x_mode_spell())
|
||||
{
|
||||
if (is_nearest_active() && !ins_compl_has_preinsert())
|
||||
sort_compl_match_list(cp_compare_nearest);
|
||||
|
||||
if ((get_cot_flags() & COT_FUZZY) && ins_compl_leader_len() > 0)
|
||||
if (cot_fuzzy() && ins_compl_leader_len() > 0)
|
||||
ins_compl_fuzzy_sort();
|
||||
}
|
||||
|
||||
@@ -6145,7 +6129,6 @@ find_next_completion_match(
|
||||
unsigned int cur_cot_flags = get_cot_flags();
|
||||
int compl_no_select = (cur_cot_flags & COT_NOSELECT) != 0
|
||||
|| (compl_autocomplete && !ins_compl_has_preinsert());
|
||||
int compl_fuzzy_match = (cur_cot_flags & COT_FUZZY) != 0;
|
||||
string_T *leader;
|
||||
|
||||
|
||||
@@ -6222,7 +6205,7 @@ find_next_completion_match(
|
||||
&& leader->string != NULL
|
||||
&& !ins_compl_equal(compl_shown_match,
|
||||
leader->string, (int)leader->length)
|
||||
&& !(compl_fuzzy_match
|
||||
&& !(cot_fuzzy()
|
||||
&& compl_shown_match->cp_score != FUZZY_SCORE_NONE))
|
||||
++todo;
|
||||
else
|
||||
@@ -6275,7 +6258,6 @@ ins_compl_next(
|
||||
unsigned int cur_cot_flags = get_cot_flags();
|
||||
int compl_no_insert = (cur_cot_flags & COT_NOINSERT) != 0
|
||||
|| (compl_autocomplete && !ins_compl_has_preinsert());
|
||||
int compl_fuzzy_match = (cur_cot_flags & COT_FUZZY) != 0;
|
||||
int compl_preinsert = ins_compl_has_preinsert();
|
||||
int has_autocomplete_delay = (compl_autocomplete && p_acl > 0);
|
||||
|
||||
@@ -6286,7 +6268,7 @@ ins_compl_next(
|
||||
|
||||
if (compl_leader.string != NULL
|
||||
&& !match_at_original_text(compl_shown_match)
|
||||
&& !compl_fuzzy_match)
|
||||
&& !cot_fuzzy())
|
||||
// Update "compl_shown_match" to the actually shown match
|
||||
ins_compl_update_shown_match();
|
||||
|
||||
|
||||
+7
-5
@@ -280,12 +280,13 @@ enum key_extra
|
||||
, KE_SID = 106 // <SID> special key, followed by {nr};
|
||||
, KE_ESC = 107 // used for K_ESC
|
||||
, KE_WILD = 108 // triggers wildmode completion
|
||||
, KE_OSC = 109 // finished OSC sequence
|
||||
#ifdef FEAT_GUI_MACVIM
|
||||
, KE_SWIPELEFT = 109 // Swipe trackpad left
|
||||
, KE_SWIPERIGHT = 110 // Swipe trackpad right
|
||||
, KE_SWIPEUP = 111 // Swipe trackpad up
|
||||
, KE_SWIPEDOWN = 112 // Swipe trackpad down
|
||||
, KE_FORCECLICK = 113 // Force click on trackpad
|
||||
, KE_SWIPELEFT = 110 // Swipe trackpad left
|
||||
, KE_SWIPERIGHT = 111 // Swipe trackpad right
|
||||
, KE_SWIPEUP = 112 // Swipe trackpad up
|
||||
, KE_SWIPEDOWN = 113 // Swipe trackpad down
|
||||
, KE_FORCECLICK = 114 // Force click on trackpad
|
||||
#endif
|
||||
};
|
||||
|
||||
@@ -485,6 +486,7 @@ enum key_extra
|
||||
#define K_MOUSERIGHT TERMCAP2KEY(KS_EXTRA, KE_MOUSERIGHT)
|
||||
|
||||
#define K_CSI TERMCAP2KEY(KS_EXTRA, KE_CSI)
|
||||
#define K_OSC TERMCAP2KEY(KS_EXTRA, KE_OSC)
|
||||
#define K_SNR TERMCAP2KEY(KS_EXTRA, KE_SNR)
|
||||
#define K_PLUG TERMCAP2KEY(KS_EXTRA, KE_PLUG)
|
||||
#define K_CMDWIN TERMCAP2KEY(KS_EXTRA, KE_CMDWIN)
|
||||
|
||||
+7
-27
@@ -4182,37 +4182,17 @@ msg_advance(int col)
|
||||
* Warn about missing Clipboard Support
|
||||
*/
|
||||
void
|
||||
msg_warn_missing_clipboard(bool plus UNUSED, bool star UNUSED)
|
||||
msg_warn_missing_clipboard(void)
|
||||
{
|
||||
#ifndef FEAT_CLIPBOARD
|
||||
static bool did_warn;
|
||||
|
||||
if (!global_busy && !did_warn)
|
||||
if (!global_busy && !did_warn_clipboard)
|
||||
{
|
||||
msg(_("W24: Clipboard register not available. See :h W24"));
|
||||
did_warn = true;
|
||||
}
|
||||
#ifdef FEAT_CLIPBOARD
|
||||
msg(_("W23: Clipboard register not available, using register 0"));
|
||||
#else
|
||||
if (!global_busy)
|
||||
{
|
||||
if (plus && star && !clip_plus.did_warn && !clip_star.did_warn)
|
||||
{
|
||||
msg(_("W23: Clipboard register not available, using register 0"));
|
||||
clip_plus.did_warn = true;
|
||||
clip_star.did_warn = true;
|
||||
}
|
||||
else if (plus && !clip_plus.did_warn)
|
||||
{
|
||||
msg(_("W23: Clipboard register + not available, using register 0"));
|
||||
clip_plus.did_warn = true;
|
||||
}
|
||||
else if (star && !clip_star.did_warn)
|
||||
{
|
||||
msg(_("W23: Clipboard register * not available, using register 0"));
|
||||
clip_star.did_warn = true;
|
||||
}
|
||||
}
|
||||
msg(_("W24: Clipboard register not available. See :h W24"));
|
||||
#endif
|
||||
did_warn_clipboard = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
#if defined(FEAT_CON_DIALOG)
|
||||
|
||||
@@ -1056,6 +1056,7 @@ static struct key_name_entry
|
||||
{TRUE, NL, STRING_INIT("NewLine"), TRUE},
|
||||
{TRUE, NL, STRING_INIT("NL"), FALSE},
|
||||
{TRUE, K_ZERO, STRING_INIT("Nul"), FALSE},
|
||||
{TRUE, OSC, STRING_INIT("OSC"), FALSE},
|
||||
{TRUE, K_PAGEDOWN, STRING_INIT("PageDown"), FALSE},
|
||||
{TRUE, K_PAGEUP, STRING_INIT("PageUp"), FALSE},
|
||||
{TRUE, K_PE, STRING_INIT("PasteEnd"), FALSE},
|
||||
@@ -1120,6 +1121,7 @@ static struct key_name_entry
|
||||
{TRUE, K_XF4, STRING_INIT("xF4"), FALSE},
|
||||
{TRUE, K_XHOME, STRING_INIT("xHome"), FALSE},
|
||||
{TRUE, K_XLEFT, STRING_INIT("xLeft"), FALSE},
|
||||
{TRUE, K_OSC, STRING_INIT("xOSC"), FALSE},
|
||||
{TRUE, K_XRIGHT, STRING_INIT("xRight"), FALSE},
|
||||
{TRUE, K_XUP, STRING_INIT("xUp"), FALSE},
|
||||
{TRUE, K_ZEND, STRING_INIT("zEnd"), FALSE},
|
||||
|
||||
+1
-5
@@ -392,7 +392,7 @@ set_init_clean_rtp(void)
|
||||
* vimrc found is located in '$XDG_CONFIG_HOME/vim/vimrc'.
|
||||
* In case the '$XDG_CONFIG_HOME' variable is not set, '$HOME/.config' is used
|
||||
* as a fallback as is defined in the XDG base dir specification:
|
||||
* <https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html>
|
||||
* <https://specifications.freedesktop.org/basedir/latest/>
|
||||
*/
|
||||
static void
|
||||
set_init_xdg_rtp(void)
|
||||
@@ -7020,9 +7020,7 @@ get_varp(struct vimoption *p)
|
||||
case PV_CINSD: return (char_u *)&(curbuf->b_p_cinsd);
|
||||
case PV_CINW: return (char_u *)&(curbuf->b_p_cinw);
|
||||
case PV_COM: return (char_u *)&(curbuf->b_p_com);
|
||||
#ifdef FEAT_FOLDING
|
||||
case PV_CMS: return (char_u *)&(curbuf->b_p_cms);
|
||||
#endif
|
||||
case PV_CPT: return (char_u *)&(curbuf->b_p_cpt);
|
||||
#ifdef BACKSLASH_IN_FILENAME
|
||||
case PV_CSL: return (char_u *)&(curbuf->b_p_csl);
|
||||
@@ -7614,10 +7612,8 @@ buf_copy_options(buf_T *buf, int flags)
|
||||
COPY_OPT_SCTX(buf, BV_SN);
|
||||
buf->b_p_com = vim_strsave(p_com);
|
||||
COPY_OPT_SCTX(buf, BV_COM);
|
||||
#ifdef FEAT_FOLDING
|
||||
buf->b_p_cms = vim_strsave(p_cms);
|
||||
COPY_OPT_SCTX(buf, BV_CMS);
|
||||
#endif
|
||||
buf->b_p_fo = vim_strsave(p_fo);
|
||||
COPY_OPT_SCTX(buf, BV_FO);
|
||||
buf->b_p_flp = vim_strsave(p_flp);
|
||||
|
||||
@@ -510,9 +510,7 @@ EXTERN char_u *p_cb; // 'clipboard'
|
||||
EXTERN char_u *p_cpm; // 'clipmethod'
|
||||
#endif
|
||||
EXTERN long p_ch; // 'cmdheight'
|
||||
#ifdef FEAT_FOLDING
|
||||
EXTERN char_u *p_cms; // 'commentstring'
|
||||
#endif
|
||||
EXTERN char_u *p_cpt; // 'complete'
|
||||
EXTERN long p_cto; // 'completetimeout'
|
||||
#if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG)
|
||||
@@ -1217,9 +1215,7 @@ enum
|
||||
, BV_CINSD
|
||||
, BV_CINW
|
||||
, BV_CM
|
||||
#ifdef FEAT_FOLDING
|
||||
, BV_CMS
|
||||
#endif
|
||||
, BV_COM
|
||||
, BV_COT
|
||||
, BV_CPT
|
||||
|
||||
+1
-8
@@ -48,9 +48,7 @@
|
||||
#define PV_CINSD OPT_BUF(BV_CINSD)
|
||||
#define PV_CINW OPT_BUF(BV_CINW)
|
||||
#define PV_CM OPT_BOTH(OPT_BUF(BV_CM))
|
||||
#ifdef FEAT_FOLDING
|
||||
# define PV_CMS OPT_BUF(BV_CMS)
|
||||
#endif
|
||||
#define PV_CMS OPT_BUF(BV_CMS)
|
||||
#define PV_COM OPT_BUF(BV_COM)
|
||||
#define PV_COT OPT_BOTH(OPT_BUF(BV_COT))
|
||||
#define PV_CPT OPT_BUF(BV_CPT)
|
||||
@@ -726,13 +724,8 @@ static struct vimoption options[] =
|
||||
(char_u *)0L}
|
||||
SCTX_INIT},
|
||||
{"commentstring", "cms", P_STRING|P_ALLOCED|P_VI_DEF,
|
||||
#ifdef FEAT_FOLDING
|
||||
(char_u *)&p_cms, PV_CMS, did_set_commentstring, NULL,
|
||||
{(char_u *)"/* %s */", (char_u *)0L}
|
||||
#else
|
||||
(char_u *)NULL, PV_NONE, NULL, NULL,
|
||||
{(char_u *)0L, (char_u *)0L}
|
||||
#endif
|
||||
SCTX_INIT},
|
||||
// P_PRI_MKRC isn't needed here, optval_default()
|
||||
// always returns TRUE for 'compatible'
|
||||
|
||||
@@ -161,7 +161,6 @@ didset_string_options(void)
|
||||
(void)opt_strings_flags(p_cmp, p_cmp_values, &cmp_flags, TRUE);
|
||||
(void)opt_strings_flags(p_bkc, p_bkc_values, &bkc_flags, TRUE);
|
||||
(void)opt_strings_flags(p_bo, p_bo_values, &bo_flags, TRUE);
|
||||
(void)opt_strings_flags(p_cfc, p_cfc_values, &cfc_flags, TRUE);
|
||||
(void)opt_strings_flags(p_cot, p_cot_values, &cot_flags, TRUE);
|
||||
#ifdef FEAT_SESSION
|
||||
(void)opt_strings_flags(p_ssop, p_ssop_values, &ssop_flags, TRUE);
|
||||
@@ -307,9 +306,7 @@ check_buf_options(buf_T *buf)
|
||||
check_string_option(&buf->b_p_flp);
|
||||
check_string_option(&buf->b_p_isk);
|
||||
check_string_option(&buf->b_p_com);
|
||||
#ifdef FEAT_FOLDING
|
||||
check_string_option(&buf->b_p_cms);
|
||||
#endif
|
||||
check_string_option(&buf->b_p_nf);
|
||||
check_string_option(&buf->b_p_qe);
|
||||
#ifdef FEAT_SYN_HL
|
||||
@@ -1587,7 +1584,6 @@ did_set_comments(optset_T *args)
|
||||
return errmsg;
|
||||
}
|
||||
|
||||
#if defined(FEAT_FOLDING)
|
||||
/*
|
||||
* The 'commentstring' option is changed.
|
||||
*/
|
||||
@@ -1601,7 +1597,6 @@ did_set_commentstring(optset_T *args)
|
||||
|
||||
return NULL;
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Check if value for 'complete' is valid when 'complete' option is changed.
|
||||
|
||||
Generated
+5
-16
@@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Vim\n"
|
||||
"Report-Msgid-Bugs-To: vim-dev@vim.org\n"
|
||||
"POT-Creation-Date: 2025-11-01 16:14+0000\n"
|
||||
"POT-Creation-Date: 2025-11-27 20:24+0000\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@@ -2220,16 +2220,10 @@ msgstr ""
|
||||
msgid " SPACE/d/j: screen/page/line down, b/u/k: up, q: quit "
|
||||
msgstr ""
|
||||
|
||||
msgid "W24: Clipboard register not available. See :h W24"
|
||||
msgstr ""
|
||||
|
||||
msgid "W23: Clipboard register not available, using register 0"
|
||||
msgstr ""
|
||||
|
||||
msgid "W23: Clipboard register + not available, using register 0"
|
||||
msgstr ""
|
||||
|
||||
msgid "W23: Clipboard register * not available, using register 0"
|
||||
msgid "W24: Clipboard register not available. See :h W24"
|
||||
msgstr ""
|
||||
|
||||
msgid "Question"
|
||||
@@ -9957,6 +9951,9 @@ msgstr ""
|
||||
msgid "definition of what comment lines look like"
|
||||
msgstr ""
|
||||
|
||||
msgid "template for comments; used to put the marker in"
|
||||
msgstr ""
|
||||
|
||||
msgid "list of flags that tell how automatic formatting works"
|
||||
msgstr ""
|
||||
|
||||
@@ -9995,11 +9992,6 @@ msgid ""
|
||||
"popup menu item align order"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
" \n"
|
||||
"use fuzzy collection for specific completion modes"
|
||||
msgstr ""
|
||||
|
||||
msgid "options for the Insert mode completion info popup"
|
||||
msgstr ""
|
||||
|
||||
@@ -10155,9 +10147,6 @@ msgstr ""
|
||||
msgid "minimum number of screen lines for a fold to be closed"
|
||||
msgstr ""
|
||||
|
||||
msgid "template for comments; used to put the marker in"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"folding type: \"manual\", \"indent\", \"expr\", \"marker\",\n"
|
||||
"\"syntax\" or \"diff\""
|
||||
|
||||
@@ -74,7 +74,7 @@ void give_warning(char_u *message, int hl);
|
||||
void give_warning_with_source(char_u *message, int hl, int with_source);
|
||||
void give_warning2(char_u *message, char_u *a1, int hl);
|
||||
void msg_advance(int col);
|
||||
void msg_warn_missing_clipboard(bool plus, bool star);
|
||||
void msg_warn_missing_clipboard(void);
|
||||
int do_dialog(int type, char_u *title, char_u *message, char_u *buttons, int dfltbutton, char_u *textfield, int ex_cmd);
|
||||
int vim_dialog_yesno(int type, char_u *title, char_u *message, int dflt);
|
||||
int vim_dialog_yesnocancel(int type, char_u *title, char_u *message, int dflt);
|
||||
|
||||
+2
-2
@@ -204,7 +204,7 @@ valid_yank_reg(
|
||||
else if (regname == '*' || regname == '+')
|
||||
{
|
||||
// Warn about missing clipboard support once
|
||||
msg_warn_missing_clipboard(true, true);
|
||||
msg_warn_missing_clipboard();
|
||||
return FALSE;
|
||||
}
|
||||
#endif
|
||||
@@ -1189,7 +1189,7 @@ op_yank(oparg_T *oap, int deleting, int mess)
|
||||
(!clip_plus.available && oap->regname == '+'))
|
||||
{
|
||||
oap->regname = 0;
|
||||
msg_warn_missing_clipboard(!clip_plus.available, !clip_star.available);
|
||||
msg_warn_missing_clipboard();
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
@@ -3315,9 +3315,7 @@ struct file_buffer
|
||||
char_u *b_p_cinsd; // 'cinscopedecls'
|
||||
char_u *b_p_cinw; // 'cinwords'
|
||||
char_u *b_p_com; // 'comments'
|
||||
#ifdef FEAT_FOLDING
|
||||
char_u *b_p_cms; // 'commentstring'
|
||||
#endif
|
||||
char_u *b_p_cot; // 'completeopt' local value
|
||||
unsigned b_cot_flags; // flags for 'completeopt'
|
||||
char_u *b_p_cpt; // 'complete'
|
||||
|
||||
+19
-9
@@ -5927,6 +5927,9 @@ handle_osc(char_u *tp, int len, char_u *key_name, int *slen)
|
||||
// The whole OSC response may be larger than the typeahead buffer.
|
||||
// To handle this, keep reading data in and out of the typeahead
|
||||
// buffer until we read an OSC terminator or timeout.
|
||||
|
||||
// We can't use the previous buffer since we transferred ownership of it
|
||||
// to the vim var.
|
||||
ga_init2(&osc_state.buf, 1, 1024);
|
||||
#ifdef ELAPSED_FUNC
|
||||
ELAPSED_INIT(osc_state.start_tv);
|
||||
@@ -5939,7 +5942,6 @@ handle_osc(char_u *tp, int len, char_u *key_name, int *slen)
|
||||
last_char = ((char_u *)osc_state.buf.ga_data)[osc_state.buf.ga_len - 1];
|
||||
|
||||
key_name[0] = (int)KS_EXTRA;
|
||||
key_name[1] = (int)KE_IGNORE;
|
||||
|
||||
// Read data and append to buffer. If we reach a terminator, then
|
||||
// finally set the vim var.
|
||||
@@ -5951,6 +5953,8 @@ handle_osc(char_u *tp, int len, char_u *key_name, int *slen)
|
||||
{
|
||||
osc_state.processing = FALSE;
|
||||
|
||||
key_name[1] = (int)KE_OSC;
|
||||
|
||||
ga_concat_len(&osc_state.buf, tp, i + 1 + (tp[i] == ESC));
|
||||
ga_append(&osc_state.buf, NUL);
|
||||
*slen = i + 1 + (tp[i] == ESC);
|
||||
@@ -5968,6 +5972,8 @@ handle_osc(char_u *tp, int len, char_u *key_name, int *slen)
|
||||
return OK;
|
||||
}
|
||||
|
||||
key_name[1] = (int)KE_IGNORE;
|
||||
|
||||
#ifdef ELAPSED_FUNC
|
||||
if (ELAPSED_FUNC(osc_state.start_tv) >= p_ost)
|
||||
{
|
||||
@@ -6173,9 +6179,15 @@ check_termcode(
|
||||
}
|
||||
|
||||
if (osc_state.processing)
|
||||
{
|
||||
// Still processing OSC response data, go straight to handler
|
||||
// function.
|
||||
tp[len] = NUL;
|
||||
key_name[0] = NUL;
|
||||
key_name[1] = NUL;
|
||||
modifiers = 0;
|
||||
goto handle_osc;
|
||||
}
|
||||
|
||||
/*
|
||||
* Skip this position if the character does not appear as the first
|
||||
@@ -6696,12 +6708,8 @@ handle_osc:
|
||||
*/
|
||||
key = handle_x_keys(TERMCAP2KEY(key_name[0], key_name[1]));
|
||||
|
||||
if (osc_state.processing)
|
||||
// We don't want to add anything to the typeahead buffer.
|
||||
new_slen = 0;
|
||||
else
|
||||
// Add any modifier codes to our string.
|
||||
new_slen = modifiers2keycode(modifiers, &key, string);
|
||||
// Add any modifier codes to our string.
|
||||
new_slen = modifiers2keycode(modifiers, &key, string);
|
||||
|
||||
// Finally, add the special key code to our string
|
||||
key_name[0] = KEY2TERMCAP0(key);
|
||||
@@ -6714,8 +6722,10 @@ handle_osc:
|
||||
else
|
||||
string[new_slen++] = key_name[1];
|
||||
}
|
||||
else if (new_slen == 0 && key_name[0] == KS_EXTRA
|
||||
&& key_name[1] == KE_IGNORE)
|
||||
else if (osc_state.processing ||
|
||||
(new_slen == 0
|
||||
&& key_name[0] == KS_EXTRA
|
||||
&& key_name[1] == KE_IGNORE))
|
||||
{
|
||||
// Do not put K_IGNORE into the buffer, do return KEYLEN_REMOVED
|
||||
// to indicate what happened.
|
||||
|
||||
@@ -381,8 +381,8 @@ func Test_CompleteDone_vevent_keys()
|
||||
call assert_equal('foo_test', g:complete_word)
|
||||
call assert_equal('files', g:complete_type)
|
||||
|
||||
call writefile(['hello help'], 'test_case.txt', 'D')
|
||||
set dictionary=test_case.txt
|
||||
call writefile(['hello help'], 'Xtest_case.txt', 'D')
|
||||
set dictionary=Xtest_case.txt
|
||||
call feedkeys("ggdGSh\<C-X>\<C-K>\<C-Y>\<Esc>", 'tx')
|
||||
call assert_equal('hello', g:complete_word)
|
||||
call assert_equal('dictionary', g:complete_type)
|
||||
@@ -1320,6 +1320,23 @@ func Test_complete_wholeline()
|
||||
bw!
|
||||
endfunc
|
||||
|
||||
" Test for using CTRL-X CTRL-S to complete spell suggestions
|
||||
func Test_complete_spell()
|
||||
new
|
||||
setlocal spell
|
||||
" without fuzzy
|
||||
call setline(1, 'The rigth thing')
|
||||
exe "normal! A\<C-X>\<C-S>"
|
||||
call assert_equal('The right thing', getline(1))
|
||||
%d
|
||||
" with fuzzy
|
||||
setlocal completeopt+=fuzzy
|
||||
call setline(1, 'The rigth thing')
|
||||
exe "normal! A\<C-X>\<C-S>"
|
||||
call assert_equal('The right thing', getline(1))
|
||||
bw!
|
||||
endfunc
|
||||
|
||||
" Test insert completion with 'cindent' (adjust the indent)
|
||||
func Test_complete_with_cindent()
|
||||
new
|
||||
@@ -3533,6 +3550,7 @@ func Test_complete_opt_fuzzy()
|
||||
call feedkeys("i\<C-R>=CompAnother()\<CR>\<C-P>\<C-P>", 'tx')
|
||||
call assert_equal("for", g:abbr)
|
||||
|
||||
%d
|
||||
set cot=menu,fuzzy
|
||||
call feedkeys("Sblue\<CR>bar\<CR>b\<C-X>\<C-P>\<C-Y>\<ESC>", 'tx')
|
||||
call assert_equal('blue', getline('.'))
|
||||
@@ -3565,7 +3583,7 @@ func Test_complete_opt_fuzzy()
|
||||
" Issue 18488: sort after collection when "fuzzy" (unless "nosort")
|
||||
%d
|
||||
set completeopt&
|
||||
set completeopt+=fuzzy,noselect completefuzzycollect=keyword
|
||||
set completeopt+=fuzzy,noselect
|
||||
func! PrintMenuWords()
|
||||
let info = complete_info(["items"])
|
||||
call map(info.items, {_, v -> v.word})
|
||||
@@ -3575,10 +3593,19 @@ func Test_complete_opt_fuzzy()
|
||||
call feedkeys("Gof\<C-N>\<C-R>=PrintMenuWords()\<CR>\<Esc>0", 'tx')
|
||||
call assert_equal('f{''items'': [''func1'', ''func2'', ''xfunc'']}', getline('.'))
|
||||
|
||||
" Issue #18802: Reset selected item after fuzzy sort
|
||||
%d
|
||||
call setline(1, ['aa', 'aaa', 'aaaa'])
|
||||
set completeopt=menuone,noinsert,fuzzy
|
||||
call feedkeys("Goa\<C-N>\<C-Y>\<Esc>", 'tx')
|
||||
call assert_equal('aa', getline('.'))
|
||||
call feedkeys("Goa\<C-P>\<C-Y>\<Esc>", 'tx')
|
||||
call assert_equal('aaaa', getline('.'))
|
||||
|
||||
" clean up
|
||||
set omnifunc=
|
||||
bw!
|
||||
set complete& completeopt& completefuzzycollect&
|
||||
set complete& completeopt&
|
||||
autocmd! AAAAA_Group
|
||||
augroup! AAAAA_Group
|
||||
delfunc OnPumChange
|
||||
@@ -3592,7 +3619,7 @@ endfunc
|
||||
|
||||
func Test_complete_fuzzy_collect()
|
||||
new
|
||||
set completefuzzycollect=keyword,files,whole_line
|
||||
set completeopt+=fuzzy
|
||||
call setline(1, ['hello help hero h'])
|
||||
" Use "!" flag of feedkeys() so that ex_normal_busy is not set and
|
||||
" ins_compl_check_keys() is not skipped.
|
||||
@@ -3670,7 +3697,7 @@ func Test_complete_fuzzy_collect()
|
||||
call assert_equal('no one can save me but you', getline('.'))
|
||||
|
||||
" issue #15526
|
||||
set completeopt=menuone,menu,noselect
|
||||
set completeopt=menuone,menu,noselect,fuzzy
|
||||
call setline(1, ['Text', 'ToText', ''])
|
||||
call cursor(3, 1)
|
||||
call feedkeys("STe\<C-X>\<C-N>x\<CR>\<Esc>0", 'tx!')
|
||||
@@ -3683,8 +3710,8 @@ func Test_complete_fuzzy_collect()
|
||||
call assert_equal('completefuzzycollect', getline(line('.') - 1))
|
||||
|
||||
" keywords in 'dictonary'
|
||||
call writefile(['hello', 'think'], 'test_dict.txt', 'D')
|
||||
set dict=test_dict.txt
|
||||
call writefile(['hello', 'think'], 'Xtest_dict.txt', 'D')
|
||||
set dict=Xtest_dict.txt
|
||||
call feedkeys("Sh\<C-X>\<C-K>\<C-N>\<CR>\<Esc>0", 'tx!')
|
||||
call assert_equal('hello', getline(line('.') - 1))
|
||||
call feedkeys("Sh\<C-X>\<C-K>\<C-N>\<C-N>\<CR>\<Esc>0", 'tx!')
|
||||
@@ -3699,16 +3726,26 @@ func Test_complete_fuzzy_collect()
|
||||
call feedkeys("Gofuzzy\<C-X>\<C-N>\<C-N>\<C-N>\<C-Y>\<Esc>0", 'tx!')
|
||||
call assert_equal('fuzzycollect', getline('.'))
|
||||
|
||||
" when 'fuzzy' is not set, and 'infercase' and 'ignorecase' are set, then
|
||||
" uppercase completes from lowercase words in dictonary
|
||||
set completeopt&
|
||||
set infercase ignorecase
|
||||
call writefile(['hello'], 'Xtest_case.txt', 'D')
|
||||
set dictionary=Xtest_case.txt
|
||||
call feedkeys("ggdGSH\<C-X>\<C-K>\<C-Y>\<Esc>", 'tx')
|
||||
call assert_equal('Hello', getline('.'))
|
||||
call feedkeys("ggdGSHE\<C-X>\<C-K>\<C-Y>\<Esc>", 'tx')
|
||||
call assert_equal('HELLO', getline('.'))
|
||||
|
||||
bw!
|
||||
bw!
|
||||
set dict&
|
||||
set completeopt& cfc& cpt&
|
||||
set completeopt& cpt& ignorecase& infercase&
|
||||
endfunc
|
||||
|
||||
" Issue #18752
|
||||
func Test_complete_fuzzy_collect_multiwin()
|
||||
new
|
||||
set completefuzzycollect=keyword,files,whole_line
|
||||
set completeopt=fuzzy
|
||||
|
||||
vnew
|
||||
@@ -3718,12 +3755,11 @@ func Test_complete_fuzzy_collect_multiwin()
|
||||
call assert_equal('Omnipotent', getline('.'))
|
||||
|
||||
bw!
|
||||
set completeopt& cfc&
|
||||
set completeopt&
|
||||
endfunc
|
||||
|
||||
func Test_cfc_with_longest()
|
||||
new
|
||||
set completefuzzycollect=keyword,files,whole_line
|
||||
set completeopt=menu,menuone,longest,fuzzy
|
||||
|
||||
" keyword
|
||||
@@ -3807,7 +3843,6 @@ func Test_cfc_with_longest()
|
||||
|
||||
bw!
|
||||
set completeopt&
|
||||
set completefuzzycollect&
|
||||
endfunc
|
||||
|
||||
func Test_completefuzzycollect_with_completeslash()
|
||||
@@ -3817,7 +3852,7 @@ func Test_completefuzzycollect_with_completeslash()
|
||||
let orig_shellslash = &shellslash
|
||||
set cpt&
|
||||
new
|
||||
set completefuzzycollect=files
|
||||
set completeopt+=fuzzy
|
||||
set noshellslash
|
||||
|
||||
" Test with completeslash unset
|
||||
@@ -3839,7 +3874,6 @@ func Test_completefuzzycollect_with_completeslash()
|
||||
" Reset and clean up
|
||||
let &shellslash = orig_shellslash
|
||||
set completeslash=
|
||||
set completefuzzycollect&
|
||||
%bw!
|
||||
endfunc
|
||||
|
||||
|
||||
@@ -1536,8 +1536,7 @@ endfunc
|
||||
func Test_pum_completefuzzycollect()
|
||||
CheckScreendump
|
||||
let lines =<< trim END
|
||||
set completefuzzycollect=keyword,files
|
||||
set completeopt=menu,menuone
|
||||
set completeopt=menu,menuone,fuzzy
|
||||
END
|
||||
call writefile(lines, 'Xscript', 'D')
|
||||
let buf = RunVimInTerminal('-S Xscript', {})
|
||||
|
||||
@@ -2847,14 +2847,38 @@ func Test_term_response_osc()
|
||||
" Test if large OSC responses (that must be processed in chunks) are handled
|
||||
let data = repeat('a', 3000)
|
||||
|
||||
call feedkeys("\<Esc>]12;" .. data .. "\x07", 'Lx!')
|
||||
call assert_equal("\<Esc>]12;" .. data .. "\x07", v:termosc)
|
||||
call feedkeys("\<Esc>]12;" .. data .. "\<Esc>\\", 'Lx!')
|
||||
call assert_equal("\<Esc>]12;" .. data .. "\<Esc>\\", v:termosc)
|
||||
|
||||
" Test small OSC responses
|
||||
call feedkeys("\<Esc>]15;hello world!\07", 'Lx!')
|
||||
call feedkeys("\<Esc>]15;hello world!\x07", 'Lx!')
|
||||
call assert_equal("\<Esc>]15;hello world!\x07", v:termosc)
|
||||
endfunc
|
||||
|
||||
" Test if xOSC key is emitted.
|
||||
func Test_term_response_xosc_key()
|
||||
CheckRunVimInTerminal
|
||||
|
||||
let lines =<< trim END
|
||||
func Test()
|
||||
while getcharstr(-1) != "\<xOSC>"
|
||||
endwhile
|
||||
call writefile(["done"], 'XTestResult')
|
||||
endfunc
|
||||
END
|
||||
call writefile(lines, 'XTest', 'D')
|
||||
defer delete('XTestResult')
|
||||
|
||||
let buf = RunVimInTerminal("-S XTest", {'rows': 10})
|
||||
call TermWait(buf)
|
||||
call term_sendkeys(buf, "\<Esc>:call Test()\<CR>")
|
||||
call TermWait(buf)
|
||||
call term_sendkeys(buf, "\<Esc>]52;hello;\<Esc>\\")
|
||||
call TermWait(buf)
|
||||
call WaitForAssert({-> assert_equal(["done"], readfile('XTestResult'))})
|
||||
call StopVimInTerminal(buf)
|
||||
endfunc
|
||||
|
||||
" This only checks if the sequence is recognized.
|
||||
func Test_term_rgb_response()
|
||||
set t_RF=x
|
||||
|
||||
@@ -744,6 +744,24 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
1932,
|
||||
/**/
|
||||
1931,
|
||||
/**/
|
||||
1930,
|
||||
/**/
|
||||
1929,
|
||||
/**/
|
||||
1928,
|
||||
/**/
|
||||
1927,
|
||||
/**/
|
||||
1926,
|
||||
/**/
|
||||
1925,
|
||||
/**/
|
||||
1924,
|
||||
/**/
|
||||
1923,
|
||||
/**/
|
||||
|
||||
@@ -316,12 +316,12 @@
|
||||
// cause compilation failures even though the headers are correct. For
|
||||
// a concrete example, gcc-3.2 enforces exception specifications, and
|
||||
// glibc-2.2.5 has them in their system headers.
|
||||
#ifndef PROTO
|
||||
# if !defined(__cplusplus) && defined(UNIX) \
|
||||
&& !defined(MACOS_X) // MACOS_X doesn't yet support osdef.h
|
||||
# include "auto/osdef.h" // bring missing declarations in
|
||||
# endif
|
||||
#if !defined(__cplusplus) && defined(UNIX) \
|
||||
&& !defined(MACOS_X) // MACOS_X doesn't yet support osdef.h
|
||||
# include "auto/osdef.h" // bring missing declarations in
|
||||
#endif
|
||||
|
||||
#ifndef PROTO
|
||||
# ifdef AMIGA
|
||||
# include "os_amiga.h"
|
||||
# endif
|
||||
@@ -2369,8 +2369,6 @@ typedef struct
|
||||
# ifdef FEAT_GUI_HAIKU
|
||||
// No clipboard at the moment. TODO?
|
||||
# endif
|
||||
// If we've already warned about missing/unavailable clipboard
|
||||
bool did_warn;
|
||||
} Clipboard_T;
|
||||
#else
|
||||
typedef int Clipboard_T; // This is required for the prototypes.
|
||||
|
||||
@@ -849,8 +849,6 @@ ex_wlrestore(exarg_T *eap)
|
||||
smsg(_("restoring Wayland display %s"), wayland_display_name);
|
||||
|
||||
#ifdef FEAT_WAYLAND_CLIPBOARD
|
||||
clip_plus.did_warn = false;
|
||||
clip_star.did_warn = false;
|
||||
clip_init_wayland();
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -122,7 +122,7 @@ static int scanA(struct histindex *index, int line1, int count1)
|
||||
NEXT_PTR(index, ptr) = rec->ptr;
|
||||
rec->ptr = ptr;
|
||||
/* cap rec->cnt at MAX_CNT */
|
||||
rec->cnt = XDL_MIN(MAX_CNT, rec->cnt + 1);
|
||||
rec->cnt = (rec->cnt < MAX_CNT) ? rec->cnt + 1 : rec->cnt;
|
||||
LINE_MAP(index, ptr) = rec;
|
||||
goto continue_scan;
|
||||
}
|
||||
|
||||
+22
-21
@@ -71,6 +71,7 @@
|
||||
* 08.08.2025 fix overflow with bitwise output
|
||||
* 20.08.2025 remove external library call for autoconversion on z/OS (MVS)
|
||||
* 24.08.2025 avoid NULL dereference with autoskip colorless
|
||||
* 26.11.2025 update indent in exit_with_usage()
|
||||
*
|
||||
* (c) 1990-1998 by Juergen Weigert (jnweiger@gmail.com)
|
||||
*
|
||||
@@ -151,7 +152,7 @@ extern void perror __P((char *));
|
||||
# endif
|
||||
#endif
|
||||
|
||||
char version[] = "xxd 2025-08-24 by Juergen Weigert et al.";
|
||||
char version[] = "xxd 2025-11-26 by Juergen Weigert et al.";
|
||||
#ifdef WIN32
|
||||
char osver[] = " (Win32)";
|
||||
#else
|
||||
@@ -274,32 +275,32 @@ exit_with_usage(void)
|
||||
{
|
||||
fprintf(stderr, "Usage:\n %s [options] [infile [outfile]]\n", pname);
|
||||
fprintf(stderr, " or\n %s -r [-s [-]offset] [-c cols] [-ps] [infile [outfile]]\n", pname);
|
||||
fprintf(stderr, "Options:\n");
|
||||
fprintf(stderr, " -a toggle autoskip: A single '*' replaces nul-lines. Default off.\n");
|
||||
fprintf(stderr, " -b binary digit dump (incompatible with -ps). Default hex.\n");
|
||||
fprintf(stderr, " -C capitalize variable names in C include file style (-i).\n");
|
||||
fprintf(stderr, " -c cols format <cols> octets per line. Default 16 (-i: 12, -ps: 30).\n");
|
||||
fprintf(stderr, " -E show characters in EBCDIC. Default ASCII.\n");
|
||||
fprintf(stderr, " -e little-endian dump (incompatible with -ps,-i,-r).\n");
|
||||
fprintf(stderr, " -g bytes number of octets per group in normal output. Default 2 (-e: 4).\n");
|
||||
fprintf(stderr, " -h print this summary.\n");
|
||||
fprintf(stderr, " -i output in C include file style.\n");
|
||||
fprintf(stderr, " -l len stop after <len> octets.\n");
|
||||
fprintf(stderr, " -n name set the variable name used in C include output (-i).\n");
|
||||
fprintf(stderr, " -o off add <off> to the displayed file position.\n");
|
||||
fprintf(stderr, " -ps output in postscript plain hexdump style.\n");
|
||||
fprintf(stderr, " -r reverse operation: convert (or patch) hexdump into binary.\n");
|
||||
fprintf(stderr, " -r -s off revert with <off> added to file positions found in hexdump.\n");
|
||||
fprintf(stderr, " -d show offset in decimal instead of hex.\n");
|
||||
fprintf(stderr, "Options:\n"
|
||||
" -a toggle autoskip: A single '*' replaces nul-lines. Default off.\n"
|
||||
" -b binary digit dump (incompatible with -ps). Default hex.\n"
|
||||
" -C capitalize variable names in C include file style (-i).\n"
|
||||
" -c cols format <cols> octets per line. Default 16 (-i: 12, -ps: 30).\n"
|
||||
" -E show characters in EBCDIC. Default ASCII.\n"
|
||||
" -e little-endian dump (incompatible with -ps,-i,-r).\n"
|
||||
" -g bytes number of octets per group in normal output. Default 2 (-e: 4).\n"
|
||||
" -h print this summary.\n"
|
||||
" -i output in C include file style.\n"
|
||||
" -l len stop after <len> octets.\n"
|
||||
" -n name set the variable name used in C include output (-i).\n"
|
||||
" -o off add <off> to the displayed file position.\n"
|
||||
" -ps output in postscript plain hexdump style.\n"
|
||||
" -r reverse operation: convert (or patch) hexdump into binary.\n"
|
||||
" -r -s off revert with <off> added to file positions found in hexdump.\n"
|
||||
" -d show offset in decimal instead of hex.\n");
|
||||
fprintf(stderr, " -s %sseek start at <seek> bytes abs. %sinfile offset.\n",
|
||||
#ifdef TRY_SEEK
|
||||
"[+][-]", "(or +: rel.) ");
|
||||
#else
|
||||
"", "");
|
||||
#endif
|
||||
fprintf(stderr, " -u use upper case hex letters.\n");
|
||||
fprintf(stderr, " -R when colorize the output; <when> can be 'always', 'auto' or 'never'. Default: 'auto'.\n"),
|
||||
fprintf(stderr, " -v show version: \"%s%s\".\n", version, osver);
|
||||
fprintf(stderr, " -u use upper case hex letters.\n"
|
||||
" -R when colorize the output; <when> can be 'always', 'auto' or 'never'. Default: 'auto'.\n"
|
||||
" -v show version: \"%s%s\".\n", version, osver);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user