Skip to content

Commit bdf98ad

Browse files
committed
Support :echoconsole
1 parent 160bc69 commit bdf98ad

File tree

3 files changed

+22
-1
lines changed

3 files changed

+22
-1
lines changed

autoload/vimlparser.vim

+20-1
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,7 @@ let s:NODE_CONST = 94
142142
let s:NODE_EVAL = 95
143143
let s:NODE_HEREDOC = 96
144144
let s:NODE_METHOD = 97
145+
let s:NODE_ECHOCONSOLE = 98
145146

146147
let s:TOKEN_EOF = 1
147148
let 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)
19371940
endfunction
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+
19391950
function! 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, ' '))
53775391
endfunction
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+
53795398
function! 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, ' '))

test/test1.ok

+1
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@
4646
(echon "echon")
4747
(echomsg "echomsg")
4848
(echoerr "echoerr")
49+
(echoconsole "echoconsole")
4950
(execute "normal ihello")
5051
(echo (list) (list 1 2 3) (list 1 2 3))
5152
(echo (dict) (dict ("x" "y")) (dict ("x" "y") ("z" "w")))

test/test1.vim

+1
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ echohl Error
5353
echon "echon"
5454
echomsg "echomsg"
5555
echoerr "echoerr"
56+
echoconsole "echoconsole"
5657
execute "normal ihello"
5758
echo [] [1,2,3] [1,2,3,]
5859
echo {} {"x":"y"} {"x":"y","z":"w",}

0 commit comments

Comments
 (0)