feat(ui)!: emit prompt "messages" as cmdline events #31525

Problem:  Prompts are emitted as messages events, where cmdline events
          are more appropriate. The user input is also emitted as
          message events in fast context, so cannot be displayed with
          vim.ui_attach().
Solution: Prompt for user input through cmdline prompts.
This commit is contained in:
luukvbaal
2025-01-02 14:51:03 +01:00
committed by GitHub
parent 9d9ee3476e
commit 48e2a73610
25 changed files with 259 additions and 351 deletions

View File

@@ -270,48 +270,6 @@ describe('vim.ui_attach', function()
},
},
})
-- No fast context for prompt message kinds
feed(':%s/Function/Replacement/c<cr>')
screen:expect({
grid = [[
^E122: {10:Function} Foo already exists, add !|
to replace it |
replace with Replacement (y/n/a/q/l/^E/^|
Y)? |
{1:~ }|
]],
cmdline = { { abort = false } },
messages = {
{
content = { { 'replace with Replacement (y/n/a/q/l/^E/^Y)?', 6, 18 } },
history = true,
kind = 'confirm_sub',
},
},
})
feed('<esc>:call inputlist(["Select:", "One", "Two"])<cr>')
screen:expect({
grid = [[
E122: {10:Function} Foo already exists, add !|
to replace it |
Type number and <Enter> or click with th|
e mouse (q or empty cancels): |
{1:^~ }|
]],
cmdline = { { abort = false } },
messages = {
{
content = { { 'Select:\nOne\nTwo\n' } },
history = false,
kind = 'list_cmd',
},
{
content = { { 'Type number and <Enter> or click with the mouse (q or empty cancels): ' } },
history = false,
kind = 'number_prompt',
},
},
})
end)
end)