fix(ui): no fast context for prompt message kinds #31224

Problem:  No longer able to show prompt messages with vim.ui_attach().
Solution: Do not execute callback in fast context for prompt message
          kinds. These events must be safe to show the incoming message
          so the event itself serves to indicate that the message
          should be shown immediately.
This commit is contained in:
luukvbaal
2024-11-15 23:34:42 +01:00
committed by GitHub
parent f1748b78e3
commit 6e4df18b45
4 changed files with 33 additions and 4 deletions

View File

@@ -717,6 +717,13 @@ void ui_call_event(char *name, bool fast, Array args)
{
bool handled = false;
UIEventCallback *event_cb;
// Prompt messages should be shown immediately so must be safe
if (strcmp(name, "msg_show") == 0) {
char *kind = args.items[0].data.string.data;
fast = !kind || (strncmp(kind, "confirm", 7) != 0 && strcmp(kind, "return_prompt") != 0);
}
map_foreach(&ui_event_cbs, ui_event_ns_id, event_cb, {
Error err = ERROR_INIT;
uint32_t ns_id = ui_event_ns_id;