summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--autoload/vim_ai.vim20
1 files changed, 8 insertions, 12 deletions
diff --git a/autoload/vim_ai.vim b/autoload/vim_ai.vim
index 47a9f03..a37ddad 100644
--- a/autoload/vim_ai.vim
+++ b/autoload/vim_ai.vim
@@ -79,15 +79,14 @@ 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, ...)
@@ -153,7 +152,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
@@ -184,7 +182,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
@@ -227,7 +224,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