Skip to content

Commit c36b441

Browse files
committed
fix parse :syntax with <bar>
1 parent b757ec1 commit c36b441

File tree

3 files changed

+22
-1
lines changed

3 files changed

+22
-1
lines changed

autoload/vimlparser.vim

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -896,6 +896,8 @@ function! s:VimLParser._parse_command(parser) abort
896896
call self.parse_cmd_while()
897897
elseif a:parser == 'parse_wincmd'
898898
call self.parse_wincmd()
899+
elseif a:parser == 'parse_cmd_syntax'
900+
call self.parse_cmd_syntax()
899901
endif
900902
endfunction
901903

@@ -1935,6 +1937,16 @@ function! s:VimLParser.parse_wincmd()
19351937
call self.add_node(node)
19361938
endfunction
19371939

1940+
" FIXME: validate argument
1941+
function! s:VimLParser.parse_cmd_syntax()
1942+
let end = self.separate_nextcmd()
1943+
let node = s:Node(s:NODE_EXCMD)
1944+
let node.pos = self.ea.cmdpos
1945+
let node.ea = self.ea
1946+
let node.str = self.reader.getstr(self.ea.linepos, end)
1947+
call self.add_node(node)
1948+
endfunction
1949+
19381950
let s:VimLParser.neovim_additional_commands = [
19391951
\ {'name': 'tnoremap', 'minlen': 8, 'flags': 'EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN', 'parser': 'parse_cmd_common'}]
19401952

@@ -2364,7 +2376,7 @@ let s:VimLParser.builtin_commands = [
23642376
\ {'name': 'suspend', 'minlen': 3, 'flags': 'TRLBAR|BANG|CMDWIN', 'parser': 'parse_cmd_common'},
23652377
\ {'name': 'sview', 'minlen': 2, 'flags': 'BANG|FILE1|RANGE|NOTADR|EDITCMD|ARGOPT|TRLBAR', 'parser': 'parse_cmd_common'},
23662378
\ {'name': 'swapname', 'minlen': 2, 'flags': 'TRLBAR|CMDWIN', 'parser': 'parse_cmd_common'},
2367-
\ {'name': 'syntax', 'minlen': 2, 'flags': 'EXTRA|NOTRLCOM|CMDWIN', 'parser': 'parse_cmd_common'},
2379+
\ {'name': 'syntax', 'minlen': 2, 'flags': 'EXTRA|NOTRLCOM|CMDWIN', 'parser': 'parse_cmd_syntax'},
23682380
\ {'name': 'syntime', 'minlen': 5, 'flags': 'NEEDARG|WORD1|TRLBAR|CMDWIN', 'parser': 'parse_cmd_common'},
23692381
\ {'name': 'syncbind', 'minlen': 4, 'flags': 'TRLBAR', 'parser': 'parse_cmd_common'},
23702382
\ {'name': 't', 'minlen': 1, 'flags': 'RANGE|WHOLEFOLD|EXTRA|TRLBAR|CMDWIN|MODIFY', 'parser': 'parse_cmd_common'},

test/test_syncmd.ok

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
(if 1
2+
(excmd "syntax on "))
3+
(excmd "syntax")
4+
(excmd "syntax enable")
5+
(excmd "syntax list GroupName")

test/test_syncmd.vim

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
if 1 | syntax on | endif
2+
syntax
3+
syntax enable
4+
syntax list GroupName

0 commit comments

Comments
 (0)