0
0
mirror of https://github.com/vim/vim.git synced 2025-10-13 06:54:15 -04:00

runtime(vim): Update base-syntax, improve :mark and :substitute highlighting

- Match full :mark and :k commands.
- Match 2 and 3 letter :s repeat commands.
- Match :s [count] argument.

closes: #17408

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
Doug Kearns
2025-05-31 17:52:48 +02:00
committed by Christian Brabandt
parent 54a09e7e86
commit 086b3b5b79
30 changed files with 783 additions and 107 deletions

View File

@@ -0,0 +1,215 @@
" Vim :mark and :k commands
" :k not available in Vim9
" VIM_TEST_SETUP hi link vimMarkArg Todo
mark `
mark '
mark a
mark A
mark k
mark K
mark z
mark Z
mark [
mark ]
mark <
mark >
:mark `
:mark '
:mark a
:mark A
:mark k
:mark K
:mark z
:mark Z
:mark [
:mark ]
:mark <
:mark >
call Foo() | mark `
call Foo() | mark '
call Foo() | mark a
call Foo() | mark A
call Foo() | mark k
call Foo() | mark K
call Foo() | mark z
call Foo() | mark Z
call Foo() | mark [
call Foo() | mark ]
call Foo() | mark <
call Foo() | mark >
call Foo() | :mark `
call Foo() | :mark '
call Foo() | :mark a
call Foo() | :mark A
call Foo() | :mark k
call Foo() | :mark K
call Foo() | :mark z
call Foo() | :mark Z
call Foo() | :mark [
call Foo() | :mark ]
call Foo() | :mark <
call Foo() | :mark >
k`
k'
ka
kA
kk
kK
kz
kZ
k[
k]
k<
k>
:k`
:k'
:ka
:kA
:kk
:kK
:kz
:kZ
:k[
:k]
:k<
:k>
call Foo() | k`
call Foo() | k'
call Foo() | ka
call Foo() | kA
call Foo() | kk
call Foo() | kK
call Foo() | kz
call Foo() | kZ
call Foo() | k[
call Foo() | k]
call Foo() | k<
call Foo() | k>
call Foo() | :k`
call Foo() | :k'
call Foo() | :ka
call Foo() | :kA
call Foo() | :kk
call Foo() | :kK
call Foo() | :kz
call Foo() | :kZ
call Foo() | :k[
call Foo() | :k]
call Foo() | :k<
call Foo() | :k>
k `
k '
k a
k A
k k
k K
k z
k Z
k [
k ]
k <
k >
:k `
:k '
:k a
:k A
:k k
:k K
:k z
:k Z
:k [
:k ]
:k <
:k >
call Foo() | k `
call Foo() | k '
call Foo() | k a
call Foo() | k A
call Foo() | k k
call Foo() | k K
call Foo() | k z
call Foo() | k Z
call Foo() | k [
call Foo() | k ]
call Foo() | k <
call Foo() | k >
call Foo() | :k `
call Foo() | :k '
call Foo() | :k a
call Foo() | :k A
call Foo() | :k k
call Foo() | :k K
call Foo() | :k z
call Foo() | :k Z
call Foo() | :k [
call Foo() | :k ]
call Foo() | :k <
call Foo() | :k >
mark a | echo "FOO"
ka | echo "FOO"
k a | echo "FOO"
mark a " comment
ka " comment
k a " comment
function Foo()
k a
ka
mark a
:k a
:ka
:mark a
endfunction
" Errors
mark "
mark ^
mark .
" TODO: matches as vimFunc
" mark (
mark )
mark {
mark }
mark 0
mark 9
k"
k^
k.
" TODO: matches as vimFunc
" k(
k)
k{
k}
k0
k9
k "
k ^
k .
" TODO: matches as vimFunc
" k (
k )
k {
k }
k 0
k 9

View File

@@ -1,3 +1,6 @@
" Vim :substitute command
substitute/foo/bar/&
substitute/foo/bar/cegiInp#lr
@@ -37,6 +40,7 @@ def Foo()
let bar = str->substitute(str, pat, sub, flags)
enddef
" various delimiters
s!/!//! " comment
@@ -111,6 +115,67 @@ s//{string}/
s //{string}/
" Repeat commands
s
:s
s 42
:s 42
s42
:s42
s cegiInp#lr
:s cegiInp#lr
s cegiInp#lr42
:s cegiInp#lr42
s cegiInp#lr 42
:s cegiInp#lr 42
sg
:sg
sgi
:sgi
sg 42
:sg 42
sgi 42
:sgi 42
sg42
:sg42
sgi42
:sgi42
" FIXME
&
&&
~
~&
" FIXME
&cegiInp#lr
&&cegiInp#lr
~cegiInp#lr
~&cegiInp#lr
" 2 and 3 letter repeat-previous variants
:sc | :sce | :scg | :sci | :scI | :scn | :scp | :scl |
:sgc | :sge | :sg | :sgi | :sgI | :sgn | :sgp | :sgl | :sgr
:sic | :sie | | :si | :siI | :sin | :sip | | :sir
:sIc | :sIe | :sIg | :sIi | :sI | :sIn | :sIp | :sIl | :sIr
:src | | :srg | :sri | :srI | :srn | :srp | :srl | :sr
" exceptions
:scr " is `:scriptnames`
:se " is `:set`
:sig " is `:sign`
:sil " is `:silent`
:sn " is `:snext`
:sp " is `:split`
:sl " is `:sleep`
:sre " is `:srewind`
" Vi compatibility
s\/{string}/