Files
vim/runtime/syntax/testdir/input/vim_ex_command_modifiers.vim
Doug Kearns 9e4e00710c patch 9.2.0910: runtime(vim): Update syntax, contain Ex commands
Problem:  Vim Syntax Script can be improved
Solution: Rework syntax script, update syntax tests and unit tests
          (Doug Kearns).

- Contain Ex commands to valid syntactic contexts.
- Add full address (:range) matching.
- Match :Next, :Print, :X, :global, :&, :~, :>, :<, :# and := commands.
- Match text input commands with folding.

Use :syn-keyword to match all commands except when immediately following
\w range characters where :syn-match is employed.

fixes:  #20250 (variables with s_ prefix are wrongly highlighted)
fixes:  #17543 (do not highlight vim commands within :runtime)
fixes:  #16937 (do not highlight vim commands after packadd)
fixes:  #14895 (incorrect highlighting of Vim syntax)
fixes:  #14020 (insert commands)
closes: #19331

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-08-04 21:00:38 +00:00

319 lines
7.8 KiB
VimL

" Vim Ex command modifiers
aboveleft echo "Foo"
aboveleft echo "Foo"
belowright echo "Foo"
botright echo "Foo"
browse echo "Foo"
confirm echo "Foo"
filter /pattern/ echo "Foo"
filter! /pattern/ echo "Foo"
hide echo "Foo"
horizontal echo "Foo"
keepalt echo "Foo"
keepjumps echo "Foo"
keepmarks echo "Foo"
keeppatterns echo "Foo"
leftabove echo "Foo"
legacy echo "Foo"
lockmarks echo "Foo"
noautocmd echo "Foo"
noswapfile echo "Foo"
rightbelow echo "Foo"
sandbox echo "Foo"
silent echo "Foo"
silent! echo "Foo"
tab echo "Foo"
topleft echo "Foo"
unsilent echo "Foo"
verbose echo "Foo"
vertical echo "Foo"
vim9cmd echo "Foo"
: aboveleft echo "Foo"
: aboveleft echo "Foo"
:aboveleft echo "Foo"
:aboveleft echo "Foo"
:belowright echo "Foo"
:botright echo "Foo"
:browse echo "Foo"
:confirm echo "Foo"
:filter /pattern/ echo "Foo"
:filter! /pattern/ echo "Foo"
:hide echo "Foo"
:horizontal echo "Foo"
:keepalt echo "Foo"
:keepjumps echo "Foo"
:keepmarks echo "Foo"
:keeppatterns echo "Foo"
:leftabove echo "Foo"
:legacy echo "Foo"
:lockmarks echo "Foo"
:noautocmd echo "Foo"
:noswapfile echo "Foo"
:rightbelow echo "Foo"
:sandbox echo "Foo"
:silent echo "Foo"
:silent! echo "Foo"
:tab echo "Foo"
:topleft echo "Foo"
:unsilent echo "Foo"
:verbose echo "Foo"
:vertical echo "Foo"
:vim9cmd echo "Foo"
echo|aboveleft echo "Foo"
echo| aboveleft echo "Foo"
echo |aboveleft echo "Foo"
echo | aboveleft echo "Foo"
echo | belowright echo "Foo"
echo | botright echo "Foo"
echo | browse echo "Foo"
echo | confirm echo "Foo"
echo | filter /pattern/ echo "Foo"
echo | filter! /pattern/ echo "Foo"
echo | hide echo "Foo"
echo | horizontal echo "Foo"
echo | keepalt echo "Foo"
echo | keepjumps echo "Foo"
echo | keepmarks echo "Foo"
echo | keeppatterns echo "Foo"
echo | leftabove echo "Foo"
echo | legacy echo "Foo"
echo | lockmarks echo "Foo"
echo | noautocmd echo "Foo"
echo | noswapfile echo "Foo"
echo | rightbelow echo "Foo"
echo | sandbox echo "Foo"
echo | silent echo "Foo"
echo | silent! echo "Foo"
echo | tab echo "Foo"
echo | topleft echo "Foo"
echo | unsilent echo "Foo"
echo | verbose echo "Foo"
echo | vertical echo "Foo"
echo | vim9cmd echo "Foo"
aboveleft belowright botright browse confirm filter /pattern/ filter! /pattern/ hide horizontal keepalt keepjumps keepmarks keeppatterns leftabove legacy lockmarks noautocmd noswapfile rightbelow sandbox silent silent! tab topleft unsilent verbose vertical vim9cmd echo "Foo"
aboveleft
\ belowright
\ botright
\ browse
\ confirm
\ filter /pattern/
\ filter! /pattern/
\ hide
\ horizontal
\ keepalt
\ keepjumps
\ keepmarks
\ keeppatterns
\ leftabove
\ legacy
\ lockmarks
\ noautocmd
\ noswapfile
\ rightbelow
\ sandbox
\ silent
\ silent!
\ tab
\ topleft
\ unsilent
\ verbose
\ vertical
\ vim9cmd
\ echo "Foo"
aboveleft 42print
belowright 42print
botright 42print
browse 42print
confirm 42print
filter /pattern/ 42print
filter! /pattern/ 42print
hide 42print
horizontal 42print
keepalt 42print
keepjumps 42print
keepmarks 42print
keeppatterns 42print
leftabove 42print
legacy 42print
lockmarks 42print
noautocmd 42print
noswapfile 42print
rightbelow 42print
sandbox 42print
silent 42print
silent! 42print
tab 42print
topleft 42print
unsilent 42print
verbose 42print
vertical 42print
vim9cmd 42print
aboveleft :42print
belowright :42print
botright :42print
browse :42print
confirm :42print
filter /pattern/ :42print
filter! /pattern/ :42print
hide :42print
horizontal :42print
keepalt :42print
keepjumps :42print
keepmarks :42print
keeppatterns :42print
leftabove :42print
legacy :42print
lockmarks :42print
noautocmd :42print
noswapfile :42print
rightbelow :42print
sandbox :42print
silent :42print
silent! :42print
tab :42print
topleft :42print
unsilent :42print
verbose :42print
vertical :42print
vim9cmd :42print
silent :delete _
silent $delete _
silent :$delete _
lockmarks '[,']d _
silent keeppatterns %s/\v^%(%(([=`:.'"~^_*+#-])\1+\n)?.{1,2}\n([=`:.'"~^_*+#-])\2+)|%(%(([=`:.''"~^_*+#-])\3{2,}\n)?.{3,}\n([=`:.''"~^_*+#-])\4{2,})$/\=closure.Process(submatch(0))/gn
def Vim9Context()
silent copy
silent copy
silent copy = 99
silent copy = 99
silent g:copy = 99
silent g:copy = 99
silent copy()
silent copy()
silent call copy()
silent call copy()
silent Copy()
silent Copy()
silent call Copy()
silent call Copy()
silent Copy
silent Copy
silent Copy!
silent Copy!
silent Copy = 99
silent Copy = 99
silent g:Copy = 99
silent g:Copy = 99
silent! copy
silent! copy
silent! copy = 99
silent! copy = 99
silent! g:copy = 99
silent! g:copy = 99
silent! copy()
silent! copy()
silent! call copy()
silent! call copy()
silent! Copy()
silent! Copy()
silent! call Copy()
silent! call Copy()
silent! Copy
silent! Copy
silent! Copy!
silent! Copy!
silent! Copy = 99
silent! Copy = 99
silent! g:Copy = 99
silent! g:Copy = 99
filter pattern copy
filter pattern copy
filter pattern copy = 99
filter pattern copy = 99
filter pattern g:copy = 99
filter pattern g:copy = 99
filter pattern copy()
filter pattern copy()
filter pattern call copy()
filter pattern call copy()
filter pattern Copy()
filter pattern Copy()
filter pattern call Copy()
filter pattern call Copy()
filter pattern Copy
filter pattern Copy
filter pattern Copy!
filter pattern Copy!
filter pattern Copy = 99
filter pattern Copy = 99
filter pattern g:Copy = 99
filter pattern g:Copy = 99
filter /pattern/ copy
filter /pattern/ copy
filter /pattern/ copy = 99
filter /pattern/ copy = 99
filter /pattern/ g:copy = 99
filter /pattern/ g:copy = 99
filter /pattern/ copy()
filter /pattern/ copy()
filter /pattern/ call copy()
filter /pattern/ call copy()
filter /pattern/ Copy()
filter /pattern/ Copy()
filter /pattern/ call Copy()
filter /pattern/ call Copy()
filter /pattern/ Copy
filter /pattern/ Copy
filter /pattern/ Copy!
filter /pattern/ Copy!
filter /pattern/ Copy = 99
filter /pattern/ Copy = 99
filter /pattern/ g:Copy = 99
filter /pattern/ g:Copy = 99
silent wincmd =
silent wincmd = # comment
silent wincmd = | echo "..."
silent wincmd = 42
enddef
" Random test failures - now fixed
" exe is error highighted
silent! exe (nr+1) . 'd _'
function Foo()
silent! exe (nr+1) . 'd _'
endfunction
" execute is command not function
silent! execute (nr+1) . 'd _'
function Foo()
silent! execute (nr+1) . 'd _'
endfunction