feat(context): add a ui for selecting and adding files to the sidebar as context (#912)
* feat(sidebar): supports select files chore (context) update add type annotations to context functions chore (sidebar) remove unused notify function call refactor (sidebar) remove setting search file to file path chore (sidebar) remove nvim_notify debugging api call * feat (files) allow selecting a file by string via cmp suggestion menu * chore (context) refactor to allow context using @file with a context view * refactor (context) refactor seletected file types as an array of path and content * refactor (config) remove unused configuration options * refactor (sidebar) remove unused unbild key * refactor (context) remove unused imports * refactor (mentions) update mentions to support items with callback functions and removal of the underlying selection. * fix (sidebar) add file context as a window that is visitable via the tab key * refactor (file_content) remove file content as an input to llm * feat (sidebar) support suggesting and applying code in all languages that are in the context * feat (sidebar) configurable mapping for removing a file from the context. * feat (context_view) configure hints for the context view for adding and deleting a file. * feat (context) add hints for the context view. * fix (sidebar) type when scrolling the results buffer. * refactor (selected files) refactor llm stream to accept an array of selected file metadata * refactor: context => selected_files --------- Co-authored-by: yetone <yetoneful@gmail.com>
This commit is contained in:
committed by
GitHub
parent
3b33170097
commit
78dd9b0a6d
@@ -44,14 +44,11 @@ M._stream = function(opts, Provider)
|
||||
|
||||
Path.prompts.initialize(Path.prompts.get(opts.bufnr))
|
||||
|
||||
local filepath = Utils.relative_path(api.nvim_buf_get_name(opts.bufnr))
|
||||
|
||||
local template_opts = {
|
||||
use_xml_format = Provider.use_xml_format,
|
||||
ask = opts.ask, -- TODO: add mode without ask instruction
|
||||
code_lang = opts.code_lang,
|
||||
filepath = filepath,
|
||||
file_content = opts.file_content,
|
||||
selected_files = opts.selected_files,
|
||||
selected_code = opts.selected_code,
|
||||
project_context = opts.project_context,
|
||||
diagnostics = opts.diagnostics,
|
||||
@@ -335,14 +332,19 @@ end
|
||||
|
||||
---@alias LlmMode "planning" | "editing" | "suggesting"
|
||||
---
|
||||
---@class SelectedFiles
|
||||
---@field path string
|
||||
---@field content string
|
||||
---@field file_type string
|
||||
---
|
||||
---@class TemplateOptions
|
||||
---@field use_xml_format boolean
|
||||
---@field ask boolean
|
||||
---@field question string
|
||||
---@field code_lang string
|
||||
---@field file_content string
|
||||
---@field selected_code string | nil
|
||||
---@field project_context string | nil
|
||||
---@field selected_files SelectedFiles[] | nil
|
||||
---@field diagnostics string | nil
|
||||
---@field history_messages AvanteLLMMessage[]
|
||||
---
|
||||
@@ -357,8 +359,22 @@ end
|
||||
|
||||
---@param opts StreamOptions
|
||||
M.stream = function(opts)
|
||||
if opts.on_chunk ~= nil then opts.on_chunk = vim.schedule_wrap(opts.on_chunk) end
|
||||
if opts.on_complete ~= nil then opts.on_complete = vim.schedule_wrap(opts.on_complete) end
|
||||
local is_completed = false
|
||||
if opts.on_chunk ~= nil then
|
||||
local original_on_chunk = opts.on_chunk
|
||||
opts.on_chunk = vim.schedule_wrap(function(chunk)
|
||||
if is_completed then return end
|
||||
return original_on_chunk(chunk)
|
||||
end)
|
||||
end
|
||||
if opts.on_complete ~= nil then
|
||||
local original_on_complete = opts.on_complete
|
||||
opts.on_complete = vim.schedule_wrap(function(err)
|
||||
if is_completed then return end
|
||||
is_completed = true
|
||||
return original_on_complete(err)
|
||||
end)
|
||||
end
|
||||
local Provider = opts.provider or P[Config.provider]
|
||||
if Config.dual_boost.enabled then
|
||||
M._dual_boost_stream(opts, Provider, P[Config.dual_boost.first_provider], P[Config.dual_boost.second_provider])
|
||||
|
||||
Reference in New Issue
Block a user