From 484f4554021f3ecc169c1d57bf911deefdd35eda Mon Sep 17 00:00:00 2001 From: zeertzjq Date: Thu, 29 Jan 2026 16:29:49 +0800 Subject: [PATCH] test(terminal): status is -1 in TermClose if buffer is deleted (#37609) --- runtime/doc/autocmd.txt | 3 ++- src/nvim/eval/funcs.c | 2 +- test/functional/autocmd/termxx_spec.lua | 7 +++++++ test/functional/terminal/buffer_spec.lua | 5 ++--- 4 files changed, 12 insertions(+), 5 deletions(-) diff --git a/runtime/doc/autocmd.txt b/runtime/doc/autocmd.txt index d20f4fdaff..2b5520a3e4 100644 --- a/runtime/doc/autocmd.txt +++ b/runtime/doc/autocmd.txt @@ -1077,7 +1077,8 @@ TermLeave After leaving |Terminal-mode|. *TermClose* TermClose When a |terminal| job ends. Sets these |v:event| keys: - status + status job exit status, or -1 if the + terminal buffer is deleted *TermRequest* TermRequest When a |:terminal| child process emits an OSC, DCS, or APC sequence. Sets |v:termrequest|. The diff --git a/src/nvim/eval/funcs.c b/src/nvim/eval/funcs.c index 8bea81d752..349d99cfb5 100644 --- a/src/nvim/eval/funcs.c +++ b/src/nvim/eval/funcs.c @@ -3632,7 +3632,7 @@ void f_jobstart(typval_T *argvars, typval_T *rettv, EvalFuncData fptr) // Terminal URI: "term://$CWD//$PID:$CMD" snprintf(NameBuff, sizeof(NameBuff), "term://%s//%d:%s", IObuff, pid, cmd); - // Buffer has no terminal associated yet; unset 'swapfile' to ensure no swapfile is created. + // Unset 'swapfile' to ensure no swapfile is created. buf->b_p_swf = false; setfname(buf, NameBuff, NULL, true); diff --git a/test/functional/autocmd/termxx_spec.lua b/test/functional/autocmd/termxx_spec.lua index 90fcfb08c6..86767db202 100644 --- a/test/functional/autocmd/termxx_spec.lua +++ b/test/functional/autocmd/termxx_spec.lua @@ -184,6 +184,13 @@ describe('autocmd TermClose', function() retry(nil, nil, function() eq(42, eval('g:status')) end) + + command('set shellcmdflag= | terminal INTERACT') + retry(nil, nil, function() + matches('^interact %$ ?$', api.nvim_buf_get_lines(0, 0, 1, true)[1]) + end) + command('bwipe!') + eq(-1, eval('g:status')) end) end) diff --git a/test/functional/terminal/buffer_spec.lua b/test/functional/terminal/buffer_spec.lua index a8038d2b3d..f97bfb32eb 100644 --- a/test/functional/terminal/buffer_spec.lua +++ b/test/functional/terminal/buffer_spec.lua @@ -89,11 +89,10 @@ describe(':terminal buffer', function() end) it('does not create swap files', function() - local swapfile = api.nvim_exec('swapname', true):gsub('\n', '') - eq(nil, io.open(swapfile)) + eq('No swap file', n.exec_capture('swapname')) end) - it('does not create undofiles files', function() + it('does not create undo files', function() local undofile = api.nvim_eval('undofile(bufname("%"))') eq(nil, io.open(undofile)) end)