@@ -11,11 +11,16 @@ endfunction
11
11
" @brief Read input as VimScript and return stringified AST.
12
12
" @param input Input filename or string of VimScript.
13
13
" @return Stringified AST.
14
- function ! vimlparser#test (input )
14
+ function ! vimlparser#test (input , ... )
15
15
try
16
+ if a: 0 > 0
17
+ let l: neovim = a: 1
18
+ else
19
+ let l: neovim = 0
20
+ endif
16
21
let i = type (a: input ) == 1 && filereadable (a: input ) ? readfile (a: input ) : a: input
17
22
let r = s: StringReader .new (i )
18
- let p = s: VimLParser .new ()
23
+ let p = s: VimLParser .new (l: neovim )
19
24
let c = s: Compiler .new ()
20
25
echo join (c .compile (p .parse (r )), " \n " )
21
26
catch
@@ -409,7 +414,13 @@ function! s:VimLParser.new(...)
409
414
return obj
410
415
endfunction
411
416
412
- function ! s: VimLParser .__init__ ()
417
+ function ! s: VimLParser .__init__ (... )
418
+ if a: 0 > 0
419
+ let self .neovim = a: 1
420
+ else
421
+ let self .neovim = 0
422
+ endif
423
+
413
424
let self .find_command_cache = {}
414
425
endfunction
415
426
@@ -823,6 +834,24 @@ function! s:VimLParser.find_command()
823
834
endif
824
835
endfor
825
836
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
+
826
855
" FIXME: user defined command
827
856
if (cmd is s: NIL || cmd.name == # ' Print' ) && name = ~# ' ^[A-Z]'
828
857
let name .= self .reader.read_alnum ()
@@ -1789,6 +1818,18 @@ function! s:VimLParser.parse_wincmd()
1789
1818
call self .add_node (node)
1790
1819
endfunction
1791
1820
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
+
1792
1833
let s: VimLParser .builtin_commands = [
1793
1834
\ {' name' : ' append' , ' minlen' : 1 , ' flags' : ' BANG|RANGE|ZEROR|TRLBAR|CMDWIN|MODIFY' , ' parser' : ' parse_cmd_append' },
1794
1835
\ {' name' : ' abbreviate' , ' minlen' : 2 , ' flags' : ' EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN' , ' parser' : ' parse_cmd_common' },
0 commit comments