Skip to content

Commit 01a00fa

Browse files
committed
fix parse_cmd_syntax
1 parent 1cbdfa8 commit 01a00fa

File tree

3 files changed

+21
-1
lines changed

3 files changed

+21
-1
lines changed

autoload/vimlparser.vim

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1820,7 +1820,21 @@ endfunction
18201820

18211821
" FIXME: validate argument
18221822
function! s:VimLParser.parse_cmd_syntax()
1823-
let end = self.separate_nextcmd()
1823+
let end = self.reader.getpos()
1824+
while 1
1825+
let end = self.reader.getpos()
1826+
let c = self.reader.peek()
1827+
if c == "/" || c == "'" || c == "\""
1828+
call self.reader.getn(1)
1829+
call self.parse_pattern(c)
1830+
elseif c == "="
1831+
call self.reader.getn(1)
1832+
call self.parse_pattern(" ")
1833+
elseif self.ends_excmds(c)
1834+
break
1835+
endif
1836+
call self.reader.getn(1)
1837+
endwhile
18241838
let node = s:Node(s:NODE_EXCMD)
18251839
let node.pos = self.ea.cmdpos
18261840
let node.ea = self.ea

test/test_syncmd.ok

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,6 @@
33
(excmd "syntax")
44
(excmd "syntax enable")
55
(excmd "syntax list GroupName")
6+
(excmd "syn match pythonError \"[&|]\\{2,}\" display")
7+
(excmd "syntax match qfFileName /^\\zs\\S[^|]\\+\\/\\ze[^|\\/]\\+\\/[^|\\/]\\+|/ conceal cchar=+")
8+
(excmd "syntax region jsString start=+\"+ skip=+\\\\\\(\"\\|$\\)+ end=+\"\\|$+ contains=jsSpecial,@Spell extend")

test/test_syncmd.vim

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,6 @@ if 1 | syntax on | endif
22
syntax
33
syntax enable
44
syntax list GroupName
5+
syn match pythonError "[&|]\{2,}" display
6+
syntax match qfFileName /^\zs\S[^|]\+\/\ze[^|\/]\+\/[^|\/]\+|/ conceal cchar=+
7+
syntax region jsString start=+"+ skip=+\\\("\|$\)+ end=+"\|$+ contains=jsSpecial,@Spell extend

0 commit comments

Comments
 (0)