;;; 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
;; 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)
-;; )
+;; 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.
;;
-;; (defun my-highlight-changes-disable-hook ()
-;; (remove-hook 'write-file-functions 'highlight-changes-rotate-faces t)
-;; )
-;;
-;; (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")
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
(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)))
)
-(defun hilit-chg-cust-fix-changes-face-list (w wc &optional event)
+(defun hilit-chg-cust-fix-changes-face-list (w _wc &optional event)
;; When customization function `highlight-changes-face-list' inserts a new
;; face it uses the default face. We don't want the user to modify this
;; face, so we rename the faces in the list on an insert. The rename is
;; otherwise an undone change shows up as changed. While the properties
;; are automatically restored by undo, we must fix up the overlay.
(save-match-data
- (let ((beg-decr 1) (end-incr 1)
- (type 'hilit-chg)
- old)
+ (let (;;(beg-decr 1)
+ (end-incr 1)
+ (type 'hilit-chg))
(if undo-in-progress
(if (and highlight-changes-mode
highlight-changes-visible-mode)
(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.
(highlight-save-buffer-state
(hilit-chg-hide-changes)
(hilit-chg-map-changes
- (lambda (prop start stop)
+ (lambda (_prop start stop)
(remove-text-properties start stop '(hilit-chg nil)))))
(setq highlight-changes-mode nil)
(force-mode-line-update)))
(file-a (buffer-file-name))
(existing-buf (get-file-buffer file-b))
(buf-b (or existing-buf
- (find-file-noselect file-b)))
- (buf-b-read-only (with-current-buffer buf-b buffer-read-only)))
+ (find-file-noselect file-b))))
(highlight-markup-buffers buf-a file-a buf-b file-b (not existing-buf))
(unless existing-buf
(kill-buffer buf-b))
(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 x 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))
(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
(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.
;; (defun hilit-chg-debug-show (&optional beg end)
;; (interactive)
;; (message "--- hilit-chg-debug-show ---")
-;; (hilit-chg-map-changes '(lambda (prop start end)
-;; (message "%d-%d: %s" start end prop)
-;; )
+;; (hilit-chg-map-changes (lambda (prop start end)
+;; (message "%d-%d: %s" start end prop))
;; beg end
;; ))
;;
(provide 'hilit-chg)
-;; arch-tag: de00301d-5bad-44da-aa82-e0e010b0c463
;;; hilit-chg.el ends here