fix: gemini (#323)
This commit is contained in:
parent
d8c1054e07
commit
9dc00ecc10
@ -77,6 +77,7 @@ Your task is to modify the provided code according to the user's request. Follow
|
||||
7. Do not omit any parts of the code, even if they are unchanged.
|
||||
8. Maintain the SAME indentation in the returned code as in the source code
|
||||
9. Do NOT include three backticks: ```
|
||||
10. Only return code part, do NOT return the context part!
|
||||
|
||||
Remember: Your response should contain nothing but ONLY the modified code, ready to be used as a direct replacement for the original file.
|
||||
]]
|
||||
@ -136,6 +137,8 @@ M.stream = function(question, code_lang, code_content, selected_content_content,
|
||||
active_job = nil
|
||||
end
|
||||
|
||||
local completed = false
|
||||
|
||||
active_job = curl.post(spec.url, {
|
||||
headers = spec.headers,
|
||||
proxy = spec.proxy,
|
||||
@ -143,6 +146,7 @@ M.stream = function(question, code_lang, code_content, selected_content_content,
|
||||
body = vim.json.encode(spec.body),
|
||||
stream = function(err, data, _)
|
||||
if err then
|
||||
completed = true
|
||||
on_complete(err)
|
||||
return
|
||||
end
|
||||
@ -168,6 +172,7 @@ M.stream = function(question, code_lang, code_content, selected_content_content,
|
||||
end)
|
||||
end,
|
||||
on_error = function(err)
|
||||
completed = true
|
||||
on_complete(err)
|
||||
end,
|
||||
callback = function(result)
|
||||
@ -177,6 +182,19 @@ M.stream = function(question, code_lang, code_content, selected_content_content,
|
||||
else
|
||||
Utils.error("API request failed with status " .. result.status, { once = true, title = "Avante" })
|
||||
end
|
||||
vim.schedule(function()
|
||||
if not completed then
|
||||
completed = true
|
||||
on_complete("API request failed with status " .. result.status .. ". Body: " .. vim.inspect(result.body))
|
||||
end
|
||||
end)
|
||||
else
|
||||
vim.schedule(function()
|
||||
if not completed then
|
||||
completed = true
|
||||
on_complete(nil)
|
||||
end
|
||||
end)
|
||||
end
|
||||
active_job = nil
|
||||
end,
|
||||
|
@ -50,14 +50,27 @@ M.parse_message = function(opts)
|
||||
},
|
||||
}
|
||||
end
|
||||
|
||||
M.parse_response = function(data_stream, _, opts)
|
||||
local json = vim.json.decode(data_stream)
|
||||
opts.on_chunk(json.candidates[1].content.parts[1].text)
|
||||
if json.candidates and #json.candidates > 0 then
|
||||
opts.on_chunk(json.candidates[1].content.parts[1].text)
|
||||
end
|
||||
end
|
||||
|
||||
M.parse_curl_args = function(provider, code_opts)
|
||||
local base, body_opts = P.parse_config(provider)
|
||||
|
||||
body_opts = {
|
||||
generationConfig = {
|
||||
temperature = body_opts.temperature,
|
||||
maxOutputTokens = body_opts.max_tokens,
|
||||
},
|
||||
}
|
||||
|
||||
body_opts.temperature = nil
|
||||
body_opts.max_tokens = nil
|
||||
|
||||
return {
|
||||
url = Utils.trim(base.endpoint, { suffix = "/" })
|
||||
.. "/"
|
||||
|
@ -364,15 +364,23 @@ function Selection:create_editing_input()
|
||||
local start_line = self.selection.range.start.line
|
||||
local finish_line = self.selection.range.finish.line
|
||||
|
||||
local indentation = Utils.get_indentation(code_lines[self.selection.range.start.line])
|
||||
local original_first_line_indentation = Utils.get_indentation(code_lines[self.selection.range.start.line])
|
||||
|
||||
api.nvim_exec_autocmds("User", { pattern = EDITING_INPUT_START_SPINNER_PATTERN })
|
||||
---@type AvanteChunkParser
|
||||
local on_chunk = function(chunk)
|
||||
full_response = full_response .. chunk
|
||||
local response_lines = vim.split(full_response, "\n")
|
||||
for i, line in ipairs(response_lines) do
|
||||
response_lines[i] = indentation .. line
|
||||
local need_prepend_indentation = false
|
||||
if #response_lines > 0 then
|
||||
local first_line = response_lines[1]
|
||||
local first_line_indentation = Utils.get_indentation(first_line)
|
||||
need_prepend_indentation = first_line_indentation ~= original_first_line_indentation
|
||||
end
|
||||
if need_prepend_indentation then
|
||||
for i, line in ipairs(response_lines) do
|
||||
response_lines[i] = original_first_line_indentation .. line
|
||||
end
|
||||
end
|
||||
api.nvim_buf_set_lines(code_bufnr, start_line - 1, finish_line, true, response_lines)
|
||||
finish_line = start_line + #response_lines - 1
|
||||
|
Loading…
x
Reference in New Issue
Block a user