Browse Source

fix(emacs): correctly pass arguments to emacsclient when $2 is stdin

Marc Cornellà 2 years ago
parent
commit
de76f7cb49
1 changed files with 5 additions and 4 deletions
  1. 5 4
      plugins/emacs/emacsclient.sh

+ 5 - 4
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 "$@"