From a90513c24bd8f789fba980509a4bdd1d7fc890ec Mon Sep 17 00:00:00 2001 From: Gregory Anders Date: Sat, 21 Aug 2021 18:23:10 -0600 Subject: feat(keywordprg): use :terminal for external commands #15398 Open external 'keywordprg' commands in a :terminal in a new tab. is mapped to stop the job and close the buffer. Closes #2995 Closes #2761 --- src/nvim/normal.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'src/nvim/normal.c') diff --git a/src/nvim/normal.c b/src/nvim/normal.c index 2a530db934..7b2f77a6f9 100644 --- a/src/nvim/normal.c +++ b/src/nvim/normal.c @@ -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 *)" call jobstop(&channel)", TERM_FOCUS, true); + do_cmdline_cmd("autocmd TermClose " + " if !v:event.status |" + " exec 'bdelete! ' .. expand('') |" + " endif"); + } } xfree(buf); -- cgit