summaryrefslogtreecommitdiff
path: root/autoload/vim_ai.vim
diff options
context:
space:
mode:
authorKonfekt <Konfekt@users.noreply.github.com>2024-03-14 13:42:13 +0100
committerKonfekt <Konfekt@users.noreply.github.com>2024-03-14 13:52:11 +0100
commit17a914f628c2ac880cd1439199a9c1d4b16f0394 (patch)
tree4c388d854e11d5767602e6fd2b32c5152d9636c8 /autoload/vim_ai.vim
parenteb333e39e17d4d5240dbbc186a65bc6e9ab6b44e (diff)
downloadvim-ai-17a914f628c2ac880cd1439199a9c1d4b16f0394.tar.gz
automatically unset &paste also after failed command
Diffstat (limited to '')
-rw-r--r--autoload/vim_ai.vim19
1 files changed, 7 insertions, 12 deletions
diff --git a/autoload/vim_ai.vim b/autoload/vim_ai.vim
index 74515d4..936d59f 100644
--- a/autoload/vim_ai.vim
+++ b/autoload/vim_ai.vim
@@ -78,15 +78,13 @@ function! s:OpenChatWindow(open_conf)
endfunction
function! s:set_paste(config)
- if a:config['ui']['paste_mode']
- setlocal paste
- endif
-endfunction
-
-function! s:set_nopaste(config)
- if a:config['ui']['paste_mode']
- setlocal nopaste
- endif
+ if !a:config['ui']['paste_mode'] | return | endif
+ if &paste | return | endif
+ setlocal paste
+ augroup AiPaste
+ autocmd!
+ autocmd ModeChanged i:* exe 'set nopaste' | autocmd! AiPaste InsertLeave
+ augroup END
endfunction
function! s:GetSelectionOrRange(is_selection, ...)
@@ -152,7 +150,6 @@ function! vim_ai#AIRun(config, ...) range
endif
execute "py3file " . s:complete_py
execute "normal! " . a:lastline . "G"
- call s:set_nopaste(l:config)
endfunction
" Edit prompt
@@ -183,7 +180,6 @@ function! vim_ai#AIEditRun(config, ...) range
call s:SelectSelectionOrRange(l: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
@@ -226,7 +222,6 @@ function! vim_ai#AIChatRun(uses_range, config, ...) range
let s:last_config = a:config
execute "py3file " . s:chat_py
- call s:set_nopaste(l:config)
endfunction
" Start a new chat