| Commit message (Collapse) | Author | Age | Files |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
I ran into an issue when first using this plugin where the
print_info_message function wasn't working correctly due to vim
misinterpreting the <Esc> sequence in `vim.command("normal \\<Esc>")` as
a series of individual characters rather than a single literal Escape
character. This resulted in the characters 'c>' being inserted into the
active buffer at the cursor location because the 's' in '<Esc>' was
being interpreted as a normal mode 's', causing it to enter insert mode,
and none of the info messages were being echoed properly. This was
frustrating as it was not easy to figure out why my commands weren't
working initially (turns out I hadn't configured my billing plan
correctly, d'oh).
Fix this by using a more robust way of sending the <Esc> character to
vim via `vim.command('call feedkeys("\<Esc>")')`.
The usage of double quotes inside the feedkeys() call is important
because it causes vim to treat the sequence as a proper escape sequence
rather than a series of individual characters (see :h feedkeys).
|
| | |
|
| | |
|
| |\
| |
| | |
increase token limit
|
| |/ |
|
| |\
| |
| | |
detect chat window in other tabs as well
|
| | | |
|
| | | |
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
First search for AI chat windows within the same tab and then within other tabs if none are found in the current tab.
It now prioritizes the reusing of an existing chat window that matches the '.aichat' filetype before considering opening a new one.
If there are no existing AI chat windows, the plugin will open a new chat window as a last resort.
diff --git a/autoload/vim_ai.vim b/autoload/vim_ai.vim:
- " reuse chat in active window or tab
+ " TODO: look for first active chat buffer. If .aichat file is used,
+ " then reuse chat in active window
- " allow .aichat files windows to be switched to, preferably on same tab
- let buffer_list_tab = tabpagebuflist(tabpagenr())
- let buffer_list_tab = filter(buffer_list_tab, 'getbufvar(v:val, "&filetype") ==# "aichat"')
-
- let buffer_list = []
- for i in range(tabpagenr('$'))
- call extend(buffer_list, tabpagebuflist(i + 1))
- endfor
- let buffer_list = filter(buffer_list, 'getbufvar(v:val, "&filetype") ==# "aichat"')
-
- if len(buffer_list_tab) > 0
- call win_gotoid(win_findbuf(buffer_list_tab[0])[0])
- elseif len(buffer_list) > 0
- call win_gotoid(win_findbuf(buffer_list[0])[0])
- else
- " open new chat window
- let l:open_conf = l:config['ui']['open_chat_command']
- call s:OpenChatWindow(l:open_conf)
- endif
+ " open new chat window
+ let l:open_conf = l:config['ui']['open_chat_command']
+ call s:OpenChatWindow(l:open_conf)
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
diff --git a/autoload/vim_ai.vim b/autoload/vim_ai.vim:
-
- let l:chat_win_ids = win_findbuf(bufnr(s:scratch_buffer_name))
- if !empty(l:chat_win_ids)
- " TODO: look for first active chat buffer. If .aichat file is used,
- " then reuse chat in active window
- call win_gotoid(l:chat_win_ids[0])
+ let l:chat_win_id = bufwinid(s:scratch_buffer_name)
+ if l:chat_win_id != -1
+ " TODO: look for first active chat buffer, in case .aichat file is used
+ " reuse chat in active window
+ call win_gotoid(l:chat_win_id)
|
| |\ \
| | |
| | | |
automatically unset &paste also after failed command
|
| | | | |
|
| | |/ |
|
| |\ \
| |/
|/| |
Custom roles
|
| | | |
|
| | |\
| | |
| | | |
Ensure role config file exists and optional Vim 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()'))
-
|
| | |/
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The problem was that the application tried to load a roles configuration file without checking whether it actually exists, potentially leading to unhandled exceptions if the file is missing.
Ensure that the roles configuration file exists before attempting to read from it; raise an exception with a clear message if the file is not found.
diff --git a/py/roles.py b/py/roles.py:
-if not os.path.exists(roles_config_path):
- raise Exception(f"Role config file does not exist: {roles_config_path}")
-
|
| | | |
|
| | | |
|
| | | |
|
| | | |
|
| | | |
|
| | | |
|
| | | |
|
| | | |
|
| | | |
|
| |/ |
|
| | |
|
| |\
| |
| | |
allow overriding range if called on visual selection
|
| | | |
|
| | | |
|
| | |
| |
| |
| |
| |
| |
| | |
Check if the start and end line of range equals that of visual
selection.
If so, take the visual selection;
otherwise the supplied range
|
| | | |
|
| |\ \
| | |
| | | |
feat: add an option to customize api key file location
|
| | |/ |
|
| |\ \
| |/
|/| |
fix selection handling in vim_ai functions, fixes #81
|
| |/
|
|
|
|
|
|
|
| |
The vim-ai plugin had an issue where the AINewChat command was using
<q-args> to always pass a quoted (possibly empty!) argument to the
vim_ai#AINewChatRun function where an optional <f-args> agument was
expected.
Addresses https://github.com/madox2/vim-ai/issues/81
|
| | |
|
| |\
| |
| | |
fix selection handling in vim_ai functions
|
| | | |
|
| | | |
|
| | | |
|
| | | |
|
| | | |
|
| | |
| |
| |
| |
| |
| |
| |
| | |
These changes were necessary to fix a bug where commands were not
being executed correctly in non-visual modes, and to make the code
cleaner and more efficient. By explicitly handling the visual
selection state, it ensures that the plugin functions correctly
regardless of how the user invokes the AI features.
|
| | |
| |
| |
| | |
addresses https://github.com/madox2/vim-ai/issues/76
|
| | |
| |
| | |
Fix instructions which lead to `Undefined variable: g:vim_ai_chat` if config options are not initially set
|
| |\ \
| | |
| | | |
Fix instructions which lead to `Undefined variable: g:vim_ai_chat` if config options are not initially set
|
| |/ /
| |
| | |
Fix instructions which lead to `Undefined variable: g:vim_ai_chat` if config options are not initially set
|