File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -56,12 +56,28 @@ function M.pick(sessions, callback)
5656
5757 local sessions_to_delete = type (selected ) == ' table' and selected .id == nil and selected or { selected }
5858
59- for _ , session in ipairs (sessions_to_delete ) do
60- if state .active_session and state .active_session .id == session .id then
59+ local to_delete_ids = {}
60+ for _ , s in ipairs (sessions_to_delete ) do
61+ to_delete_ids [s .id ] = true
62+ end
63+
64+ local deleting_current = state .active_session and to_delete_ids [state .active_session .id ] or false
65+
66+ if deleting_current then
67+ local core = require (' opencode.core' )
68+ local remaining = vim .tbl_filter (function (item )
69+ return not to_delete_ids [item .id ]
70+ end , opts .items or {})
71+
72+ if # remaining > 0 then
73+ core .switch_session (remaining [1 ].id ):await ()
74+ else
6175 vim .notify (' deleting current session, creating new session' )
62- state .session .set_active (require ( ' opencode. core' ) .create_new_session ():await ())
76+ state .session .set_active (core .create_new_session ():await ())
6377 end
78+ end
6479
80+ for _ , session in ipairs (sessions_to_delete ) do
6581 state .api_client :delete_session (session .id ):catch (function (err )
6682 vim .schedule (function ()
6783 vim .notify (' Failed to delete session ' .. session .id .. ' : ' .. vim .inspect (err ), vim .log .levels .ERROR )
You can’t perform that action at this time.
0 commit comments