雑記帖のにっき
2004-12-01 (水)
_ [xyzzy] diff-detail
- 「DocDiff」という ruby を用いた diff の readme からリンクが張られていました。
- お、直リンクだ。めずらしいな。なんて思い、自分の xyzzy のページを見返してみたら diff-detail の記述がない。
- そうか。NetInstaller だけでの公開だったか。面倒だったんだ。考えなくてもわかる。
- しかも 2003/11/23 版 (初版)しか公開していない。
- とりあえず、2003/11/23 版よりは、かなりましになっている今の版 diff-detail-20041201.zip をここらへんに公開しておこう。今の版といっても、最後にコードに手が入ったのが 2004/03/08。
- なんで NetInstaller で公開もせずに放置が続いているかというと、原因を追いきれていないバグが残っていることがわかっているから。
- この版からある diff-forward-ex を実行すると xyzzy が無限ループに陥ることがある。(toggle-trace-on-error) で確認しても、無限ループに陥っていることしかわからない。xyzzy のバグなのかも。とも。 (当然の如く diff-detail のバグでした。2005/1/19 に diff-detail 修正)
- とはいえ、2003/11/23 よりはまとも。無限ループに陥っても C-g で確実に停止できる。kakuto さんの公開されている diff [ver. 2.7.2 win移植版] では再現したことがない。といった理由から、とりあえずリリース。
- diff [ver. 2.7.4 cygwin版] では、対象のテキストによってバグが再現する。
- 使用されて、diff-detail のバグが再現したり、バグの原因がわかりましたらツッコミを是非。状態が進展したら NetInstaller の方も更新の予定。
;; Usage:
;;
;; 1. 実行
;; 1.1 diff または diff-detail を実行
;; M-x diff
;; or
;; M-x diff-detail
;;
;; 1.2. 詳細表示 (token とする正規表現の変更)
;; "." キー (M-x diff-detail-change-grain)
;;
;; 2. 移動
;; n: diff-mode の n と同等
;; p: diff-mdoe の p と同等
;;
;; N: 次の変更位置へ移動
;; P: 前の変更位置へ移動
;;
;; TAB: 比較バッファの対応する変更位置へ移動
;;
;; 3. 差分編集
;; m: diff-mode の m と同等
;; r: diff-mode の r と同等
;; u: diff-mode の u と同等
;;
;; M: diff-detail 部分を merge
;; R: diff-detail 部分を merge-reverse
;; U: diff-detail 部分を undo
;;
;; 4. その他
;; c: diff 画面の縦横分割の切り替え
;; SPC: 比較バッファの対応する変更範囲を強調表示
;;
;; Bug:
;;
;; ・diff [ver. 2.7.2 win移植版] を用いて diff-detail し
;; set-text-attribute したテキストの場合は diff-forward-ex
;; (diff-detail-find-text-attribute) が正常に動作するが、
;; diff [ver. 2.7.4 cygwin版] を用いて diff-detail し
;; set-text-attribute したテキストの場合は正常に動作しない
;; 場合がある。
;; (toggle-trace-on-error) で確認すると
;; (diff-detail-find-text-attribute nil ...) で無限ループに
;; 陥っているが、原因を追えていない。
;;
[ツッコミを入れる]