summaryrefslogtreecommitdiff
path: root/py/utils.py
diff options
context:
space:
mode:
authorMartin Bielik <mx.bielik@gmail.com>2024-03-09 18:06:14 +0100
committerMartin Bielik <mx.bielik@gmail.com>2024-03-09 18:10:16 +0100
commitb0f7e3b8d92289d1a8086e3eed206f8b5757328b (patch)
treede9d18ee5e5471467fe293e3059f2f138457331c /py/utils.py
parenteb333e39e17d4d5240dbbc186a65bc6e9ab6b44e (diff)
downloadvim-ai-b0f7e3b8d92289d1a8086e3eed206f8b5757328b.tar.gz
read role prompt from config
Diffstat (limited to 'py/utils.py')
-rw-r--r--py/utils.py24
1 files changed, 24 insertions, 0 deletions
diff --git a/py/utils.py b/py/utils.py
index 19de7c4..7a1a574 100644
--- a/py/utils.py
+++ b/py/utils.py
@@ -11,6 +11,7 @@ import re
from urllib.error import URLError
from urllib.error import HTTPError
import traceback
+import configparser
is_debugging = vim.eval("g:vim_ai_debug") == "1"
debug_log_file = vim.eval("g:vim_ai_debug_log_file")
@@ -261,3 +262,26 @@ def handle_completion_error(error):
def clear_echo_message():
# https://neovim.discourse.group/t/how-to-clear-the-echo-message-in-the-command-line/268/3
vim.command("call feedkeys(':','nx')")
+
+def load_role_config(role):
+ roles_config_path = os.path.expanduser('~/.vim/roles.ini') # TODO configure
+ roles = configparser.ConfigParser()
+ roles.read(roles_config_path)
+ if not role in roles:
+ raise KnownError(f"Role {role} not found") # TODO handle errors
+ return roles[role]
+
+def parse_prompt_and_role(raw_prompt):
+ prompt = raw_prompt.strip()
+ role = re.split(' |:', prompt)[0]
+ if not role.startswith('/'):
+ # does not require role
+ return (prompt, {})
+
+ prompt = prompt[len(role):].strip()
+ role = role[1:]
+
+ role_config = load_role_config(role)
+ delim = '' if prompt.startswith(':') else ':\n'
+ prompt = role_config['prompt'] + delim + prompt
+ return (prompt, {})