diff options
author | Bram Moolenaar <Bram@vim.org> | 2020-04-19 18:13:19 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2020-04-19 18:13:19 +0200 |
commit | eb58a2465825c258beafae96240824923f73779f (patch) | |
tree | d1cf57f04c9eb8626c0e8d76196a53c061133e06 /src | |
parent | f49e5640821d8ef752fb50d99edcf40bb62a4d4d (diff) | |
download | vim-git-8.2.0604.tar.gz |
patch 8.2.0604: :startinsert in a terminal window used laterv8.2.0604
Problem: :startinsert in a terminal window used later.
Solution: Ignore :startinsert in a terminal window. (closes #5952)
Diffstat (limited to 'src')
-rw-r--r-- | src/ex_docmd.c | 5 | ||||
-rw-r--r-- | src/testdir/test_terminal.vim | 22 | ||||
-rw-r--r-- | src/version.c | 2 |
3 files changed, 29 insertions, 0 deletions
diff --git a/src/ex_docmd.c b/src/ex_docmd.c index 5c18b0bcc..e2d771e19 100644 --- a/src/ex_docmd.c +++ b/src/ex_docmd.c @@ -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. diff --git a/src/testdir/test_terminal.vim b/src/testdir/test_terminal.vim index 7b9277475..549fdd16f 100644 --- a/src/testdir/test_terminal.vim +++ b/src/testdir/test_terminal.vim @@ -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 diff --git a/src/version.c b/src/version.c index c2e492887..89021265a 100644 --- a/src/version.c +++ b/src/version.c @@ -747,6 +747,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 604, +/**/ 603, /**/ 602, |