aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2025-03-08 07:29:45 +0800
committerGitHub <noreply@github.com>2025-03-08 07:29:45 +0800
commitf05a6666cfcb2cd95d860620748cb0fa58b23aba (patch)
tree5b573893d2596e2664290d914c56a31bf9932b60 /src
parent4a0e0e345340d715f784f317e99abfa71ecbc744 (diff)
downloadrneovim-f05a6666cfcb2cd95d860620748cb0fa58b23aba.tar.gz
rneovim-f05a6666cfcb2cd95d860620748cb0fa58b23aba.tar.bz2
rneovim-f05a6666cfcb2cd95d860620748cb0fa58b23aba.zip
fix(events): always allow some events to be nested (#32706)
Always allow the following four events to be nested, as they may contain important information, and are triggered on the event loop, which may be processed by a blocking call inside another autocommand. - ChanInfo - ChanOpen - TermRequest - TermResponse There are some other events that are triggered on the event loop, but they are mostly triggered by user actions in a UI client, and therefore not very likely to happen during another autocommand, so leave them unchanged for now.
Diffstat (limited to 'src')
-rw-r--r--src/nvim/api/ui.c2
-rw-r--r--src/nvim/channel.c2
-rw-r--r--src/nvim/terminal.c2
3 files changed, 3 insertions, 3 deletions
diff --git a/src/nvim/api/ui.c b/src/nvim/api/ui.c
index 7aa4cf4576..aa9dc1098e 100644
--- a/src/nvim/api/ui.c
+++ b/src/nvim/api/ui.c
@@ -510,7 +510,7 @@ void nvim_ui_term_event(uint64_t channel_id, String event, Object value, Error *
MAXSIZE_TEMP_DICT(data, 1);
PUT_C(data, "sequence", value);
- apply_autocmds_group(EVENT_TERMRESPONSE, NULL, NULL, false, AUGROUP_ALL, NULL, NULL,
+ apply_autocmds_group(EVENT_TERMRESPONSE, NULL, NULL, true, AUGROUP_ALL, NULL, NULL,
&DICT_OBJ(data));
}
}
diff --git a/src/nvim/channel.c b/src/nvim/channel.c
index c964748a20..9fc0a82ca3 100644
--- a/src/nvim/channel.c
+++ b/src/nvim/channel.c
@@ -897,7 +897,7 @@ static void set_info_event(void **argv)
tv_dict_add_dict(dict, S_LEN("info"), retval.vval.v_dict);
tv_dict_set_keys_readonly(dict);
- apply_autocmds(event, NULL, NULL, false, curbuf);
+ apply_autocmds(event, NULL, NULL, true, curbuf);
restore_v_event(dict, &save_v_event);
arena_mem_free(arena_finish(&arena));
diff --git a/src/nvim/terminal.c b/src/nvim/terminal.c
index c0f938adda..ed757a63f9 100644
--- a/src/nvim/terminal.c
+++ b/src/nvim/terminal.c
@@ -243,7 +243,7 @@ static void emit_termrequest(void **argv)
PUT_C(data, "cursor", ARRAY_OBJ(cursor));
buf_T *buf = handle_get_buffer(term->buf_handle);
- apply_autocmds_group(EVENT_TERMREQUEST, NULL, NULL, false, AUGROUP_ALL, buf, NULL,
+ apply_autocmds_group(EVENT_TERMREQUEST, NULL, NULL, true, AUGROUP_ALL, buf, NULL,
&DICT_OBJ(data));
xfree(sequence);