diff options
author | Marc Cornellà <hello@mcornella.com> | 2021-09-28 12:34:44 +0200 |
---|---|---|
committer | Marc Cornellà <hello@mcornella.com> | 2021-09-29 16:50:12 +0200 |
commit | de76f7cb491c7d566dd94f161b5dbc32e93af914 (patch) | |
tree | a8fa6f122d7a8a782265a97bbf2fc2653a7539f7 /plugins/emacs/emacsclient.sh | |
parent | 2acae3797b713db2520bb27e76f25d3de6cee48e (diff) | |
download | zsh-de76f7cb491c7d566dd94f161b5dbc32e93af914.tar.gz zsh-de76f7cb491c7d566dd94f161b5dbc32e93af914.tar.bz2 zsh-de76f7cb491c7d566dd94f161b5dbc32e93af914.zip |
fix(emacs): correctly pass arguments to emacsclient when $2 is stdin
Diffstat (limited to 'plugins/emacs/emacsclient.sh')
-rwxr-xr-x | plugins/emacs/emacsclient.sh | 9 |
1 files 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 "$@" |