summaryrefslogtreecommitdiff
path: root/internal/tmuxedit/send.go
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-06-18 07:45:37 +0300
committerPaul Buetow <paul@buetow.org>2026-06-18 07:45:37 +0300
commit4ffb22e7f69f1c9c79b095d4e60bad3d97aac55b (patch)
tree2dc708cbb95975d34084eb5afd376871caa13e27 /internal/tmuxedit/send.go
parentece7dcfd232b780f5650326c8ac2379ca70387d4 (diff)
ik0 replace test seams with dependency injection
Diffstat (limited to 'internal/tmuxedit/send.go')
-rw-r--r--internal/tmuxedit/send.go39
1 files changed, 29 insertions, 10 deletions
diff --git a/internal/tmuxedit/send.go b/internal/tmuxedit/send.go
index 7a6bce2..2af7074 100644
--- a/internal/tmuxedit/send.go
+++ b/internal/tmuxedit/send.go
@@ -7,30 +7,49 @@ import (
"time"
)
-// sendKeys is the seam for `tmux send-keys`. Override in tests.
-var sendKeys = func(paneID string, keys ...string) error {
+func sendKeys(paneID string, keys ...string) error {
+ return tmuxEditDeps{}.send(paneID, keys...)
+}
+
+func (d tmuxEditDeps) send(paneID string, keys ...string) error {
+ if d.sendKeys != nil {
+ return d.sendKeys(paneID, keys...)
+ }
args := append([]string{"send-keys", "-t", paneID}, keys...)
- _, err := runCommand("tmux", args...)
+ _, err := d.command("tmux", args...)
if err != nil {
return fmt.Errorf("send-keys failed: %w", err)
}
return nil
}
-// sendRepeatedKey is the seam for `tmux send-keys -N <count>`. Override in
-// tests. Uses -N for efficient bulk key repeats (e.g. 200 backspaces).
-var sendRepeatedKey = func(paneID, key string, count int) error {
+func sendRepeatedKey(paneID, key string, count int) error {
+ return tmuxEditDeps{}.sendRepeated(paneID, key, count)
+}
+
+// sendRepeated uses `tmux send-keys -N <count>` for efficient bulk key repeats
+// (e.g. 200 backspaces).
+func (d tmuxEditDeps) sendRepeated(paneID, key string, count int) error {
+ if d.sendRepeatedKey != nil {
+ return d.sendRepeatedKey(paneID, key, count)
+ }
args := []string{"send-keys", "-t", paneID, "-N", strconv.Itoa(count), key}
- _, err := runCommand("tmux", args...)
+ _, err := d.command("tmux", args...)
if err != nil {
return fmt.Errorf("send-keys -N failed: %w", err)
}
return nil
}
-// sleepAfterClear pauses to let the TUI drain queued keystrokes (like bulk
-// backspaces) before new text is sent. Override in tests to avoid delays.
-var sleepAfterClear = func() { time.Sleep(300 * time.Millisecond) }
+func sleepAfterClear() { tmuxEditDeps{}.sleep() }
+
+func (d tmuxEditDeps) sleep() {
+ if d.sleepAfterClear != nil {
+ d.sleepAfterClear()
+ return
+ }
+ time.Sleep(300 * time.Millisecond)
+}
// deduplicateText compares the original (pre-filled) text with what the user
// returned from the editor. Returns empty string if unchanged (no-op), or