Skip to content

Commit 6fce314

Browse files
authored
Merge pull request #32 from haya14busa/vim-fix-parse-syntax-cmd
fix parse :syntax with <bar>
2 parents 8881479 + 01a00fa commit 6fce314

File tree

3 files changed

+40
-1
lines changed

3 files changed

+40
-1
lines changed

autoload/vimlparser.vim

+25-1
Original file line numberDiff line numberDiff line change
@@ -1820,6 +1820,30 @@ function! s:VimLParser.parse_wincmd()
18201820
call self.add_node(node)
18211821
endfunction
18221822

1823+
" FIXME: validate argument
1824+
function! s:VimLParser.parse_cmd_syntax()
1825+
let end = self.reader.getpos()
1826+
while 1
1827+
let end = self.reader.getpos()
1828+
let c = self.reader.peek()
1829+
if c == "/" || c == "'" || c == "\""
1830+
call self.reader.getn(1)
1831+
call self.parse_pattern(c)
1832+
elseif c == "="
1833+
call self.reader.getn(1)
1834+
call self.parse_pattern(" ")
1835+
elseif self.ends_excmds(c)
1836+
break
1837+
endif
1838+
call self.reader.getn(1)
1839+
endwhile
1840+
let node = s:Node(s:NODE_EXCMD)
1841+
let node.pos = self.ea.cmdpos
1842+
let node.ea = self.ea
1843+
let node.str = self.reader.getstr(self.ea.linepos, end)
1844+
call self.add_node(node)
1845+
endfunction
1846+
18231847
let s:VimLParser.neovim_additional_commands = [
18241848
\ {'name': 'tnoremap', 'minlen': 8, 'flags': 'EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN', 'parser': 'parse_cmd_common'}]
18251849

@@ -2249,7 +2273,7 @@ let s:VimLParser.builtin_commands = [
22492273
\ {'name': 'suspend', 'minlen': 3, 'flags': 'TRLBAR|BANG|CMDWIN', 'parser': 'parse_cmd_common'},
22502274
\ {'name': 'sview', 'minlen': 2, 'flags': 'BANG|FILE1|RANGE|NOTADR|EDITCMD|ARGOPT|TRLBAR', 'parser': 'parse_cmd_common'},
22512275
\ {'name': 'swapname', 'minlen': 2, 'flags': 'TRLBAR|CMDWIN', 'parser': 'parse_cmd_common'},
2252-
\ {'name': 'syntax', 'minlen': 2, 'flags': 'EXTRA|NOTRLCOM|CMDWIN', 'parser': 'parse_cmd_common'},
2276+
\ {'name': 'syntax', 'minlen': 2, 'flags': 'EXTRA|NOTRLCOM|CMDWIN', 'parser': 'parse_cmd_syntax'},
22532277
\ {'name': 'syntime', 'minlen': 5, 'flags': 'NEEDARG|WORD1|TRLBAR|CMDWIN', 'parser': 'parse_cmd_common'},
22542278
\ {'name': 'syncbind', 'minlen': 4, 'flags': 'TRLBAR', 'parser': 'parse_cmd_common'},
22552279
\ {'name': 't', 'minlen': 1, 'flags': 'RANGE|WHOLEFOLD|EXTRA|TRLBAR|CMDWIN|MODIFY', 'parser': 'parse_cmd_common'},

test/test_syncmd.ok

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
(if 1
2+
(excmd "syntax on "))
3+
(excmd "syntax")
4+
(excmd "syntax enable")
5+
(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

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
if 1 | syntax on | endif
2+
syntax
3+
syntax enable
4+
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)