mirror of
https://github.com/aljazceru/opencode.git
synced 2025-12-31 14:44:20 +01:00
fix(editor): handle UTF-8 characters properly in SetValueWithAttachments (#1469)
This commit is contained in:
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user