From c36b441454b439127bd428cd2c1d012db8fdc938 Mon Sep 17 00:00:00 2001 From: haya14busa Date: Wed, 28 Sep 2016 07:59:15 +0900 Subject: [PATCH 1/2] fix parse :syntax with --- autoload/vimlparser.vim | 14 +++++++++++++- test/test_syncmd.ok | 5 +++++ test/test_syncmd.vim | 4 ++++ 3 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 test/test_syncmd.ok create mode 100644 test/test_syncmd.vim diff --git a/autoload/vimlparser.vim b/autoload/vimlparser.vim index c9e28a2..d35db75 100644 --- a/autoload/vimlparser.vim +++ b/autoload/vimlparser.vim @@ -896,6 +896,8 @@ function! s:VimLParser._parse_command(parser) abort call self.parse_cmd_while() elseif a:parser == 'parse_wincmd' call self.parse_wincmd() + elseif a:parser == 'parse_cmd_syntax' + call self.parse_cmd_syntax() endif endfunction @@ -1935,6 +1937,16 @@ function! s:VimLParser.parse_wincmd() call self.add_node(node) endfunction +" FIXME: validate argument +function! s:VimLParser.parse_cmd_syntax() + let end = self.separate_nextcmd() + let node = s:Node(s:NODE_EXCMD) + let node.pos = self.ea.cmdpos + let node.ea = self.ea + let node.str = self.reader.getstr(self.ea.linepos, end) + call self.add_node(node) +endfunction + let s:VimLParser.neovim_additional_commands = [ \ {'name': 'tnoremap', 'minlen': 8, 'flags': 'EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN', 'parser': 'parse_cmd_common'}] @@ -2364,7 +2376,7 @@ let s:VimLParser.builtin_commands = [ \ {'name': 'suspend', 'minlen': 3, 'flags': 'TRLBAR|BANG|CMDWIN', 'parser': 'parse_cmd_common'}, \ {'name': 'sview', 'minlen': 2, 'flags': 'BANG|FILE1|RANGE|NOTADR|EDITCMD|ARGOPT|TRLBAR', 'parser': 'parse_cmd_common'}, \ {'name': 'swapname', 'minlen': 2, 'flags': 'TRLBAR|CMDWIN', 'parser': 'parse_cmd_common'}, - \ {'name': 'syntax', 'minlen': 2, 'flags': 'EXTRA|NOTRLCOM|CMDWIN', 'parser': 'parse_cmd_common'}, + \ {'name': 'syntax', 'minlen': 2, 'flags': 'EXTRA|NOTRLCOM|CMDWIN', 'parser': 'parse_cmd_syntax'}, \ {'name': 'syntime', 'minlen': 5, 'flags': 'NEEDARG|WORD1|TRLBAR|CMDWIN', 'parser': 'parse_cmd_common'}, \ {'name': 'syncbind', 'minlen': 4, 'flags': 'TRLBAR', 'parser': 'parse_cmd_common'}, \ {'name': 't', 'minlen': 1, 'flags': 'RANGE|WHOLEFOLD|EXTRA|TRLBAR|CMDWIN|MODIFY', 'parser': 'parse_cmd_common'}, diff --git a/test/test_syncmd.ok b/test/test_syncmd.ok new file mode 100644 index 0000000..86ba677 --- /dev/null +++ b/test/test_syncmd.ok @@ -0,0 +1,5 @@ +(if 1 + (excmd "syntax on ")) +(excmd "syntax") +(excmd "syntax enable") +(excmd "syntax list GroupName") diff --git a/test/test_syncmd.vim b/test/test_syncmd.vim new file mode 100644 index 0000000..6530641 --- /dev/null +++ b/test/test_syncmd.vim @@ -0,0 +1,4 @@ +if 1 | syntax on | endif +syntax +syntax enable +syntax list GroupName From 4b98d03049170afb17fa1fd452c9f794bb2a4d63 Mon Sep 17 00:00:00 2001 From: haya14busa Date: Wed, 28 Sep 2016 07:59:51 +0900 Subject: [PATCH 2/2] sh ./go/generate.sh --- go/builtin_commands.go | 2 +- go/vimlparser.go | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/go/builtin_commands.go b/go/builtin_commands.go index 401ec96..b24c6ae 100644 --- a/go/builtin_commands.go +++ b/go/builtin_commands.go @@ -453,7 +453,7 @@ var builtin_commands = []*Cmd{ {flags: "TRLBAR|BANG|CMDWIN", minlen: 3, name: "suspend", parser: "parse_cmd_common"}, {flags: "BANG|FILE1|RANGE|NOTADR|EDITCMD|ARGOPT|TRLBAR", minlen: 2, name: "sview", parser: "parse_cmd_common"}, {flags: "TRLBAR|CMDWIN", minlen: 2, name: "swapname", parser: "parse_cmd_common"}, - {flags: "EXTRA|NOTRLCOM|CMDWIN", minlen: 2, name: "syntax", parser: "parse_cmd_common"}, + {flags: "EXTRA|NOTRLCOM|CMDWIN", minlen: 2, name: "syntax", parser: "parse_cmd_syntax"}, {flags: "NEEDARG|WORD1|TRLBAR|CMDWIN", minlen: 5, name: "syntime", parser: "parse_cmd_common"}, {flags: "TRLBAR", minlen: 4, name: "syncbind", parser: "parse_cmd_common"}, {flags: "RANGE|WHOLEFOLD|EXTRA|TRLBAR|CMDWIN|MODIFY", minlen: 1, name: "t", parser: "parse_cmd_common"}, diff --git a/go/vimlparser.go b/go/vimlparser.go index ba456c5..71b470d 100644 --- a/go/vimlparser.go +++ b/go/vimlparser.go @@ -782,6 +782,8 @@ func (self *VimLParser) _parse_command(parser string) { self.parse_cmd_while() } else if parser == "parse_wincmd" { self.parse_wincmd() + } else if parser == "parse_cmd_syntax" { + self.parse_cmd_syntax() } } @@ -1770,6 +1772,16 @@ func (self *VimLParser) parse_wincmd() { self.add_node(node) } +// FIXME: validate argument +func (self *VimLParser) parse_cmd_syntax() { + var end = self.separate_nextcmd() + var node = Node(NODE_EXCMD) + node.pos = self.ea.cmdpos + node.ea = self.ea + node.str = self.reader.getstr(self.ea.linepos, end) + self.add_node(node) +} + func (self *ExprTokenizer) __init__(reader *StringReader) { self.reader = reader }