diff options
| -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) | 
