0
0
mirror of https://github.com/vim/vim.git synced 2025-07-26 11:04:33 -04:00

patch 9.0.1439: start Insert mode when accessing a hidden prompt buffer

Problem:    Start Insert mode when accessing a hidden prompt buffer.
Solution:   Call leaving_window() in aucmd_restbuf(). (Thorben Tröbst,
            closes #12148, closes #12147)
This commit is contained in:
orbital 2023-04-02 22:05:13 +01:00 committed by Bram Moolenaar
parent 065088d554
commit cde8de0345
5 changed files with 46 additions and 2 deletions

View File

@ -1657,7 +1657,10 @@ aucmd_restbuf(
}
}
win_found:
#ifdef FEAT_JOB_CHANNEL
// May need to stop Insert mode if we were in a prompt buffer.
leaving_window(curwin);
#endif
// Remove the window and frame from the tree of frames.
(void)winframe_remove(curwin, &dummy, NULL);
win_remove(curwin, NULL);

View File

@ -13,6 +13,7 @@ int win_count(void);
int make_windows(int count, int vertical);
void win_move_after(win_T *win1, win_T *win2);
void win_equal(win_T *next_curwin, int current, int dir);
void leaving_window(win_T *win);
void entering_window(win_T *win);
void curwin_init(void);
void close_windows(buf_T *buf, int keep_curwin);

View File

@ -252,4 +252,42 @@ func Test_prompt_while_writing_to_hidden_buffer()
call StopVimInTerminal(buf)
endfunc
func Test_prompt_appending_while_hidden()
call CanTestPromptBuffer()
let script =<< trim END
new prompt
set buftype=prompt
set bufhidden=hide
func s:TextEntered(text)
if a:text == 'exit'
close
endif
echowin 'Entered:' a:text
endfunc
call prompt_setcallback(bufnr(), function('s:TextEntered'))
func DoAppend()
call appendbufline('prompt', '$', 'Test')
endfunc
END
call writefile(script, 'XpromptBuffer', 'D')
let buf = RunVimInTerminal('-S XpromptBuffer', {'rows': 10})
call TermWait(buf)
call term_sendkeys(buf, "asomething\<CR>")
call TermWait(buf)
call term_sendkeys(buf, "exit\<CR>")
call TermWait(buf)
call term_sendkeys(buf, ":call DoAppend()\<CR>")
call TermWait(buf)
call assert_notmatch('-- INSERT --', term_getline(buf, 10))
call StopVimInTerminal(buf)
endfunc
" vim: shiftwidth=2 sts=2 expandtab

View File

@ -695,6 +695,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
1439,
/**/
1438,
/**/

View File

@ -2292,7 +2292,7 @@ win_equal_rec(
}
#ifdef FEAT_JOB_CHANNEL
static void
void
leaving_window(win_T *win)
{
// Only matters for a prompt window.