fix: trim escapes for write_to_file tool (#2455)

This commit is contained in:
yetone
2025-07-16 12:04:22 +08:00
committed by GitHub
parent 31be8718a6
commit 127a12a878
3 changed files with 8 additions and 4 deletions

View File

@@ -61,7 +61,7 @@ function M.func(input, opts)
if Path:new(abs_path):exists() then return false, "File already exists: " .. abs_path end
local lines = vim.split(input.file_text, "\n")
if #lines == 1 and input.file_text:match("\\n") then
local text = Utils.trim_slashes(input.file_text)
local text = Utils.trim_escapes(input.file_text)
lines = vim.split(text, "\n")
end
local bufnr, err = Helpers.get_bufnr(abs_path)

View File

@@ -66,6 +66,10 @@ function M.func(input, opts)
if not Helpers.has_permission_to_access(abs_path) then return false, "No permission to access path: " .. abs_path end
if input.content == nil then return false, "content not provided" end
if type(input.content) ~= "string" then input.content = vim.json.encode(input.content) end
if Utils.count_lines(input.content) == 1 then
Utils.debug("Trimming escapes from content")
input.content = Utils.trim_escapes(input.content)
end
local old_lines = Utils.read_file_from_buf_or_disk(abs_path)
local old_content = table.concat(old_lines or {}, "\n")
local str_replace = require("avante.llm_tools.str_replace")