0
0
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:
Yegappan Lakshmanan
2024-04-12 18:48:35 +02:00
committed by Christian Brabandt
parent a1dcd76ce7
commit e74cad3321
7 changed files with 189 additions and 14 deletions

View File

@@ -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'
}