aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Steinberg <dstein64@users.noreply.github.com>2022-01-13 00:04:30 -0500
committerGitHub <noreply@github.com>2022-01-12 22:04:30 -0700
commit3ee1ba35a79be452951ac35e4f45e779332657ed (patch)
treedb235ac7c0cbce818cd4e5cb2eaa153178ce9052
parent39a35dd006e793c4ff4e09436c8fc268c4415bcf (diff)
downloadrneovim-3ee1ba35a79be452951ac35e4f45e779332657ed.tar.gz
rneovim-3ee1ba35a79be452951ac35e4f45e779332657ed.tar.bz2
rneovim-3ee1ba35a79be452951ac35e4f45e779332657ed.zip
fix(keywordprg): retain terminal buffer after K (#17046)
-rw-r--r--src/nvim/normal.c6
-rw-r--r--test/functional/editor/K_spec.lua23
2 files changed, 24 insertions, 5 deletions
diff --git a/src/nvim/normal.c b/src/nvim/normal.c
index 60bf393085..2b5b47c0b3 100644
--- a/src/nvim/normal.c
+++ b/src/nvim/normal.c
@@ -4437,11 +4437,7 @@ static void nv_ident(cmdarg_T *cap)
// Start insert mode in terminal buffer
restart_edit = 'i';
- add_map((char_u *)"<buffer> <esc> <Cmd>call jobstop(&channel)<CR>", TERM_FOCUS, true);
- do_cmdline_cmd("autocmd TermClose <buffer> "
- " if !v:event.status |"
- " exec 'bdelete! ' .. expand('<abuf>') |"
- " endif");
+ add_map((char_u *)"<buffer> <esc> <Cmd>bdelete!<CR>", TERM_FOCUS, true);
}
}
diff --git a/test/functional/editor/K_spec.lua b/test/functional/editor/K_spec.lua
index 40f36491e4..8ad81ac3d6 100644
--- a/test/functional/editor/K_spec.lua
+++ b/test/functional/editor/K_spec.lua
@@ -33,6 +33,29 @@ describe('K', function()
feed('i'..test_file..'<ESC>K')
retry(nil, nil, function() eq(1, eval('filereadable("'..test_file..'")')) end)
eq({'fnord'}, eval("readfile('"..test_file.."')"))
+ -- Confirm that Neovim is still in terminal mode after K is pressed (#16692).
+ helpers.sleep(500)
+ eq('t', eval('mode()'))
+ feed('<space>') -- Any key, not just <space>, can be used here to escape.
+ eq('n', eval('mode()'))
+ end)
+
+ it("<esc> kills the buffer for a running 'keywordprg' command", function()
+ helpers.source('set keywordprg=less')
+ eval('writefile(["hello", "world"], "' .. test_file .. '")')
+ feed('i' .. test_file .. '<esc>K')
+ eq('t', eval('mode()'))
+ -- Confirm that an arbitrary keypress doesn't escape (i.e., the process is
+ -- still running). If the process were no longer running, an arbitrary
+ -- keypress would escape.
+ helpers.sleep(500)
+ feed('<space>')
+ eq('t', eval('mode()'))
+ -- Confirm that <esc> kills the buffer for the running command.
+ local bufnr = eval('bufnr()')
+ feed('<esc>')
+ eq('n', eval('mode()'))
+ helpers.neq(bufnr, eval('bufnr()'))
end)
end)