Skip to content

Commit a8bb8ec

Browse files
committed
fix replace_text bug
1 parent b77b6aa commit a8bb8ec

File tree

1 file changed

+32
-4
lines changed

1 file changed

+32
-4
lines changed

lua/eca/sidebar.lua

Lines changed: 32 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2782,11 +2782,39 @@ function M:_replace_text(target, replacement, opts)
27822782
local line = range_lines[idx] or ""
27832783
local s_idx, e_idx = line:find(target, 1, true)
27842784
if s_idx then
2785-
local new_line = (line:sub(1, s_idx - 1)) .. replacement .. (line:sub(e_idx + 1))
27862785
local absolute_line = end_line + idx - 1 -- convert to absolute 1-based line
2787-
vim.api.nvim_buf_set_lines(chat.bufnr, absolute_line - 1, absolute_line, false, { new_line })
2788-
changed = true
2789-
break
2786+
2787+
-- If replacement contains newlines, split it into proper buffer lines
2788+
if type(replacement) == "string" and replacement:find("\n") then
2789+
local parts = Utils.split_lines(replacement)
2790+
local prefix = line:sub(1, s_idx - 1)
2791+
local suffix = line:sub(e_idx + 1)
2792+
2793+
local new_lines = {}
2794+
if #parts > 0 then
2795+
-- First line: prefix + first part
2796+
table.insert(new_lines, prefix .. parts[1])
2797+
-- Middle parts (if any)
2798+
for i = 2, #parts do
2799+
table.insert(new_lines, parts[i])
2800+
end
2801+
-- Append suffix to the last inserted line
2802+
new_lines[#new_lines] = new_lines[#new_lines] .. suffix
2803+
else
2804+
-- Fallback: no parts (shouldn't happen), just replace inline
2805+
table.insert(new_lines, prefix .. suffix)
2806+
end
2807+
2808+
vim.api.nvim_buf_set_lines(chat.bufnr, absolute_line - 1, absolute_line, false, new_lines)
2809+
changed = true
2810+
break
2811+
else
2812+
-- Simple single-line replacement
2813+
local new_line = (line:sub(1, s_idx - 1)) .. replacement .. (line:sub(e_idx + 1))
2814+
vim.api.nvim_buf_set_lines(chat.bufnr, absolute_line - 1, absolute_line, false, { new_line })
2815+
changed = true
2816+
break
2817+
end
27902818
end
27912819
end
27922820
end)

0 commit comments

Comments
 (0)