feat: change chat record prefix (#71)
This commit is contained in:
parent
6bef72e287
commit
834bb9ea77
@ -118,7 +118,7 @@ Replace lines: {{start_line}}-{{end_line}}
|
|||||||
- Please keep your suggested code changes minimal, and do not include irrelevant lines in the code snippet.
|
- Please keep your suggested code changes minimal, and do not include irrelevant lines in the code snippet.
|
||||||
|
|
||||||
4. Crucial guidelines for line numbers:
|
4. Crucial guidelines for line numbers:
|
||||||
- The content regarding line numbers must strictly follow the format "Replace lines: {{start_line}}-{{end_line}}".
|
- The content regarding line numbers MUST strictly follow the format "Replace lines: {{start_line}}-{{end_line}}". Do not be lazy!
|
||||||
- The range {{start_line}}-{{end_line}} is INCLUSIVE. Both start_line and end_line are included in the replacement.
|
- The range {{start_line}}-{{end_line}} is INCLUSIVE. Both start_line and end_line are included in the replacement.
|
||||||
- Count EVERY line, including empty lines and comments lines, comments. Do not be lazy!
|
- Count EVERY line, including empty lines and comments lines, comments. Do not be lazy!
|
||||||
- For single-line changes, use the same number for start and end lines.
|
- For single-line changes, use the same number for start and end lines.
|
||||||
|
@ -390,6 +390,21 @@ local function get_timestamp()
|
|||||||
return os.date("%Y-%m-%d %H:%M:%S")
|
return os.date("%Y-%m-%d %H:%M:%S")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local function get_chat_record_prefix(timestamp, provider, model, request)
|
||||||
|
provider = provider or "unknown"
|
||||||
|
model = model or "unknown"
|
||||||
|
return "- Datetime: "
|
||||||
|
.. timestamp
|
||||||
|
.. "\n\n"
|
||||||
|
.. "- Model: "
|
||||||
|
.. provider
|
||||||
|
.. "/"
|
||||||
|
.. model
|
||||||
|
.. "\n\n> "
|
||||||
|
.. request:gsub("\n", "\n> ")
|
||||||
|
.. "\n\n"
|
||||||
|
end
|
||||||
|
|
||||||
-- Function to load chat history
|
-- Function to load chat history
|
||||||
local function load_chat_history(sidebar)
|
local function load_chat_history(sidebar)
|
||||||
local history_file = get_chat_history_file(sidebar)
|
local history_file = get_chat_history_file(sidebar)
|
||||||
@ -416,8 +431,9 @@ end
|
|||||||
function Sidebar:update_content_with_history(history)
|
function Sidebar:update_content_with_history(history)
|
||||||
local content = ""
|
local content = ""
|
||||||
for _, entry in ipairs(history) do
|
for _, entry in ipairs(history) do
|
||||||
content = content .. "## " .. entry.timestamp .. "\n\n"
|
local prefix =
|
||||||
content = content .. "> " .. entry.requirement:gsub("\n", "\n> ") .. "\n\n"
|
get_chat_record_prefix(entry.timestamp, entry.provider, entry.model, entry.request or entry.requirement or "")
|
||||||
|
content = content .. prefix
|
||||||
content = content .. entry.response .. "\n\n"
|
content = content .. entry.response .. "\n\n"
|
||||||
content = content .. "---\n\n"
|
content = content .. "---\n\n"
|
||||||
end
|
end
|
||||||
@ -594,22 +610,20 @@ function Sidebar:render()
|
|||||||
local function handle_submit()
|
local function handle_submit()
|
||||||
signal.is_loading = true
|
signal.is_loading = true
|
||||||
local state = signal:get_value()
|
local state = signal:get_value()
|
||||||
local user_input = state.text
|
local request = state.text
|
||||||
|
|
||||||
|
local provider_config = Config[Config.provider]
|
||||||
|
local model = provider_config and provider_config.model or "default"
|
||||||
|
|
||||||
local timestamp = get_timestamp()
|
local timestamp = get_timestamp()
|
||||||
|
|
||||||
|
local content_prefix = get_chat_record_prefix(timestamp, Config.provider, model, request)
|
||||||
|
|
||||||
--- HACK: we need to set focus to true and scroll to false to
|
--- HACK: we need to set focus to true and scroll to false to
|
||||||
--- prevent the cursor from jumping to the bottom of the
|
--- prevent the cursor from jumping to the bottom of the
|
||||||
--- buffer at the beginning
|
--- buffer at the beginning
|
||||||
self:update_content("", { focus = true, scroll = false })
|
self:update_content("", { focus = true, scroll = false })
|
||||||
self:update_content(
|
self:update_content(content_prefix .. "🔄 **Generating response ...**\n")
|
||||||
"## "
|
|
||||||
.. timestamp
|
|
||||||
.. "\n\n> "
|
|
||||||
.. user_input:gsub("\n", "\n> ")
|
|
||||||
.. "\n\nGenerating response from "
|
|
||||||
.. Config.provider
|
|
||||||
.. " ...\n"
|
|
||||||
)
|
|
||||||
|
|
||||||
local content = self:get_code_content()
|
local content = self:get_code_content()
|
||||||
local content_with_line_numbers = prepend_line_number(content)
|
local content_with_line_numbers = prepend_line_number(content)
|
||||||
@ -625,14 +639,14 @@ function Sidebar:render()
|
|||||||
local filetype = api.nvim_get_option_value("filetype", { buf = self.code.buf })
|
local filetype = api.nvim_get_option_value("filetype", { buf = self.code.buf })
|
||||||
|
|
||||||
AiBot.call_ai_api_stream(
|
AiBot.call_ai_api_stream(
|
||||||
user_input,
|
request,
|
||||||
filetype,
|
filetype,
|
||||||
content_with_line_numbers,
|
content_with_line_numbers,
|
||||||
selected_code_content_with_line_numbers,
|
selected_code_content_with_line_numbers,
|
||||||
function(chunk)
|
function(chunk)
|
||||||
signal.is_loading = true
|
signal.is_loading = true
|
||||||
full_response = full_response .. chunk
|
full_response = full_response .. chunk
|
||||||
self:update_content("## " .. timestamp .. "\n\n> " .. user_input:gsub("\n", "\n> ") .. "\n\n" .. full_response)
|
self:update_content(content_prefix .. full_response)
|
||||||
vim.schedule(function()
|
vim.schedule(function()
|
||||||
vim.cmd("redraw")
|
vim.cmd("redraw")
|
||||||
end)
|
end)
|
||||||
@ -641,28 +655,15 @@ function Sidebar:render()
|
|||||||
signal.is_loading = false
|
signal.is_loading = false
|
||||||
|
|
||||||
if err ~= nil then
|
if err ~= nil then
|
||||||
self:update_content(
|
self:update_content(content_prefix .. full_response .. "\n\n🚨 Error: " .. vim.inspect(err))
|
||||||
"## "
|
|
||||||
.. timestamp
|
|
||||||
.. "\n\n> "
|
|
||||||
.. user_input:gsub("\n", "\n> ")
|
|
||||||
.. "\n\n"
|
|
||||||
.. full_response
|
|
||||||
.. "\n\n🚨 Error: "
|
|
||||||
.. vim.inspect(err)
|
|
||||||
)
|
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Execute when the stream request is actually completed
|
-- Execute when the stream request is actually completed
|
||||||
self:update_content(
|
self:update_content(
|
||||||
"## "
|
content_prefix
|
||||||
.. timestamp
|
|
||||||
.. "\n\n> "
|
|
||||||
.. user_input:gsub("\n", "\n> ")
|
|
||||||
.. "\n\n"
|
|
||||||
.. full_response
|
.. full_response
|
||||||
.. "\n\n🎉🎉🎉 **Generation complete!** Please review the code suggestions above.\n\n\n\n",
|
.. "\n\n🎉🎉🎉 **Generation complete!** Please review the code suggestions above.\n\n",
|
||||||
{
|
{
|
||||||
callback = function()
|
callback = function()
|
||||||
api.nvim_exec_autocmds("User", { pattern = VIEW_BUFFER_UPDATED_PATTERN })
|
api.nvim_exec_autocmds("User", { pattern = VIEW_BUFFER_UPDATED_PATTERN })
|
||||||
@ -671,7 +672,13 @@ function Sidebar:render()
|
|||||||
)
|
)
|
||||||
|
|
||||||
-- Save chat history
|
-- Save chat history
|
||||||
table.insert(chat_history or {}, { timestamp = timestamp, requirement = user_input, response = full_response })
|
table.insert(chat_history or {}, {
|
||||||
|
timestamp = timestamp,
|
||||||
|
provider = Config.provider,
|
||||||
|
model = model,
|
||||||
|
request = request,
|
||||||
|
response = full_response,
|
||||||
|
})
|
||||||
save_chat_history(self, chat_history)
|
save_chat_history(self, chat_history)
|
||||||
end
|
end
|
||||||
)
|
)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user