Blame view

repos/robbyrussell/oh-my-zsh/plugins/emacs/emacsclient.sh 915 Bytes
093a6c34b   mj   Squashed 'repos/r...
1
  #!/bin/sh
d9bebbb3c   mj   Squashed 'repos/r...
2
3
4
5
  _emacsfun()
  {
      # get list of emacs frames.
      frameslist=`emacsclient --alternate-editor '' --eval '(frame-list)' 2>/dev/null | egrep -o '(frame)+'`
093a6c34b   mj   Squashed 'repos/r...
6

d9bebbb3c   mj   Squashed 'repos/r...
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   mj   Squashed 'repos/r...
25
  else
d9bebbb3c   mj   Squashed 'repos/r...
26
      _emacsfun "$@"
093a6c34b   mj   Squashed 'repos/r...
27
  fi