mirror of
https://github.com/neovim/neovim.git
synced 2025-10-01 07:28:34 +00:00
Merge pull request #4296 from mhinz/fix-termclose
Make TermClose event return the associated buffer
This commit is contained in:
@@ -22199,7 +22199,6 @@ static void on_process_exit(Process *proc, int status, void *d)
|
|||||||
char msg[22];
|
char msg[22];
|
||||||
snprintf(msg, sizeof msg, "\r\n[Process exited %d]", proc->status);
|
snprintf(msg, sizeof msg, "\r\n[Process exited %d]", proc->status);
|
||||||
terminal_close(data->term, msg);
|
terminal_close(data->term, msg);
|
||||||
apply_autocmds(EVENT_TERMCLOSE, NULL, NULL, false, curbuf);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (data->status_ptr) {
|
if (data->status_ptr) {
|
||||||
|
@@ -288,8 +288,9 @@ void terminal_close(Terminal *term, char *msg)
|
|||||||
|
|
||||||
term->forward_mouse = false;
|
term->forward_mouse = false;
|
||||||
term->closed = true;
|
term->closed = true;
|
||||||
|
buf_T *buf = handle_get_buffer(term->buf_handle);
|
||||||
|
|
||||||
if (!msg || exiting) {
|
if (!msg || exiting) {
|
||||||
buf_T *buf = handle_get_buffer(term->buf_handle);
|
|
||||||
// If no msg was given, this was called by close_buffer(buffer.c). Or if
|
// If no msg was given, this was called by close_buffer(buffer.c). Or if
|
||||||
// exiting, we must inform the buffer the terminal no longer exists so that
|
// exiting, we must inform the buffer the terminal no longer exists so that
|
||||||
// close_buffer() doesn't call this again.
|
// close_buffer() doesn't call this again.
|
||||||
@@ -304,6 +305,10 @@ void terminal_close(Terminal *term, char *msg)
|
|||||||
} else {
|
} else {
|
||||||
terminal_receive(term, msg, strlen(msg));
|
terminal_receive(term, msg, strlen(msg));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (buf) {
|
||||||
|
apply_autocmds(EVENT_TERMCLOSE, NULL, NULL, false, buf);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void terminal_resize(Terminal *term, uint16_t width, uint16_t height)
|
void terminal_resize(Terminal *term, uint16_t width, uint16_t height)
|
||||||
|
@@ -3,6 +3,7 @@ local Screen = require('test.functional.ui.screen')
|
|||||||
|
|
||||||
local clear, execute, feed, nvim, nvim_dir = helpers.clear,
|
local clear, execute, feed, nvim, nvim_dir = helpers.clear,
|
||||||
helpers.execute, helpers.feed, helpers.nvim, helpers.nvim_dir
|
helpers.execute, helpers.feed, helpers.nvim, helpers.nvim_dir
|
||||||
|
local eval, eq = helpers.eval, helpers.eq
|
||||||
|
|
||||||
describe('TermClose event', function()
|
describe('TermClose event', function()
|
||||||
local screen
|
local screen
|
||||||
@@ -25,4 +26,19 @@ describe('TermClose event', function()
|
|||||||
TermClose works! |
|
TermClose works! |
|
||||||
]])
|
]])
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
it('reports the correct <abuf>', function()
|
||||||
|
execute('set hidden')
|
||||||
|
execute('autocmd TermClose * let g:abuf = expand("<abuf>")')
|
||||||
|
execute('edit foo')
|
||||||
|
execute('edit bar')
|
||||||
|
eq(2, eval('bufnr("%")'))
|
||||||
|
execute('terminal')
|
||||||
|
feed('<c-\\><c-n>')
|
||||||
|
eq(3, eval('bufnr("%")'))
|
||||||
|
execute('buffer 1')
|
||||||
|
eq(1, eval('bufnr("%")'))
|
||||||
|
execute('3bdelete!')
|
||||||
|
eq('3', eval('g:abuf'))
|
||||||
|
end)
|
||||||
end)
|
end)
|
||||||
|
Reference in New Issue
Block a user