From de76f7cb491c7d566dd94f161b5dbc32e93af914 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Cornell=C3=A0?= Date: Tue, 28 Sep 2021 12:34:44 +0200 Subject: [PATCH] fix(emacs): correctly pass arguments to emacsclient when $2 is stdin --- plugins/emacs/emacsclient.sh | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/plugins/emacs/emacsclient.sh b/plugins/emacs/emacsclient.sh index 53a3a428a..25efe0d68 100755 --- a/plugins/emacs/emacsclient.sh +++ b/plugins/emacs/emacsclient.sh @@ -22,16 +22,17 @@ emacsfun() { emacsclient --alternate-editor "" "$@" } - -# adopted from https://github.com/davidshepherd7/emacs-read-stdin/blob/master/emacs-read-stdin.sh +# Adapted from https://github.com/davidshepherd7/emacs-read-stdin/blob/master/emacs-read-stdin.sh # If the second argument is - then write stdin to a tempfile and open the # tempfile. (first argument will be `--no-wait` passed in by the plugin.zsh) if [ $# -ge 2 -a "$2" = "-" ]; then + # Create a tempfile to hold stdin tempfile="$(mktemp --tmpdir emacs-stdin-$USERNAME.XXXXXXX 2>/dev/null \ || mktemp -t emacs-stdin-$USERNAME)" # support BSD mktemp + # Redirect stdin to the tempfile cat - > "$tempfile" - emacsfun --no-wait "$tempfile" - return $? + # Reset $2 to the tempfile so that "$@" works as expected + set -- "$1" "$tempfile" "${@:3}" fi emacsfun "$@"