fix(api): don't change title when setting buffer in a window (#23492)

This commit is contained in:
zeertzjq 2023-05-06 07:46:07 +08:00 committed by GitHub
parent c8ebb04e92
commit 22205f36a6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 50 additions and 0 deletions

View File

@ -670,6 +670,8 @@ void win_set_buf(Window window, Buffer buffer, bool noautocmd, Error *err)
tabpage_T *tab = win_find_tabpage(win);
// no redrawing and don't set the window title
RedrawingDisabled++;
if (noautocmd) {
block_autocmds();
}
@ -699,6 +701,7 @@ void win_set_buf(Window window, Buffer buffer, bool noautocmd, Error *err)
if (noautocmd) {
unblock_autocmds();
}
RedrawingDisabled--;
}
/// Create a new float.

View File

@ -2,6 +2,7 @@ local helpers = require('test.functional.helpers')(after_each)
local Screen = require('test.functional.ui.screen')
local spawn, set_session, clear = helpers.spawn, helpers.set_session, helpers.clear
local feed, command = helpers.feed, helpers.command
local curwin = helpers.curwin
local insert = helpers.insert
local eq = helpers.eq
local eval = helpers.eval
@ -189,6 +190,52 @@ local function screen_tests(linegrid)
eq(expected, screen.title)
end)
end)
it('setting the buffer of another window using RPC', function()
local oldwin = curwin().id
command('split')
meths.win_set_buf(oldwin, buf2)
command('redraw!')
screen:expect(function()
eq(expected, screen.title)
end)
end)
it('setting the buffer of another window using Lua callback', function()
local oldwin = curwin().id
command('split')
exec_lua(string.format([[
vim.schedule(function()
vim.api.nvim_win_set_buf(%d, %d)
end)
]], oldwin, buf2))
command('redraw!')
screen:expect(function()
eq(expected, screen.title)
end)
end)
it('creating a floating window using RPC', function()
meths.open_win(buf2, false, {
relative = 'editor', width = 5, height = 5, row = 0, col = 0,
})
command('redraw!')
screen:expect(function()
eq(expected, screen.title)
end)
end)
it('creating a floating window using Lua callback', function()
exec_lua(string.format([[
vim.api.nvim_open_win(%d, false, {
relative = 'editor', width = 5, height = 5, row = 0, col = 0,
})
]], buf2))
command('redraw!')
screen:expect(function()
eq(expected, screen.title)
end)
end)
end)
end)