yaotti's diary

Software is Eating the World

Emacsclientを利用してターミナルからCarbonEmacsを便利に使う

~/.emacsの最後に

(server-start)

と書き,~/.zshrcに

function e()
{
    emacsclient -e '(elscreen-create)' 2>/dev/null && emacsclient -n $* 2>/dev/null || open -a /Applications/Emacs.app $*
}

と書く.
こうするとターミナルで

$ e path/to/file/or/dir

と打てばそのファイルもしくはディレクトリをemacsの新規elscreenタブで開く.
既にemacsを開いているなら,そのEmacsで開いてくれる.便利.

追記

引数が1つしか取れないのを戻した.でもこれだとelscreenタブを開いてもあまり嬉しくない…

追記2

Re: Emacsclientを利用してターミナルからCarbonEmacsを便利に使う - hitode909のダイアリーを受けて,修正.
これならファイルが存在しないときでも開いてくれる.

function e()
{
    emacsclient -n ${*:-.} 2>/dev/null && return 0
    if [ -e $1 ] || touch $1; then
        open -a /Applications/Emacs.app ${*:-.}
    fi
}

ディレクトリがないときはどうしようもないけど,まあそれはないだろうと.やるなら
touch $1; → touch $1 2>/dev/null || mkdir $1 とかかな.
無いファイルを開くときはせいぜい1つだろうという想定.
touch $*とするとアクセス時間が変わるのでちょっと嫌.forでやるという方法もあるけど,まあこれで満足.