mirror of
https://github.com/macvim-dev/macvim.git
synced 2026-10-14 00:50:09 +02:00
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>
278 lines
1.9 KiB
VimL
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
|
|
|
|
|