diff options
| author | Martin Bielik <mx.bielik@gmail.com> | 2023-04-09 19:41:41 +0200 |
|---|---|---|
| committer | Martin Bielik <mx.bielik@gmail.com> | 2023-04-09 19:41:41 +0200 |
| commit | e0c2ed98264372476ca081eca18ffef17337c869 (patch) | |
| tree | 8558c65792422c1eef5c3c09fff6708c6957df95 | |
| parent | b459db087fbef3b1fac21846b6cb7e9a5e778259 (diff) | |
| download | vim-ai-e0c2ed98264372476ca081eca18ffef17337c869.tar.gz | |
parse chat header options
| -rw-r--r-- | py/chat.py | 24 | ||||
| -rw-r--r-- | py/complete.py | 2 | ||||
| -rw-r--r-- | py/utils.py | 8 |
3 files changed, 25 insertions, 9 deletions
@@ -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']) |