summaryrefslogtreecommitdiff
path: root/plugin
diff options
context:
space:
mode:
authorMartin Bielik <mx.bielik@gmail.com>2024-02-26 22:22:49 +0100
committerGitHub <noreply@github.com>2024-02-26 22:22:49 +0100
commitd482318e7a0666d078f21df4a54440de5ceed3fa (patch)
tree0fdd533d2050737aa42043b6981bbbd50896cf01 /plugin
parented6333e968d563c12b24cbd78605578914a7f32a (diff)
parentcbc890a85c98f792b3d2743724cd533705f868b3 (diff)
downloadvim-ai-d482318e7a0666d078f21df4a54440de5ceed3fa.tar.gz
Merge pull request #77 from Konfekt/range
fix selection handling in vim_ai functions
Diffstat (limited to 'plugin')
-rw-r--r--plugin/vim-ai.vim21
1 files changed, 16 insertions, 5 deletions
diff --git a/plugin/vim-ai.vim b/plugin/vim-ai.vim
index 1d03177..5d156c3 100644
--- a/plugin/vim-ai.vim
+++ b/plugin/vim-ai.vim
@@ -4,8 +4,19 @@ if !has('python3')
finish
endif
-command! -range -nargs=? AI <line1>,<line2>call vim_ai#AIRun(<range>, {}, <f-args>)
-command! -range -nargs=? AIEdit <line1>,<line2>call vim_ai#AIEditRun(<range>, {}, <f-args>)
-command! -range -nargs=? AIChat <line1>,<line2>call vim_ai#AIChatRun(<range>, {}, <f-args>)
-command! -nargs=? AINewChat call vim_ai#AINewChatRun(<f-args>)
-command! AIRedo call vim_ai#AIRedoRun()
+" detect if a visual selection is pending: https://stackoverflow.com/a/20133772
+let g:vim_ai_is_selection_pending = 0
+augroup vim_ai
+ autocmd!
+ autocmd CursorMoved *
+ \ let g:vim_ai_is_selection_pending = mode() =~# "^[vV\<C-v>]"
+augroup END
+
+command! -range -nargs=? AI <line1>,<line2>call vim_ai#AIRun({}, <q-args>)
+command! -range -nargs=? AIEdit <line1>,<line2>call vim_ai#AIEditRun({}, <q-args>)
+" Whereas AI and AIEdit default to passing the current line as range
+" AIChat defaults to passing nothing which is achieved by -range=0 and passing
+" <count> as described at https://stackoverflow.com/a/20133772
+command! -range=0 -nargs=? AIChat <line1>,<line2>call vim_ai#AIChatRun(<count>, {}, <q-args>)
+command! -nargs=? AINewChat call vim_ai#AINewChatRun(<q-args>)
+command! AIRedo call vim_ai#AIRedoRun()