diff options
Diffstat (limited to '.oh-my-zsh/plugins/emacs/emacsclient.sh')
-rwxr-xr-x | .oh-my-zsh/plugins/emacs/emacsclient.sh | 28 |
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 |