summaryrefslogtreecommitdiff
path: root/py/chat.py
diff options
context:
space:
mode:
authorMartin Bielik <mx.bielik@gmail.com>2023-04-09 19:41:41 +0200
committerMartin Bielik <mx.bielik@gmail.com>2023-04-09 19:41:41 +0200
commite0c2ed98264372476ca081eca18ffef17337c869 (patch)
tree8558c65792422c1eef5c3c09fff6708c6957df95 /py/chat.py
parentb459db087fbef3b1fac21846b6cb7e9a5e778259 (diff)
downloadvim-ai-e0c2ed98264372476ca081eca18ffef17337c869.tar.gz
parse chat header options
Diffstat (limited to '')
-rw-r--r--py/chat.py24
1 files changed, 20 insertions, 4 deletions
diff --git a/py/chat.py b/py/chat.py
index a806bf3..5714e63 100644
--- a/py/chat.py
+++ b/py/chat.py
@@ -4,13 +4,10 @@ import openai
plugin_root = vim.eval("s:plugin_root")
vim.command(f"py3file {plugin_root}/py/utils.py")
-options = vim.eval("options")
-request_options = make_request_options()
-
openai.api_key = load_api_key()
lines = vim.eval('getline(1, "$")')
-contains_user_prompt = any(line == '>>> user' for line in lines)
+contains_user_prompt = '>>> user' in lines
if not contains_user_prompt:
# user role not found, put whole file content as an user prompt
vim.command("normal! ggO>>> user\n")
@@ -18,6 +15,25 @@ if not contains_user_prompt:
vim.command("let &ul=&ul") # breaks undo sequence (https://vi.stackexchange.com/a/29087)
vim.command("redraw")
+options_chat = {}
+lines = vim.eval('getline(1, "$")')
+contains_chat_options = '[chat-options]' in lines
+if contains_chat_options:
+ # parse options that are defined in the chat header
+ options_index = lines.index('[chat-options]')
+ for line in lines[options_index + 1:]:
+ if line.startswith('#'):
+ # ignore comments
+ continue
+ if line.strip() == '':
+ # stop at the end of the region
+ break
+ (key, value) = line.split('=')
+ options_chat[key.strip()] = value.strip()
+
+options = make_options(options_chat)
+request_options = make_request_options(options)
+
initial_prompt = options.get('initial_prompt', [])
initial_prompt = '\n'.join(initial_prompt)
file_content = vim.eval('trim(join(getline(1, "$"), "\n"))')