@@ -11,11 +11,16 @@ endfunction
1111" @brief Read input as VimScript and return stringified AST.
1212" @param input Input filename or string of VimScript.
1313" @return Stringified AST.
14- function ! vimlparser#test (input )
14+ function ! vimlparser#test (input , ... )
1515 try
16+ if a: 0 > 0
17+ let l: neovim = a: 1
18+ else
19+ let l: neovim = 0
20+ endif
1621 let i = type (a: input ) == 1 && filereadable (a: input ) ? readfile (a: input ) : a: input
1722 let r = s: StringReader .new (i )
18- let p = s: VimLParser .new ()
23+ let p = s: VimLParser .new (l: neovim )
1924 let c = s: Compiler .new ()
2025 echo join (c .compile (p .parse (r )), " \n " )
2126 catch
@@ -409,7 +414,13 @@ function! s:VimLParser.new(...)
409414 return obj
410415endfunction
411416
412- function ! s: VimLParser .__init__ ()
417+ function ! s: VimLParser .__init__ (... )
418+ if len (a: 000 ) > 0
419+ let self .neovim = a: 000 [0 ]
420+ else
421+ let self .neovim = 0
422+ endif
423+
413424 let self .find_command_cache = {}
414425endfunction
415426
@@ -823,6 +834,24 @@ function! s:VimLParser.find_command()
823834 endif
824835 endfor
825836
837+ if self .neovim
838+ for x in self .neovim_additional_commands
839+ if stridx (x .name, name) == 0 && len (name) >= x .minlen
840+ unlet cmd
841+ let cmd = x
842+ break
843+ endif
844+ endfor
845+
846+ for x in self .neovim_removed_commands
847+ if stridx (x .name, name) == 0 && len (name) >= x .minlen
848+ unlet cmd
849+ let cmd = s: NIL
850+ break
851+ endif
852+ endfor
853+ endif
854+
826855 " FIXME: user defined command
827856 if (cmd is s: NIL || cmd.name == # ' Print' ) && name = ~# ' ^[A-Z]'
828857 let name .= self .reader.read_alnum ()
@@ -1789,6 +1818,18 @@ function! s:VimLParser.parse_wincmd()
17891818 call self .add_node (node)
17901819endfunction
17911820
1821+ let s: VimLParser .neovim_additional_commands = [
1822+ \ {' name' : ' tnoremap' , ' minlen' : 8 , ' flags' : ' EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN' , ' parser' : ' parse_cmd_common' }]
1823+
1824+ let s: VimLParser .neovim_removed_commands = [
1825+ \ {" name" :" Print" , " minlen" :1 , " flags" :" RANGE|WHOLEFOLD|COUNT|EXFLAGS|TRLBAR|CMDWIN" , " parser" :" parse_cmd_common" },
1826+ \ {" name" :" fixdel" , " minlen" :3 , " flags" :" TRLBAR|CMDWIN" , " parser" :" parse_cmd_common" },
1827+ \ {" name" :" helpfind" , " minlen" :5 , " flags" :" EXTRA|NOTRLCOM" , " parser" :" parse_cmd_common" },
1828+ \ {" name" :" open" , " minlen" :1 , " flags" :" RANGE|BANG|EXTRA" , " parser" :" parse_cmd_common" },
1829+ \ {" name" :" shell" , " minlen" :2 , " flags" :" TRLBAR|CMDWIN" , " parser" :" parse_cmd_common" },
1830+ \ {" name" :" tearoff" , " minlen" :2 , " flags" :" NEEDARG|EXTRA|TRLBAR|NOTRLCOM|CMDWIN" , " parser" :" parse_cmd_common" },
1831+ \ {" name" :" gvim" , " minlen" :2 , " flags" :" BANG|FILES|EDITCMD|ARGOPT|TRLBAR|CMDWIN" , " parser" :" parse_cmd_common" }]
1832+
17921833let s: VimLParser .builtin_commands = [
17931834 \ {' name' : ' append' , ' minlen' : 1 , ' flags' : ' BANG|RANGE|ZEROR|TRLBAR|CMDWIN|MODIFY' , ' parser' : ' parse_cmd_append' },
17941835 \ {' name' : ' abbreviate' , ' minlen' : 2 , ' flags' : ' EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN' , ' parser' : ' parse_cmd_common' },
0 commit comments