diff options
| author | Konfekt <Konfekt@users.noreply.github.com> | 2024-03-10 21:29:32 +0100 |
|---|---|---|
| committer | Konfekt <Konfekt@users.noreply.github.com> | 2024-03-11 08:05:47 +0100 |
| commit | 881fd24a6d2c0de387256b4d6e05f5d0a53cc8e2 (patch) | |
| tree | 3ff148f263f708ee6861a8a4671b8675be6a678d /py/utils.py | |
| parent | af52f039513b11e9820ce0bf1e46596a454ebd44 (diff) | |
| download | vim-ai-881fd24a6d2c0de387256b4d6e05f5d0a53cc8e2.tar.gz | |
optionally supplement roles dict by vim function source
The application was restricted to loading role configurations only from
a predefined config file, which limited extensibility.
Enable dynamic role configuration by invoking a custom Vim function if
it is defined. This allows users to extend the role configurations
beyond the static file.
diff --git a/doc/vim-ai.txt b/doc/vim-ai.txt:
-The roles in g:vim_ai_roles_config_file are converted to a Vim dictionary.
-Optionally, additional roles can be added by defining a function VimAIRoleParser()
-whose output is a dictionary of the same format as g:vim_ai_roles_config_file.
-
diff --git a/py/roles.py b/py/roles.py:
-if vim.eval('exists("*VimAIRoleParser")'):
- roles.update(vim.eval('VimAIRoleParser()'))
-
diff --git a/py/utils.py b/py/utils.py:
- if vim.eval('exists("*VimAIRoleParser")'):
- roles.update(vim.eval('VimAIRoleParser()'))
-
Diffstat (limited to '')
| -rw-r--r-- | py/utils.py | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/py/utils.py b/py/utils.py index 6bd90a1..471b5c4 100644 --- a/py/utils.py +++ b/py/utils.py @@ -271,6 +271,13 @@ def load_role_config(role): roles = configparser.ConfigParser() roles.read(roles_config_path) + if vim.eval("exists('g:vim_ai_roles_config_function')") == '1': + roles_config_function = vim.eval("g:vim_ai_roles_config_function") + if not vim.eval("exists('*" + roles_config_function + "')"): + raise Exception(f"Role config function does not exist: {roles_config_function}") + else: + roles.update(vim.eval(roles_config_function + "()")) + if not role in roles: raise Exception(f"Role `{role}` not found") |