aboutsummaryrefslogtreecommitdiffstats
path: root/_zsh/80-emacs.zsh
blob: 27966b9de80fc7b605aa35703b04002aaa250ed8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#
# zsh/emacs.zsh
#
# Credits:
# https://github.com/robbyrussell/oh-my-zsh/tree/master/plugins/emacs
#
# 2016-02-21
#

if exists emacsclient; then
    function _emacsclient() {
        # 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.
            command emacsclient --alternate-editor "" --create-frame "$@"
        else
            # Prevent creating another X frame if there is at least one present.
            command emacsclient --alternate-editor "" "$@"
        fi
    }

    # Write to stdout the path to the file opened in the current buffer
    function efile() {
        local cmd="(buffer-file-name (window-buffer))"
        _emacsclient --eval "$cmd" | tr -d '"'
    }

    # Same as 'M-x eval' but outside of Emacs
    alias eeval='_emacsclient --eval'
    # Create a new X frame
    alias eframe='_emacsclient --create-frame --no-wait'

    alias emacs='_emacsclient -t'
    alias e=emacs
    alias ef=eframe
fi  # end "exists emacsclient"


# vim: set ts=8 sw=4 tw=0 fenc=utf-8 ft=zsh: #