0
0
mirror of https://github.com/vim/vim.git synced 2025-09-23 03:43:49 -04:00

runtime(vim): Update base-syntax, improve :autocmd highlighting

- Match full :autocmd, :doautocmd and :doautoall commands.
- Add filename pattern (wildcard) highlighting.

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
Doug Kearns
2025-04-22 19:48:13 +02:00
committed by Christian Brabandt
parent 31b78cce6e
commit fa3b1043c6
35 changed files with 1003 additions and 90 deletions

View File

@@ -1,19 +1,55 @@
" Vim :augroup command
" VIM_TEST_SETUP let g:vimsyn_folding = "a"
" VIM_TEST_SETUP setl fdc=2 fdl=999 fdm=syntax
" VIM_TEST_SETUP highlight link vimAugroupName Todo
augroup foo
autocmd BufRead * echomsg "Foo"
autocmd!
autocmd BufRead * echo "Foo"
augroup END
augroup foo | autocmd! | augroup END
augroup foo | autocmd! | augroup END
augroup! foo
augroup !@#$%^&*()_+
autocmd BufRead * echomsg "Foo"
augroup END
augroup !@#$%^&*()_+ | autocmd! | augroup END
augroup !@#$%^&*()_+ | autocmd! | augroup END
augroup! !@#$%^&*()_+
augroup !@#$%^&*()_+ | autocmd! | augroup END
augroup! !@#$%^&*()_+
augroup no\|echo | autocmd! | augroup END
augroup! no\|echo
augroup no\"echo | autocmd! | augroup END
augroup! no\"echo
augroup \|echo\| | autocmd! | augroup END
augroup! \|echo\|
augroup \"echo\" | autocmd! | augroup END
augroup! \"echo\"
augroup \|\" | autocmd! | augroup END
augroup! \|\"
augroup \"\| | autocmd! | augroup END
augroup! \"\|
" FIXME: required comment prefix
augroup foo"comment " start bad fold
augroup foo|echo "Foo"
augroup END " terminate bad fold
augroup! foo"comment
augroup! foo|echo "Foo"
" list groups
augroup
augroup | echo "Foo"
augroup " comment

View File

