Merge from trunk
[bpt/emacs.git] / lisp / hilit-chg.el
index c09a734..859f128 100644 (file)
@@ -1,17 +1,16 @@
 ;;; hilit-chg.el --- minor mode displaying buffer changes with special face
 
-;; Copyright (C) 1998, 2000, 2001, 2002, 2003, 2004,
-;;   2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+;; Copyright (C) 1998, 2000-2011  Free Software Foundation, Inc.
 
 ;; Author: Richard Sharman <rsharman@pobox.com>
 ;; Keywords: faces
 
 ;; This file is part of GNU Emacs.
 
-;; GNU Emacs is free software; you can redistribute it and/or modify
+;; GNU Emacs is free software: you can redistribute it and/or modify
 ;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation; either version 3, or (at your option)
-;; any later version.
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
 
 ;; GNU Emacs is distributed in the hope that it will be useful,
 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -19,9 +18,7 @@
 ;; GNU General Public License for more details.
 
 ;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-;; Boston, MA 02110-1301, USA.
+;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
 
 ;;; Commentary:
 
 ;; You can automatically rotate faces when the buffer is saved;
 ;; see function `highlight-changes-rotate-faces' for how to do this.
 
-;; There are two hooks used by `highlight-changes-mode':
-;; `highlight-changes-enable-hook'  - is run when Highlight Changes mode
-;;                                 is enabled for a buffer.
-;; `highlight-changes-disable-hook' - is run when Highlight Changes mode
-;;                                 is disabled for a buffer.
-
-;; Example usage:
-;; (defun my-highlight-changes-enable-hook ()
-;;   (add-hook 'write-file-functions 'highlight-changes-rotate-faces nil t)
-;; )
-;;
-;; (defun my-highlight-changes-disable-hook ()
-;;   (remove-hook 'write-file-functions 'highlight-changes-rotate-faces t)
-;; )
+;; The hook `highlight-changes-mode-hook' is called when
+;; Highlight Changes mode is turned on or off.
+;; When it called, variable `highlight-changes-mode' has been updated
+;; to the new value.
 ;;
-;; (add-hook 'highlight-changes-enable-hook 'my-highlight-changes-enable-hook)
-;; (add-hook 'highlight-changes-disable-hook
-;;             'my-highlight-changes-disable-hook)
+;; Example usage:
+;; (defun my-highlight-changes-mode-hook ()
+;;   (if highlight-changes-mode
+;;       (add-hook 'write-file-functions 'highlight-changes-rotate-faces nil t)
+;;     (remove-hook 'write-file-functions 'highlight-changes-rotate-faces t)
+;;     ))
 
 
 ;;           Automatically enabling Highlight Changes mode
 ;;   previous active/passive aspect of highlight-changes-mode.
 ;; - Removed highlight-changes-toggle-hook
 ;; - Put back eval-and-compile inadvertently dropped
-
+;; May 2008
+;; - Removed highlight-changes-disable-hook and highlight-changes-enable-hook
+;;   because highlight-changes-mode-hook can do both.
 
 ;;; Code:
 
     (t (:inverse-video t)))
   "Face used for highlighting changes."
   :group 'highlight-changes)
