Skip to content

Commit 5017d8b

Browse files
committed
feat(commands): add clear_selections and clear_files actions
Granular context clearing: drop only selections or only mentioned files instead of wiping the whole context. Exposed as actions and slash commands.
1 parent 3798e7f commit 5017d8b

2 files changed

Lines changed: 20 additions & 0 deletions

File tree

lua/opencode/commands/handlers/workflow.lua

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -277,6 +277,16 @@ function M.actions.prev_message()
277277
require('opencode.ui.navigation').goto_prev_message()
278278
end
279279

280+
function M.actions.clear_selections()
281+
require('opencode.context').clear_selections()
282+
vim.notify('Selections cleared', vim.log.levels.INFO)
283+
end
284+
285+
function M.actions.clear_files()
286+
require('opencode.context').clear_files()
287+
vim.notify('Mentioned files cleared', vim.log.levels.INFO)
288+
end
289+
280290
function M.actions.toggle_tool_output()
281291
local action_text = config.ui.output.tools.show_output and 'Hiding' or 'Showing'
282292
vim.notify(action_text .. ' tool output display', vim.log.levels.INFO)
@@ -458,6 +468,14 @@ M.command_defs = {
458468
desc = 'Navigate to previous message in output window',
459469
execute = M.actions.prev_message,
460470
},
471+
clear_selections = {
472+
desc = 'Clear only selections from context',
473+
execute = M.actions.clear_selections,
474+
},
475+
clear_files = {
476+
desc = 'Clear only mentioned files from context',
477+
execute = M.actions.clear_files,
478+
},
461479
debug_output = {
462480
desc = 'Open raw output debug view',
463481
execute = M.actions.debug_output,

lua/opencode/commands/slash.lua

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ local slash_command_presets = {
2525
['/redo'] = { name = 'redo' },
2626
['/sessions'] = { name = 'session', preset_args = { 'select' } },
2727
['/share'] = { name = 'session', preset_args = { 'share' } },
28+
['/clear_selections'] = { name = 'clear_selections' },
29+
['/clear_files'] = { name = 'clear_files' },
2830
['/timeline'] = { name = 'timeline' },
2931
['/references'] = { name = 'references' },
3032
['/undo'] = { name = 'undo' },

0 commit comments

Comments
 (0)