diff options
| author | Martin Bielik <mx.bielik@gmail.com> | 2024-03-09 14:25:22 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-03-09 14:25:22 +0100 |
| commit | a1203a32f9f7e3479da90e8033e4c906a794e308 (patch) | |
| tree | f51c74bc5324c42c5b4d52d20fb365c4ab885a41 /autoload/vim_ai.vim | |
| parent | b40801633352368ce42aea7d0e4ebd70af4732e7 (diff) | |
| parent | 60113fc29037ccab1d291365502c9e3e4cf2ada2 (diff) | |
| download | vim-ai-a1203a32f9f7e3479da90e8033e4c906a794e308.tar.gz | |
Merge pull request #84 from Konfekt/range
allow overriding range if called on visual selection
Diffstat (limited to '')
| -rw-r--r-- | autoload/vim_ai.vim | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/autoload/vim_ai.vim b/autoload/vim_ai.vim index ffc5fa3..67bf684 100644 --- a/autoload/vim_ai.vim +++ b/autoload/vim_ai.vim @@ -1,5 +1,7 @@ call vim_ai_config#load() +let g:loaded_vim_ai = 1 + let s:plugin_root = expand('<sfile>:p:h:h') let s:complete_py = s:plugin_root . "/py/complete.py" let s:chat_py = s:plugin_root . "/py/chat.py" @@ -125,8 +127,14 @@ endfunction function! vim_ai#AIRun(config, ...) range let l:config = vim_ai_config#ExtendDeep(g:vim_ai_complete, a:config) let l:instruction = a:0 > 0 ? a:1 : "" - " used for getting in Python script - let l:is_selection = a:0 > 1 ? a:2 : g:vim_ai_is_selection_pending + " l:is_selection used in Python script + if a:0 > 1 + let l:is_selection = a:2 + else + let l:is_selection = g:vim_ai_is_selection_pending && + \ a:firstline == line("'<") && a:lastline == line("'>") + endif + let l:selection = s:GetSelectionOrRange(l:is_selection, a:firstline, a:lastline) let l:prompt = s:MakePrompt(l:selection, l:instruction, l:config) @@ -156,8 +164,13 @@ endfunction function! vim_ai#AIEditRun(config, ...) range let l:config = vim_ai_config#ExtendDeep(g:vim_ai_edit, a:config) let l:instruction = a:0 > 0 ? a:1 : "" - " used for getting in Python script - let l:is_selection = a:0 > 1 ? a:2 : g:vim_ai_is_selection_pending + " l:is_selection used in Python script + if a:0 > 1 + let l:is_selection = a:2 + else + let l:is_selection = g:vim_ai_is_selection_pending && + \ a:firstline == line("'>") && a:lastline == line("'>") + endif let l:selection = s:GetSelectionOrRange(l:is_selection, a:firstline, a:lastline) let l:prompt = s:MakePrompt(l:selection, l:instruction, l:config) @@ -184,7 +197,8 @@ function! vim_ai#AIChatRun(uses_range, config, ...) range let l:instruction = "" " l:is_selection used in Python script if a:uses_range - let l:is_selection = g:vim_ai_is_selection_pending + let l:is_selection = g:vim_ai_is_selection_pending && + \ a:firstline == line("'<") && a:lastline == line("'>") let l:selection = s:GetSelectionOrRange(l:is_selection, a:firstline, a:lastline) else let l:is_selection = 0 |