diff options
author | Jordan Gwyn <j@ravellaw.com> | 2016-06-17 03:12:59 -0700 |
---|---|---|
committer | Marc Cornellà <marc.cornella@live.com> | 2016-06-17 12:12:59 +0200 |
commit | d7c06131a251ec9e9c715383f33eec977c72b6ea (patch) | |
tree | e36bdad5737f0486d066113db8205bafcfde3a93 /plugins/emacs/emacsclient.sh | |
parent | b1561c662b8629a33f5ffc89fd1be93b65e5c541 (diff) | |
download | zsh-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-x | plugins/emacs/emacsclient.sh | 29 |
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 |