fix(editor): handle UTF-8 characters properly in SetValueWithAttachments (#1469)

This commit is contained in:
neolooong
2025-07-31 23:45:43 +08:00
committed by GitHub
parent c5368e7412
commit e4e0b8fd34

View File

@@ -8,6 +8,7 @@ import (
"path/filepath"
"strconv"
"strings"
"unicode/utf8"
"github.com/charmbracelet/bubbles/v2/spinner"
tea "github.com/charmbracelet/bubbletea/v2"
@@ -524,14 +525,18 @@ func (m *editorComponent) SetValueWithAttachments(value string) {
i := 0
for i < len(value) {
r, size := utf8.DecodeRuneInString(value[i:])
// Check if filepath and add attachment
if value[i] == '@' {
start := i + 1
if r == '@' {
start := i + size
end := start
for end < len(value) && value[end] != ' ' && value[end] != '\t' && value[end] != '\n' && value[end] != '\r' {
end++
for end < len(value) {
nextR, nextSize := utf8.DecodeRuneInString(value[end:])
if nextR == ' ' || nextR == '\t' || nextR == '\n' || nextR == '\r' {
break
}
end += nextSize
}
if end > start {
filePath := value[start:end]
slog.Debug("test", "filePath", filePath)
@@ -548,8 +553,8 @@ func (m *editorComponent) SetValueWithAttachments(value string) {
}
// Not a valid file path, insert the character normally
m.textarea.InsertRune(rune(value[i]))
i++
m.textarea.InsertRune(r)
i += size
}
}