エンジニアリングにはほど遠い

iPhoneアプリとかサイトとかをつくっていくブログです。

Emacs emacsclientを何気なく使いつつclientで開いた地点をdefault directoryにする

Emacs 起動した場所をdefault directoryにするをemacsclientでもやりたいということで。
これをするとVimとほぼ変わらない起動速度を得ることができました。

Emacsはserverを立ち上げておいて、emacsclientというコマンドで素早く立ち上げることができます。ちょっと細かい解説は省略しますが、-aオプションはserverが立ち上がっていたらそれを使用、そうでなければ立ち上げて使用という便利なオプションです。

参考:
emacsclientを使ってEmacsの起動を速くする

で、自分はemacsclientした場所をルートにしてファイルを開いたりしたかったので、それをした時のフックを探してたんですが、ありました。server-visit-hookです。使いたいフックは大体提供されているので嬉しいですね。

.zshrc

alias e='export EMACS_PWD=`pwd`; emacsclient -a ""'
alias ekill='emacsclient -e "(kill-emacs)"'

init.el

(defun set-default-pwd ()
  (let* ((working-dir (getenv "EMACS_PWD")))
    (if working-dir
        (setq default-directory working-dir))))

(add-hook 'server-vist-hook 'set-default-pwd)
(add-hook 'find-file-hook 'set-default-pwd)

emacsclientだと何となくキーボードの設定が若干変わったり(元に戻る?)するっぽいのでその辺も調整したいところ。