@@ -142,6 +142,7 @@ let s:NODE_CONST = 94
142142let s: NODE_EVAL = 95
143143let s: NODE_HEREDOC = 96
144144let s: NODE_METHOD = 97
145+ let s: NODE_ECHOCONSOLE = 98
145146
146147let s: TOKEN_EOF = 1
147148let s: TOKEN_EOL = 2
@@ -833,6 +834,8 @@ function! s:VimLParser._parse_command(parser) abort
833834 call self .parse_cmd_delfunction ()
834835 elseif a: parser == # ' parse_cmd_echo'
835836 call self .parse_cmd_echo ()
837+ elseif a: parser == # ' parse_cmd_echoconsole'
838+ call self .parse_cmd_echoconsole ()
836839 elseif a: parser == # ' parse_cmd_echoerr'
837840 call self .parse_cmd_echoerr ()
838841 elseif a: parser == # ' parse_cmd_echohl'
@@ -1936,6 +1939,14 @@ function! s:VimLParser.parse_cmd_echoerr() abort
19361939 call self .add_node (node)
19371940endfunction
19381941
1942+ function ! s: VimLParser .parse_cmd_echoconsole () abort
1943+ let node = s: Node (s: NODE_ECHOCONSOLE )
1944+ let node.pos = self .ea .cmdpos
1945+ let node.ea = self .ea
1946+ let node.list = self .parse_exprlist ()
1947+ call self .add_node (node)
1948+ endfunction
1949+
19391950function ! s: VimLParser .parse_cmd_execute () abort
19401951 let node = s: Node (s: NODE_EXECUTE )
19411952 let node.pos = self .ea .cmdpos
@@ -2303,7 +2314,7 @@ let s:VimLParser.builtin_commands = [
23032314 \ {' name' : ' echoerr' , ' minlen' : 5 , ' flags' : ' EXTRA|NOTRLCOM|EXPR_ARG|SBOXOK|CMDWIN|LOCK_OK' , ' parser' : ' parse_cmd_echoerr' },
23042315 \ {' name' : ' echohl' , ' minlen' : 5 , ' flags' : ' EXTRA|TRLBAR|SBOXOK|CMDWIN|LOCK_OK' , ' parser' : ' parse_cmd_echohl' },
23052316 \ {' name' : ' echomsg' , ' minlen' : 5 , ' flags' : ' EXTRA|NOTRLCOM|EXPR_ARG|SBOXOK|CMDWIN|LOCK_OK' , ' parser' : ' parse_cmd_echomsg' },
2306- \ {' name' : ' echoconsole' , ' minlen' : 5 , ' flags' : ' EXTRA|NOTRLCOM|EXPR_ARG|SBOXOK|CMDWIN|LOCK_OK' , ' parser' : ' parse_cmd_common ' },
2317+ \ {' name' : ' echoconsole' , ' minlen' : 5 , ' flags' : ' EXTRA|NOTRLCOM|EXPR_ARG|SBOXOK|CMDWIN|LOCK_OK' , ' parser' : ' parse_cmd_echoconsole ' },
23072318 \ {' name' : ' echon' , ' minlen' : 5 , ' flags' : ' EXTRA|NOTRLCOM|EXPR_ARG|SBOXOK|CMDWIN|LOCK_OK' , ' parser' : ' parse_cmd_echon' },
23082319 \ {' name' : ' else' , ' minlen' : 2 , ' flags' : ' TRLBAR|SBOXOK|CMDWIN|LOCK_OK' , ' parser' : ' parse_cmd_else' },
23092320 \ {' name' : ' elseif' , ' minlen' : 5 , ' flags' : ' EXTRA|NOTRLCOM|EXPR_ARG|SBOXOK|CMDWIN|LOCK_OK' , ' parser' : ' parse_cmd_elseif' },
@@ -5012,6 +5023,9 @@ function! s:Compiler.compile(node) abort
50125023 elseif a: node .type == # s: NODE_ECHOERR
50135024 call self .compile_echoerr (a: node )
50145025 return s: NIL
5026+ elseif a: node .type == # s: NODE_ECHOCONSOLE
5027+ call self .compile_echoconsole (a: node )
5028+ return s: NIL
50155029 elseif a: node .type == # s: NODE_EXECUTE
50165030 call self .compile_execute (a: node )
50175031 return s: NIL
@@ -5376,6 +5390,11 @@ function! s:Compiler.compile_echoerr(node) abort
53765390 call self .out (' (echoerr %s)' , join (list , ' ' ))
53775391endfunction
53785392
5393+ function ! s: Compiler .compile_echoconsole (node) abort
5394+ let list = map (a: node .list , ' self.compile(v:val)' )
5395+ call self .out (' (echoconsole %s)' , join (list , ' ' ))
5396+ endfunction
5397+
53795398function ! s: Compiler .compile_execute (node) abort
53805399 let list = map (a: node .list , ' self.compile(v:val)' )
53815400 call self .out (' (execute %s)' , join (list , ' ' ))
0 commit comments