1. xemacs
  2. ediff

Commits

michaelk  committed c04eef4

* ediff-init.el (ediff-coding-system): use escape-quoted in case of
XEmacs.

* ediff-merg.el (ediff-merge-region-is-non-clash-to-skip,
ediff-merge-region-is-non-clash,
ediff-skip-merge-region-if-changed-from-default-p): use defun.
Also check if the job is really a merge job.

* ediff.el (ediff-current-file): new function.

* Changes from the Emacs main trunk.

  • Participants
  • Parent commits 5c8cf11
  • Branches default

Comments (0)

Files changed (13)

File ChangeLog

View file
+2009-08-15  Michael Kifer  <kifer@cs.stonybrook.edu>
+	
+	* ediff-init.el (ediff-coding-system): use escape-quoted in case of
+	XEmacs.
+	
+	* ediff-merg.el (ediff-merge-region-is-non-clash-to-skip,
+	ediff-merge-region-is-non-clash,
+	ediff-skip-merge-region-if-changed-from-default-p): use defun.
+	Also check if the job is really a merge job.
+	
+	* ediff.el (ediff-current-file): new function.
+	
+	* Changes from the Emacs main trunk.
+	
 2008-12-01  Norbert Koch  <viteno@xemacs.org>
 
 	* Makefile (VERSION): XEmacs package 1.77 released.

File ediff-diff.el

View file
 ;;; ediff-diff.el --- diff-related utilities
 
 ;; Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
