Skip to content

Commit fcb6fab

Browse files
committed
feat(server): handle working dir change
This should fix #246
1 parent b379c29 commit fcb6fab

File tree

2 files changed

+24
-1
lines changed

2 files changed

+24
-1
lines changed

lua/opencode/opencode_server.lua

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@ end
3434
--- Create a new ServerJob instance
3535
--- @return OpencodeServer
3636
function OpencodeServer.new()
37-
local log = require('opencode.log')
3837
ensure_vim_leave_autocmd()
3938

4039
return setmetatable({

lua/opencode/ui/autocmds.lua

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
local Promise = require('opencode.promise')
12
local input_window = require('opencode.ui.input_window')
23
local output_window = require('opencode.ui.output_window')
34
local M = {}
@@ -48,6 +49,29 @@ function M.setup_autocmds(windows)
4849
end,
4950
})
5051

52+
vim.api.nvim_create_autocmd('DirChanged', {
53+
callback = Promise.async(function(event)
54+
local log = require('opencode.log')
55+
local state = require('opencode.state')
56+
local server_job = require('opencode.server_job')
57+
local session = require('opencode.session')
58+
local core = require('opencode.core')
59+
60+
if state.opencode_server then
61+
vim.notify('Directory changed, restarting Opencode server...', vim.log.levels.INFO)
62+
log.info('Shutting down Opencode server due to directory change...')
63+
state.opencode_server:shutdown():await()
64+
server_job.ensure_server():await()
65+
state.active_session = nil
66+
vim.notify('Loading last session for new working dir', vim.log.levels.INFO)
67+
state.active_session = session.get_last_workspace_session():await()
68+
if not state.active_session then
69+
state.active_session = core.create_new_session():await()
70+
end
71+
end
72+
end),
73+
})
74+
5175
if require('opencode.config').ui.position == 'current' then
5276
vim.api.nvim_create_autocmd('BufEnter', {
5377
group = group,

0 commit comments

Comments
 (0)