vim-patch:9.1.0329: String interpolation fails for Dict type (#28335)

Problem:  String interpolation fails for Dict type
Solution: Support Dict data type properly, also support :put =Dict
          (without having to convert it to string() first)
          (Yegappan Lakshmanan)

fixes: vim/vim#14529
closes: vim/vim#14541

f01493c550

Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
This commit is contained in:
zeertzjq
2024-04-15 07:11:39 +08:00
committed by GitHub
parent 7180ef6901
commit 43f8d7e3ef
11 changed files with 62 additions and 48 deletions

View File

@@ -52,43 +52,34 @@ describe('insert-mode', function()
end)
it('double quote is removed after hit-enter prompt #22609', function()
local screen = Screen.new(60, 6)
screen:set_default_attr_ids({
[0] = { bold = true, foreground = Screen.colors.Blue }, -- NonText
[1] = { foreground = Screen.colors.Blue }, -- SpecialKey
[2] = { foreground = Screen.colors.SlateBlue },
[3] = { bold = true }, -- ModeMsg
[4] = { reverse = true, bold = true }, -- MsgSeparator
[5] = { background = Screen.colors.Red, foreground = Screen.colors.White }, -- ErrorMsg
[6] = { foreground = Screen.colors.SeaGreen, bold = true }, -- MoreMsg
})
local screen = Screen.new(50, 6)
screen:attach()
feed('i<C-R>')
screen:expect([[
{1:^"} |
{0:~ }|*4
{3:-- INSERT --} |
{18:^"} |
{1:~ }|*4
{5:-- INSERT --} |
]])
feed('={}')
feed("=function('add')")
screen:expect([[
{1:"} |
{0:~ }|*4
={2:{}}^ |
{18:"} |
{1:~ }|*4
={25:function}{16:(}{26:'add'}{16:)}^ |
]])
feed('<CR>')
screen:expect([[
{1:"} |
{0:~ }|
{4: }|
={2:{}} |
{5:E731: Using a Dictionary as a String} |
{6:Press ENTER or type command to continue}^ |
{18:"} |
{1:~ }|
{3: }|
={25:function}{16:(}{26:'add'}{16:)} |
{9:E729: Using a Funcref as a String} |
{6:Press ENTER or type command to continue}^ |
]])
feed('<CR>')
screen:expect([[
^ |
{0:~ }|*4
{3:-- INSERT --} |
^ |
{1:~ }|*4
{5:-- INSERT --} |
]])
end)
end)