diff options
| -rw-r--r-- | py/chat.py | 9 | ||||
| -rw-r--r-- | py/complete.py | 12 | ||||
| -rw-r--r-- | py/utils.py | 19 |
3 files changed, 20 insertions, 20 deletions
@@ -4,13 +4,8 @@ import vim plugin_root = vim.eval("s:plugin_root") vim.command(f"py3file {plugin_root}/py/utils.py") -prompt, role_options = parse_prompt_and_role(vim.eval("l:prompt")) -config = normalize_config(vim.eval("l:config")) -config_options = { - **config['options'], - **role_options['options_default'], - **role_options['options_chat'], -} +prompt, config = load_config_and_prompt() +config_options = config['options'] config_ui = config['ui'] def initialize_chat_window(): diff --git a/py/complete.py b/py/complete.py index 868b7ee..d7040a3 100644 --- a/py/complete.py +++ b/py/complete.py @@ -4,15 +4,11 @@ import vim plugin_root = vim.eval("s:plugin_root") vim.command(f"py3file {plugin_root}/py/utils.py") -config = normalize_config(vim.eval("l:config")) -engine = config['engine'] +prompt, config = load_config_and_prompt() +config_options = config['options'] +config_ui = config['ui'] -prompt, role_options = parse_prompt_and_role(vim.eval("l:prompt")) -config_options = { - **config['options'], - **role_options['options_default'], - **role_options['options_complete'], -} +engine = config['engine'] is_selection = vim.eval("l:is_selection") def complete_engine(prompt): diff --git a/py/utils.py b/py/utils.py index 5500033..c58529c 100644 --- a/py/utils.py +++ b/py/utils.py @@ -44,12 +44,21 @@ def load_api_key(config_token_file_path): return (api_key, org_id) -def normalize_config(config): - normalized = { **config } +def load_config_and_prompt(): + prompt, role_options = parse_prompt_and_role(vim.eval("l:prompt")) + config = vim.eval("l:config") + config['options'] = { + **normalize_options(config['options']), + **normalize_options(role_options['options_default']), + **normalize_options(role_options['options_chat']), + } + return prompt, config + +def normalize_options(options): # initial prompt can be both a string and a list of strings, normalize it to list - if 'initial_prompt' in config['options'] and isinstance(config['options']['initial_prompt'], str): - normalized['options']['initial_prompt'] = normalized['options']['initial_prompt'].split('\n') - return normalized + if 'initial_prompt' in options and isinstance(options['initial_prompt'], str): + options['initial_prompt'] = options['initial_prompt'].split('\n') + return options def make_openai_options(options): max_tokens = int(options['max_tokens']) |