summaryrefslogtreecommitdiff
path: root/internal/askcli/command_edit.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/askcli/command_edit.go')
-rw-r--r--internal/askcli/command_edit.go11
1 files changed, 6 insertions, 5 deletions
diff --git a/internal/askcli/command_edit.go b/internal/askcli/command_edit.go
index 27c9106..a82d575 100644
--- a/internal/askcli/command_edit.go
+++ b/internal/askcli/command_edit.go
@@ -10,9 +10,10 @@ import (
// captureFromEditor opens the user's editor on a temporary file pre-filled with
// the given initial content and returns its trimmed contents after the editor
-// exits. It is a variable so tests can stub it.
-var captureFromEditor = func(initial []byte) (string, error) {
- return editor.OpenTempAndEdit(initial)
+// exits. ctx is forwarded to the editor subprocess so it can be cancelled with
+// the surrounding command. It is a variable so tests can stub it.
+var captureFromEditor = func(ctx context.Context, initial []byte) (string, error) {
+ return editor.OpenTempAndEdit(ctx, initial)
}
// handleEdit opens the configured editor on a temporary file. With no selector
@@ -22,7 +23,7 @@ func (d *Dispatcher) handleEdit(ctx context.Context, args []string, stdout, stde
if len(args) >= 2 {
return d.editTaskDescription(ctx, args[1], stdout, stderr)
}
- description, err := captureFromEditor(nil)
+ description, err := captureFromEditor(ctx, nil)
if err != nil {
writeInfoError(stderr, err)
return 1, nil
@@ -43,7 +44,7 @@ func (d *Dispatcher) editTaskDescription(ctx context.Context, selector string, s
return code, nil
}
- description, err := captureFromEditor([]byte(tasks[0].Description))
+ description, err := captureFromEditor(ctx, []byte(tasks[0].Description))
if err != nil {
writeInfoError(stderr, err)
return 1, nil