0
0
mirror of https://github.com/vim/vim.git synced 2025-09-27 04:14:06 -04:00

patch 9.0.0965: using one window for executing autocommands is insufficient

Problem:    Using one window for executing autocommands is insufficient.
Solution:   Use up to five windows for executing autocommands.
This commit is contained in:
Bram Moolenaar
2022-11-28 18:51:43 +00:00
parent 74a694dbe2
commit e76062c078
28 changed files with 451 additions and 260 deletions

View File

@@ -4490,27 +4490,30 @@ mch_call_shell_terminal(
// Find a window to make "buf" curbuf.
aucmd_prepbuf(&aco, buf);
clear_oparg(&oa);
while (term_use_loop())
if (curbuf == buf)
{
if (oa.op_type == OP_NOP && oa.regname == NUL && !VIsual_active)
// Only when managed to find a window for "buf",
clear_oparg(&oa);
while (term_use_loop())
{
// If terminal_loop() returns OK we got a key that is handled
// in Normal model. We don't do redrawing anyway.
if (terminal_loop(TRUE) == OK)
if (oa.op_type == OP_NOP && oa.regname == NUL && !VIsual_active)
{
// If terminal_loop() returns OK we got a key that is handled
// in Normal model. We don't do redrawing anyway.
if (terminal_loop(TRUE) == OK)
normal_cmd(&oa, TRUE);
}
else
normal_cmd(&oa, TRUE);
}
else
normal_cmd(&oa, TRUE);
retval = job->jv_exitval;
ch_log(NULL, "system command finished");
job_unref(job);
// restore curwin/curbuf and a few other things
aucmd_restbuf(&aco);
}
retval = job->jv_exitval;
ch_log(NULL, "system command finished");
job_unref(job);
// restore curwin/curbuf and a few other things
aucmd_restbuf(&aco);
// Only require pressing Enter when redrawing, to avoid that system() gets
// the hit-enter prompt even though it didn't output anything.