diff --git a/lua/avante/file_selector.lua b/lua/avante/file_selector.lua index 58c20a1..5e289bf 100644 --- a/lua/avante/file_selector.lua +++ b/lua/avante/file_selector.lua @@ -267,4 +267,16 @@ end function FileSelector:get_selected_filepaths() return vim.deepcopy(self.selected_filepaths) end +---@return nil +function FileSelector:add_quickfix_files() + local quickfix_files = vim + .iter(vim.fn.getqflist({ items = 0 }).items) + :filter(function(item) return item.bufnr ~= 0 end) + :map(function(item) return Utils.relative_path(vim.api.nvim_buf_get_name(item.bufnr)) end) + :totable() + for _, filepath in ipairs(quickfix_files) do + self:add_selected_file(filepath) + end +end + return FileSelector diff --git a/lua/avante/sidebar.lua b/lua/avante/sidebar.lua index fe5321c..4e6a06e 100644 --- a/lua/avante/sidebar.lua +++ b/lua/avante/sidebar.lua @@ -1803,6 +1803,13 @@ function Sidebar:create_input_container(opts) callback = function() self.file_selector:open() end, }) + table.insert(mentions, { + description = "quickfix", + command = "quickfix", + details = "add files in quickfix list to chat context", + callback = function() self.file_selector:add_quickfix_files() end, + }) + cmp.register_source( "avante_commands", require("cmp_avante.commands"):new(self:get_commands(), self.input_container.bufnr)