summaryrefslogtreecommitdiff
path: root/internal/tmuxedit/agentutil.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/tmuxedit/agentutil.go')
-rw-r--r--internal/tmuxedit/agentutil.go16
1 files changed, 12 insertions, 4 deletions
diff --git a/internal/tmuxedit/agentutil.go b/internal/tmuxedit/agentutil.go
index 67351d3..0f4f38e 100644
--- a/internal/tmuxedit/agentutil.go
+++ b/internal/tmuxedit/agentutil.go
@@ -107,14 +107,18 @@ func stripNoise(text string, patterns []string) string {
// token individually. Tokens with a "*N" suffix (e.g. "BSpace*200") are
// sent N times using tmux send-keys -N for efficient bulk repeats.
func sendClearSequence(paneID, clearKeys string) error {
+ return tmuxEditDeps{}.sendClearSequence(paneID, clearKeys)
+}
+
+func (d tmuxEditDeps) sendClearSequence(paneID, clearKeys string) error {
for _, token := range strings.Fields(clearKeys) {
key, count := parseKeyRepeat(token)
if count > 1 {
- if err := sendRepeatedKey(paneID, key, count); err != nil {
+ if err := d.sendRepeated(paneID, key, count); err != nil {
return fmt.Errorf("clear key %q*%d failed: %w", key, count, err)
}
} else {
- if err := sendKeys(paneID, key); err != nil {
+ if err := d.send(paneID, key); err != nil {
return fmt.Errorf("clear key %q failed: %w", key, err)
}
}
@@ -145,9 +149,13 @@ func parseKeyRepeat(token string) (string, int) {
// fallback. This is the shared text-sending logic used by agent SendText
// implementations.
func sendLines(paneID, text, newlineKeys string) error {
+ return tmuxEditDeps{}.sendLines(paneID, text, newlineKeys)
+}
+
+func (d tmuxEditDeps) sendLines(paneID, text, newlineKeys string) error {
lines := strings.Split(text, "\n")
for i, line := range lines {
- if err := sendKeys(paneID, line); err != nil {
+ if err := d.send(paneID, line); err != nil {
return fmt.Errorf("send line %d failed: %w", i, err)
}
// Insert inter-line newline (except after the last line)
@@ -156,7 +164,7 @@ func sendLines(paneID, text, newlineKeys string) error {
if nlKey == "" {
nlKey = "Enter"
}
- if err := sendKeys(paneID, nlKey); err != nil {
+ if err := d.send(paneID, nlKey); err != nil {
return fmt.Errorf("newline after line %d failed: %w", i, err)
}
}