summaryrefslogtreecommitdiff
path: root/py/chat.py
diff options
context:
space:
mode:
authorMartin Bielik <mx.bielik@gmail.com>2023-04-04 22:41:14 +0200
committerMartin Bielik <mx.bielik@gmail.com>2023-04-04 22:41:14 +0200
commitc97fbfdccb65334243f91bb574b7fb00740726dc (patch)
tree9b022438a962c1fdde281b5958f9b68ae2e4b470 /py/chat.py
parentc66a57be70e7c3ba48e74ca6e666d74cf00258d8 (diff)
downloadvim-ai-c97fbfdccb65334243f91bb574b7fb00740726dc.tar.gz
combine initial prompt with empty chat prompt
Diffstat (limited to 'py/chat.py')
-rw-r--r--py/chat.py24
1 files changed, 10 insertions, 14 deletions
diff --git a/py/chat.py b/py/chat.py
index 3d69074..a806bf3 100644
--- a/py/chat.py
+++ b/py/chat.py
@@ -9,24 +9,20 @@ request_options = make_request_options()
openai.api_key = load_api_key()
-file_content = vim.eval('trim(join(getline(1, "$"), "\n"))')
-initial_prompt = '\n'.join(options['initial_prompt'])
-prompt = f"{initial_prompt}\n{file_content}"
-
-lines = prompt.splitlines()
-messages = []
-
-chat_content = vim.eval('trim(join(getline(1, "$"), "\n"))')
-messages = parse_chat_messages(chat_content)
-
-if not messages:
- # roles not found, put whole file content as an user prompt
+lines = vim.eval('getline(1, "$")')
+contains_user_prompt = any(line == '>>> user' for line 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")
vim.command("normal! G")
vim.command("let &ul=&ul") # breaks undo sequence (https://vi.stackexchange.com/a/29087)
vim.command("redraw")
- chat_content = vim.eval('trim(join(getline(1, "$"), "\n"))')
- messages = parse_chat_messages(chat_content)
+
+initial_prompt = options.get('initial_prompt', [])
+initial_prompt = '\n'.join(initial_prompt)
+file_content = vim.eval('trim(join(getline(1, "$"), "\n"))')
+chat_content = f"{initial_prompt}\n{file_content}"
+messages = parse_chat_messages(chat_content)
try:
if messages[-1]["content"].strip():