diff --git a/lua/avante/api.lua b/lua/avante/api.lua index 03bc90c..a37f4d0 100644 --- a/lua/avante/api.lua +++ b/lua/avante/api.lua @@ -144,9 +144,10 @@ function M.ask(opts) close_on_submit = true, win_opts = { border = Config.windows.ask.border, - title = { { "ask", "FloatTitle" } }, + title = { { "Avante Ask", "FloatTitle" } }, }, start_insert = Config.windows.ask.start_insert, + default_value = opts.question, }) prompt_input:open() return true diff --git a/lua/avante/prompt_input.lua b/lua/avante/prompt_input.lua index 888c611..7f4c7ae 100644 --- a/lua/avante/prompt_input.lua +++ b/lua/avante/prompt_input.lua @@ -17,6 +17,7 @@ local Utils = require("avante.utils") ---@field spinner_index integer ---@field spinner_timer uv_timer_t | nil ---@field spinner_active boolean +---@field default_value string | nil local PromptInput = {} PromptInput.__index = PromptInput @@ -26,6 +27,7 @@ PromptInput.__index = PromptInput ---@field cancel_callback? fun():nil ---@field close_on_submit? boolean ---@field win_opts? table +---@field default_value? string ---@param opts? PromptInputOptions function PromptInput:new(opts) @@ -40,6 +42,7 @@ function PromptInput:new(opts) obj.cancel_callback = opts.cancel_callback obj.close_on_submit = opts.close_on_submit or false obj.win_opts = opts.win_opts + obj.default_value = opts.default_value obj.spinner_chars = { "⡀", "⠄", @@ -114,12 +117,19 @@ function PromptInput:open() api.nvim_set_option_value("cursorline", true, { win = winid }) api.nvim_set_option_value("modifiable", true, { buf = bufnr }) + local default_value_lines = {} + if self.default_value then default_value_lines = vim.split(self.default_value, "\n") end + if #default_value_lines > 0 then + vim.api.nvim_buf_set_lines(bufnr, 0, -1, false, default_value_lines) + api.nvim_win_set_cursor(winid, { #default_value_lines, #default_value_lines[#default_value_lines] }) + end + self:show_shortcuts_hints() self:setup_keymaps() self:setup_autocmds() - if self.start_insert then vim.cmd([[startinsert]]) end + if self.start_insert then vim.cmd([[startinsert!]]) end end function PromptInput:close()