2005年11月28日 (月曜日)

22:40:12 # Life subversionで編集中のファイルが,現在レポジトリにあるバージョンとどれくらい差分があるか確認する. docdiffとsubversion(svn)を組み合わせた何かがほしかったので,仕込んでみました. docdiffはHTMLを吐いてくれるので, それをmozillaが表示するように仕込んでみました.いかがでしょうか. svnの現在の実装 (.svn/以下にオリジナルがおいてある) に依存しています. いつもの自分だったら,もっと変態的にelservを使って一時ファイルが必要ないようにしたりしたかったりするのですが,今日はできるだけシンプルにいってみました. M-x svndocdiff-currentで,現在編集中のバッファの 差分が確認できます.

(defun svndocdiff-current ()
  "Invoke svn docdiff for the current buffer,
and run mozilla-firefox -remote openfile(filename)
to preview the diff"
  (interactive)
  (let* ((currentname 
	  (buffer-file-name (current-buffer)))
	 (svnorigname
	  (concat default-directory
		  ".svn/text-base/" 
		  (file-name-nondirectory 
		   (buffer-file-name (current-buffer)))
		  ".svn-base"))
	 (diff-command
	  "/usr/bin/docdiff --html %s %s > %s")
	 (mozilla-command-line
	  "mozilla-firefox -remote 'openfile(%s)'")
	 (moztmpfile-name
	  (concat default-directory
		  ".svn/.docdifftmp.html")))
    (save-buffer)
    (shell-command
     (format diff-command 
	     svnorigname 
	     currentname
	     moztmpfile-name)
     "*svndocdiff*" "*svndocdiff-err*")
    (shell-command
     (format mozilla-command-line
	     moztmpfile-name)
     "*svndocdiff*" "*svndocdiff-err*")))
	
Junichi Uekawa

$Id: dancer-diary.el,v 1.89 2005/05/12 11:19:14 dancer Exp $