Merge remote-tracking branch 'vim/master'

This commit is contained in:
Yee Cheng Chin
2025-11-27 16:11:39 -05:00
56 changed files with 958 additions and 339 deletions
+6 -3
View File
@@ -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:
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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:
+3 -1
View File
@@ -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
View File
@@ -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.
+2
View File
@@ -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 /*=*
+3 -2
View File
@@ -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
+3 -3
View File
@@ -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
View File
@@ -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
View File
@@ -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")
+5 -1
View File
@@ -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
+14 -2
View File
@@ -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
+7 -4
View File
@@ -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
+6 -3
View File
@@ -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|
+4
View File
@@ -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
View File
@@ -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
+3 -3
View File
@@ -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
+9 -2
View File
@@ -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
+3 -3
View File
@@ -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
+322
View File
@@ -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.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-2
View File
@@ -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
View File
@@ -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, &regular, &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
View File
@@ -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[]
+2
View File
@@ -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;
+5
View File
@@ -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;
+9
View File
@@ -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
View File
@@ -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 : &regmatch), buf, &dir);
ins_compl_files(count, files, thesaurus, flags, &regmatch, 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
View File
@@ -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
View File
@@ -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)
+2
View File
@@ -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
View File
@@ -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);
-4
View File
@@ -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
View File
@@ -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'
-5
View File
@@ -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.
+5 -16
View File
@@ -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\""
+1 -1
View File
@@ -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
View File
@@ -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
-2
View File
@@ -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
View File
@@ -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.
+49 -15
View File
@@ -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
+1 -2
View File
@@ -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', {})
+27 -3
View File
@@ -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
+18
View File
@@ -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,
/**/
+5 -7
View File
@@ -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.
-2
View File
@@ -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
}
+1 -1
View File
@@ -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
View File
@@ -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);
}