mirror of
https://github.com/vim/vim.git
synced 2025-09-24 03:44:06 -04:00
patch 8.1.0171: typing CTRL-W n in a terminal window causes ml_get error
Problem: Typing CTRL-W n in a terminal window causes ml_get error. Solution: When resizing the terminal outside of terminal_loop() make sure the snapshot is complete.
This commit is contained in:
@@ -3134,13 +3134,16 @@ term_update_window(win_T *wp)
|
|||||||
|
|
||||||
if (term->tl_rows != newrows || term->tl_cols != newcols)
|
if (term->tl_rows != newrows || term->tl_cols != newcols)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
term->tl_vterm_size_changed = TRUE;
|
term->tl_vterm_size_changed = TRUE;
|
||||||
vterm_set_size(vterm, newrows, newcols);
|
vterm_set_size(vterm, newrows, newcols);
|
||||||
ch_log(term->tl_job->jv_channel, "Resizing terminal to %d lines",
|
ch_log(term->tl_job->jv_channel, "Resizing terminal to %d lines",
|
||||||
newrows);
|
newrows);
|
||||||
term_report_winsize(term, newrows, newcols);
|
term_report_winsize(term, newrows, newcols);
|
||||||
|
|
||||||
|
// Updating the terminal size will cause the snapshot to be cleared.
|
||||||
|
// When not in terminal_loop() we need to restore it.
|
||||||
|
if (term != in_terminal_loop)
|
||||||
|
may_move_terminal_to_buffer(term, FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* The cursor may have been moved when resizing. */
|
/* The cursor may have been moved when resizing. */
|
||||||
|
@@ -1525,6 +1525,32 @@ func Test_terminwinscroll()
|
|||||||
exe buf . 'bwipe!'
|
exe buf . 'bwipe!'
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
" Resizing the terminal window caused an ml_get error.
|
||||||
|
" TODO: This does not reproduce the original problem.
|
||||||
|
func Test_terminal_resize()
|
||||||
|
set statusline=x
|
||||||
|
terminal
|
||||||
|
call assert_equal(2, winnr('$'))
|
||||||
|
|
||||||
|
" Fill the terminal with text.
|
||||||
|
if has('win32')
|
||||||
|
call feedkeys("dir\<CR>", 'xt')
|
||||||
|
else
|
||||||
|
call feedkeys("ls\<CR>", 'xt')
|
||||||
|
endif
|
||||||
|
" Go to Terminal-Normal mode for a moment.
|
||||||
|
call feedkeys("\<C-W>N", 'xt')
|
||||||
|
" Open a new window
|
||||||
|
call feedkeys("i\<C-W>n", 'xt')
|
||||||
|
call assert_equal(3, winnr('$'))
|
||||||
|
redraw
|
||||||
|
|
||||||
|
close
|
||||||
|
call assert_equal(2, winnr('$'))
|
||||||
|
call feedkeys("exit\<CR>", 'xt')
|
||||||
|
set statusline&
|
||||||
|
endfunc
|
||||||
|
|
||||||
" must be nearly the last, we can't go back from GUI to terminal
|
" must be nearly the last, we can't go back from GUI to terminal
|
||||||
func Test_zz1_terminal_in_gui()
|
func Test_zz1_terminal_in_gui()
|
||||||
if !CanRunGui()
|
if !CanRunGui()
|
||||||
|
@@ -789,6 +789,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 */
|
||||||
|
/**/
|
||||||
|
171,
|
||||||
/**/
|
/**/
|
||||||
170,
|
170,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user