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:
@@ -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.
|
||||
|
Reference in New Issue
Block a user