@@ -0,0 +1,264 @@
" Vim :autocmd command
" VIM_TEST_SETUP highlight vimAutoCmdGroup Todo
" VIM_TEST_SETUP highlight vimUserAutoEvent Title
" Define
autocmd foogroup BufRead *.txt echo "Foo" | echo "Bar"
autocmd BufRead *.txt echo "Foo" | echo "Bar"
autocmd BufRead,BufNewFile *.txt echo "Foo" | echo "Bar"
autocmd User FooEvent *.txt echo "Foo" | echo "Bar"
autocmd foogroup BufRead *.txt ++once echo "Foo" | echo "Bar"
autocmd BufRead *.txt ++once echo "Foo" | echo "Bar"
autocmd BufRead,BufNewFile *.txt ++once echo "Foo" | echo "Bar"
autocmd User FooEvent *.txt ++once echo "Foo" | echo "Bar"
autocmd foogroup BufRead *.txt ++nested echo "Foo" | echo "Bar"
autocmd BufRead *.txt ++nested echo "Foo" | echo "Bar"
autocmd BufRead,BufNewFile *.txt ++nested echo "Foo" | echo "Bar"
autocmd User FooEvent *.txt ++nested echo "Foo" | echo "Bar"
autocmd foogroup BufRead *.txt ++once ++nested echo "Foo" | echo "Bar"
autocmd BufRead *.txt ++once ++nested echo "Foo" | echo "Bar"
autocmd BufRead,BufNewFile *.txt ++once ++nested echo "Foo" | echo "Bar"
autocmd User FooEvent *.txt ++once ++nested echo "Foo" | echo "Bar"
autocmd foogroup BufRead <buffer> ++once ++nested echo "Foo" | echo "Bar"
autocmd foogroup BufRead <buffer=42> ++once ++nested echo "Foo" | echo "Bar"
autocmd foogroup BufRead <buffer=abuf> ++once ++nested echo "Foo" | echo "Bar"
autocmd BufRead <buffer> ++once ++nested echo "Foo" | echo "Bar"
autocmd BufRead <buffer=42> ++once ++nested echo "Foo" | echo "Bar"
autocmd BufRead <buffer=abuf> ++once ++nested echo "Foo" | echo "Bar"
autocmd BufRead,BufNewFile <buffer> ++once ++nested echo "Foo" | echo "Bar"
autocmd BufRead,BufNewFile <buffer=42> ++once ++nested echo "Foo" | echo "Bar"
autocmd BufRead,BufNewFile <buffer=abuf> ++once ++nested echo "Foo" | echo "Bar"
autocmd User FooEvent <buffer> ++once ++nested echo "Foo" | echo "Bar"
autocmd User FooEvent <buffer=42> ++once ++nested echo "Foo" | echo "Bar"
autocmd User FooEvent <buffer=abuf> ++once ++nested echo "Foo" | echo "Bar"
autocmd foogroup BufRead f<buffer>oo ++once ++nested echo "Foo" | echo "Bar"
autocmd BufRead *.txt {
echo "Foo"
echo "Bar"
}
autocmd BufRead,BufNewFile *.txt {
echo "Foo"
echo "Bar"
}
autocmd User FooEvent *.txt {
echo "Foo"
echo "Bar"
}
autocmd foogroup BufRead *.txt {
echo "Foo"
echo "Bar"
}
" Multiline {cmd} arg
autocmd BufRead *.txt echo "Foo"
\| echo "Bar"
\| echo "Baz"
autocmd BufRead *.txt echo "Foo" |
\ echo "Bar" |
\ echo "Baz"
autocmd BufRead *.txt
"\ comment
\ echo "Foo" |
"\ comment
\ echo "Bar"
"\ comment
\| echo "Baz"
autocmd BufRead,BufNewFile *.txt
"\ comment
\ echo "Foo" |
"\ comment
\ echo "Bar"
"\ comment
\| echo "Baz"
autocmd User FooEvent *.txt
"\ comment
\ echo "Foo" |
"\ comment
\ echo "Bar"
"\ comment
\| echo "Baz"
autocmd foogroup BufRead *.txt
"\ comment
\ echo "Foo" |
"\ comment
\ echo "Bar"
"\ comment
\| echo "Baz"
" Multiple patterns
autocmd BufRead *.txt,*.vim,*.c echo "Foo" | echo "Bar"
autocmd BufRead <buffer>,*.vim,*.c echo "Foo" | echo "Bar"
autocmd BufRead *.txt,<buffer>,*.c echo "Foo" | echo "Bar"
autocmd BufRead *.txt,*.vim,<buffer> echo "Foo" | echo "Bar"
autocmd BufRead <buffer=1>,<buffer=2>,<buffer=3> echo "Foo" | echo "Bar"
" FIXME: "BufRead" and "*" are valid group names, however, :help :augroup
" explicitly directs the user NOT to shadow event names with group names
autocmd BufRead BufRead *.txt ++once ++nested echo "Foo"
autocmd * BufRead *.txt ++once ++nested echo "Foo"
" Remove
autocmd! foogroup BufRead *.txt ++once ++nested echo "Foo" | echo "Bar"
autocmd! BufRead *.txt ++once ++nested echo "Foo" | echo "Bar"
autocmd! foogroup User FooEvent *.txt ++once ++nested echo "Foo" | echo "Bar"
autocmd! User FooEvent *.txt ++once ++nested echo "Foo" | echo "Bar"
autocmd! foogroup BufRead *.txt
autocmd! BufRead *.txt
autocmd! foogroup User FooEvent *.txt
autocmd! User FooEvent *.txt
autocmd! foogroup * *.txt
autocmd! * *.txt
autocmd! foogroup BufRead
autocmd! BufRead
autocmd! foogroup User FooEvent
autocmd! User FooEvent
autocmd! foogroup
autocmd!
" command -> bang -> group "!foogroup!"
autocmd!!foogroup!
" command -> bang -> group "foogroup"
autocmd!foogroup
" command -> bang -> event
autocmd!BufRead
" command -> bang -> user event
autocmd!User FooEvent
" FIXME: "*" and "BufRead" are valid group names, however, :help :augroup
" explicitly directs the user NOT to shadow event names
" command -> group "*" -> event glob -> pattern
autocmd!* * *.txt
" command -> group "BufRead" -> event "BufRead" -> pattern
autocmd!BufRead BufRead *.txt
" List
autocmd foogroup BufRead *.txt
autocmd BufRead *.txt
autocmd foogroup User FooEvent *.txt
autocmd User FooEvent *.txt
autocmd foogroup * *.txt
autocmd * *.txt
autocmd foogroup BufRead
autocmd BufRead
autocmd foogroup User FooEvent
autocmd User FooEvent
autocmd foogroup
autocmd
" :doautoall
doautoall BufRead
doautoall BufRead *.txt
doautoall foogroup BufRead
doautoall <nomodeline> BufRead
doautoall <nomodeline> foogroup BufRead *.txt
doautoall User FooEvent
doautoall User FooEvent *.txt
doautoall foogroup User FooEvent
doautoall <nomodeline> User FooEvent
doautoall <nomodeline> foogroup User FooEvent *.txt
doautoall <nomodeline> foogroup BufRead *.txt | echo "Foo"
doautoall <nomodeline> foogroup BufRead *.txt " comment
" :doautocmd
doautocmd BufRead
doautocmd BufRead *.txt
doautocmd foogroup BufRead
doautocmd <nomodeline> BufRead
doautocmd <nomodeline> foogroup BufRead *.txt
doautocmd User FooEvent
doautocmd User FooEvent *.txt
doautocmd foogroup User FooEvent
doautocmd <nomodeline> User FooEvent
doautocmd <nomodeline> foogroup User FooEvent *.txt
doautocmd <nomodeline> foogroup BufRead *.txt | echo "Foo"
doautocmd <nomodeline> foogroup BufRead *.txt | " comment
" patterns
au BufRead */*.txt
au BufRead */*.*
au BufRead */*.???
au BufRead */*.[t][x]t
au BufRead */*.[a-z][a-z]t
au BufRead */*.[[:alpha:][:alpha:]]t
au BufRead */*.[tx]\\\{2\}t
au BufRead */*.[a-z]\\\{2\}t
au BufRead */*.[[:alpha:]]\\\{2\}t
au BufRead */*.[^[:punct:]]\\\{2\}t
au BufRead */*.[]]xt
au BufRead */*.[^]]xt
au BufRead */*.[t\]]xt
au BufRead */*.[^t\]]xt
au BufRead */*.[[]xt
au BufRead */*.[^[]xt
au BufRead */*.[-]xt
au BufRead */*.[^-]xt
au BufRead */*.[-t-]xt
au BufRead */*.[^-t-]xt
au BufRead */*.[\^]xt
au BufRead */*.[^^]xt
au BufRead */*.txt,*/*.vim
au BufRead */*.{txt,vim}
au BufRead */*.{t{x,t},v{i,m}}
" literal
au BufRead */*.[]xt
au BufRead */*.[\]xt
au BufRead */*.[^]xt
au BufRead */*.[^\]xt