自分がVimに慣れているというのもあって、常に起動した場所からファイルを参照したい。
以下で実現。

  • 起動時に現在地を環境変数に保存
  • ファイル呼び出しのたびにそこをデフォルトディレクトリに指定

.zshrc

alias e=export EMACS_PWD=`pwd`; emacs

init.el

(add-hook find-file-hook
          (lambda ()
             (let* ((working-dir (getenv "EMACS_PWD")))
               (if working-dir
                   (setq default-directory working-dir)))))

起動時のパスをどこかに保存すれば環境変数使わなくていいと思うけど、とりあえずこれで。

追記: 2015-07-27
これをやるとgit管理しているプロジェクトで

Args out of range: #("Git@" 0 4 (help-echo "Locally added file under the Git version control system")), 0, 7

と怒られる。default directoryを書き換えているのでgitのpathとズレが起きて変なことになっているっぽい。ここを参考にして.zshrcを以下に変更した。

alias e=export EMACS_PWD=`pwd`; export GIT_DIR="`pwd`/.git"; /usr/local/bin/emacs