xyzzy で diff を使う


2013年5月27日追記 ウィンドウを分割していない場合、比較するファイルを選ぶようにした改良版が出ています:xyzzyのdiffの有効化と開いているファイルの自動選択 - phithonの日記
xyzzy で M-x diff と入力すると diff が使えるようだ。
しかし外部コマンドの diff がないと怒られる。
パスが通っていそうなところに diff.exe を置いてみても動かないので調べてみると、じぶんで設定できるそうだ http://ohkubo.s53.xrea.com/xyzzy/memo.html#diff

(setq ed::*diff-command-name*
      (map-slash-to-backslash (merge-pathnames "bin/diff.exe" (user-homedir-pathname))))

ちなみに diff.exe はここから入手できる

開いているファイルを diff する

たんに M-x diff とすると、ミニバッファ(あるいはそこから開く1画面ファイラ)でファイルをいちいち選ばないといけない。

そこで現在開いているファイル同士を比較する関数を作った。split-window (C-x 2) や split-window-vertically (C-x 5) でウィンドウを分割して作業しているときに便利。二つのウィンドウでそれぞれ比較したいファイルを開き、M-x diff-selected-buffers を実行する。

(defun diff-selected-buffers ()
  (interactive)
  (let (file1 file2)
	(setq file1 (get-buffer-file-name (selected-buffer)))
	(other-window)
	(setq file2 (get-buffer-file-name (selected-buffer)))
	(diff file1 file2)))