summaryrefslogtreecommitdiff
path: root/autoload
diff options
context:
space:
mode:
Diffstat (limited to 'autoload')
-rw-r--r--autoload/vim_ai.vim24
-rw-r--r--autoload/vim_ai_config.vim7
2 files changed, 25 insertions, 6 deletions
diff --git a/autoload/vim_ai.vim b/autoload/vim_ai.vim
index b274048..74d6afd 100644
--- a/autoload/vim_ai.vim
+++ b/autoload/vim_ai.vim
@@ -76,6 +76,18 @@ function! s:OpenChatWindow(open_conf)
execute l:open_cmd
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
+endfunction
+
" Complete prompt
" - is_selection - <range> parameter
" - config - function scoped vim_ai_complete config
@@ -93,7 +105,7 @@ function! vim_ai#AIRun(is_selection, config, ...) range
let s:last_is_selection = a:is_selection
let l:cursor_on_empty_line = trim(join(l:lines, "\n")) == ""
- set paste
+ call s:set_paste(l:config)
if l:cursor_on_empty_line
execute "normal! " . a:lastline . "GA"
else
@@ -101,7 +113,7 @@ function! vim_ai#AIRun(is_selection, config, ...) range
endif
execute "py3file " . s:complete_py
execute "normal! " . a:lastline . "G"
- set nopaste
+ call s:set_nopaste(l:config)
endfunction
" Edit prompt
@@ -119,10 +131,10 @@ function! vim_ai#AIEditRun(is_selection, config, ...) range
let s:last_instruction = l:instruction
let s:last_is_selection = a:is_selection
- set paste
+ call s:set_paste(l:config)
execute "normal! " . a:firstline . "GV" . a:lastline . "Gc"
execute "py3file " . s:complete_py
- set nopaste
+ call s:set_nopaste(l:config)
endfunction
" Start and answer the chat
@@ -134,7 +146,7 @@ function! vim_ai#AIChatRun(is_selection, config, ...) range
let l:instruction = ""
let l:lines = getline(a:firstline, a:lastline)
- set paste
+ call s:set_paste(l:config)
if &filetype != 'aichat'
let l:chat_win_id = bufwinid(s:scratch_buffer_name)
if l:chat_win_id != -1
@@ -160,7 +172,7 @@ function! vim_ai#AIChatRun(is_selection, config, ...) range
let s:last_is_selection = a:is_selection
execute "py3file " . s:chat_py
- set nopaste
+ call s:set_nopaste(l:config)
endfunction
" Start a new chat
diff --git a/autoload/vim_ai_config.vim b/autoload/vim_ai_config.vim
index ca8273e..1ee85df 100644
--- a/autoload/vim_ai_config.vim
+++ b/autoload/vim_ai_config.vim
@@ -7,6 +7,9 @@ let g:vim_ai_complete_default = {
\ "request_timeout": 20,
\ "selection_boundary": "#####",
\ },
+\ "ui": {
+\ "paste_mode": 1,
+\ },
\}
let g:vim_ai_edit_default = {
\ "engine": "complete",
@@ -17,6 +20,9 @@ let g:vim_ai_edit_default = {
\ "request_timeout": 20,
\ "selection_boundary": "#####",
\ },
+\ "ui": {
+\ "paste_mode": 1,
+\ },
\}
let s:initial_chat_prompt =<< trim END
@@ -39,6 +45,7 @@ let g:vim_ai_chat_default = {
\ "scratch_buffer_keep_open": 0,
\ "populate_options": 0,
\ "code_syntax_enabled": 1,
+\ "paste_mode": 1,
\ },
\}