summaryrefslogtreecommitdiff
path: root/plugins/emacs/emacsclient.sh
diff options
context:
space:
mode:
authorJordan Gwyn <j@ravellaw.com>2016-06-17 03:12:59 -0700
committerMarc Cornellà <marc.cornella@live.com>2016-06-17 12:12:59 +0200
commitd7c06131a251ec9e9c715383f33eec977c72b6ea (patch)
treee36bdad5737f0486d066113db8205bafcfde3a93 /plugins/emacs/emacsclient.sh
parentb1561c662b8629a33f5ffc89fd1be93b65e5c541 (diff)
downloadzsh-d7c06131a251ec9e9c715383f33eec977c72b6ea.tar.gz
zsh-d7c06131a251ec9e9c715383f33eec977c72b6ea.tar.bz2
zsh-d7c06131a251ec9e9c715383f33eec977c72b6ea.zip
emacs plugin tweak to open buffer from stdin (#5126)
Diffstat (limited to 'plugins/emacs/emacsclient.sh')
-rwxr-xr-xplugins/emacs/emacsclient.sh29
1 files changed, 22 insertions, 7 deletions
diff --git a/plugins/emacs/emacsclient.sh b/plugins/emacs/emacsclient.sh
index 625201a16..d61ebb15b 100755
--- a/plugins/emacs/emacsclient.sh
+++ b/plugins/emacs/emacsclient.sh
@@ -1,12 +1,27 @@
#!/bin/sh
-# get list of available X windows.
-x=`emacsclient --alternate-editor '' --eval '(x-display-list)' 2>/dev/null`
+function _emacsfun
+{
+ # get list of available X windows.
+ x=`emacsclient --alternate-editor '' --eval '(x-display-list)' 2>/dev/null`
-if [ -z "$x" ] || [ "$x" = "nil" ] ;then
- # Create one if there is no X window yet.
- emacsclient --alternate-editor "" --create-frame "$@"
+ if [ -z "$x" ] || [ "$x" = "nil" ] ;then
+ # Create one if there is no X window yet.
+ emacsclient --alternate-editor "" --create-frame "$@"
+ else
+ # prevent creating another X frame if there is at least one present.
+ emacsclient --alternate-editor "" "$@"
+ fi
+}
+
+
+# adopted 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 ]] && [[ "$2" == - ]]; then
+ tempfile="$(mktemp emacs-stdin-$USER.XXXXXXX --tmpdir)"
+ cat - > "$tempfile"
+ _emacsfun --no-wait $tempfile
else
- # prevent creating another X frame if there is at least one present.
- emacsclient --alternate-editor "" "$@"
+ _emacsfun "$@"
fi