diff options
| author | Konfekt <Konfekt@users.noreply.github.com> | 2024-02-24 17:47:27 +0100 |
|---|---|---|
| committer | Konfekt <Konfekt@users.noreply.github.com> | 2024-02-26 08:21:09 +0100 |
| commit | 1eb6438983250623ca42d0c1bd839c1bfc2af8c9 (patch) | |
| tree | 1f8709c3b60bc687f155a11233b4716cf8dc048d | |
| parent | 249cc6d11e7ef560fe23a1c6e665a7afb8abdb20 (diff) | |
| download | vim-ai-1eb6438983250623ca42d0c1bd839c1bfc2af8c9.tar.gz | |
align AIRedo with AI/AIEdit/Chat
These changes were necessary to fix a bug where commands were not
being executed correctly in non-visual modes, and to make the code
cleaner and more efficient. By explicitly handling the visual
selection state, it ensures that the plugin functions correctly
regardless of how the user invokes the AI features.
Diffstat (limited to '')
| -rw-r--r-- | autoload/vim_ai.vim | 21 |
1 files changed, 8 insertions, 13 deletions
diff --git a/autoload/vim_ai.vim b/autoload/vim_ai.vim index 6dfe70c..3115884 100644 --- a/autoload/vim_ai.vim +++ b/autoload/vim_ai.vim @@ -6,6 +6,8 @@ let s:chat_py = s:plugin_root . "/py/chat.py" " remembers last command parameters to be used in AIRedoRun let s:last_is_selection = 0 +let s:last_firstline = 1 +let s:last_lastline = 1 let s:last_instruction = "" let s:last_command = "" let s:last_config = {} @@ -116,7 +118,6 @@ function! s:GetVisualSelection() return join(lines, "\n") endfunction - " Complete prompt " - is_selection - obsoleted by auto updated g:vim_ai_is_selection_pending " - config - function scoped vim_ai_complete config @@ -134,6 +135,8 @@ function! vim_ai#AIRun(is_selection, config, ...) range let s:last_config = a:config let s:last_instruction = l:instruction let s:last_is_selection = a:is_selection + let s:last_firstline = a:firstline + let s:last_lastline = a:lastline let l:cursor_on_empty_line = empty(getline('.')) call s:set_paste(l:config) @@ -164,6 +167,8 @@ function! vim_ai#AIEditRun(is_selection, config, ...) range let s:last_config = a:config let s:last_instruction = l:instruction let s:last_is_selection = a:is_selection + let s:last_firstline = a:firstline + let s:last_lastline = a:lastline call s:set_paste(l:config) call s:SelectSelectionOrRange(a:is_selection, a:firstline, a:lastline) @@ -205,8 +210,6 @@ function! vim_ai#AIChatRun(is_selection, config, ...) range let s:last_command = "chat" let s:last_config = a:config - let s:last_instruction = l:instruction - let s:last_is_selection = a:is_selection execute "py3file " . s:chat_py call s:set_nopaste(l:config) @@ -224,18 +227,10 @@ endfunction function! vim_ai#AIRedoRun() execute "normal! u" if s:last_command == "complete" - if s:last_is_selection - '<,'>call vim_ai#AIRun(s:last_is_selection, s:last_config, s:last_instruction) - else - call vim_ai#AIRun(s:last_is_selection, s:last_config, s:last_instruction) - endif + exe s:last_firstline.",".s:last_lastline . "call vim_ai#AIRun(s:last_is_selection, s:last_config, s:last_instruction)" endif if s:last_command == "edit" - if s:last_is_selection - '<,'>call vim_ai#AIEditRun(s:last_is_selection, s:last_config, s:last_instruction) - else - call vim_ai#AIEditRun(s:last_is_selection, s:last_config, s:last_instruction) - endif + exe s:last_firstline.",".s:last_lastline . "call vim_ai#AIEditRun(s:last_is_selection, s:last_config, s:last_instruction)" endif if s:last_command == "chat" " chat does not need prompt, all information are in the buffer already |