✨ Feat(osc7): cwd tracking and matching
Writes the CWD to a file (and emits the OSC7) at startup and when the directory changes. This is used by a function in fish-shell to automatically cd to the cwd on nvim exit.
This commit is contained in:
@@ -128,4 +128,40 @@ autocmd({ 'BufEnter' }, {
|
|||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
-- Update OSC7 in fish shell
|
||||||
|
local function update_osc7()
|
||||||
|
local cwd = vim.fn.getcwd()
|
||||||
|
local uri = 'file://' .. vim.fn.hostname() .. cwd
|
||||||
|
io.stdout:write('\27]7;' .. uri .. '\27\\')
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Save CWD where we can access it
|
||||||
|
local function save_cwd()
|
||||||
|
local cwd = vim.fn.getcwd()
|
||||||
|
local file = io.open(os.getenv('HOME') .. '/.nvim_last_dir', 'w')
|
||||||
|
if file then
|
||||||
|
file:write(cwd)
|
||||||
|
file:close()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Update OSC7 and file on directory change
|
||||||
|
autocmd('DirChanged', {
|
||||||
|
callback = function()
|
||||||
|
save_cwd()
|
||||||
|
update_osc7()
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Save on exit
|
||||||
|
autocmd('VimLeavePre', {
|
||||||
|
callback = save_cwd,
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Send OSC 7 on startup
|
||||||
|
update_osc7()
|
||||||
|
|
||||||
|
-- Save CWD on startup
|
||||||
|
save_cwd()
|
||||||
|
|
||||||
return M
|
return M
|
||||||
|
|||||||
Reference in New Issue
Block a user