Skip to content

Commit 09b6f37

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

2 files changed

Lines changed: 25 additions & 1 deletion

File tree

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: 25 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,30 @@ function M.setup_autocmds(windows)
4849
end,
4950
})
5051

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

0 commit comments

Comments
 (0)