mirror of
https://github.com/vim/vim.git
synced 2025-07-26 11:04:33 -04:00
patch 8.0.1789: BufWinEnter does not work well for a terminal window
Problem: BufWinEnter does not work well for a terminal window. Solution: Do not trigger BufWinEnter when opening a terminal window.
This commit is contained in:
parent
dddab90d22
commit
606cb8b08e
@ -469,6 +469,9 @@ BufWinEnter After a buffer is displayed in a window. This
|
|||||||
existing buffer. But it does happen for a
|
existing buffer. But it does happen for a
|
||||||
":split" with the name of the current buffer,
|
":split" with the name of the current buffer,
|
||||||
since it reloads that buffer.
|
since it reloads that buffer.
|
||||||
|
Does not happen for a terminal window, because
|
||||||
|
it starts in Terminal-Job mode and Normal mode
|
||||||
|
commands won't work. Use |TerminalOpen| instead.
|
||||||
*BufWinLeave*
|
*BufWinLeave*
|
||||||
BufWinLeave Before a buffer is removed from a window.
|
BufWinLeave Before a buffer is removed from a window.
|
||||||
Not when it's still visible in another window.
|
Not when it's still visible in another window.
|
||||||
|
@ -605,13 +605,7 @@ term_start(
|
|||||||
* a deadlock if the job is waiting for Vim to read. */
|
* a deadlock if the job is waiting for Vim to read. */
|
||||||
channel_set_nonblock(term->tl_job->jv_channel, PART_IN);
|
channel_set_nonblock(term->tl_job->jv_channel, PART_IN);
|
||||||
|
|
||||||
if (old_curbuf == NULL)
|
if (old_curbuf != NULL)
|
||||||
{
|
|
||||||
++curbuf->b_locked;
|
|
||||||
apply_autocmds(EVENT_BUFWINENTER, NULL, NULL, FALSE, curbuf);
|
|
||||||
--curbuf->b_locked;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
--curbuf->b_nwindows;
|
--curbuf->b_nwindows;
|
||||||
curbuf = old_curbuf;
|
curbuf = old_curbuf;
|
||||||
|
@ -32,7 +32,7 @@ func Run_shell_in_terminal(options)
|
|||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
func Test_terminal_basic()
|
func Test_terminal_basic()
|
||||||
au BufWinEnter * if &buftype == 'terminal' | let b:done = 'yes' | endif
|
au TerminalOpen * let b:done = 'yes'
|
||||||
let buf = Run_shell_in_terminal({})
|
let buf = Run_shell_in_terminal({})
|
||||||
|
|
||||||
if has("unix")
|
if has("unix")
|
||||||
@ -61,7 +61,7 @@ func Test_terminal_basic()
|
|||||||
close
|
close
|
||||||
call assert_equal("", bufname(buf))
|
call assert_equal("", bufname(buf))
|
||||||
|
|
||||||
au! BufWinEnter
|
au! TerminalOpen
|
||||||
unlet g:job
|
unlet g:job
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
@ -761,6 +761,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
1789,
|
||||||
/**/
|
/**/
|
||||||
1788,
|
1788,
|
||||||
/**/
|
/**/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user