mirror of
https://github.com/vim/vim.git
synced 2025-11-09 10:37:17 -05:00
patch 9.1.0312: heredocs are not supported for :commands
Problem: heredocs are not supported for :commands
(@balki)
Solution: Add heredoc support
(Yegappan Lakshmanan)
fixes: #14491
closes: #14528
Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
committed by
Christian Brabandt
parent
a1dcd76ce7
commit
e74cad3321
@@ -458,7 +458,7 @@ func s:InvokeSomeCommand()
|
||||
SomeCommand
|
||||
endfunc
|
||||
|
||||
def Test_autocommand_block()
|
||||
def Test_command_block()
|
||||
com SomeCommand {
|
||||
g:someVar = 'some'
|
||||
}
|
||||
@@ -469,7 +469,105 @@ def Test_autocommand_block()
|
||||
unlet g:someVar
|
||||
enddef
|
||||
|
||||
def Test_command_block()
|
||||
" Test for using heredoc in a :command command block
|
||||
def Test_command_block_heredoc()
|
||||
var lines =<< trim CODE
|
||||
vim9script
|
||||
com SomeCommand {
|
||||
g:someVar =<< trim END
|
||||
aaa
|
||||
bbb
|
||||
END
|
||||
}
|
||||
SomeCommand
|
||||
assert_equal(['aaa', 'bbb'], g:someVar)
|
||||
def Foo()
|
||||
g:someVar = []
|
||||
SomeCommand
|
||||
assert_equal(['aaa', 'bbb'], g:someVar)
|
||||
enddef
|
||||
Foo()
|
||||
delcommand SomeCommand
|
||||
unlet g:someVar
|
||||
CODE
|
||||
v9.CheckSourceSuccess( lines)
|
||||
|
||||
# Execute a command with heredoc in a block
|
||||
lines =<< trim CODE
|
||||
vim9script
|
||||
com SomeCommand {
|
||||
g:someVar =<< trim END
|
||||
aaa
|
||||
bbb
|
||||
END
|
||||
}
|
||||
execute('SomeCommand')
|
||||
assert_equal(['aaa', 'bbb'], g:someVar)
|
||||
delcommand SomeCommand
|
||||
unlet g:someVar
|
||||
CODE
|
||||
v9.CheckSourceSuccess(lines)
|
||||
|
||||
# heredoc evaluation
|
||||
lines =<< trim CODE
|
||||
vim9script
|
||||
com SomeCommand {
|
||||
var suffix = '---'
|
||||
g:someVar =<< trim eval END
|
||||
ccc{suffix}
|
||||
ddd
|
||||
END
|
||||
}
|
||||
SomeCommand
|
||||
assert_equal(['ccc---', 'ddd'], g:someVar)
|
||||
def Foo()
|
||||
g:someVar = []
|
||||
SomeCommand
|
||||
assert_equal(['ccc---', 'ddd'], g:someVar)
|
||||
enddef
|
||||
Foo()
|
||||
delcommand SomeCommand
|
||||
unlet g:someVar
|
||||
CODE
|
||||
v9.CheckSourceSuccess(lines)
|
||||
|
||||
# command following heredoc
|
||||
lines =<< trim CODE
|
||||
vim9script
|
||||
com SomeCommand {
|
||||
var l =<< trim END
|
||||
eee
|
||||
fff
|
||||
END
|
||||
g:someVar = l
|
||||
}
|
||||
SomeCommand
|
||||
assert_equal(['eee', 'fff'], g:someVar)
|
||||
delcommand SomeCommand
|
||||
unlet g:someVar
|
||||
CODE
|
||||
v9.CheckSourceSuccess(lines)
|
||||
|
||||
# Error in heredoc
|
||||
lines =<< trim CODE
|
||||
vim9script
|
||||
com SomeCommand {
|
||||
g:someVar =<< trim END
|
||||
eee
|
||||
fff
|
||||
}
|
||||
try
|
||||
SomeCommand
|
||||
catch
|
||||
assert_match("E990: Missing end marker 'END'", v:exception)
|
||||
endtry
|
||||
delcommand SomeCommand
|
||||
unlet g:someVar
|
||||
CODE
|
||||
v9.CheckSourceSuccess(lines)
|
||||
enddef
|
||||
|
||||
def Test_autocommand_block()
|
||||
au BufNew *.xml {
|
||||
g:otherVar = 'other'
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user