feat(keywordprg): use :terminal for external commands #15398

Open external 'keywordprg' commands in a :terminal in a new tab. <Esc> is
mapped to stop the job and close the buffer.

Closes #2995
Closes #2761
This commit is contained in:
Gregory Anders
2021-08-21 18:23:10 -06:00
committed by GitHub
parent 50b30de200
commit a90513c24b
3 changed files with 17 additions and 5 deletions

View File

@@ -4931,7 +4931,8 @@ static void nv_ident(cmdarg_T *cap)
snprintf(buf, buf_size, ".,.+%" PRId64, (int64_t)(cap->count0 - 1));
}
STRCAT(buf, "! ");
do_cmdline_cmd("tabnew");
STRCAT(buf, "terminal ");
if (cap->count0 == 0 && isman_s) {
STRCAT(buf, "man");
} else {
@@ -5028,6 +5029,17 @@ static void nv_ident(cmdarg_T *cap)
g_tag_at_cursor = true;
do_cmdline_cmd(buf);
g_tag_at_cursor = false;
if (cmdchar == 'K' && !kp_ex && !kp_help) {
// 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");
}
}
xfree(buf);