xyzzyのdiffの有効化と開いているファイルの自動選択
xyzzyのdiffとしてMinGWのdiff.exeを使用
まずdiff自体に関しては、Git Bashに付いてきたMinGWのdiff.exeを指定したらそのまま使えた。
設定は以下。shell設定のときと異なり、2重エスケープでも上手く行かなかったので、
「Program Files (x86)」の代わりにその短縮名である「Progra~2」を使うことにした。
;; MinGWのdiffを使う (setf ed::*diff-command-name* "C:\\Progra~2\\Git\\bin\\diff.exe")
xyzzyで開いているファイルを自動的にdiffの対象にする
毎回新旧ファイルを探して指定するのは手間なので、
現在開いているバッファを自動的にdiffの対象とする関数を作成し、C-x dに割り当てた。
記事最下部にあるサイトの関数を参考に、ウィンドウを分割していない場合や、
ファイルに紐付いていないバッファを開いている場合も、足りないファイルだけ指定すれば良いようにした。
;; カレントバッファでdiff ; new file: 現在のバッファがファイルに紐づいていればこのバッファ、そうでなければファイルを指定する ; old file: 別ウィンドウに開いているバッファがファイルに紐づいていればそのバッファ、そうでなければファイルを指定する (defun diff-current-buffers () (interactive) (let ((current-file-name (get-buffer-file-name (selected-buffer))) (another-file-name (and (not (eq (count-windows) 1)) (get-buffer-file-name (window-buffer (next-window (selected-window))))))) (diff (or current-file-name (read-file-name "diff(new file): ")) (or (and (not (eq current-file-name another-file-name)) another-file-name) (read-file-name "another file(older): "))))) ;; C-x dでカレントバッファのdiff (define-key ctl-x-map #\d 'diff-current-buffers)
設定ファイル全体は以下
https://github.com/phithon/dotfiles/blob/master/siteinit.l
参考
xyzzy で diff を使う - メモ用紙
http://d.hatena.ne.jp/scientre/20120518/xyzzy_diff