Files
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

278 lines
1.9 KiB
VimL

" Vim :change command
" VIM_TEST_SETUP let g:vimsyn_folding = "T"
" VIM_TEST_SETUP setl fdc=2 fdl=999 fdm=syntax
" NOTE: legacy Vim script only
change
.
change 42
.
change!
.
change | line0
.
change! | line0
.
change
line1
line2
.
change 42
line1
line2
.
change!
line1
line2
.
change " comment
line1
line2
.
change 42 " comment
line1
line2
.
change! " comment
line1
line2
.
change | line0
line1
line2
.
change 42 | line0
line1
line2
.
change! | line0
line1
line2
.
change | " line0 of input text
line1
line2
.
change 42 | " line0 of input text
line1
line2
.
change! | " line0 of input text
line1
line2
.
change | echo "line0 of input text"
line0
line2
.
change 42 | echo "line0 of input text"
line0
line2
.
change! | echo "line0 of input text"
line1
line2
.
" empty first line
change
.
change 42
.
change!
.
change
line2
.
change 42
line2
.
change!
line2
.
change " comment
line2
.
change 42 " comment
line2
.
change! " comment
line2
.
change | line0
line2
.
change 42 | line0
line2
.
change! | line0
line2
.
change | " line0 of input text
line2
.
change 42 | " line0 of input text
line2
.
change! | " line0 of input text
line2
.
change | echo "line0 of input text"
line2
.
change 42 | echo "line0 of input text"
line2
.
change! | echo "line0 of input text"
line2
.
" no early termination
" NOTE: 'autoindent' end marker not supported
change
.
.
.
.
function Foo()
change
.
.
.
.
change 42
.
.
.
.
change!
.
.
.
.
change " comment
.
.
.
.
change 42 " comment
.
.
.
.
change! " comment
.
.
.
.
change | line0
.
.
.
.
change! | line0
.
.
.
.
change
endfunction
.
change 42
endfunction
.
change!
endfunction
.
change " comment
endfunction
.
change 42 " comment
endfunction
.
change! " comment
endfunction
.
change | line0
endfunction
.
change 42 | line0
endfunction
.
change! | line0
endfuncion
.
endfunction