Skip to content

Commit f145622

Browse files
committed
feat: quick chat ask for input if no message
1 parent a512f0f commit f145622

File tree

3 files changed

+252
-210
lines changed

3 files changed

+252
-210
lines changed

lua/opencode/api.lua

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -109,12 +109,35 @@ function M.select_history()
109109
end
110110

111111
function M.quick_chat(message, range)
112-
local options = {}
112+
if not range then
113+
if vim.fn.mode():match('[vV\022]') then
114+
local visual_range = util.get_visual_range()
115+
if visual_range then
116+
range = {
117+
start_line = visual_range.start_line,
118+
end_line = visual_range.end_line,
119+
}
120+
end
121+
end
122+
end
123+
113124
if type(message) == 'table' then
114125
message = table.concat(message, ' ')
115126
end
116127

117-
return quick_chat.quick_chat(message, options, range)
128+
-- If no message, prompt for input (range is captured above)
129+
if not message or #message == 0 then
130+
vim.ui.input({ prompt = 'Quick Chat Message: ' }, function(input)
131+
local prompt, ctx = util.parse_quick_context_args(input)
132+
if input and input ~= '' then
133+
quick_chat.quick_chat(prompt, { context_config = ctx }, range)
134+
end
135+
end)
136+
return
137+
end
138+
139+
local prompt, ctx = util.parse_quick_context_args(message)
140+
quick_chat.quick_chat(prompt, { context_config = ctx }, range)
118141
end
119142

120143
function M.toggle_pane()
@@ -968,7 +991,7 @@ M.commands = {
968991
},
969992

970993
quick_chat = {
971-
desc = 'Quick chat with current context',
994+
desc = 'Quick chat with current buffer or visual selection',
972995
fn = M.quick_chat,
973996
range = true, -- Enable range support for visual selections
974997
nargs = '+', -- Allow multiple arguments

lua/opencode/config.lua

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ M.defaults = {
2222
['<leader>ot'] = { 'toggle_focus', desc = 'Toggle focus' },
2323
['<leader>oT'] = { 'timeline', desc = 'Session timeline' },
2424
['<leader>oq'] = { 'close', desc = 'Close Opencode window' },
25-
['<leader>oQ'] = { 'quick_chat', desc = 'Quick chat with current context' },
25+
['<leader>oQ'] = { 'quick_chat', desc = 'Quick chat with current context', mode = { 'n', 'x' } },
2626
['<leader>os'] = { 'select_session', desc = 'Select session' },
2727
['<leader>oR'] = { 'rename_session', desc = 'Rename session' },
2828
['<leader>op'] = { 'configure_provider', desc = 'Configure provider' },
@@ -211,7 +211,6 @@ M.defaults = {
211211
quick_chat = {
212212
default_model = nil, -- Use current model if nil
213213
default_agent = nil, -- Use current mode if nil
214-
include_context_by_default = true,
215214
default_prompt = nil, -- Use built-in prompt if nil
216215
},
217216
}

0 commit comments

Comments
 (0)