diff options
author | Daniel Steinberg <dstein64@users.noreply.github.com> | 2022-01-13 00:04:30 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-01-12 22:04:30 -0700 |
commit | 3ee1ba35a79be452951ac35e4f45e779332657ed (patch) | |
tree | db235ac7c0cbce818cd4e5cb2eaa153178ce9052 | |
parent | 39a35dd006e793c4ff4e09436c8fc268c4415bcf (diff) | |
download | rneovim-3ee1ba35a79be452951ac35e4f45e779332657ed.tar.gz rneovim-3ee1ba35a79be452951ac35e4f45e779332657ed.tar.bz2 rneovim-3ee1ba35a79be452951ac35e4f45e779332657ed.zip |
fix(keywordprg): retain terminal buffer after K (#17046)
-rw-r--r-- | src/nvim/normal.c | 6 | ||||
-rw-r--r-- | test/functional/editor/K_spec.lua | 23 |
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) |