Windows の Emacs の shell-mode で git commit --amend や git rebase -i するときに Emacs で編集したい

普通の commit なら C-x v v で Emacs の中で編集できるんですが、git commit --amend したい場合など、shell-mode 内だとエディタが起動できないってエラーになります。

そんなときのために ~/.emacs や ~/.emacs.d/init.el に以下を入れておきます。

(server-start)
(setenv "EDITOR"
        (concat (getenv "emacs_dir") "/bin/emacsclient.exe"))

スラッシュでなくバックスラッシュ(円記号)を使用するとうまくいきません。

環境変数 emacs_dir は Windows 版の Emacs でしか設定されないようです。

shell-mode 以外に、async-shell-command (M-&) でも git を実行できます。
shell-command (M-!) で実行すると Emacs が止まってしまいます。

編集後は save-buffer (C-x C-s) してから kill-buffer (C-x C-k) です。
キャンセルする場合は save-buffer せず kill-buffer を強行(バッファがモディファイされてるけどエニウェイキルるの? に yes)してください。