summaryrefslogtreecommitdiff
path: root/autoload/vim_ai_config.vim
diff options
context:
space:
mode:
authorMartin Bielik <mx.bielik@gmail.com>2023-04-15 12:19:31 +0200
committerMartin Bielik <mx.bielik@gmail.com>2023-04-15 12:19:31 +0200
commitfd2bfb7a8a14aa9e908eff289a542f003dccfc04 (patch)
tree90a97a95a4087473255c7ffbca4c35bb8b4c3394 /autoload/vim_ai_config.vim
parent8f6c7ae590b179f2ec02142f57b2e9c3e81ac9fe (diff)
downloadvim-ai-fd2bfb7a8a14aa9e908eff289a542f003dccfc04.tar.gz
moving files to autoload
Diffstat (limited to 'autoload/vim_ai_config.vim')
-rw-r--r--autoload/vim_ai_config.vim75
1 files changed, 75 insertions, 0 deletions
diff --git a/autoload/vim_ai_config.vim b/autoload/vim_ai_config.vim
new file mode 100644
index 0000000..1b66b8e
--- /dev/null
+++ b/autoload/vim_ai_config.vim
@@ -0,0 +1,75 @@
+echom "loading vim_ai_config"
+let g:vim_ai_complete_default = {
+\ "engine": "complete",
+\ "options": {
+\ "model": "text-davinci-003",
+\ "max_tokens": 1000,
+\ "temperature": 0.1,
+\ "request_timeout": 20,
+\ },
+\}
+let g:vim_ai_edit_default = {
+\ "engine": "complete",
+\ "options": {
+\ "model": "text-davinci-003",
+\ "max_tokens": 1000,
+\ "temperature": 0.1,
+\ "request_timeout": 20,
+\ },
+\}
+
+let s:initial_chat_prompt =<< trim END
+>>> system
+
+You are a general assistant.
+If you attach a code block add syntax type after ``` to enable syntax highlighting.
+END
+let g:vim_ai_chat_default = {
+\ "options": {
+\ "model": "gpt-3.5-turbo",
+\ "max_tokens": 1000,
+\ "temperature": 1,
+\ "request_timeout": 20,
+\ "initial_prompt": s:initial_chat_prompt,
+\ },
+\ "ui": {
+\ "open_chat_command": "below new | call vim_ai#MakeScratchWindow()",
+\ "scratch_buffer_keep_open": 0,
+\ "populate_options": 0,
+\ "code_syntax_enabled": 1,
+\ },
+\}
+
+if !exists("g:vim_ai_debug")
+ let g:vim_ai_debug = 0
+endif
+
+if !exists("g:vim_ai_debug_log_file")
+ let g:vim_ai_debug_log_file = "/tmp/vim_ai_debug.log"
+endif
+
+function! s:ExtendDeep(defaults, override) abort
+ let l:result = a:defaults
+ for [l:key, l:value] in items(a:override)
+ if type(get(l:result, l:key)) is v:t_dict && type(l:value) is v:t_dict
+ call s:ExtendDeep(l:result[l:key], l:value)
+ else
+ let l:result[l:key] = l:value
+ endif
+ endfor
+ return l:result
+endfunction
+
+function! s:MakeConfig(config_name) abort
+ let l:defaults = copy(g:[a:config_name . "_default"])
+ let l:override = exists("g:" . a:config_name) ? g:[a:config_name] : {}
+ let g:[a:config_name] = s:ExtendDeep(l:defaults, l:override)
+endfunction
+
+call s:MakeConfig("vim_ai_chat")
+call s:MakeConfig("vim_ai_complete")
+call s:MakeConfig("vim_ai_edit")
+
+function! vim_ai_config#load()
+ echom "[vim-ai] config loaded"
+endfunction