summaryrefslogtreecommitdiff
path: root/py
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--py/chat.py24
-rw-r--r--py/complete.py2
-rw-r--r--py/utils.py8
3 files changed, 25 insertions, 9 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"))')
diff --git a/py/complete.py b/py/complete.py
index 7f78661..cdf8da9 100644
--- a/py/complete.py
+++ b/py/complete.py
@@ -6,7 +6,7 @@ vim.command(f"py3file {plugin_root}/py/utils.py")
engine = vim.eval("engine")
options = make_options()
-request_options = make_request_options()
+request_options = make_request_options(options)
prompt = vim.eval("prompt").strip()
diff --git a/py/utils.py b/py/utils.py
index 68a4ee9..bcc5309 100644
--- a/py/utils.py
+++ b/py/utils.py
@@ -11,11 +11,11 @@ def load_api_key():
pass
return api_key.strip()
-def make_options():
- return vim.eval("options")
+def make_options(options_custom = {}):
+ options_config = vim.eval("options")
+ return {**options_config, **options_custom}
-def make_request_options():
- options = make_options()
+def make_request_options(options):
request_options = {}
request_options['model'] = options['model']
request_options['max_tokens'] = int(options['max_tokens'])