ediff-revision with docdiff

Uwe Brauer oub at mat.ucm.es
Thu Nov 29 11:36:56 EST 2007


Hello


Docdiff is a nice utility which allows to compare 2 files word by word
and writes the difference in one single HTML file, in which the
differences are highlighted. The result looks very much as if a human
would have corrected some text.


Now I wrote a primitive function which works for two files but I would
like to modify ediff-revision (using  RCS) such that docdiff runs on
two versions of a file under version control.

Here is what I did and what does not work:

(defun docdiff-vc-version ()
  "Invoke  docdiff for the current buffer,
and run mozilla-firefox -remote openfile(filename)
to preview the diff"
  (interactive)
  (let* ((currentname 
		  (buffer-file-name (current-buffer)))
		 (newbuffer
		  (vc-version-other-window (read-string "Version number: ")))
		 (origname
		  (vc-version-other-window (read-string "Version number: "))))
	(diff-command
	 "/usr/bin/docdiff --html %s %s > %s")
	(mozilla-command-line
	 "/usr/local/seamonkey/seamonkey -remote 'openfile(%s)'")
	(moztmpfile-name
	 (concat default-directory
			 ".docdiff/docdifftmp.html")))
  (shell-command
   (format diff-command 
		   origname 
		   newbuffer
		   moztmpfile-name))
  (shell-command
   (format mozilla-command-line
		   moztmpfile-name)))

The problem is the second call:
		  (vc-version-other-window (read-string "Version number: "))))
in the first call xemacs has identified the other version say,
test.~1.1~ but then in the second call applies it to that file (and
fails since this file is _not_ under version control) and not the
original file which _is_ under version control.

I tried several tricks such that the second vc-version-other-window
call takes place in the original buffer but I did not succeed it also
would help if vc-version-other-window would allow me to specify the
file but it does not. If somebody has an idea I would be grateful.

Thanks

Uwe Brauer 



More information about the XEmacs-Beta mailing list