Skip to content

Commit

Permalink
fix(keywordprg): retain terminal buffer after K (#17046)
Browse files Browse the repository at this point in the history
  • Loading branch information
dstein64 committed Jan 13, 2022
1 parent 39a35dd commit 3ee1ba3
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 5 deletions.
6 changes: 1 addition & 5 deletions src/nvim/normal.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
}

Expand Down
23 changes: 23 additions & 0 deletions test/functional/editor/K_spec.lua
Original file line number Diff line number Diff line change
Expand Up @@ -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)

0 comments on commit 3ee1ba3

Please sign in to comment.