feat(ui): add chdir UI event (#27093)

When an embedded Nvim instance changes its current directory a "chdir"
UI event is emitted. Attached UIs can use this information however they
wish. In the TUI it is used to synchronize the cwd of the TUI process
with the cwd of the embedded Nvim process.
This commit is contained in:
Gregory Anders
2024-01-19 14:51:10 -06:00
committed by GitHub
parent 5a8fe0769c
commit d3a8e9217f
7 changed files with 82 additions and 2 deletions

View File

@@ -171,6 +171,56 @@ describe('--embed UI', function()
}
eq({ [16711935] = true }, seen) -- we only saw the last one, despite 16777215 was set internally earlier
end)
it('updates cwd of attached UI #21771', function()
clear { args_rm = { '--headless' } }
local screen = Screen.new(40, 8)
screen:attach()
screen:expect {
condition = function()
eq(helpers.paths.test_source_path, screen.pwd)
end,
}
-- Change global cwd
helpers.command(string.format('cd %s/src/nvim', helpers.paths.test_source_path))
screen:expect {
condition = function()
eq(string.format('%s/src/nvim', helpers.paths.test_source_path), screen.pwd)
end,
}
-- Split the window and change the cwd in the split
helpers.command('new')
helpers.command(string.format('lcd %s/test', helpers.paths.test_source_path))
screen:expect {
condition = function()
eq(string.format('%s/test', helpers.paths.test_source_path), screen.pwd)
end,
}
-- Move to the original window
helpers.command('wincmd p')
screen:expect {
condition = function()
eq(string.format('%s/src/nvim', helpers.paths.test_source_path), screen.pwd)
end,
}
-- Change global cwd again
helpers.command(string.format('cd %s', helpers.paths.test_source_path))
screen:expect {
condition = function()
eq(helpers.paths.test_source_path, screen.pwd)
end,
}
end)
end)
describe('--embed --listen UI', function()