mirror of
https://github.com/vim/vim.git
synced 2025-09-26 04:04:07 -04:00
patch 8.0.0198: some syntax arguments take effect even after "if 0"
Problem: Some syntax arguments take effect even after "if 0". (Taylor Venable) Solution: Properly skip the syntax statements. Make "syn case" and "syn conceal" report the current state. Fix that "syn clear" didn't reset the conceal flag. Add tests for :syntax skipping properly.
This commit is contained in:
@@ -162,3 +162,134 @@ func Test_syntax_completion()
|
||||
call feedkeys(":syn match \<C-A>\<C-B>\"\<CR>", 'tx')
|
||||
call assert_match('^"syn match Boolean Character ', @:)
|
||||
endfunc
|
||||
|
||||
func Test_syntax_arg_skipped()
|
||||
syn clear
|
||||
syntax case ignore
|
||||
if 0
|
||||
syntax case match
|
||||
endif
|
||||
call assert_match('case ignore', execute('syntax case'))
|
||||
|
||||
syn keyword Foo foo
|
||||
call assert_match('Foo', execute('syntax'))
|
||||
syn clear
|
||||
call assert_match('case match', execute('syntax case'))
|
||||
call assert_notmatch('Foo', execute('syntax'))
|
||||
|
||||
if has('conceal')
|
||||
syn clear
|
||||
syntax conceal on
|
||||
if 0
|
||||
syntax conceal off
|
||||
endif
|
||||
call assert_match('conceal on', execute('syntax conceal'))
|
||||
syn clear
|
||||
call assert_match('conceal off', execute('syntax conceal'))
|
||||
endif
|
||||
|
||||
syntax region Tar start=/</ end=/>/
|
||||
if 0
|
||||
syntax region NotTest start=/</ end=/>/ contains=@Spell
|
||||
endif
|
||||
call assert_match('Tar', execute('syntax'))
|
||||
call assert_notmatch('NotTest', execute('syntax'))
|
||||
call assert_notmatch('Spell', execute('syntax'))
|
||||
|
||||
hi Foo ctermfg=blue
|
||||
let a = execute('hi Foo')
|
||||
if 0
|
||||
syntax rest
|
||||
endif
|
||||
call assert_equal(a, execute('hi Foo'))
|
||||
|
||||
set ft=tags
|
||||
syn off
|
||||
if 0
|
||||
syntax enable
|
||||
endif
|
||||
call assert_match('No Syntax items defined', execute('syntax'))
|
||||
syntax enable
|
||||
call assert_match('tagComment', execute('syntax'))
|
||||
set ft=
|
||||
|
||||
syn clear
|
||||
if 0
|
||||
syntax include @Spell nothing
|
||||
endif
|
||||
call assert_notmatch('Spell', execute('syntax'))
|
||||
|
||||
syn clear
|
||||
syn iskeyword 48-57,$,_
|
||||
call assert_match('48-57,$,_', execute('syntax iskeyword'))
|
||||
if 0
|
||||
syn clear
|
||||
syn iskeyword clear
|
||||
endif
|
||||
call assert_match('48-57,$,_', execute('syntax iskeyword'))
|
||||
syn iskeyword clear
|
||||
call assert_match('not set', execute('syntax iskeyword'))
|
||||
syn iskeyword 48-57,$,_
|
||||
syn clear
|
||||
call assert_match('not set', execute('syntax iskeyword'))
|
||||
|
||||
syn clear
|
||||
syn keyword Foo foo
|
||||
if 0
|
||||
syn keyword NotAdded bar
|
||||
endif
|
||||
call assert_match('Foo', execute('syntax'))
|
||||
call assert_notmatch('NotAdded', execute('highlight'))
|
||||
|
||||
syn clear
|
||||
syn keyword Foo foo
|
||||
call assert_match('Foo', execute('syntax'))
|
||||
call assert_match('Foo', execute('syntax list'))
|
||||
call assert_notmatch('Foo', execute('if 0 | syntax | endif'))
|
||||
call assert_notmatch('Foo', execute('if 0 | syntax list | endif'))
|
||||
|
||||
syn clear
|
||||
syn match Fopi /asdf/
|
||||
if 0
|
||||
syn match Fopx /asdf/
|
||||
endif
|
||||
call assert_match('Fopi', execute('syntax'))
|
||||
call assert_notmatch('Fopx', execute('syntax'))
|
||||
|
||||
syn clear
|
||||
syn spell toplevel
|
||||
call assert_match('spell toplevel', execute('syntax spell'))
|
||||
if 0
|
||||
syn spell notoplevel
|
||||
endif
|
||||
call assert_match('spell toplevel', execute('syntax spell'))
|
||||
syn spell notoplevel
|
||||
call assert_match('spell notoplevel', execute('syntax spell'))
|
||||
syn spell default
|
||||
call assert_match('spell default', execute('syntax spell'))
|
||||
|
||||
syn clear
|
||||
if 0
|
||||
syntax cluster Spell
|
||||
endif
|
||||
call assert_notmatch('Spell', execute('syntax'))
|
||||
|
||||
syn clear
|
||||
syn keyword Foo foo
|
||||
syn sync ccomment
|
||||
syn sync maxlines=5
|
||||
if 0
|
||||
syn sync maxlines=11
|
||||
endif
|
||||
call assert_match('on C-style comments', execute('syntax sync'))
|
||||
call assert_match('maximal 5 lines', execute('syntax sync'))
|
||||
syn clear
|
||||
syn keyword Foo foo
|
||||
if 0
|
||||
syn sync ccomment
|
||||
endif
|
||||
call assert_notmatch('on C-style comments', execute('syntax sync'))
|
||||
|
||||
syn clear
|
||||
endfunc
|
||||
|
||||
|
Reference in New Issue
Block a user