Between Utils.prepend_line_number() and its only caller, there is a lot
of conversions from list to string to list and back to string. Simplify
all of this by making it accept and return a list of strings, which
avoids unnecessary splitting and joining.
The implementation was updated to use vim.iter():map() and
string.format() for better performance and to align with the idiomatic
functional style used elsewhere in the project.
The name of the function has also been tweaked and is now
"prepend_line_numbers()" to better reflect that it operates on a list of
strings.
The caller has been updated to match the new function signature.
As discussed in https://github.com/yetone/avante.nvim/pull/2536 the
project should either use luv bindings from luals or luvit-meta
library, but not both, as they conflict with each other (especially
with uv.uv_timer_t). Given that other projects such as kickstart.nvim
and lazydev.nvim are switching to use the former, we should do the same
and drop luvit-meta dependency.
Also adjust code that was using luvit-meta's annotations for timers.
Change the constructor to accept role and a single content item instead
of raw AvanteLLMMessage instance. This will help when we will start
changing message.content from being a string or a list of tables to just
a string or a single table.
The utils module has grown too big and contains unrelated functionality.
Start moving code related to managing history messages comprising chat
history into lua/avante/history module to keep the code more manageable.
* 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>