diff --git a/cmd/pad/main.go b/cmd/pad/main.go index 28499cd..9f1a51b 100644 --- a/cmd/pad/main.go +++ b/cmd/pad/main.go @@ -120,11 +120,16 @@ func run(w *app.Window) error { }) } case key.EditEvent: - log.Printf("edit event: %v", k.Text) + log.Printf("edit event text: %q", k.Text) events = append(events, ui.InputEvent{ Handler: reg.Handler, Data: k, }) + case key.SnippetEvent: + log.Printf("snippet event: %v", k) + // Handle snippet event if necessary, or ignore + default: + log.Printf("unexpected event type: %T", k) } } } diff --git a/internal/editor/state.go b/internal/editor/state.go index 15475b6..2111529 100644 --- a/internal/editor/state.go +++ b/internal/editor/state.go @@ -300,11 +300,16 @@ func HandleCursorMove(delta int) { // HandleKeyDown interprets keyboard events for navigation and editing. // Receives both key.Event (as key.Name) and key.EditEvent from the main loop. func HandleKeyDown(data any) { + log.Printf("HandleKeyDown: received data of type %T: %v", data, data) switch v := data.(type) { case key.EditEvent: // Text input from IME / keyboard log.Printf("HandleKeyDown: EditEvent text=%q", v.Text) - HandleInsert(v.Text) + if v.Text == "\b" || len(v.Text) == 0 { + HandleBackspace() + } else { + HandleInsert(v.Text) + } case key.Name: log.Printf("HandleKeyDown: name=%q", v) switch v { @@ -553,6 +558,7 @@ func HandleInsert(s string) { // HandleBackspace removes the character before the cursor. func HandleBackspace() { + log.Printf("HandleBackspace: CursorPosition=%d", TheState.Editor.CursorPosition) pos := TheState.Editor.CursorPosition if pos == 0 { return