-;; backward-compatibility alias
-(put 'highlight-changes-face 'face-alias 'highlight-changes)
+(define-obsolete-face-alias 'highlight-changes-face
+  'highlight-changes "22.1")
 
 ;; This looks pretty ugly, actually.  Maybe the underline should be removed.
 (defface highlight-changes-delete
     (t (:inverse-video t)))
   "Face used for highlighting deletions."
   :group 'highlight-changes)
-;; backward-compatibility alias
-(put 'highlight-changes-delete-face 'face-alias 'highlight-changes-delete)
-
+(define-obsolete-face-alias 'highlight-changes-delete-face
+  'highlight-changes-delete "22.1")
 
 
 ;; A (not very good) default list of colors to rotate through.
-;;
+(define-obsolete-variable-alias 'highlight-changes-colours
+                                'highlight-changes-colors "22.1")
+
 (defcustom highlight-changes-colors
   (if (eq (frame-parameter nil 'background-mode) 'light)
       ;; defaults for light background:
@@ -236,15 +229,11 @@ colors then use this, if you want fancier faces then set
   :type '(repeat color)
   :group 'highlight-changes)
 
-(define-obsolete-variable-alias 'highlight-changes-colours
-                                'highlight-changes-colors "22.1")
-
-
 ;; When you invoke highlight-changes-mode, should highlight-changes-visible-mode
 ;; be on or off?
 
 (define-obsolete-variable-alias 'highlight-changes-initial-state
-  'highlight-changes-visibility-initial-state)
+  'highlight-changes-visibility-initial-state "23.1")
 
 (defcustom highlight-changes-visibility-initial-state t
   "Controls whether changes are initially visible in Highlight Changes mode.
@@ -260,6 +249,8 @@ When a buffer is in Highlight Changes mode the function
 
 
 ;; These are the strings displayed in the mode-line for the minor mode:
+(define-obsolete-variable-alias 'highlight-changes-active-string
+  'highlight-changes-visible-string "23.1")
 
 (defcustom highlight-changes-visible-string " +Chg"
   "The string used when in Highlight Changes mode and changes are visible.
@@ -269,8 +260,8 @@ a string with a leading space."
                 (const :tag "None"  nil))
   :group 'highlight-changes)
 
-(define-obsolete-variable-alias 'highlight-changes-active-string
-  'highlight-changes-visible-string "22.1")
+(define-obsolete-variable-alias 'highlight-changes-passive-string
+  'highlight-changes-invisible-string "23.1")
 
 (defcustom highlight-changes-invisible-string " -Chg"
   "The string used when in Highlight Changes mode and changes are hidden.
@@ -280,11 +271,6 @@ a string with a leading space."
                 (const :tag "None"  nil))
   :group 'highlight-changes)
 
-(define-obsolete-variable-alias 'highlight-changes-passive-string
-  'highlight-changes-invisible-string "22.1")
-
-
-
 (defcustom highlight-changes-global-modes t
   "Determine whether a buffer is suitable for global Highlight Changes mode.
 
@@ -357,11 +343,7 @@ Other functions for buffers in this mode include:
 through        various faces.
 \\[highlight-compare-with-file] - mark text as changed by comparing this
 buffer with the contents of a file
-\\[highlight-compare-buffers] highlights differences between two buffers.
-
-Hook variables:
-`highlight-changes-enable-hook': called when enabling Highlight Changes mode.
-`highlight-changes-disable-hook': called when disabling Highlight Changes mode."
+\\[highlight-compare-buffers] highlights differences between two buffers."
   nil                  ;; init-value
   hilit-chg-string     ;; lighter
   nil                  ;; keymap
@@ -376,8 +358,6 @@ Hook variables:
            (setq highlight-changes-mode (not highlight-changes-mode)))
        (if highlight-changes-mode
            ;; it is being turned on
-           ;; the hook has been moved into hilit-chg-set
-           ;; (run-hooks 'highlight-changes-enable-hook))
            (hilit-chg-set)
          ;; mode is turned off
          (hilit-chg-clear)))
@@ -638,8 +618,7 @@ This allows you to manually remove highlighting from uninteresting changes."
   (setq highlight-changes-visible-mode highlight-changes-visibility-initial-state)
   (hilit-chg-update)
   (force-mode-line-update)
-  (add-hook 'after-change-functions 'hilit-chg-set-face-on-change nil t)
-  (run-hooks 'highlight-changes-enable-hook))
+  (add-hook 'after-change-functions 'hilit-chg-set-face-on-change nil t))
 
 (defun hilit-chg-clear ()
   "Remove Highlight Changes mode for this buffer.
@@ -941,24 +920,26 @@ changes are made, so \\[highlight-changes-next-change] and
 
 
 (defun hilit-chg-get-diff-info (buf-a file-a buf-b file-b)
-  (let ((e nil) x y)   ;; e is set by function hilit-chg-get-diff-list-hk
+   ;; hilit-e,x,y are set by function hilit-chg-get-diff-list-hk.
+  (let (hilit-e hilit-x hilit-y)
     (ediff-setup buf-a file-a buf-b file-b
               nil nil   ; buf-c file-C
               'hilit-chg-get-diff-list-hk
               (list (cons 'ediff-job-name 'something))
               )
-    (ediff-with-current-buffer e (ediff-really-quit nil))
-    (list y)))
+    (ediff-with-current-buffer hilit-e (ediff-really-quit nil))
+    (list hilit-x hilit-y)))
 
 
 (defun hilit-chg-get-diff-list-hk ()
-  ;; x and y are dynamically bound by hilit-chg-get-diff-info
-  ;; which calls this function as a hook
-  (defvar x)  ;; placate the byte-compiler
-  (defvar y)
-  (setq e (current-buffer))
+  ;; hilit-e/x/y are dynamically bound by hilit-chg-get-diff-info
+  ;; which calls this function as a hook.
+  (defvar hilit-x)                      ; placate the byte-compiler
+  (defvar hilit-y)
+  (defvar hilit-e)
+  (setq hilit-e (current-buffer))
   (let ((n 0) extent p va vb a b)
-    (setq x nil y nil)    ;; x and y are bound by hilit-chg-get-diff-info
+    (setq hilit-x nil hilit-y nil)
     (while (< n ediff-number-of-differences)
       (ediff-make-fine-diffs n)
       (setq va (ediff-get-fine-diff-vector n 'A))
@@ -974,7 +955,7 @@ changes are made, so \\[highlight-changes-next-change] and
        (setq extent (list (overlay-start (car p))
                           (overlay-end (car p))))
        (setq p (cdr p))
-       (setq x (append x (list extent) )));; while p
+       (setq hilit-x (append hilit-x (list extent) )));; while p
       ;;
       (setq vb (ediff-get-fine-diff-vector n 'B))
       ;; vb is a vector
@@ -989,7 +970,7 @@ changes are made, so \\[highlight-changes-next-change] and
        (setq extent (list (overlay-start (car p))
                           (overlay-end (car p))))
        (setq p (cdr p))
-       (setq y (append y (list extent) )))
+       (setq hilit-y (append hilit-y (list extent) )))
       (setq n (1+ n)));; while
     ;; ediff-quit doesn't work here.
     ;; No point in returning a value, since this is a hook function.
@@ -998,12 +979,12 @@ changes are made, so \\[highlight-changes-next-change] and
 ;; ======================= global-highlight-changes-mode ==============
 
 ;;;###autoload
-(define-globalized-minor-mode global-highlight-changes-mode 
+(define-globalized-minor-mode global-highlight-changes-mode
   highlight-changes-mode highlight-changes-mode-turn-on)
 
 (define-obsolete-function-alias
  'global-highlight-changes
-  'global-highlight-changes-mode "22.1")
+  'global-highlight-changes-mode "23.1")
 
 (defun highlight-changes-mode-turn-on ()
   "See if Highlight Changes mode should be turned on for this buffer.
@@ -1055,5 +1036,4 @@ This is called when `global-highlight-changes-mode' is turned on."
 
 (provide 'hilit-chg)
 
-;; arch-tag: de00301d-5bad-44da-aa82-e0e010b0c463
 ;;; hilit-chg.el ends here