aboutsummaryrefslogtreecommitdiff
path: root/.oh-my-zsh/plugins/emacs/emacsclient.sh
diff options
context:
space:
mode:
Diffstat (limited to '.oh-my-zsh/plugins/emacs/emacsclient.sh')
-rwxr-xr-x.oh-my-zsh/plugins/emacs/emacsclient.sh28
1 files changed, 28 insertions, 0 deletions
diff --git a/.oh-my-zsh/plugins/emacs/emacsclient.sh b/.oh-my-zsh/plugins/emacs/emacsclient.sh
new file mode 100755
index 0000000..26b28d4
--- /dev/null
+++ b/.oh-my-zsh/plugins/emacs/emacsclient.sh
@@ -0,0 +1,28 @@
+#!/bin/sh
+
+_emacsfun()
+{
+ # get list of emacs frames.
+ frameslist=`emacsclient --alternate-editor '' --eval '(frame-list)' 2>/dev/null | egrep -o '(frame)+'`
+
+ if [ "$(echo "$frameslist" | sed -n '$=')" -ge 2 ] ;then
+ # prevent creating another X frame if there is at least one present.
+ emacsclient --alternate-editor "" "$@"
+ else
+ # Create one if there is no X window yet.
+ emacsclient --alternate-editor "" --create-frame "$@"
+ 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" -a "$2" = "-" ]
+then
+ tempfile="$(mktemp emacs-stdin-$USER.XXXXXXX --tmpdir)"
+ cat - > "$tempfile"
+ _emacsfun --no-wait $tempfile
+else
+ _emacsfun "$@"
+fi