diff options
author | Karel Balej <balejk@matfyz.cz> | 2023-08-15 19:53:04 +0200 |
---|---|---|
committer | Robin Jarry <robin@jarry.cc> | 2023-08-24 14:14:45 +0200 |
commit | 180fffa92ec7e9bc4a957be75f286f1f0d120ad6 (patch) | |
tree | 9246c390d68a18eb7fef492a281e3bb6a3f900e0 /commands/compose | |
parent | 17f0397570223833c3830690e8a19f14884d3a1f (diff) | |
download | aerc-180fffa92ec7e9bc4a957be75f286f1f0d120ad6.tar.gz |
commands: allow reading attachments from a file
Currently, aerc reads a list of files to be attached to a message from
the file-picker-cmd's standard output. However, this doesn't play nice
with ranger which seems to draw itself by writing there, causing it to
be invisible in the embedded terminal.
In fact, instead of using a pipe, aerc redirects the output of the
command to a temporary file and then reads the list of files from there.
Take advantage of this approach and allow user to directly reference
this temporary file in the file-picker-cmd via the %f placeholder, which
gets expanded to the temporary file's location. If the %f placeholder
isn't present, keep the old behaviour.
So for example, now it is possible to do:
file-picker-cmd=ranger --choosefiles=%f
in aerc.conf.
Signed-off-by: Karel Balej <balejk@matfyz.cz>
Acked-by: Robin Jarry <robin@jarry.cc>
Reviewed-by: Tim Culverhouse <tim@timculverhouse.com>
Diffstat (limited to 'commands/compose')
-rw-r--r-- | commands/compose/attach.go | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/commands/compose/attach.go b/commands/compose/attach.go index 2eb8a98d..3f6d124f 100644 --- a/commands/compose/attach.go +++ b/commands/compose/attach.go @@ -154,8 +154,14 @@ func (a Attach) openMenu(aerc *widgets.Aerc, args []string) error { return err } - filepicker := exec.Command("sh", "-c", filePickerCmd+" >&3") - filepicker.ExtraFiles = append(filepicker.ExtraFiles, picks) + var filepicker *exec.Cmd + if strings.Contains(filePickerCmd, "%f") { + filePickerCmd = strings.ReplaceAll(filePickerCmd, "%f", picks.Name()) + filepicker = exec.Command("sh", "-c", filePickerCmd) + } else { + filepicker = exec.Command("sh", "-c", filePickerCmd+" >&3") + filepicker.ExtraFiles = append(filepicker.ExtraFiles, picks) + } t, err := widgets.NewTerminal(filepicker) if err != nil { |