Blame view
plugins/emacs/emacsclient.sh
915 Bytes
|
093a6c34b
|
1 |
#!/bin/sh |
|
d9bebbb3c
|
2 3 4 5 |
_emacsfun()
{
# get list of emacs frames.
frameslist=`emacsclient --alternate-editor '' --eval '(frame-list)' 2>/dev/null | egrep -o '(frame)+'`
|
|
093a6c34b
|
6 |
|
|
d9bebbb3c
|
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
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
|
|
093a6c34b
|
25 |
else |
|
d9bebbb3c
|
26 |
_emacsfun "$@" |
|
093a6c34b
|
27 |
fi |