diff options
| author | Konfekt <Konfekt@users.noreply.github.com> | 2024-02-21 12:45:51 +0100 |
|---|---|---|
| committer | Konfekt <Konfekt@users.noreply.github.com> | 2024-02-26 08:21:08 +0100 |
| commit | 249cc6d11e7ef560fe23a1c6e665a7afb8abdb20 (patch) | |
| tree | eb64db35bb0b357eebe9546dbb6cca2a453c67d1 /autoload/vim_ai.vim | |
| parent | ae814f2f485c4ee9635d1d6bf11674797d387984 (diff) | |
| download | vim-ai-249cc6d11e7ef560fe23a1c6e665a7afb8abdb20.tar.gz | |
fix selection handling in vim_ai functions
addresses https://github.com/madox2/vim-ai/issues/76
Diffstat (limited to '')
| -rw-r--r-- | autoload/vim_ai.vim | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/autoload/vim_ai.vim b/autoload/vim_ai.vim index dfd9c3b..6dfe70c 100644 --- a/autoload/vim_ai.vim +++ b/autoload/vim_ai.vim @@ -87,19 +87,19 @@ function! s:set_nopaste(config) endif endfunction -function! s:GetCurrentLineOrSelection(is_selection) +function! s:GetSelectionOrRange(is_selection, ...) if a:is_selection return s:GetVisualSelection() else - return trim(join(getline(a:firstline, a:lastline), "\n")) + return trim(join(getline(a:1, a:2), "\n")) endif endfunction -function! s:SelectCurrentLineOrSelection(is_selection) +function! s:SelectSelectionOrRange(is_selection, ...) if a:is_selection execute "normal! gv" else - execute 'normal! V' + execute 'normal!' . a:1 . 'GV' . a:2 . 'G' endif endfunction @@ -116,15 +116,16 @@ function! s:GetVisualSelection() return join(lines, "\n") endfunction + " Complete prompt -" - is_selection - <range> parameter +" - is_selection - obsoleted by auto updated g:vim_ai_is_selection_pending " - config - function scoped vim_ai_complete config " - a:1 - optional instruction prompt function! vim_ai#AIRun(is_selection, config, ...) range let l:config = vim_ai_config#ExtendDeep(g:vim_ai_complete, a:config) let l:instruction = a:0 ? a:1 : "" - let l:selection = s:GetCurrentLineOrSelection(a:is_selection) + let l:selection = s:GetSelectionOrRange(a:is_selection, a:firstline, a:lastline) let l:prompt = s:MakePrompt(l:selection, l:instruction, l:config) " used for getting in Python script let l:is_selection = a:is_selection @@ -147,14 +148,14 @@ function! vim_ai#AIRun(is_selection, config, ...) range endfunction " Edit prompt -" - is_selection - <range> parameter +" - is_selection - obsoleted by auto updated g:vim_ai_is_selection_pending " - config - function scoped vim_ai_edit config " - a:1 - optional instruction prompt function! vim_ai#AIEditRun(is_selection, config, ...) range let l:config = vim_ai_config#ExtendDeep(g:vim_ai_edit, a:config) let l:instruction = a:0 ? a:1 : "" - let l:selection = s:GetCurrentLineOrSelection(a:is_selection) + let l:selection = s:GetSelectionOrRange(a:is_selection, a:firstline, a:lastline) " used for getting in Python script let l:is_selection = a:is_selection let l:prompt = s:MakePrompt(l:selection, l:instruction, l:config) @@ -165,21 +166,21 @@ function! vim_ai#AIEditRun(is_selection, config, ...) range let s:last_is_selection = a:is_selection call s:set_paste(l:config) - call s:SelectCurrentLineOrSelection(a:is_selection) + call s:SelectSelectionOrRange(a:is_selection, a:firstline, a:lastline) execute "normal! c" execute "py3file " . s:complete_py call s:set_nopaste(l:config) endfunction " Start and answer the chat -" - is_selection - <range> parameter +" - is_selection - obsoleted by auto updated g:vim_ai_is_selection_pending " - config - function scoped vim_ai_chat config " - a:1 - optional instruction prompt function! vim_ai#AIChatRun(is_selection, config, ...) range let l:config = vim_ai_config#ExtendDeep(g:vim_ai_chat, a:config) let l:instruction = "" - let l:selection = s:GetVisualSelection() + let l:selection = s:GetSelectionOrRange(a:is_selection, a:firstline, a:lastline) " used for getting in Python script let l:is_selection = a:is_selection call s:set_paste(l:config) |