neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

commit 0c89854da1893c9d9d5da1994bea69df31fc2a6f
parent 3d948a4dc4b2cd3c8d3ac497caf3dfe25adfb90d
Author: Gregory Anders <greg@gpanders.com>
Date:   Fri, 20 Aug 2021 14:58:28 -0600

feat(terminal): close shell terminals automatically

When starting a terminal buffer that uses the default value of &shell
(e.g. when using `:terminal` or `termopen([&shell])`), automatically
close the buffer if the shell exits without an error.

Diffstat:
Msrc/nvim/eval/funcs.c | 10++++++++++
1 file changed, 10 insertions(+), 0 deletions(-)

diff --git a/src/nvim/eval/funcs.c b/src/nvim/eval/funcs.c @@ -8502,6 +8502,16 @@ static void f_termopen(typval_T *argvars, typval_T *rettv, EvalFuncData fptr) channel_terminal_open(curbuf, chan); channel_create_event(chan, NULL); + + do_cmdline_cmd("augroup nvim_terminal_close"); + do_cmdline_cmd("autocmd! TermClose <buffer> " + " if !v:event.status |" + " let info = nvim_get_chan_info(&channel) |" + " if info.argv ==# [&shell] |" + " exec 'bdelete! ' .. expand('<abuf>') |" + " endif |" + " endif"); + do_cmdline_cmd("augroup END"); } /// "timer_info([timer])" function