MSYS2 + emacs 24.5 で magit ができない件

Posted by YpsilonTAKAI On 2015年5月7日木曜日 0 コメント
emacs 24.5 の Windows 64bit 版 を見つけたのを機に、 MSYS から MSYS2 に変更してみました。

MSYS2 は git が使えて、パッケージマネージャの pacman も使えるので、移行する価値がありそうです。

だいたい上手く動いたのですが、magit を起動しようとすると、

magit-get-top-dir: d:/d/userdata/xxx/xxx/xxx/ isn't an existing directory

と言われてしまい、起動に失敗します。どう見ても、パスの取得がうまくいってませんね。
ググってみると、以下のページを見つけました。

https://github.com/magit/magit/issues/1318

cygwin でも同様のことが起るようですね。

中程にMSYSでの対応策が書いてあって、

(defun magit-expand-git-file-name--msys (args)
  "Handle Msys directory names such as /c/* by changing them to C:/*"
  (let ((filename (car args)))
        (when (string-match "^/\\([a-z]\\)/\\(.*\\)" filename)
          (setq filename (concat (match-string 1 filename) ":/"
                                 (match-string 2 filename))))
        (list filename)))
(advice-add 'magit-expand-git-file-name :filter-args #'magit-expand-git-file-name--msys)

とりあえず、これを、scratchで実行してみると、問題解決。

init.el に入れて使うことにしました。


READ MORE