mirror of
https://github.com/vim/vim.git
synced 2025-09-24 03:44:06 -04:00
patch 8.2.0604: :startinsert in a terminal window used later
Problem: :startinsert in a terminal window used later. Solution: Ignore :startinsert in a terminal window. (closes #5952)
This commit is contained in:
@@ -7750,6 +7750,11 @@ ex_startinsert(exarg_T *eap)
|
||||
curwin->w_cursor.lnum = 1;
|
||||
set_cursor_for_append_to_line();
|
||||
}
|
||||
#ifdef FEAT_TERMINAL
|
||||
// Ignore this when running in an active terminal.
|
||||
if (term_job_running(curbuf->b_term))
|
||||
return;
|
||||
#endif
|
||||
|
||||
// Ignore the command when already in Insert mode. Inserting an
|
||||
// expression register that invokes a function can do this.
|
||||
|
@@ -2612,4 +2612,26 @@ func Test_term_nasty_callback()
|
||||
set hidden&
|
||||
endfunc
|
||||
|
||||
func Test_term_and_startinsert()
|
||||
CheckRunVimInTerminal
|
||||
CheckUnix
|
||||
|
||||
let lines =<< trim EOL
|
||||
put='some text'
|
||||
term
|
||||
startinsert
|
||||
EOL
|
||||
call writefile(lines, 'XTest_startinsert')
|
||||
let buf = RunVimInTerminal('-S XTest_startinsert', {})
|
||||
|
||||
call term_sendkeys(buf, "exit\r")
|
||||
call WaitForAssert({-> assert_equal("some text", term_getline(buf, 1))})
|
||||
call term_sendkeys(buf, "0l")
|
||||
call term_sendkeys(buf, "A<\<Esc>")
|
||||
call WaitForAssert({-> assert_equal("some text<", term_getline(buf, 1))})
|
||||
|
||||
call StopVimInTerminal(buf)
|
||||
call delete('XTest_startinsert')
|
||||
endfunc
|
||||
|
||||
" vim: shiftwidth=2 sts=2 expandtab
|
||||
|
@@ -746,6 +746,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
604,
|
||||
/**/
|
||||
603,
|
||||
/**/
|
||||
|
Reference in New Issue
Block a user