shell-popしたときに、カレントバッファのディレクトリに移動する

EmacsWiki: Shell Pop


shell-popは大変便利なのですが、ディレクトリの移動が面倒なことが
あります。使い方は人それぞれだと思いますが、私の場合、カレントバッファに
関連した処理を実行したい場合に shell-popを使うので、popupした
際に自動でカレントバッファのディレクトリに移動できるようにしてみました。

コード

ansi-termで動作することを確認しています。
zshに限りですが, 打ちかけのコマンドがある場合はコマンドスタックに積みます。

(defadvice shell-pop-up (around shell-pop-up-around activate)
  (let ((cwd default-directory))
    ad-do-it
    (if (string-match "zsh" shell-pop-internal-mode-shell)
        (term-send-raw-string "\eq"))
    (term-send-raw-string (concat "cd " cwd "\n"))
    (term-send-raw-string "\C-l")))

若干ちらつくのが気になりますが、ディレクトリを手動で移動することなく、
コマンドをすぐに打てるので、助かります。