-;;   2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+;;   2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
 
 ;; Author: Michael Kifer <kifer@cs.stonybrook.edu>
 
   :group 'ediff)
 
 (defcustom ediff-diff-program "diff"
-  "*Program to use for generating the differential of the two files."
+  "Program to use for generating the differential of the two files."
   :type 'string
   :group 'ediff-diff)
 (defcustom ediff-diff3-program "diff3"
-  "*Program to be used for three-way comparison.
+  "Program to be used for three-way comparison.
 Must produce output compatible with Unix's diff3 program."
   :type 'string
   :group 'ediff-diff)
 	((memq system-type '(ms-dos windows-nt windows-95))
 	 shell-file-name) ; no standard name on MS-DOS
 	(t  "sh")) ; UNIX
-  "*The shell used to run diff and patch.
+  "The shell used to run diff and patch.
 If user's .profile or .cshrc files are set up correctly, any shell
 will do.  However, some people set $prompt or other things
 incorrectly, which leads to undesirable output messages.  These may
   :group 'ediff-diff)
 
 (defcustom ediff-cmp-program "cmp"
-  "*Utility to use to determine if two files are identical.
+  "Utility to use to determine if two files are identical.
 It must return code 0, if its arguments are identical files."
   :type 'string
   :group 'ediff-diff)
 
 (defcustom ediff-cmp-options nil
-  "*Options to pass to `ediff-cmp-program'.
+  "Options to pass to `ediff-cmp-program'.
 If GNU diff is used as `ediff-cmp-program', then the most useful options
 are `-I REGEXP', to ignore changes whose lines match the REGEXP."
   :type '(repeat string)
 
 (defcustom ediff-diff-options
   (if (memq system-type '(ms-dos windows-nt windows-95)) "--binary" "")
-  "*Options to pass to `ediff-diff-program'.
+  "Options to pass to `ediff-diff-program'.
 If Unix diff is used as `ediff-diff-program',
 then a useful option is `-w', to ignore space.
 Options `-c', `-u', and `-i' are not allowed. Case sensitivity can be
 Use `setq-default' if setting it in .emacs")
 
 (defcustom ediff-ignore-case-option "-i"
-  "*Option that causes the diff program to ignore case of letters."
+  "Option that causes the diff program to ignore case of letters."
   :type 'string
   :group 'ediff-diff)
 
 (defcustom ediff-ignore-case-option3 ""
-  "*Option that causes the diff3 program to ignore case of letters.
+  "Option that causes the diff3 program to ignore case of letters.
 GNU diff3 doesn't have such an option."
   :type 'string
   :group 'ediff-diff)
 (ediff-defvar-local ediff-actual-diff-options ediff-diff-options "")
 
 (defcustom ediff-custom-diff-program ediff-diff-program
-  "*Program to use for generating custom diff output for saving it in a file.
+  "Program to use for generating custom diff output for saving it in a file.
 This output is not used by Ediff internally."
   :type 'string
   :group 'ediff-diff)
 (defcustom ediff-custom-diff-options "-c"
-  "*Options to pass to `ediff-custom-diff-program'."
+  "Options to pass to `ediff-custom-diff-program'."
   :type 'string
   :group 'ediff-diff)
 
 (defvar ediff-match-diff3-line "^====\\(.?\\)\C-m?$"
   "Pattern to match lines produced by diff3 that describe differences.")
 (defcustom ediff-diff3-options ""
-  "*Options to pass to `ediff-diff3-program'."
+  "Options to pass to `ediff-diff3-program'."
   :set 'ediff-set-diff-options
   :type 'string
   :group 'ediff-diff)
 
 (defcustom ediff-diff3-ok-lines-regexp
   "^\\([1-3]:\\|====\\|  \\|.*Warning *:\\|.*No newline\\|.*missing newline\\|^\C-m$\\)"
-  "*Regexp that matches normal output lines from `ediff-diff3-program'.
+  "Regexp that matches normal output lines from `ediff-diff3-program'.
 Lines that do not match are assumed to be error messages."
   :type 'regexp
   :group 'ediff-diff)
 
 
 
-;;; Local Variables:
-;;; eval: (put 'ediff-defvar-local 'lisp-indent-hook 'defun)
-;;; eval: (put 'ediff-with-current-buffer 'lisp-indent-hook 1)
-;;; eval: (put 'ediff-with-current-buffer 'edebug-form-spec '(form body))
-;;; End:
+;; Local Variables:
+;; eval: (put 'ediff-defvar-local 'lisp-indent-hook 'defun)
+;; eval: (put 'ediff-with-current-buffer 'lisp-indent-hook 1)
+;; eval: (put 'ediff-with-current-buffer 'edebug-form-spec '(form body))
+;; End:
 
 ;; arch-tag: a86d448e-58d7-4572-a1d9-fdedfa22f648
 ;;; ediff-diff.el ends here

File ediff-help.el

View file
 ;;; ediff-help.el --- Code related to the contents of Ediff help buffers
 
 ;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
-;;   2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+;;   2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
 
 ;; Author: Michael Kifer <kifer@cs.stonybrook.edu>
 
 n,SPC -next diff     |     h -hilighting         | rx -restore buf X's old diff
     j -jump to diff  |     @ -auto-refinement    |  * -refine current region
    gx -goto X's point|    ## -ignore whitespace  |  ! -update diff regions
-  C-l -recenter      |    #c -ignore case        |  % -narrow/widen buffs 
+  C-l -recenter      |    #c -ignore case        |  % -narrow/widen buffs
   v/V -scroll up/dn  | #f/#h -focus/hide regions | wx -save buf X
   </> -scroll lt/rt  |     X -read-only in buf X | wd -save diff output
     ~ -swap variants |     m -wide display       |
 See `ediff-brief-help-message-function' for more.")
 
 (defcustom ediff-use-long-help-message nil
-  "*If t, Ediff displays a long help message.  Short help message otherwise."
+  "If t, Ediff displays a long help message.  Short help message otherwise."
   :type 'boolean
   :group 'ediff-window)
 

File ediff-hook.el

View file
 ;;; ediff-hook.el --- setup for Ediff's menus and autoloads
 
 ;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
-;;   2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+;;   2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
 
 ;; Author: Michael Kifer <kifer@cs.stonybrook.edu>
 

File ediff-init.el

View file
 ;;; ediff-init.el --- Macros, variables, and defsubsts used by Ediff
 
 ;; Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-;;   2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+;;   2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
 
 ;; Author: Michael Kifer <kifer@cs.stonybrook.edu>
 
 ;; Hook variables
 
 (defcustom ediff-before-setup-hook nil
-  "*Hooks to run before Ediff begins to set up windows and buffers.
+  "Hooks to run before Ediff begins to set up windows and buffers.
 This hook can be used to save the previous window config, which can be restored
 on ediff-quit or ediff-suspend."
   :type 'hook
   :group 'ediff-hook)
 (defcustom ediff-before-setup-windows-hook nil
-  "*Hooks to run before Ediff sets its window configuration.
+  "Hooks to run before Ediff sets its window configuration.
 This hook is run every time when Ediff arranges its windows.
 This happens each time Ediff detects that the windows were messed up by the
 user."
   :type 'hook
   :group 'ediff-hook)
 (defcustom ediff-after-setup-windows-hook nil
-  "*Hooks to run after Ediff sets its window configuration.
+  "Hooks to run after Ediff sets its window configuration.
 This can be used to set up control window or icon in a desired place."
   :type 'hook
   :group 'ediff-hook)
 (defcustom ediff-before-setup-control-frame-hook nil
-  "*Hooks run before setting up the frame to display Ediff Control Panel.
+  "Hooks run before setting up the frame to display Ediff Control Panel.
 Can be used to change control frame parameters to position it where it
 is desirable."
   :type 'hook
   :group 'ediff-hook)
 (defcustom ediff-after-setup-control-frame-hook nil
-  "*Hooks run after setting up the frame to display Ediff Control Panel.
+  "Hooks run after setting up the frame to display Ediff Control Panel.
 Can be used to move the frame where it is desired."
   :type 'hook
   :group 'ediff-hook)
 (defcustom ediff-startup-hook nil
-  "*Hooks to run in the control buffer after Ediff has been set up and is ready for the job."
+  "Hooks to run in the control buffer after Ediff has been set up and is ready for the job."
   :type 'hook
   :group 'ediff-hook)
 (defcustom ediff-select-hook nil
-  "*Hooks to run after a difference has been selected."
+  "Hooks to run after a difference has been selected."
   :type 'hook
   :group 'ediff-hook)
 (defcustom ediff-unselect-hook nil
-  "*Hooks to run after a difference has been unselected."
+  "Hooks to run after a difference has been unselected."
   :type 'hook
   :group 'ediff-hook)
 (defcustom ediff-prepare-buffer-hook  nil
-  "*Hooks run after buffers A, B, and C are set up.
+  "Hooks run after buffers A, B, and C are set up.
 For each buffer, the hooks are run with that buffer made current."
   :type 'hook
   :group 'ediff-hook)
 (defcustom ediff-load-hook nil
-  "*Hook run after Ediff is loaded.  Can be used to change defaults."
+  "Hook run after Ediff is loaded.  Can be used to change defaults."
   :type 'hook
   :group 'ediff-hook)
 
 (defcustom ediff-mode-hook nil
-  "*Hook run just after ediff-mode is set up in the control buffer.
+  "Hook run just after ediff-mode is set up in the control buffer.
 This is done before any windows or frames are created.  One can use it to
 set local variables that determine how the display looks like."
   :type 'hook
   :group 'ediff-hook)
 (defcustom ediff-keymap-setup-hook nil
-  "*Hook run just after the default bindings in Ediff keymap are set up."
+  "Hook run just after the default bindings in Ediff keymap are set up."
   :type 'hook
   :group 'ediff-hook)
 
 (defcustom ediff-display-help-hook nil
-  "*Hooks run after preparing the help message."
+  "Hooks run after preparing the help message."
   :type 'hook
   :group 'ediff-hook)
 
 (defcustom ediff-suspend-hook nil
-  "*Hooks to run in the Ediff control buffer when Ediff is suspended."
+  "Hooks to run in the Ediff control buffer when Ediff is suspended."
   :type 'hook
   :group 'ediff-hook)
 (defcustom ediff-quit-hook nil
-  "*Hooks to run in the Ediff control buffer after finishing Ediff."
+  "Hooks to run in the Ediff control buffer after finishing Ediff."
   :type 'hook
   :group 'ediff-hook)
 (defcustom ediff-cleanup-hook nil
-  "*Hooks to run on exiting Ediff but before killing the control and variant buffers."
+  "Hooks to run on exiting Ediff but before killing the control and variant buffers."
   :type 'hook
   :group 'ediff-hook)
 
 
 ;; Highlighting
 (defcustom ediff-before-flag-bol (if (featurep 'xemacs) (make-glyph "->>") "->>")
-  "*Flag placed before a highlighted block of differences, if block starts at beginning of a line."
+  "Flag placed before a highlighted block of differences, if block starts at beginning of a line."
   :type 'string
   :tag  "Region before-flag at beginning of line"
   :group 'ediff)
 
 (defcustom ediff-after-flag-eol  (if (featurep 'xemacs) (make-glyph "<<-") "<<-")
-  "*Flag placed after a highlighted block of differences, if block ends at end of a line."
+  "Flag placed after a highlighted block of differences, if block ends at end of a line."
   :type 'string
   :tag  "Region after-flag at end of line"
   :group 'ediff)
 
 (defcustom ediff-before-flag-mol (if (featurep 'xemacs) (make-glyph "->>") "->>")
-  "*Flag placed before a highlighted block of differences, if block starts in mid-line."
+  "Flag placed before a highlighted block of differences, if block starts in mid-line."
   :type 'string
   :tag  "Region before-flag in the middle of line"
   :group 'ediff)
 (defcustom ediff-after-flag-mol  (if (featurep 'xemacs) (make-glyph "<<-") "<<-")
-  "*Flag placed after a highlighted block of differences, if block ends in mid-line."
+  "Flag placed after a highlighted block of differences, if block ends in mid-line."
   :type 'string
   :tag  "Region after-flag in the middle of line"
   :group 'ediff)
 Actually, Ediff restores the scope of visibility that existed at startup.")
 
 (defcustom ediff-keep-variants t
-  "*nil means prompt to remove unmodified buffers A/B/C at session end.
+  "nil means prompt to remove unmodified buffers A/B/C at session end.
 Supplying a prefix argument to the quit command `q' temporarily reverses the
 meaning of this variable."
   :type 'boolean
   :group 'ediff)
 
 (defcustom ediff-coding-system-for-read 'raw-text
-  "*The coding system for read to use when running the diff program as a subprocess.
+  "The coding system for read to use when running the diff program as a subprocess.
 In most cases, the default will do.  However, under certain circumstances in
 MS-Windows you might need to use something like 'raw-text-dos here.
 So, if the output that your diff program sends to Emacs contains extra ^M's,
   :type 'symbol
   :group 'ediff)
 
-(defcustom ediff-coding-system-for-write 'emacs-internal
-  "*The coding system for write to use when writing out difference regions
+(defcustom ediff-coding-system-for-write (if (featurep 'xemacs)
+					     'escape-quoted
+					   'emacs-internal)
+  "The coding system for write to use when writing out difference regions
 to temp files in buffer jobs and when Ediff needs to find fine differences."
   :type 'symbol
   :group 'ediff)
 control is used, it could be `vc-toggle-read-only' or `rcs-toggle-read-only'.")
 
 (defcustom ediff-make-buffers-readonly-at-startup nil
-  "*Make all variant buffers read-only when Ediff starts up.
+  "Make all variant buffers read-only when Ediff starts up.
 This property can be toggled interactively."
   :type 'boolean
   :group 'ediff)
 (defvar ediff-verbose-p t)
 
 (defcustom ediff-autostore-merges  'group-jobs-only
-  "*Save the results of merge jobs automatically.
+  "Save the results of merge jobs automatically.
 With value nil, don't save automatically.  With value t, always
 save.  Anything else means save automatically only if the merge
 job is part of a group of jobs, such as `ediff-merge-directory'
 (ediff-defvar-local ediff-merge-store-file nil "")
 
 (defcustom ediff-merge-filename-prefix "merge_"
-  "*Prefix to be attached to saved merge buffers."
+  "Prefix to be attached to saved merge buffers."
   :type 'string
   :group 'ediff-merge)
 
 (defcustom ediff-no-emacs-help-in-control-buffer nil
-  "*Non-nil means C-h should not invoke Emacs help in control buffer.
+  "Non-nil means C-h should not invoke Emacs help in control buffer.
 Instead, C-h would jump to previous difference."
   :type 'boolean
   :group 'ediff)
 ;;;	  (or (getenv "TEMP") (getenv "TMPDIR") (getenv "TMP") "c:/temp"))
 ;;;	 (t
 ;;;	  (or (getenv "TMPDIR") (getenv "TMP") (getenv "TEMP") "/tmp"))))
-  "*Prefix to put on Ediff temporary file names.
+  "Prefix to put on Ediff temporary file names.
 Do not start with `~/' or `~USERNAME/'."
   :type 'string
   :group 'ediff)
 
 (defcustom ediff-temp-file-mode 384	; u=rw only
-  "*Mode for Ediff temporary files."
+  "Mode for Ediff temporary files."
   :type 'integer
   :group 'ediff)
 

File ediff-merg.el

View file
 ;;; ediff-merg.el --- merging utilities
 
 ;; Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-;;   2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+;;   2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
 
 ;; Author: Michael Kifer <kifer@cs.stonybrook.edu>
 
 (require 'ediff-init)
 
 (defcustom ediff-quit-merge-hook 'ediff-maybe-save-and-delete-merge
-  "*Hooks to run before quitting a merge job.
+  "Hooks to run before quitting a merge job.
 The most common use is to save and delete the merge buffer."
   :type 'hook
   :group 'ediff-merge)
 
 
 (defcustom ediff-default-variant 'combined
-  "*The variant to be used as a default for buffer C in merging.
+  "The variant to be used as a default for buffer C in merging.
 Valid values are the symbols `default-A', `default-B', and `combined'."
   :type '(radio (const default-A) (const default-B) (const combined))
   :group 'ediff-merge)
 
 (defcustom ediff-combination-pattern
   '("<<<<<<< variant A" A ">>>>>>> variant B" B  "####### Ancestor" Ancestor "======= end")
-  "*Pattern to be used for combining difference regions in buffers A and B.
+  "Pattern to be used for combining difference regions in buffers A and B.
 The value must be a list of the form
 \(STRING1 bufspec1  STRING2 bufspec2 STRING3 bufspec3 STRING4)
 where bufspec is the symbol A, B, or Ancestor. For instance, if the value is
   :group 'ediff-merge)
 
 (defcustom ediff-show-clashes-only nil
-  "*If t, show only those diff regions where both buffers disagree with the ancestor.
+  "If t, show only those diff regions where both buffers disagree with the ancestor.
 This means that regions that have status prefer-A or prefer-B will be
 skipped over.  A value of nil means show all regions."
   :type 'boolean
 (make-variable-buffer-local 'ediff-show-clashes-only)
 
 (defcustom ediff-skip-merge-regions-that-differ-from-default nil
-  "*If t, show only the regions that have not been changed by the user.
+  "If t, show only the regions that have not been changed by the user.
 A region is considered to have been changed if it is different from the current
 default (`default-A', `default-B', `combined') and it hasn't been marked as
 `prefer-A' or `prefer-B'.
 
 ;; check if there is no clash between the ancestor and one of the variants.
 ;; if it is not a merge job then return true
-(defsubst ediff-merge-region-is-non-clash (n)
+(defun ediff-merge-region-is-non-clash (n)
   (if (ediff-merge-job)
       (string-match "prefer" (or (ediff-get-state-of-merge n) ""))
     t))
 
 ;; If ediff-show-clashes-only, check if there is no clash between the ancestor
 ;; and one of the variants.
-(defsubst ediff-merge-region-is-non-clash-to-skip (n)
-  (and ediff-show-clashes-only
+(defun ediff-merge-region-is-non-clash-to-skip (n)
+  (and (ediff-merge-job)
+       ediff-show-clashes-only
        (ediff-merge-region-is-non-clash n)))
 
 ;; If ediff-skip-changed-regions, check if the merge region differs from
 ;; the current default. If a region is different from the default, it means
 ;; that the user has made determination as to how to merge for this particular
 ;; region.
-(defsubst ediff-skip-merge-region-if-changed-from-default-p (n)
-  (and ediff-skip-merge-regions-that-differ-from-default
+(defun ediff-skip-merge-region-if-changed-from-default-p (n)
+  (and (ediff-merge-job)
+       ediff-skip-merge-regions-that-differ-from-default
        (ediff-merge-changed-from-default-p n 'prefers-too)))
 
 
 (provide 'ediff-merg)
 
 
-;;; Local Variables:
-;;; eval: (put 'ediff-defvar-local 'lisp-indent-hook 'defun)
-;;; eval: (put 'ediff-with-current-buffer 'lisp-indent-hook 1)
-;;; eval: (put 'ediff-with-current-buffer 'edebug-form-spec '(form body))
-;;; End:
+;; Local Variables:
+;; eval: (put 'ediff-defvar-local 'lisp-indent-hook 'defun)
+;; eval: (put 'ediff-with-current-buffer 'lisp-indent-hook 1)
+;; eval: (put 'ediff-with-current-buffer 'edebug-form-spec '(form body))
+;; End:
 
 ;; arch-tag: 9b798cf9-02ba-487f-a62e-b63aa823dbfb
 ;;; ediff-merg.el ends here

File ediff-mult.el

View file
 ;;; ediff-mult.el --- support for multi-file/multi-buffer processing in Ediff
 
 ;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-;;   2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+;;   2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
 
 ;; Author: Michael Kifer <kifer@cs.stonybrook.edu>
 
 (defvar ediff-session-registry nil)
 
 (defcustom ediff-meta-truncate-filenames t
-  "*If non-nil, truncate long file names in the session group buffers.
+  "If non-nil, truncate long file names in the session group buffers.
 This can be toggled with `ediff-toggle-filename-truncation'."
   :type 'boolean
   :group 'ediff-mult)
 
 (defcustom ediff-meta-mode-hook nil
-  "*Hooks run just after setting up meta mode."
+  "Hooks run just after setting up meta mode."
   :type 'hook
   :group 'ediff-mult)
 
 (defcustom ediff-registry-setup-hook nil
-  "*Hooks run just after the registry control panel is set up."
+  "Hooks run just after the registry control panel is set up."
   :type 'hook
   :group 'ediff-mult)
 
 (defcustom ediff-before-session-group-setup-hooks nil
-  "*Hooks to run before Ediff arranges the window for group-level operations.
+  "Hooks to run before Ediff arranges the window for group-level operations.
 It is used by commands such as `ediff-directories'.
 This hook can be used to save the previous window config, which can be restored
 on `ediff-quit', `ediff-suspend', or `ediff-quit-session-group-hook'."
   :type 'hook
   :group 'ediff-hook)
 (defcustom ediff-after-session-group-setup-hook nil
-  "*Hooks run just after a meta-buffer controlling a session group, such as
+  "Hooks run just after a meta-buffer controlling a session group, such as
 ediff-directories, is run."
   :type 'hook
   :group 'ediff-mult)
 (defcustom ediff-quit-session-group-hook nil
-  "*Hooks run just before exiting a session group."
+  "Hooks run just before exiting a session group."
   :type 'hook
   :group 'ediff-mult)
 (defcustom ediff-show-registry-hook nil
-  "*Hooks run just after the registry buffer is shown."
+  "Hooks run just after the registry buffer is shown."
   :type 'hook
   :group 'ediff-mult)
 (defcustom ediff-show-session-group-hook '(delete-other-windows)
-  "*Hooks run just after a session group buffer is shown."
+  "Hooks run just after a session group buffer is shown."
   :type 'hook
   :group 'ediff-mult)
 (defcustom ediff-meta-buffer-keymap-setup-hook nil
-  "*Hooks run just after setting up the `ediff-meta-buffer-map'.
+  "Hooks run just after setting up the `ediff-meta-buffer-map'.
 This keymap controls key bindings in the meta buffer and is a local variable.
 This means that you can set different bindings for different kinds of meta
 buffers."
 This is used only for sessions that involve 2 or 3 files at the same time.
 ACTION is an optional argument that can be ?h, ?m, ?=, to mark for hiding, mark
 for operation, or simply indicate which are equal files.  If it is nil, then
-`last-command-char' is used to decide which action to take."
+`last-command-event' is used to decide which action to take."
   (interactive)
   (if (null action)
-      (setq action last-command-char))
+      (setq action last-command-event))
   (let ((list (cdr ediff-meta-list))
 	marked1 marked2 marked3
 	fileinfo1 fileinfo2 fileinfo3 elt)
 
 
 
-;;; Local Variables:
-;;; eval: (put 'ediff-defvar-local 'lisp-indent-hook 'defun)
-;;; eval: (put 'ediff-with-current-buffer 'lisp-indent-hook 1)
-;;; eval: (put 'ediff-with-current-buffer 'edebug-form-spec '(form body))
-;;; End:
+;; Local Variables:
+;; eval: (put 'ediff-defvar-local 'lisp-indent-hook 'defun)
+;; eval: (put 'ediff-with-current-buffer 'lisp-indent-hook 1)
+;; eval: (put 'ediff-with-current-buffer 'edebug-form-spec '(form body))
+;; End:
 
 ;; arch-tag: c8a76898-f96f-4d9c-be9d-129134017188
 ;;; ediff-mult.el ends here

File ediff-ptch.el

View file
 ;;; ediff-ptch.el --- Ediff's  patch support
 
 ;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-;;   2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+;;   2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
 
 ;; Author: Michael Kifer <kifer@cs.stonybrook.edu>
 
 (require 'ediff-init)
 
 (defcustom ediff-patch-program  "patch"
-  "*Name of the program that applies patches.
+  "Name of the program that applies patches.
 It is recommended to use GNU-compatible versions."
   :type 'string
   :group 'ediff-ptch)
 (defcustom ediff-patch-options "-f"
-  "*Options to pass to ediff-patch-program.
+  "Options to pass to ediff-patch-program.
 
 Note: the `-b' option should be specified in `ediff-backup-specs'.
 
 	  (t
 	   ;; traditional `patch'
 	   (format "-b %s" ediff-backup-extension))))
-  "*Backup directives to pass to the patch program.
+  "Backup directives to pass to the patch program.
 Ediff requires that the old version of the file \(before applying the patch\)
 be saved in a file named `the-patch-file.extension'.  Usually `extension' is
 `.orig', but this can be changed by the user and may depend on the system.
 
 
 (defcustom ediff-patch-default-directory nil
-  "*Default directory to look for patches."
+  "Default directory to look for patches."
   :type '(choice (const nil) string)
   :group 'ediff-ptch)
 
 	  "\\|" 	; GNU unified format diff 2-liner
 	  "^--- +\\([^ \t]+\\)[\t ]+.*\n\\+\\+\\+ +\\([^ \t]+\\)"
 	  "\\)")
-  "*Regexp matching filename 2-liners at the start of each context diff.
+  "Regexp matching filename 2-liners at the start of each context diff.
 You probably don't want to change that, unless you are using an obscure patch
 program."
   :type 'regexp
 
 
 
-;;; Local Variables:
-;;; eval: (put 'ediff-defvar-local 'lisp-indent-hook 'defun)
-;;; eval: (put 'ediff-with-current-buffer 'lisp-indent-hook 1)
-;;; eval: (put 'ediff-with-current-buffer 'edebug-form-spec '(form body))
-;;; End:
+;; Local Variables:
+;; eval: (put 'ediff-defvar-local 'lisp-indent-hook 'defun)
+;; eval: (put 'ediff-with-current-buffer 'lisp-indent-hook 1)
+;; eval: (put 'ediff-with-current-buffer 'edebug-form-spec '(form body))
+;; End:
 
 ;; arch-tag: 2fe2161e-e116-469b-90fa-5cbb44c1bd1b
 ;;; ediff-ptch.el ends here

File ediff-util.el

View file
 ;;; ediff-util.el --- the core commands and utilities of ediff
 
 ;; Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-;;   2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+;;   2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
 
 ;; Author: Michael Kifer <kifer@cs.stonybrook.edu>
 
   (interactive)
   (ediff-barf-if-not-control-buffer)
   (let ((ctl-buf (if (null buf) (current-buffer)))
-	(buf-type (ediff-char-to-buftype last-command-char)))
+	(buf-type (ediff-char-to-buftype last-command-event)))
     (or buf (ediff-recenter))
     (or buf
 	(setq buf (ediff-get-buffer buf-type)))
       (error ediff-KILLED-VITAL-BUFFER))
 
   (ediff-operate-on-windows
-   (if (memq last-command-char '(?v ?\C-v))
+   (if (memq last-command-event '(?v ?\C-v))
        'scroll-up
      'scroll-down)
    ;; calculate argument to scroll-up/down
    ;; interactively so that they set the window's min_hscroll.
    ;; Otherwise, automatic hscrolling will undo the effect of
    ;; hscrolling.
-   (if (= last-command-char ?<)
+   (if (= last-command-event ?<)
        (lambda (arg)
 	 (let ((prefix-arg arg))
 	   (call-interactively 'scroll-left)))
 in the specified buffer."
   (interactive "P")
   (ediff-barf-if-not-control-buffer)
-  (let* ((buf-type (ediff-char-to-buftype last-command-char))
+  (let* ((buf-type (ediff-char-to-buftype last-command-event))
 	 (buffer (ediff-get-buffer buf-type))
 	 (pt (ediff-with-current-buffer buffer (point)))
 	 (diff-no (ediff-diff-at-point buf-type nil (if arg 'after)))
   "Restore ARGth diff from `ediff-killed-diffs-alist'.
 ARG is a prefix argument.  If ARG is nil, restore the current-difference.
 If the second optional argument, a character, is given, use it to
-determine the target buffer instead of last-command-char"
+determine the target buffer instead of last-command-event"
   (interactive "P")
   (ediff-barf-if-not-control-buffer)
   (if (numberp arg)
       (ediff-jump-to-difference arg))
   (ediff-pop-diff ediff-current-difference
-		  (ediff-char-to-buftype (or key last-command-char)))
+		  (ediff-char-to-buftype (or key last-command-event)))
   ;; recenter with rehighlighting, but no messages
   (let (ediff-verbose-p)
     (ediff-recenter)))
     (cond
      ((or (and (eq ediff-skip-diff-region-function
 		   ediff-focus-on-regexp-matches-function)
-	       (eq last-command-char ?f))
+	       (eq last-command-event ?f))
 	  (and (eq ediff-skip-diff-region-function
 		   ediff-hide-regexp-matches-function)
-	       (eq last-command-char ?h)))
+	       (eq last-command-event ?h)))
       (message "Selective browsing by regexp turned off")
       (setq ediff-skip-diff-region-function 'ediff-show-all-diffs))
-     ((eq last-command-char ?h)
+     ((eq last-command-event ?h)
       (setq ediff-skip-diff-region-function ediff-hide-regexp-matches-function
 	    regexp-A
 	    (read-string
       (or (string= regexp-B "") (setq ediff-regexp-hide-B regexp-B))
       (or (string= regexp-C "") (setq ediff-regexp-hide-C regexp-C)))
 
-     ((eq last-command-char ?f)
+     ((eq last-command-event ?f)
       (setq ediff-skip-diff-region-function
 	    ediff-focus-on-regexp-matches-function
 	    regexp-A
   (ediff-barf-if-not-control-buffer)
   (ediff-compute-custom-diffs-maybe)
   (ediff-with-current-buffer
-      (cond ((memq last-command-char '(?a ?b ?c))
+      (cond ((memq last-command-event '(?a ?b ?c))
 	     (ediff-get-buffer
-	      (ediff-char-to-buftype last-command-char)))
-	    ((eq last-command-char ?d)
+	      (ediff-char-to-buftype last-command-event)))
+	    ((eq last-command-event ?d)
 	     (message "Saving diff output ...")
 	     (sit-for 1) ; let the user see the message
 	     (cond ((and arg (ediff-buffer-live-p ediff-diff-buffer))
     (ediff-exec-process
      ediff-custom-diff-program ediff-custom-diff-buffer 'synchronize
      ediff-custom-diff-options
-     ;; repetition of buf-A-file-name is needed so it'll return a file
-     (or (and buf-A-file-name (file-exists-p buf-A-file-name) buf-A-file-name)
-	 file-A)
-     (or (and buf-B-file-name (file-exists-p buf-B-file-name) buf-B-file-name)
-	 file-B))
+     (or file-A buf-A-file-name)
+     (or file-B buf-B-file-name))
     ;; put the diff file in diff-mode, if it is available
     (if (fboundp 'diff-mode)
 	(with-current-buffer ediff-custom-diff-buffer

File ediff-vers.el

View file
 ;;; ediff-vers.el --- version control interface to Ediff
 
 ;; Copyright (C) 1995, 1996, 1997, 2001, 2002, 2003, 2004,
-;;   2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+;;   2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
 
 ;; Author: Michael Kifer <kifer@cs.stonybrook.edu>
 
 ;; end pacifier
 
 (defcustom ediff-keep-tmp-versions nil
-  "*If t, do not delete temporary previous versions for the files on which
+  "If t, do not delete temporary previous versions for the files on which
 comparison or merge operations are being performed."
   :type 'boolean
   :group 'ediff-vers
   "Return the version level of the latest version of FILE in repository."
   (if (fboundp 'vc-latest-version)
       (vc-latest-version file)
-    (or (vc-file-getprop file 'vc-latest-version)
+    (or (vc-file-getprop file 'vc-latest-revision)
 	(cond ((vc-backend file)
 	       (vc-call state file)
-	       (vc-file-getprop file 'vc-latest-version))
+	       (vc-file-getprop file 'vc-latest-revision))
 	      (t (error "File %s is not under version control" file))))
     ))
 
 (provide 'ediff-vers)
 
 
-;;; Local Variables:
-;;; eval: (put 'ediff-defvar-local 'lisp-indent-hook 'defun)
-;;; eval: (put 'ediff-with-current-buffer 'lisp-indent-hook 1)
-;;; eval: (put 'ediff-with-current-buffer 'edebug-form-spec '(form body))
-;;; End:
+;; Local Variables:
+;; eval: (put 'ediff-defvar-local 'lisp-indent-hook 'defun)
+;; eval: (put 'ediff-with-current-buffer 'lisp-indent-hook 1)
+;; eval: (put 'ediff-with-current-buffer 'edebug-form-spec '(form body))
+;; End:
 
 ;; arch-tag: bbb34f0c-2a90-426a-a77a-c75f479ebbbf
 ;;; ediff-vers.el ends here

File ediff-wind.el

View file
 ;;; ediff-wind.el --- window manipulation utilities
 
 ;; Copyright (C) 1994, 1995, 1996, 1997, 2000, 2001, 2002, 2003,
-;;   2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+;;   2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
 
 ;; Author: Michael Kifer <kifer@cs.stonybrook.edu>
 
     'ediff-setup-windows-plain))
 
 (defcustom ediff-window-setup-function (ediff-choose-window-setup-function-automatically)
-  "*Function called to set up windows.
+  "Function called to set up windows.
 Ediff provides a choice of two functions: `ediff-setup-windows-plain', for
 doing everything in one frame and `ediff-setup-windows-multiframe', which sets
 the control panel in a separate frame. By default, the appropriate function is
 
 
 (defcustom ediff-split-window-function 'split-window-vertically
-  "*The function used to split the main window between buffer-A and buffer-B.
+  "The function used to split the main window between buffer-A and buffer-B.
 You can set it to a horizontal split instead of the default vertical split
 by setting this variable to `split-window-horizontally'.
 You can also have your own function to do fancy splits.
   :group 'ediff-window)
 
 (defcustom ediff-merge-split-window-function 'split-window-horizontally
-  "*The function used to split the main window between buffer-A and buffer-B.
+  "The function used to split the main window between buffer-A and buffer-B.
 You can set it to a vertical split instead of the default horizontal split
 by setting this variable to `split-window-vertically'.
 You can also have your own function to do fancy splits.
   "If the user moves mouse more than this many pixels, Ediff won't warp mouse into control window.")
 
 (defcustom ediff-grab-mouse t
-  "*If t, Ediff will always grab the mouse and put it in the control frame.
+  "If t, Ediff will always grab the mouse and put it in the control frame.
 If 'maybe, Ediff will do it sometimes, but not after operations that require
 relatively long time.  If nil, the mouse will be entirely user's
 responsibility."
   :group 'ediff-window)
 
 (defcustom ediff-control-frame-upward-shift 42
-  "*The upward shift of control frame from the top of buffer A's frame.
+  "The upward shift of control frame from the top of buffer A's frame.
 Measured in pixels.
 This is used by the default control frame positioning function,
 `ediff-make-frame-position'.  This variable is provided for easy
   :group 'ediff-window)
 
 (defcustom ediff-narrow-control-frame-leftward-shift (if (featurep 'xemacs) 7 3)
-  "*The leftward shift of control frame from the right edge of buf A's frame.
+  "The leftward shift of control frame from the right edge of buf A's frame.
 Measured in characters.
 This is used by the default control frame positioning function,
 `ediff-make-frame-position' to adjust the position of the control frame
   :group 'ediff-window)
 
 (defcustom ediff-wide-control-frame-rightward-shift 7
-  "*The rightward shift of control frame from the left edge of buf A's frame.
+  "The rightward shift of control frame from the left edge of buf A's frame.
 Measured in characters.
 This is used by the default control frame positioning function,
 `ediff-make-frame-position' to adjust the position of the control frame
 (ediff-defvar-local ediff-control-frame nil "")
 
 (defcustom ediff-prefer-iconified-control-frame nil
-  "*If t, keep control panel iconified when help message is off.
+  "If t, keep control panel iconified when help message is off.
 This has effect only on a windowing system.
 If t, hitting `?' to toggle control panel off iconifies it.
 
 		(cons 'width (cdr (assoc 'width frame-A-params))))
 	  ediff-wide-display-frame frame-A)
     (modify-frame-parameters
-     frame-A `((left . ,cw) (width . ,wd) (user-position t)))))
+     frame-A `((left . ,cw) (width . ,wd) (user-position . t)))))
 
 
 ;; Revise the mode line to display which difference we have selected
 (provide 'ediff-wind)
 
 
-;;; Local Variables:
-;;; eval: (put 'ediff-defvar-local 'lisp-indent-hook 'defun)
-;;; eval: (put 'ediff-with-current-buffer 'lisp-indent-hook 1)
-;;; eval: (put 'ediff-with-current-buffer 'edebug-form-spec '(form body))
-;;; End:
+;; Local Variables:
+;; eval: (put 'ediff-defvar-local 'lisp-indent-hook 'defun)
+;; eval: (put 'ediff-with-current-buffer 'lisp-indent-hook 1)
+;; eval: (put 'ediff-with-current-buffer 'edebug-form-spec '(form body))
+;; End:
 
 ;; arch-tag: 73d9a5d7-eed7-4d9c-8b4b-21d5d78eb597
 ;;; ediff-wind.el ends here

File ediff.el

View file
 ;;; ediff.el --- a comprehensive visual interface to diff & patch
 
 ;; Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-;;   2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+;;   2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
 
 ;; Author: Michael Kifer <kifer@cs.stonybrook.edu>
 ;; Created: February 2, 1994
 ;; filed in the Emacs bug reporting system against this file, a copy
 ;; of the bug report be sent to the maintainer's email address.
 
-(defconst ediff-version "2.81.2" "The current version of Ediff")
-(defconst ediff-date "November 22, 2008" "Date of last update")
+(defconst ediff-version "2.81.3" "The current version of Ediff")
+(defconst ediff-date "August 15, 2009" "Date of last update")
 
 
 ;; This file is part of GNU Emacs.
 
 
 (defcustom ediff-use-last-dir nil
-  "*If t, Ediff will use previous directory as default when reading file name."
+  "If t, Ediff will use previous directory as default when reading file name."
   :type 'boolean
   :group 'ediff)
 
 (defalias 'ediff3 'ediff-files3)
 
 
-;; Visit FILE and arrange its buffer to Ediff's liking.
-;; FILE is actually a variable symbol that must contain a true file name.
-;; BUFFER-NAME is a variable symbol, which will get the buffer object into
-;; which FILE is read.
-;; LAST-DIR is the directory variable symbol where FILE's
-;; directory name should be returned.  HOOKS-VAR is a variable symbol that will
-;; be assigned the hook to be executed after `ediff-startup' is finished.
-;; `ediff-find-file' arranges that the temp files it might create will be
-;; deleted.
 (defun ediff-find-file (file-var buffer-name &optional last-dir hooks-var)
+  "Visit FILE and arrange its buffer to Ediff's liking.
+FILE-VAR is actually a variable symbol whose value must contain a true
+file name.
+BUFFER-NAME is a variable symbol, which will get the buffer object into
+which FILE is read.
+LAST-DIR is the directory variable symbol where FILE's
+directory name should be returned.  HOOKS-VAR is a variable symbol that will
+be assigned the hook to be executed after `ediff-startup' is finished.
+`ediff-find-file' arranges that the temp files it might create will be
+deleted."
   (let* ((file (symbol-value file-var))
 	 (file-magic (ediff-filename-magic-p file))
 	 (temp-file-name-prefix (file-name-nondirectory file)))
 (defalias 'ediff 'ediff-files)
 
 ;;;###autoload
+(defun ediff-current-file ()
+  "Start ediff between current buffer and its file on disk.
+This command can be used instead of `revert-buffer'.  If there is
+nothing to revert then this command fails."
+  (interactive)
+  (unless (or revert-buffer-function
+              revert-buffer-insert-file-contents-function
+              (and buffer-file-number
+                   (or (buffer-modified-p)
+                       (not (verify-visited-file-modtime
+                             (current-buffer))))))
+    (error "Nothing to revert"))
+  (let* ((auto-save-p (and (recent-auto-save-p)
+                           buffer-auto-save-file-name
+                           (file-readable-p buffer-auto-save-file-name)
+                           (y-or-n-p
+                            "Buffer has been auto-saved recently.  Compare with auto-save file? ")))
+         (file-name (if auto-save-p
+                        buffer-auto-save-file-name
+                      buffer-file-name))
+         (revert-buf-name (concat "FILE=" file-name))
+         (revert-buf (get-buffer revert-buf-name))
+         (current-major major-mode))
+    (unless file-name
+      (error "Buffer does not seem to be associated with any file"))
+    (when revert-buf
+      (kill-buffer revert-buf)
+      (setq revert-buf nil))
+    (setq revert-buf (get-buffer-create revert-buf-name))
+    (with-current-buffer revert-buf
+      (insert-file-contents file-name)
+      ;; Assume same modes:
+      (funcall current-major))
+    (ediff-buffers revert-buf (current-buffer))))
+
+
+;;;###autoload
 (defun ediff-backup (file)
   "Run Ediff on FILE and its backup file.
 Uses the latest backup, if there are several numerical backups.
 (run-hooks 'ediff-load-hook)
 
 
-;;; Local Variables:
-;;; eval: (put 'ediff-defvar-local 'lisp-indent-hook 'defun)
-;;; eval: (put 'ediff-with-current-buffer 'lisp-indent-hook 1)
-;;; eval: (put 'ediff-with-current-buffer 'edebug-form-spec '(form body))
-;;; End:
+;; Local Variables:
+;; eval: (put 'ediff-defvar-local 'lisp-indent-hook 'defun)
+;; eval: (put 'ediff-with-current-buffer 'lisp-indent-hook 1)
+;; eval: (put 'ediff-with-current-buffer 'edebug-form-spec '(form body))
+;; End:
 
 ;; arch-tag: 97c71396-db02-4f41-8b48-6a51c3348fcc
 ;;; ediff.el ends here

File ediff.texi

View file
 This file documents Ediff, a comprehensive visual interface to Unix diff
 and patch utilities.
 
-Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+Copyright @copyright{} 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
 
 @quotation
 Permission is granted to copy, distribute and/or modify this document
-under the terms of the GNU Free Documentation License, Version 1.2 or
+under the terms of the GNU Free Documentation License, Version 1.3 or
 any later version published by the Free Software Foundation; with no
 Invariant Sections, with the Front-Cover texts being ``A GNU Manual'',
 and with the Back-Cover Texts as in (a) below.  A copy of the license
 @insertcopying
 @end titlepage
 
+@contents
 
 @node Top, Introduction, (dir), (dir)
 
+@insertcopying
 
 @menu
 * Introduction::                About Ediff.
 * Remote and Compressed Files::  You may want to know about this.
 * Customization::               How to make Ediff work the way YOU want.
 * Credits::                     Thanks to those who helped.
+* GNU Free Documentation License:: The license for this documentation.
 * Index::
 @end menu
 
 the latest. If the file is itself a backup, then compare it with its
 original.
 
+@item ediff-current-file
+@findex ediff-current-file
+Compare the buffer with its file on disk. This function can be used as a
+safe version of @code{revert-buffer}.
+
 @item ediff-buffers
 @findex ediff-buffers
 Compare two buffers.
 Many Ediff commands take numeric prefix arguments.  For instance, if you
 type a number, say 3, and then @kbd{j} (@code{ediff-jump-to-difference}),
 Ediff moves to the third difference region.  Typing 3 and then @kbd{a}
-(@code{ediff-diff-to-diff}) copies the 3d difference region from variant A
+(@code{ediff-diff-to-diff}) copies the 3rd difference region from variant A
 to variant B.  Likewise, 4 followed by @kbd{ra} restores the 4th difference
 region in buffer A (if it was previously written over via the command
 @kbd{a}).
 the control buffer is in its own frame.
 @end table
 
-@node Credits, Index, Customization, Top
+@node Credits, GNU Free Documentation License, Customization, Top
 @chapter Credits
 
 Ediff was written by Michael Kifer <kifer@@cs.stonybrook.edu>.  It was inspired
 Here is a hopefully full list of contributors:
 
 @example
-Adrian Aichner (aichner@@ecf.teradyne.com),
-Drew Adams (drew.adams@@oracle.com),
-Steve Baur (steve@@xemacs.org),
-Neal Becker (neal@@ctd.comsat.com),
-E.@: Jay Berkenbilt (ejb@@ql.org),
-Alastair Burt (burt@@dfki.uni-kl.de),
-Paul Bibilo (peb@@delcam.co.uk),
-Kevin Broadey (KevinB@@bartley.demon.co.uk),
-Harald Boegeholz (hwb@@machnix.mathematik.uni-stuttgart.de),
-Bradley A.@: Bosch (brad@@lachman.com),
-Michael D.@: Carney (carney@@ltx-tr.com),
-Jin S.@: Choi (jin@@atype.com),
-Scott Cummings (cummings@@adc.com),
-Albert Dvornik (bert@@mit.edu),
-Eric Eide (eeide@@asylum.cs.utah.edu),
-Paul Eggert (eggert@@twinsun.com),
-Urban Engberg (ue@@cci.dk),
-Kevin Esler (esler@@ch.hp.com),
-Robert Estes (estes@@ece.ucdavis.edu),
-Jay Finger (jayf@@microsoft.com),
-Xavier Fornari (xavier@@europe.cma.fr),
-Eric Freudenthal (freudent@@jan.ultra.nyu.edu),
-Job Ganzevoort (Job.Ganzevoort@@cwi.nl),
-Felix Heinrich Gatzemeier (felix.g@@tzemeier.info),
-Boris Goldowsky (boris@@cs.rochester.edu),
-Allan Gottlieb (gottlieb@@allan.ultra.nyu.edu),
-Aaron Gross (aaron@@bfr.co.il),
-Thorbjoern Hansen (thorbjoern.hansen@@mchp.siemens.de),
-Marcus Harnisch (marcus_harnisch@@mint-tech.com),
-Steven E. Harris (seh@@panix.com),
-Aaron S. Hawley (Aaron.Hawley@@uvm.edu),
-Xiaoli Huang (hxl@@epic.com),
-Andreas Jaeger (aj@@suse.de),
-Lars Magne Ingebrigtsen (larsi@@ifi.uio.no),
-Larry Gouge (larry@@itginc.com),
-Karl Heuer (kwzh@@gnu.org),
-(irvine@@lks.csi.com),
-(jaffe@@chipmunk.cita.utoronto.ca),
-David Karr (dkarr@@nmo.gtegsc.com),
-Norbert Kiesel (norbert@@i3.informatik.rwth-aachen.de),
-Steffen Kilb (skilb@@gmx.net),
-Leigh L Klotz (klotz@@adoc.xerox.com),
-Fritz Knabe (Fritz.Knabe@@ecrc.de),
-Heinz Knutzen (hk@@informatik.uni-kiel.d400.de),
-Andrew Koenig (ark@@research.att.com),
-Hannu Koivisto (azure@@iki.fi),
-Ken Laprade (laprade@@dw3f.ess.harris.com),
-Will C Lauer (wcl@@cadre.com),
-Richard Levitte (levitte@@e.kth.se),
-Mike Long (mike.long@@analog.com),
-Dave Love (d.love@@dl.ac.uk),
-Martin Maechler (maechler@@stat.math.ethz.ch),
-Simon Marshall (simon@@gnu.org),
-Paul C. Meuse (pmeuse@@delcomsys.com),
-Richard Mlynarik (mly@@adoc.xerox.com),
-Stefan Monnier (monnier@@cs.yale.edu),
-Chris Murphy (murphycm@@sun.aston.ac.uk),
-Erik Naggum (erik@@naggum.no),
-Eyvind Ness (Eyvind.Ness@@hrp.no),
-Ray Nickson (nickson@@cs.uq.oz.au),
-Dan Nicolaescu (dann@@ics.uci.edu),
-David Petchey (petchey_david@@jpmorgan.com),
-Benjamin Pierce (benjamin.pierce@@cl.cam.ac.uk),
-Francois Pinard (pinard@@iro.umontreal.ca),
-Tibor Polgar (tlp00@@spg.amdahl.com),
-David Prince (dave0d@@fegs.co.uk),
-Paul Raines (raines@@slac.stanford.edu),
-Stefan Reicher (xsteve@@riic.at),
-Charles Rich (rich@@merl.com),
-Bill Richter (richter@@math.nwu.edu),
-C.S.@: Roberson (roberson@@aur.alcatel.com),
-Kevin Rodgers (kevin.rodgers@@ihs.com),
-Sandy Rutherford (sandy@@ibm550.sissa.it),
-Heribert Schuetz (schuetz@@ecrc.de),
-Andy Scott (ascott@@pcocd2.intel.com),
-Axel Seibert (axel@@tumbolia.ppp.informatik.uni-muenchen.de),
-Vin Shelton (acs@@xemacs.org),
-Scott O. Sherman (Scott.Sherman@@mci.com),
-Nikolaj Schumacher (n_schumacher@@web.de),
-Richard Stallman (rms@@gnu.org),
-Richard Stanton (stanton@@haas.berkeley.edu),
-Sam Steingold (sds@@goems.com),
-Ake Stenhoff (etxaksf@@aom.ericsson.se),
-Stig (stig@@hackvan.com),
-Peter Stout (Peter_Stout@@cs.cmu.edu),
-Chuck Thompson (cthomp@@cs.uiuc.edu),
-Ray Tomlinson (tomlinso@@bbn.com),
-Raymond Toy (toy@@rtp.ericsson.se),
-Stephen J. Turnbull  (stephen@@xemacs.org),
-Jan Vroonhof (vroonhof@@math.ethz.ch),
-Colin Walters (walters@@cis.ohio-state.edu),
-Philippe Waroquiers (philippe.waroquiers@@eurocontrol.be),
-Klaus Weber (gizmo@@zork.north.de),
-Ben Wing (ben@@xemacs.org),
-Tom Wurgler (twurgler@@goodyear.com),
-Steve Youngs (youngs@@xemacs.org),
-Ilya Zakharevich (ilya@@math.ohio-state.edu),
-Eli Zaretskii (eliz@@is.elta.co.il)
+Adrian Aichner (aichner at ecf.teradyne.com),
+Drew Adams (drew.adams at oracle.com),
+Steve Baur (steve at xemacs.org),
+Neal Becker (neal at ctd.comsat.com),
+E.@: Jay Berkenbilt (ejb at ql.org),
+Lennart Borgman (ennart.borgman at gmail.com)
+Alastair Burt (burt at dfki.uni-kl.de),
+Paul Bibilo (peb at delcam.co.uk),
+Kevin Broadey (KevinB at bartley.demon.co.uk),
+Harald Boegeholz (hwb at machnix.mathematik.uni-stuttgart.de),
+Bradley A.@: Bosch (brad at lachman.com),
+Michael D.@: Carney (carney at ltx-tr.com),
+Jin S.@: Choi (jin at atype.com),
+Scott Cummings (cummings at adc.com),
+Albert Dvornik (bert at mit.edu),
+Eric Eide (eeide at asylum.cs.utah.edu),
+Paul Eggert (eggert at twinsun.com),
+Urban Engberg (ue at cci.dk),
+Kevin Esler (esler at ch.hp.com),
+Robert Estes (estes at ece.ucdavis.edu),
+Jay Finger (jayf at microsoft.com),
+Xavier Fornari (xavier at europe.cma.fr),
+Eric Freudenthal (freudent at jan.ultra.nyu.edu),
+Job Ganzevoort (Job.Ganzevoort at cwi.nl),
+Felix Heinrich Gatzemeier (felix.g at tzemeier.info),
+Boris Goldowsky (boris at cs.rochester.edu),
+Allan Gottlieb (gottlieb at allan.ultra.nyu.edu),
+Aaron Gross (aaron at bfr.co.il),
+Thorbjoern Hansen (thorbjoern.hansen at mchp.siemens.de),
+Marcus Harnisch (marcus_harnisch at mint-tech.com),
+Steven E. Harris (seh at panix.com),
+Aaron S. Hawley (Aaron.Hawley at uvm.edu),
+Xiaoli Huang (hxl at epic.com),
+Andreas Jaeger (aj at suse.de),
+Lars Magne Ingebrigtsen (larsi at ifi.uio.no),
+Larry Gouge (larry at itginc.com),
+Karl Heuer (kwzh at gnu.org),
+(irvine at lks.csi.com),
+(jaffe at chipmunk.cita.utoronto.ca),
+David Karr (dkarr at nmo.gtegsc.com),
+Norbert Kiesel (norbert at i3.informatik.rwth-aachen.de),
+Steffen Kilb (skilb at gmx.net),
+Leigh L Klotz (klotz at adoc.xerox.com),
+Fritz Knabe (Fritz.Knabe at ecrc.de),
+Heinz Knutzen (hk at informatik.uni-kiel.d400.de),
+Andrew Koenig (ark at research.att.com),
+Hannu Koivisto (azure at iki.fi),
+Ken Laprade (laprade at dw3f.ess.harris.com),
+Will C Lauer (wcl at cadre.com),
+Richard Levitte (levitte at e.kth.se),
+Mike Long (mike.long at analog.com),
+Dave Love (d.love at dl.ac.uk),
+Martin Maechler (maechler at stat.math.ethz.ch),
+Simon Marshall (simon at gnu.org),
+Paul C. Meuse (pmeuse at delcomsys.com),
+Richard Mlynarik (mly at adoc.xerox.com),
+Stefan Monnier (monnier at cs.yale.edu),
+Chris Murphy (murphycm at sun.aston.ac.uk),
+Erik Naggum (erik at naggum.no),
+Eyvind Ness (Eyvind.Ness at hrp.no),
+Ray Nickson (nickson at cs.uq.oz.au),
+Dan Nicolaescu (dann at ics.uci.edu),
+David Petchey (petchey_david at jpmorgan.com),
+Benjamin Pierce (benjamin.pierce at cl.cam.ac.uk),
+Francois Pinard (pinard at iro.umontreal.ca),
+Tibor Polgar (tlp00 at spg.amdahl.com),
+David Prince (dave0d at fegs.co.uk),
+Paul Raines (raines at slac.stanford.edu),
+Stefan Reicher (xsteve at riic.at),
+Charles Rich (rich at merl.com),
+Bill Richter (richter at math.nwu.edu),
+C.S.@: Roberson (roberson at aur.alcatel.com),
+Kevin Rodgers (kevin.rodgers at ihs.com),
+Sandy Rutherford (sandy at ibm550.sissa.it),
+Heribert Schuetz (schuetz at ecrc.de),
+Andy Scott (ascott at pcocd2.intel.com),
+Axel Seibert (axel at tumbolia.ppp.informatik.uni-muenchen.de),
+Vin Shelton (acs at xemacs.org),
+Scott O. Sherman (Scott.Sherman at mci.com),
+Nikolaj Schumacher (n_schumacher at web.de),
+Richard Stallman (rms at gnu.org),
+Richard Stanton (stanton at haas.berkeley.edu),
+Sam Steingold (sds at goems.com),
+Ake Stenhoff (etxaksf at aom.ericsson.se),
+Stig (stig at hackvan.com),
+Peter Stout (Peter_Stout at cs.cmu.edu),
+Chuck Thompson (cthomp at cs.uiuc.edu),
+Ray Tomlinson (tomlinso at bbn.com),
+Raymond Toy (toy at rtp.ericsson.se),
+Stephen J. Turnbull  (stephen at xemacs.org),
+Jan Vroonhof (vroonhof at math.ethz.ch),
+Colin Walters (walters at cis.ohio-state.edu),
+Philippe Waroquiers (philippe.waroquiers at eurocontrol.be),
+Klaus Weber (gizmo at zork.north.de),
+Ben Wing (ben at xemacs.org),
+Tom Wurgler (twurgler at goodyear.com),
+Steve Youngs (youngs at xemacs.org),
+Ilya Zakharevich (ilya at math.ohio-state.edu),
+Eli Zaretskii (eliz at is.elta.co.il)
 @end example
 
-@node Index, , Credits, Top
+@node GNU Free Documentation License, Index, Credits, Top
+@appendix GNU Free Documentation License
+@comment @include doclicense.texi
+
+
+@node Index, , GNU Free Documentation License, Top
 @unnumbered Index
 @printindex cp
 
-@setchapternewpage odd
-@contents
 @bye
 
 @ignore